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,这种模式具有容错能力,但是不具有增加带宽和负载均衡的能力。
【TLB】
TLB就是Transmit Load Balance,从字面上理解,就是传出(Tx)的负载均衡,也就是说,从服务器向外部发送的数据包,根据一定的规则,分别从Teamport中的2个网卡传出去,但是这种方式,不能保证接受(Rx)的数据包也同样能够负载均衡。简单的说,TLB可以做到网络容错,Teamport的Tx是2Gb带宽,Rx还是只有1Gb(除非有另外的方法来做负载均衡)
【SLB】
SLB是Switch-assist Load Balance,顾名思义,交换机协助的负载均衡,就是需要在交换机上进行相应的配置以后才能实现。SLB Team中的2个网卡必须连接到同一个交换机,这2个网卡到同一交换机的2个端口之间的链路就合并组成一个通道,这个通道Cisco交换机术语叫Etherchannel,其他厂商的交换机则常称这个为Port Trunk。这种组成联合通道的方式也称之为静态的链路聚合(SLA, Static Link Aggregation)。SLB方式的Teamport是双向2Gb,Tx和Rx的数据流都可以做到负载均衡,但是它只能保证网卡的容错,做不到交换机的容错。
注意(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比较】
这三种方式的比较如下:
为了方便说明,除非特别说明,本文以下部分的例子中将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 snap0018](https://i-blog.csdnimg.cn/blog_migrate/7d65a24c6e35149bc696fee578481467.png)
【TLB】
TLB就是Transmit Load Balance,从字面上理解,就是传出(Tx)的负载均衡,也就是说,从服务器向外部发送的数据包,根据一定的规则,分别从Teamport中的2个网卡传出去,但是这种方式,不能保证接受(Rx)的数据包也同样能够负载均衡。简单的说,TLB可以做到网络容错,Teamport的Tx是2Gb带宽,Rx还是只有1Gb(除非有另外的方法来做负载均衡)
![snap0022 snap0022](https://i-blog.csdnimg.cn/blog_migrate/e93ccba48695609d9b1d0b8355ef3334.png)
【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 snap0020](https://i-blog.csdnimg.cn/blog_migrate/a56022acc635bbd9a918410f7dd4d6a6.png)
注意(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比较】
这三种方式的比较如下:
NFT | TLB | SLB | |
网卡容错 | 支持 | 支持 | 支持 |
交换机容错 | 支持 | 支持 | 不支持 |
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 snap0023](https://i-blog.csdnimg.cn/blog_migrate/1c80b793d19b6e83ee9e77dc06451e20.png)
从图中我们可以看到,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的交换机之间自动创建聚合链路。
这其中的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