该功能已经成为独立硬件供应商 (IHV) 进入服务器网络适配器市场的一项要求,但是直到现在,网络适配器成组尚未包含在 Windows Server 操作系统中。
要求
网络适配器成组要求提供一个以太网网络适配器,该适配器可以用于分离使用 VLAN 的通信。通过故障转移提供故障保护的所有模式都至少需要两个以太网网络适配器。Windows Server 2012 在一个组中可支持多达 32 个网络适配器。
技术概述
网络适配器成组技术包括网络适配器成组技术的很多部件和选项。本指南包括以下部分:
网络适配器成组体系结构
目前,市场上的所有网络适配器成组解决方案都具有相似的体系结构,如图 1 所示。
图 1 成组解决方案体系结构
两个或多个物理网络适配器连接到网络适配器成组解决方案多路复用器,然后该多路复用器向操作系统呈现一个或多个虚拟适配器(也称为成组网络适配器)。有多个不同的算法可在物理网络适配器之间分发入站和出站通信。在当前的非 Microsoft 网络适配器成组解决方案中,成组网络适配器按虚拟 LAN (VLAN) 划分通信,以便应用程序可以同时连接到不同的 VLAN。从技术上讲,这种通信划分不属于网络适配器成组。但是,由于网络适配器成组的其他商业实现具有此功能,因此 Windows Server 2012 实现也包含此功能。
网络适配器成组配置
下面是两组基本的用于网络适配器成组的算法:
对于依赖于交换机模式的网络适配器成组,有两个常用的选项:
备注
IEEE 802.1ax 通常也称为 IEEE 802.3ad,因为它在发布为 IEEE 802.1ax 之前是由 IEEE 802.3ad 委员会制订的。
这两种模式都会导致入站和出站通信接近聚合带宽的实际限制,原因是组中的链路池相当于一个管道。
通信分发算法
可以采用很多方法在可用的链路之间分发出站通信。尽量在单一网络适配器上保留与单一流(TCP 流)关联的所有数据包。之所以需要这样做,是为了最大程度地减少发生故障的数据包到达的情况。
Windows Server 2012 中的网络适配器成组支持以下通信分发方法:
备注
Windows Server 2012 使用 Hyper-V 交换机端口作为标识符,而不是源 MAC 地址,因为在某些情况下,一个虚拟机可能使用交换机端口上的多个 MAC 地址。
可以用作哈希函数输入的组件包括:
四倍哈希创建通信流的更精细地分发,从而使可以在网络适配器之间独立移动的流更小。但是,它不可以用于非 TCP 的通信或 UDP 通信或从堆栈中隐藏 TCP 和 UDP 端口的通信,如受 Internet 协议安全 (IPsec) 保护的通信。在这些情况下,哈希回退到 2 元组哈希。如果该通信不是 IP 通信,哈希生成器将会使用源和目标 MAC 地址。
虚拟机中的网络适配器成组
Windows Server 2012 中的网络适配器成组也适合于虚拟机。它允许虚拟机具有连接到多个 Hyper-V 交换机的虚拟网络适配器并且即使该交换机下的网络适配器断开连接,也仍然能够连接。当使用诸如单根 I/O 虚拟化 (SR-IOV) 之类的功能时它非常有用,因为 SR-IOV 通信不通过 Hyper-V 交换机。因此,它无法受到 Hyper-V 交换机下的组的保护。通过此虚拟机成组选项,管理员可以设置两个 Hyper-V 交换机,每个交换机都连接到其自己的支持 SR-IOV 的网络适配器。此时:
备注
由于在虚拟机中网络适配器之间的故障转移可能会导致通信与其他网络适配器的 MAC 地址一起发送,因此与使用网络适配器成组的虚拟机关联的每个 Hyper-V 交换机端口都必须设置为允许 MAC 欺骗或必须使用 Set-VmNetworkAdapter PowerShell cmdlet 设置“AllowTeaming=On”参数。
不兼容性
网络适配器成组与 Windows Server 2012 中的所有网络功能兼容,但有三个例外:SR-IOV、远程直接内存访问 (RDMA) 和 TCP 烟囱。对于 SR-IOV 和远程直接内存访问 (RDMA),将数据直接发送给网络适配器,而不经过网络堆栈。因此,网络适配器成组无法查找数据或将数据重定向到组中的另一个路径。Windows Server 2012 中的网络适配器成组不支持 TCP 烟囱。
要求
网络适配器成组要求提供一个以太网网络适配器,该适配器可以用于分离使用 VLAN 的通信。通过故障转移提供故障保护的所有模式都至少需要两个以太网网络适配器。Windows Server 2012 实现在一个组中可支持多达 32 个 NIC。
正在配置网络适配器成组
你可以在 Windows Server 2012 中通过网络适配器成组管理接口或丰富的 PowerShell 接口配置网络适配器成组。网络适配器成组管理 UI 是一个使用 PowerShell cmdlet 对组进行管理的简单接口。 请参见下面,了解网络适配器成组 PowerShell cmdlet 的完整指南。有多个方法可以调用网络适配器成组管理接口。
从“服务器管理器”中:
打开“服务器管理器”。
在控制台树中,单击“本地服务器”。
在详细信息窗格中,在“属性”部分中单击“远程桌面”下的“NIC 组管理”。
从桌面中:
单击「开始」,键入 lbfoadmin,然后按 Enter 键。或者,依次单击「开始」、“运行”,键入 lbfoadmin,然后按 Enter 键。
若要一次管理多个服务器,你可以通过“添加服务器”任务项添加服务器,也可以使用以下命令:
lbfoadmin /servers servername1 servername2 …
这将使用指定服务器名的列表运行网络适配器成组管理接口。
若要在服务器上配置网络适配器成组
单击服务器列表中的服务器名(即使只有一台服务器)。
从“任务”下拉菜单中,在“组”部分,单击“新建组”。
在“添加组”对话框中,键入组名并在该组中选择网络适配器。
如果你在使用 VLAN,清除“默认”复选框,并指定 VLAN ID。默认情况下,该组将会提交接收的所有通信,而不是 VLAN ID(虽然 VLAN ID 通过数据包传送,以便堆栈中的其他组件可以将其适当地排序。)
如果你希望使用除默认以外的模式,单击“高级”,并根据需要指定成组模式(独立于交换机、静态成组或 LACP)和负载分布模式(地址哈希)。
单击“确定”以创建组。
备注
负载分布模式的“地址哈希”选项就是前面描述的 4 元组哈希。网络适配器成组的 PowerShell cmdlet 允许你配置其他地址哈希模式。
若要修改网络适配器组的设置,单击组列表中的组名,然后在任务列表中单击“修改组”。
网络适配器成组 PowerShell 命令
Windows Server 2012 网络适配器成组包含在以下对象类型上操作的 PowerShell cmdlet: