NIC Teaming技术将2个或更多个网卡(HP NIC Teaming最多可达8个)捆绑在一起使用,以达到增加总的带宽(Load Balance,负载均衡)或者线路容错(Fault Tolerance)的目的。由2个或多个网卡组成一个逻辑网络端口Teamport,IP地址和网络设置绑定在这个逻辑的Teamport上,这样,无论哪一个物理网卡或者其相连的链路单独出现故障,Teamport还是能正常工作,服务器对外的网络连接不会中断。

为了方便说明,除非特别说明,本文以下部分的例子中将2个或多个网卡一律写成2个网卡,示意图也只画2个网卡。

HP服务器的NIC Teaming分三大类共7个选项,这三大类是指NFT、TLB和SLB。(7个选项后文会说明)

【NFT】
NFT 就是Network Fault Tolerant的缩写,这种模式下一个网卡处于活动(Active)状态,而另外一个网卡处于待机(standby)状态,平时只有一个网卡在用。NFT模式下,组成Teamport的2个1Gb的网卡分别连到2个不同的交换机,Teamport总带宽只有1Gb,这种模式具有容错能力,但是不具有增加带宽和负载均衡的能力。 

snap0018 

【TLB】
TLB就是Transmit Load Balance,从字面上理解,就是传出(Tx)的负载均衡,也就是说,从服务器向外部发送的数据包,根据一定的规则,分别从Teamport中的2个网卡传出去,但是这种方式,不能保证接受(Rx)的数据包也同样能够负载均衡。简单的说,TLB可以做到网络容错,Teamport的Tx是2Gb带宽,Rx还是只有1Gb(除非有另外的方法来做负载均衡) 
snap0022  

【SLB】
SLB是Switch-assist Load Balance,顾名思义,交换机协助的负载均衡,就是需要在交换机上进行相应的配置以后才能实现。SLB Team中的2个网卡必须连接到同一个交换机,这2个网卡到同一交换机的2个端口之间的链路就合并组成一个通道,这个通道Cisco交换机术语叫Etherchannel,其他厂商的交换机则常称这个为Port Trunk。这种组成联合通道的方式也称之为静态的链路聚合(SLA, Static Link Aggregation)。SLB方式的Teamport是双向2Gb,Tx和Rx的数据流都可以做到负载均衡,但是它只能保证网卡的容错,做不到交换机的容错。 
snap0020 

注意(1):应用SLB时还要特别注意SLB的负载均衡实现方式和对端交换机的限制。一般而言,很多厂商的交换机,都要求同一个聚合链路中的每个端口都必须是一致的,例如千兆端口不能和百兆端口聚合,百兆全双工的端口不能和百兆半双工的端口聚合。
注意(2): 不同厂商的负载均衡的算法有所不同,比如某些型号的Cisco交换机的Etherchannel是Layer 2的,有3种Load Balancing方式:基于源MAC,基于目的MAC和XOR方式;而其他的一些型号或者有些其他厂商的还可以根据源IP,IP Hash或者TCP Session的方式。如要继续深入研究并理解这些算法的优劣,请参考相关交换机厂商的文档。
(关于不同型号思科交换机的Etherchannel的异同和负载均衡的算法,请参考:http://www.cisco.com/en/US/tech/tk389/tk213/technologies_tech_note09186a0080094714.shtml) 

【NFT/TLB/SLB比较】
这三种方式的比较如下:
 NFTTLBSLB
网卡容错支持支持支持
交换机容错支持支持不支持
Tx负载均衡不支持支持支持
Rx负载均衡不支持不支持支持

【HP的NIC Teaming】
HP Proliant系列服务器的NIC Teaming是通过其PSP(Proliant Support Pack)中的NCU (Network Configuration Utility)来实现的。双击右下Systray中的HP网络工具的小图标,就能打开NCU配置界面。

从下面的截图我们可以看见,HP Network Team #1是一个Teamport,它由2个HP NC7782千兆端口组成。Teamport左边的绿×××标说明它目前工作正常。端口1是实线,说明其处于Active状态,端口2有一部分虚灰的颜色,表明这个链路是Standby的。

点击Teamport,然后点Property按钮,就可以打开Teamport的属性配置界面,在这里,我们可以选择HP NIC Teaming的类型。 

snap0023

从图中我们可以看到,HP的Team类型有7个选择,分别是

  • Automatic (Recommended)
  • 802.3ad Dynamic with Fault Tolerance
  • Switch-assisted Load Balancing with Fault Tolerance (SLB)
  • Transmit Load Balancing with Fault Tolerance (TLB)
  • Transmit Load Balancing with Fault Tolerance and Preference Order
  • Network Fault Tolerance Only (NFT)
  • Network Fault Tolerance with Preference Order

我们发现上面这些选择中毫无例外的都注明了Fault Tolerance,这恰恰说明了NIC Teaming的最重要的目的:容错

这其中的SLB, TLB, NFT前文已经介绍过了。这里再解释下其他几个。

【NFT with PO和TLB with PO】
Preference Order就是指一种优先顺序,这种顺序往往是根据链路类型、速率等方式决定的。

NFT with Preference Order就是带有优先顺序的NFT。举例说明,比如一台NFT的Teamport是由一个千兆的Port A和一个百兆的Port B组成的,则Port A由于传输速率快,优于Port B,所以Port A会成为Active,而Port B则为Standby。TLB with Preference Order同理,通常用于将不同速率端口绑定在一起的情况下。

【802.3ad Dynamic】
和SLB类似,802.3ad Dynamic 方式也是到同一台交换机的链路聚合,只不过不是静态配置的,而是动态构成(也就是自动协商)的。它是通过一种智能的链路协商协议LACP (Link Aggregation Control Protocol)来实现的。LACP原本用于交换机和交换机之间的链路聚合,启用了LACP协议的2台交换机会相互发送LACP的协商报文,当发现2者之间有多条可用的链路的时候,自动将这些链路组合成一条带宽更大的逻辑链路,从而利用负载均衡来实现加宽交换机间链路带宽的目的。HP的NIC Teaming也支持动态链路聚合,可以实现在HP服务器和支持802.3ad 动态LACP的交换机之间自动创建聚合链路。 

【Automatic】
Automatic (Recommended) 其实不是一种单独的模式,当选择Automatic的时候,会判断Team中的这些port是不是连接到同一个支持802.3ad Dynamic LACP协议的交换机,如果是,则选择802.3ad Dynamic方式;如果不是,则使用TLB方式。

如想继续深入HP的NIC Teaming技术,比如研究Load Balancing算法、检测链路失败的方法和链路恢复等,请阅读HP NIC Teaming White Paper (英文) 。

【参考文档】
(1) HP NIC Teaming White Paper (英文)
http://h20000.www2.hp.com/bc/docs/support/SupportManual/c01415139/c01415139.pdf