为提高虚拟化环境的适应性与性能,Windows Server 2012/R2 内建支持具备网卡捆绑功能的网络适配器硬件。虽然 Windows Server 2012/R2 中的网卡捆绑技术并非 Hyper-V 的功能,不过对重要的 Hyper-V 环境必不可少,因为该技术能为虚拟机提供更高适应性与性能。网卡捆绑也叫做“适配器捆绑”,及“负载平衡故障转移”(LBFO)。允许出于以下目的将一台计算机上的多个网络适配器放置到网卡组中:带宽聚合、进行通信故障转移,以防止在网络组件发生故障时失去连接中。
在当前IT环境下,市面上所有网卡捆绑解决方案都使用了类似的架构,如下图所示
两个或更多物理网络适配器连接到网卡捆绑解决方案的复用单元,随后即可针对操作系统呈现为一个或多个虚拟适配器(也叫做捆绑的网络适配器)。用于在物理网络适配器间分摊传入和传出通讯的算法有多种。目前非微软网卡捆绑解决方案中,捆绑在一起的网络适配器按照虚拟 LAN(VLAN)分摊通讯,因此应用程序可同时连接到不同 VLAN。从技术角度来看,这种对通讯进行的划分并非网卡捆绑的功能,但因为其他商用的网卡捆绑解决方案具备该功能,因此 Windows Server 2012/R2 也包含了该功能。
Windows Server 2012/R2中,网卡捆绑主要使用两套基本算法:
1. 需要交换机参与捆绑的算法,也叫做交换机依赖模式。这些算法通常要求被捆绑的所有网络适配器都连接到相同交换机。
2. 无需交换机参与捆绑的算法,也叫做交换机独立模式。因为交换机不知道网络适配器参与捆绑,因此捆绑的网络适配器可连接到不同交换机。交换机独立模式并不是必须要求参与捆绑的成员连接到不同交换机,只不过这种做法是可行的。
NIC Teaming可兼容Windows Server 2012/R2中的全部网络功能,但是下面三个功能例外:SR-IOV、远程直接访问(RDMA)、TCP Chimney卸载。
NIC 组合要求提供一个以太网网络适配器,该适配器可以用于分离使用 VLAN 的流量。通过故障转移提供故障保护的所有模式都至少需要两个以太网网络适配器。Windows Server 2012 实现在一个组合中可支持最多 32 个 NIC。
1. 打开服务器管理器,点击本地服务器,查看当前服务器网络信息。系统默认情况下,NIC组合式禁用的,需要手动启用该技术
2. 点击“已禁用”以打开NIC组合配置页面,当前配置任何NIC组,因此“组”为“0”以及可添加到组的所有可用网络适配器信息
3. 单击“组”中的任务选择“新建组”
4. 新建组页面,键入NIC组的名称,以及选择需要将将哪些网络适配器添加到该组中
5. 展开“其他属性”,此时能看见NIC组的成组模式、负载平衡模式、备用适配器以及主要组接口(VLAN)
对于交换机依赖模式的网卡捆绑,主要有两种选择:
1. 通用或静态捆绑(IEEE 802.3ad draft v1):该模式要求交换机与计算机上的配置能识别哪些链路进行了捆绑。因为这是静态配置的解决方案,没有其他用于协助交换的协议,计算机如果检测到错误连接的线缆或其他错误可能导致捆绑失败。服务器级别的交换机通常支持该模式。
2. 动态捆绑(IEEE 802.1ax, LACP):IEEE 802.1ax 使用链路聚合控制协议(LACP)动态识别计算机与特定交换机之间的链路。这样可自动创建捆绑,并且理论上只需要传输或拒绝来自同级网络适配器的 LACP 即可扩展或缩小捆绑范围。典型的服务器级别交换机通常支持 IEEE 802.1ax,但大部分交换机都需要手工管理操作以启用端口的 LACP 功能。
这两种模式都能导致传入和传出的通讯达到聚合后的带宽极限,因为捆绑中的链路池可作为单一管线使用。
3. 交换机独立模式:系统默认设置,该模式不要求交换机参与组合配置,因为独立模式下的交换机并不认识网卡是虚拟机主机上的一部分。
Windows Server 2012 R2 中的网卡捆绑支持下列通讯分配方法以支持负载平衡:
1. Hyper-V 交换机端口。如果虚拟机使用独立的介质访问控制(MAC)地址,则虚拟机 MAC 地址可提供基本的通讯划分。这是在虚拟化环境中使用该架构的一种优势。因为邻近的交换机可判断特定源 MAC 地址位于一个已连接的网络适配器,交换机会根据目标虚拟机的 MAC 地址通过多个链路对出口负载(从交换机到计算机的通讯)进行平衡。这种方式很适合配合虚拟机队列一起使用。然而该模式可能无法实现足够平均的分配,并且限制了一个虚拟机只能使用单一网络适配器的可用带宽。(备注:Windows Server 2012 R2 使用 Hyper-V 交换机端口作为标识符,而非源 MAC 地址,因为在某些情况下虚拟机可能需要在一个交换机端口上使用多个 MAC 地址。)
2. 哈希。该算法会根据数据包组件创建哈希,并根据哈希值将数据包分配给某个可用网络适配器。这样可确保来自同一 TCP 流的所有数据包使用同一个网络适配器。哈希算法本身通常可跨越所有可用网络适配器实现平衡。某些市售网卡捆绑解决方案会监控通讯的分配,并为不同网络适配器充分分配特定的哈希值,借此更好地对通讯进行平衡。这种动态重分配也叫做智能负载平衡或自适应负载平衡。
在哈希运算中,可用作输入方的组件包括:
1) 源与目标 MAC 地址
2) 源与目标 IP 地址,可考虑或不考虑 MAC 地址(双重哈希)
3) 源与目标 TCP 端口,通常与 IP 地址配合使用(四重哈希)
四重哈希能对通讯流实现更细化的分配,进而可在网络适配器之间用相互独立的方式移动较小规模的数据流。然而该技术不能用于非 TCP 或 UDP 协议的通讯,也不能用于堆栈中 TCP 与 UDP 端口被隐藏的通讯,例如被互联网协议安全(IPSec)保护的通讯。在这种情况下,所用哈希技术将回退为双重哈希。如果通讯并非 IP 通讯,则哈希生成器将使用源与目标地址的 MAC 地址。
3. 动态网卡捆绑。Windows Server 2012 R2 使用 Flowlet 的概念实现动态 LBFO。Flowlet 是存在于大部分网络通讯流中的一组 TCP/IP 数据包,继承了 TCP 通讯“突发”这一特性。使用 Flowlet 对负载进行平衡的优势在于 Flowlet 的体积比流小,发送频率更高,可更精确快速地在不同成员间对网络通讯实现重新平衡。Windows Server 2012 无法检测 Flowlet,因此无法重新进行平衡。Flowlet 总会使用与通讯流中上一个 Flowlet 相同的路径传输。在 Windows Server 2012 R2 中,每个 Flowlet 都可独立路由到捆绑中上次使用过的网卡。随后 Flowlet 中的每个数据包将使用同一个捆绑成员。通过 MAC 地址重写,附近的交换机就不会察觉流的移动。
Windows Server 2012 R2 中的网卡捆绑还能用于虚拟机。这样虚拟机即可通过虚拟网络适配器连接到多个 Hyper-V 交换机,就算该交换机下的一个网络适配器断开也能维持连接。在使用单根 I/O 虚拟化(SR-IOV)等功能时,这一特性尤为重要,因为 SR-IOV 通讯并不通过 Hyper-V 交换机传输,因此无法受到 Hyper-V 交换机中网卡捆绑的保护。通过对虚拟机本身进行捆绑,管理员可设置最多两个 Hyper-V 交换机,每个连接到一个支持 SR-IOV 的专用网络适配器。这样即可实现:
1. 每个虚拟机通过支持 SR-IOV 的一个或多个网络适配器安装虚拟 Function,随后一旦有网络适配器断开,虚拟机依然可从主要虚拟 Function 故障转移到后备虚拟 Function。
2. 或者虚拟机可通过一个网络适配器获得一个虚拟 Function,并通过非虚拟 Function 网络适配器连接到其他交换机。如果关联虚拟 Function 的网络适配器断开,通讯即可不断开直接故障转移到其他交换机。
备用适配器下,默认为“无(所有网络适配器处于活动状态,即active-active)”
如果管理员希望网络接口具有VLAN功能,则点击“默认VLAN”以打开VLAN对话框以便选择相应的VLAN ID
6. 点击确定,即可创建NIC 组以支持网卡的高可用性
7. 打开网络共享中心,查看网络属性,此时以创建一块特殊标识的网卡,即VMNIC
8. 原有的网络适配器属性中,没有TCP/IPv4信息,但是多了一个Microsoft网络适配器多路径传送器协议以实现网络适配器负载平衡和故障转移
下面演示如何使用Windows PowerShell创建NIC Teaming
1. 以管理员身份打开Windows PowerShell
2. 使用“Get-NetAdapter”查询当前主机所有网卡信息
3. 使用“New-NetLbfoTeam”命令将NIC1和NIC2添加到NIC组“AppNIC”中
4. 使用“Get-NetLbfoTeam”查看NIC Teaming信息
5. 使用“Set- NetLbfoTeam”修改NIC Teaming成组模式
6. 使用“Set- NetLbfoTeam”修改NIC Teaming负载平衡模式
7. 使用一下命令设置NIC Teaming的模式为交换机独立模式,负载平衡模式为Transporports(地址哈希)
8. 使用“Get-NetLbfoTeammember”查看NIC Teaming网络适配器状态,当前显示的active-active
9. 使用“Set-NetLbfoTeammember”修改NIC为standby模式