你想要服务器在工作时核心交换机出现故障时仍然能够无缝保持可用吗?你想要让服务器访问多个VLAN而不依赖于特定供应商的特定驱动程序吗?希望简化您环境中物理和虚拟主机的网络配置吗?如果你对任何一个问题的答案都是肯定的,那么这篇文章就是为你准备的。
NIC Teaming可以提高您机器的容错能力,更好地利用网络资源(负载平衡),为机器配置VLAN,并简化您的网络配置。
在本文中,你将了解什么是NIC teaming,使用NIC Teaming在虚拟机中存在的特殊考虑因素,以及如何在你的组织中部署它。
先决条件
你不需要成为Windows或网络管理的专家才能理解NIC teaming。但是,你需要一些技术和知识先决条件才能理解和应用本文。这些项目包括:
- 了解网络如何运作(MAC地址、IP地址、VLAN)
- 使用Windows Server 2016(或2019)并具有两个或更多可用网络适配器——你所看到的几乎都同样适用于Windows Server 2016、2012R2和Windows Server 2012
理解NIC Teaming
在传统的物理服务器网络设置中,通过将多个网络电缆从服务器插入多个物理交换机(可能是单个交换机堆栈的一部分),提供容错能力。因此,服务器在任何时候都有多个活动IP地址,负载平衡是不存在的。
通过在服务器上部署网卡团队,您可以与多个物理交换机保持连接,但只使用一个IP地址。负载平衡变得容易实现。容错性变得瞬间,而不是等待DNS记录超时/更新,管理变得更简单。
网卡团队是Windows Server中的一种功能,允许您将网卡组合成“团队”。每个团队由一个或多个团队成员(在团队中的网卡)和一个或多个可供使用的虚拟网卡组成。
团队成员是团队用于与交换机通信的网络适配器。团队接口是在创建团队时生成的虚拟网络适配器。由于团队接口会接收一个IP地址,因此很难记住哪个是哪个。
NIC团队和绑定之间有什么区别?
NIC团队与NIC绑定是同义词。
NIC团队在从Windows Server 2012开始的所有版本中都可用。这种功能非常灵活,为管理员提供了更简单的解决方案,用于链接聚合/负载平衡、故障转移和软件定义网络(VLAN)。
某些硬件的某些供应商提供了类似的解决方案,但是Microsoft对NIC团队的实现旨在以硬件和供应商无关的方式提供这些功能。
NIC团队和桥接之间有什么区别?
NIC Teaming允许您创建一个跨越位于同一子网上的一个或多个NIC适配器的NIC接口。NIC Bridging允许您将来自不同子网的NIC适配器配对,以实现两个子网之间的通信。
在配置NIC Team时,您将设置Team模式,负载平衡模式,备用适配器和Team接口VLAN。下面将对每个组件进行解释。
Teaming模式
创建NIC Team时,必须选择要使用的Teaming模式。Teaming模式决定了服务器和交换机如何在多个链路之间分配流量。有三种类型的Teaming模式:独立交换、LACP和静态模式。
独立交换
独立交换允许您将团队成员连接到多个非堆叠交换机。独立交换模式是唯一一个在连接到其上的交换机上不需要进行任何配置更改的团队模式。该模式仅使用MAC地址来控制应将传入数据发送到哪个接口。
有一些情况下,您可能选择使用独立交换Teaming模式,例如:
- 您不会对连接的交换机进行配置更改
- 使用多个非堆叠交换机作为团队成员
- 在虚拟机内创建NIC Team(有关详细信息,请参阅下面的在虚拟机中使用的注意事项部分)
如果您更喜欢在流量中使用一个适配器,并且仅在物理链路故障时切换到备用适配器,您必须使用独立交换模式并配置备用适配器。
A standby adapter is not used often because it reduces the total bandwidth that is available for communicating with the server. The default setting is “None (all adapters Active)”.
静态
静态组建要求您在与NIC团队连接的交换机上手动配置端口,形成链路聚合组(LAG)。服务器和交换机将在所有连接的链路之间分配流量。
如果任一端口连接到其他设备,流量将分配到不希望接收的链路上。因此,它无法帮助隔离错误,如插入错误的电缆。
只有在交换机不支持LACP时,才应使用静态组建模式。
链路聚合控制协议(LACP)
LACP组建类似于静态组建,但它还跟踪链接中的每个活动电缆是否实际连接到预期的LAG。LACP不会通过未连接到预期LAG的链路发送数据。
当您希望使交换机意识到NIC团队以平衡交换机发送到NIC团队的数据时,应使用LACP。
重要提示:静态和LACP组建模式要求您仅将主机连接到单个交换机或单个交换机堆栈。
负载均衡模式
负载均衡模式确定团队如何呈现传入数据的界面,并确定用于传出数据的适配器。可用的选项包括地址哈希、Hyper-V端口和动态
。与“负载均衡设备”不同,传入流量不会均匀分配到团队成员使用的每个链路上。
地址哈希
地址哈希模式将尝试使用源和目标IP地址和端口来在团队成员之间创建有效的平衡。如果没有端口是连接的一部分,它将仅使用IP地址来确定如何进行负载平衡。对于没有IP地址作为连接一部分的情况,它将使用MAC地址。
创建NIC团队时,可以强制团队使用IP+端口、仅IP或仅MAC地址。IP+端口是默认设置,并在团队成员之间提供最佳平衡。要使用仅IP或仅MAC地址,您将需要通过PowerShell创建NIC团队。
虽然地址哈希负载均衡模式在在团队成员之间拆分出站流量方面做得很好,但无法适应过度/欠利用的团队成员。此外,所有入站流量都使用主团队界面的MAC地址。但是,如果使用独立交换组队模式,则仅限于单个链接。
在虚拟机内创建团队时,必须使用地址哈希。
Hyper-V端口
Hyper-V端口模式仅适用于Hyper-V虚拟机主机。此模式将为虚拟机主机上的每台计算机分配一个MAC地址,然后为每个MAC地址分配一个团队成员。这样,在正常操作下,特定的VM可以有一个可预测的团队成员。
对于每个VM的可预测的团队成员意味着VM的带宽受限于其运行的单个链接的最大值。当Hyper-V主机上的VM较少时,使用Hyper-V端口负载平衡模式可能不太平衡。
通常情况下,您不需要使用Hyper-V端口模式,但如果您必须确保每个VM始终使用相同的链接,则可能会发现它有益。
动态
动态模式结合了地址哈希和Hyper-V端口模式的最佳特性来平衡出站和入站网络流量。与Hyper-V一样,入站流量通过将团队成员分配给不同的MAC地址来分割。与地址哈希一样,出站流量通过从IP/端口派生的组合哈希来分割。这种混合提供了比上述任何一种方法都更好的平衡。
动态平衡模式带来了一个重要的改进:动态监视流量。当动态模式算法确定某些团队成员被过度/欠度利用时,它将根据需要将出站流量重新平衡到其他团队成员。
TCP流具有自然的节奏,使得可以预测未来的流量量/ TCP中的中断;Microsoft将这些称为flowlets。动态负载平衡模式还可以通过flowlets预测团队成员在未来的使用中将会过度/欠度利用,然后重新平衡出站流量以做好准备。
动态模式几乎总是最佳的负载平衡选项。
团队接口VLAN
创建团队时,默认情况下会创建一个单一的团队接口。团队接口具有VLAN设置,用于将接口上的流量标记到特定的VLAN。通常仅在NIC Team的团队成员使用‘trunk’模式时才设置团队接口VLAN为标记VLAN。
创建团队后,可以在不同的VLAN上创建其他团队接口。
警告:Microsoft建议永远不要为VM内部的接口设置VLAN。相反,请使用Hyper-V开关的高级选项“VLAN ID”为VM定义VLAN。
虚拟机中的NIC Teaming
在VM中设置NIC team会带来一些限制。Microsoft特别指出使用“Teams on Teams”(主机级别的teams和VM级别的teams)可能非常不可预测,并可能导致连接丢失。
传统上,为虚拟机提供容错性需要将虚拟机连接到多个外部虚拟交换机。您必须计划哪些虚拟机将共享每个虚拟交换机,以确保没有一个过度拥塞。负载平衡问题进一步复杂化,因为主机上其他虚拟机可能会导致拥塞。
如今,您可以在虚拟机主机上部署一个 NIC 团队,每个虚拟机只需一个网络适配器。所有虚拟机都可以从物理端口或交换机故障中获得完整的容错性。所有虚拟机的流量可以在团队成员之间平衡,从而实现更好的整体吞吐量和拥塞处理。您的配置现在可以如下所示:

