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

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

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

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



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


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


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

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

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

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

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



从图中我们可以看到,HPTeam类型有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 POTLB with PO
Preference Order就是指一种优先顺序,这种顺序往往是根据链路类型、速率等方式决定的。

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

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

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

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