虚拟机中的 NIC 团队有时用于启用 SR-IOV,以减少网络堆栈的 CPU 开销。您还需要 BIOS 支持和 NIC 支持才能使 SR-IOV 生效。
要求
在虚拟机中使用 NIC 团队包括以下要求,以成为“支持的配置”:
- 您必须在虚拟机中使用多个适配器。
- 这些适配器必须连接到两个都是“外部”类型的虚拟交换机。
- 如果连接到物理交换机,则交换机必须位于同一个 L2 子网上。
- 虚拟机 NIC 团队模式必须设置为独立交换机,负载平衡模式必须设置为 *地址哈希*。
在Hyper-V中,您还需要在将成为团队一部分的每个网络适配器的高级功能选项卡中启用VM的NIC Teaming。您可以看到下面是此设置的示例。

最大化性能
尽管NIC Teaming在开箱即用时具有良好的性能,但有各种情景需要关注性能的提升。这些情景的具体细节超出了本文的范围,但如果您想了解更多有关如何提高性能的信息,请关注以下术语:
- 远程直接内存访问(RDMA)
- 嵌入式交换机团队(SET)
- 接收端缩放(RSS)
- 单根I/O虚拟化(SR-IOV)
通常,这些附加设置可以减少网络堆栈和连接之间的一些CPU开销和延迟。您可以在软件和硬件技术解释和通过SET实现RDMA的更高性能文章中了解更多关于提高性能的信息。
在Windows Server上创建NIC Team
掌握了NIC Teaming的工作原理以及简化网络的愿景,您现在应该准备好创建一个NIC Team了!
为了进行这个演示,由于演示环境的限制,将在虚拟机上创建一个网卡团队。在物理服务器上设置网卡团队的步骤与此相同,但如果需要任何针对虚拟机的特定步骤,将会提到。
如何检查是否启用了网卡团队?
自2012年以来,Windows Server的所有版本(包括Server 2012、2012R2、2016和2019)都启用了网卡团队。
通过GUI部署网卡团队
首先,在Windows Server机器上打开Server Manager。确保已连接到要在其上配置网卡团队的机器。
- 首先,右键单击要在其上创建网卡团队的服务器名称,然后选择配置网卡团队

2. 在适配器和接口面板中,选择要添加到新团队的网卡。然后,右键单击所选的适配器,选择添加到新团队

注意:您可以使用一个或多个适配器(最多32个)和一个或多个团队接口来配置网卡团队。
3. 输入描述性的团队名称,根据需要配置其他属性,然后点击确定创建团队。
在这个例子中,正在虚拟机上设置网卡团队。因此,无法使用团队模式或负载均衡模式。如果此演示在物理服务器上进行,可能会使用独立交换机或LACP(如果在交换机上使用链路聚合组)。

网卡团队现在应该已经在Windows Server上创建完成。
将更多的NIC或接口添加到NIC团队
创建后,您可以从同一NIC团队窗口向团队添加NIC。要执行此操作,请右键单击一个可用的NIC,然后选择添加到团队“<团队名称>”。

您还可以通过选择团队接口选项卡,然后单击TASKS —> 添加接口来向团队添加更多接口,如下所示。

一旦输入框出现,请输入要使用的VLAN以及可选的名称,如下所示。

通过Windows PowerShell部署NIC团队
现在您已经知道如何通过GUI设置NIC团队,让我们来看看如何通过PowerShell执行此操作。
查找NIC名称
首先,您必须决定要添加到团队的NIC。更具体地说,您需要找出NIC名称。
要查找NIC名称,请使用Get-Adapter
cmdlet。运行此cmdlet并注意下面显示的选项。

一旦您注意到名称,您现在就可以使用PowerShell创建团队了!对于此演示,我们将使用NIC Ethernet 3和4创建新的NIC团队。
创建NIC团队
现在您手头有适配器名称,您只需运行一个更多的cmdlet(New-NetLbfoTeam
)。您可以看到运行New-NetLbfoTeam
cmdlet及其输出的示例如下。
对于TeamMembers
参数,您将使用之前收集的NIC名称。
在这个例子中,TeamingMode
被设置为 SwitchIndependent
。如果你正在配置交换机端口成为一个 LAG,你可能会想使用 LACP
值。如果你没有在交换机上使用 LAG,你可能会选择使用 SwitchIndependent
。
LoadBalancingAlgorithm
参数值为 Dynamic
,因为这种模式提供了在团队成员之间最均衡的负载平衡。

完成后,你现在会在来自 Get-NetAdapter
的适配器列表中看到一个新的虚拟 NIC:

虚拟机上的 NIC 团队注意事项:
– 你必须使用 ‘SwitchIndependent’ TeamingMode。
– 你必须为 LoadBalancingAlgorithm 使用一种地址哈希类型(TransportPorts)。
– 在物理服务器上,将使用动态负载平衡而不是 TransportPorts。*
添加更多 NIC 或接口到 NIC 团队
一旦你建立了 NIC 团队,你可以像 GUI 一样添加 NIC 和接口到它。要添加更多的 NIC 到团队中,使用 Add-NetLbfoTeamMember
cmdlet*.*
你也可以使用 cmdlet Add-NetLbfoteamNIC
添加更多的团队接口。
摘要
你现在已经了解了什么是NIC Teaming,它与性能/虚拟机使用/简化网络的关系,以及如何通过GUI或PowerShell部署它。