今天接触到个新名词:NIC Teaming。搜集了点信息,回头慢慢看。
1、什么是Teaming
简单来讲,Teaming 就是把同一台服务器上的多个物理网卡(注1)通过软件绑定成一个虚拟的网卡,也就是说,对于外部网络而言,这台服务器只有一个可见的网卡。对于任何应用程序,以及本服务器所在的网络,这台服务器只有一个网络链接或者说只有一个可以访问的IP地址(注2)。
之所以要利用Teaming 技术,除了利用多网卡同时工作来提高网络速度以外,还有可以通过Teaming 实现不同网卡之间的负载均衡(Load balancing)和网卡冗余(Fault tolerance)。
2. Teaming 种类(注3)
2.1. Broadcom Teaming 包含有一下三种实现方式
Smart Load Balancing,
Link Aggregation(802.3ad),
Generic Link Aggregation(Trunking)
2.1.1. Smart Load Balancing (SLB)
SLB 可以实现负载均衡,以及网卡冗余,而且与交换机的型号无关(适用于大多数品牌的交换机),具体的说,就是所有在服务器上的物理网卡都有单独的MAC(注4)地址,通过SLB程序来控制进入和发出的数据包,一旦控制程序检测到有一个物理网卡损坏,会自动把流量分散到其他的正在工作的网卡,这样就保证了网络工作的连续性,对于外部,通过网络访问服务器的程序是透明的。
另外,此种模式下不同的物理网卡可以连接不同的交换机,从而实现交换机的冗余
以下是此种模式下不同操作系统对于负载均衡的支持
![]() | |
|
以下是此种模式下不同操作系统对于网卡冗余的支持
![]() | |
|
2.1.2. Link Aggregation(802.3ad)
此种模式是通过Link Aggregation Control Protocol(LACP) 协议来控制的,分为动态和静态两种配置方式(在交换机上设置),这种模式中 虚拟的网络链接只用一个Mac 地址(Teaming 中的第一个物理网卡的Mac地址)接收数据包。
另外,此种模式下,Teaming 程序只负责对发出的数据包进行负载均衡,而进入的数据包负载均衡由与之相联的交换机负责,因此要求与服务器相联的交换机要支持IEEE 802.3ad 标准。Teaming 程序与交换机共同负责监控链路状态,如果发现有某个链路有问题,便自动进行切换。
以下是此种模式下不同操作系统对于负载均衡的支持
![]() | |
|
以下是此种模式下不同操作系统对于网卡冗余的支持
![]() | |
|
2.1.3. Generic Link Aggregation (Trunking)
此种模式是第二种模式的一个延伸,不同的公司对Link Aggregation 进行了本地化,如Cisco’s Fast EtherChannel (FEC) ,Cisco’s Gigabit EtherChannel (GEC) ,都是Trunk 协议。
在应用中,管理员必须为交换机的某些端口进行静态化配置(注5),同样这里由Teaming 程序和交换机共同监控链路状态。
以下是此种模式下不同操作系统对于负载均衡的支持
![]() | |
|
以下是此种模式下不同操作系统对于网卡冗余的支持
![]() | |
|
2.1.4. 三种模式的比较
详细参见以下列表
![]() | |
|
2.1.5. Teaming网络拓扑结构示意
![]() | |
|
![]() | |
|
![]() | |
|
![]() | |
|
2.2. Intel Nic teaming 分类
Intel 网卡分类一共包含5类
网卡冗余
交换机冗余
网卡负载均衡
Link Aggregation(FEC)
Link Aggregation(GEC)
IEEE 802.3ad
2.2.1. 网卡冗余Adapter Fault Tolerance (AFT)
此种方式如果一个网卡出问题,Teaming中的其他网卡就会自动顶上去,支持2-8个网卡,没有负载均衡的功能,另外,此种模式对于交换机没有特殊限制,只是要求只接同一个交换机即可。
2.2.2. 交换机冗余Switch Fault Tolerance (SFT) -
支持两个网卡分别链接到不同的交换机,从而实现链路冗余,这里要注意交换机需要启动生成树协议(STP)来防止循环,此种模式对于交换机没有限制。
SFT 只运行于 Windows NT 4.0, Windows 2000, 和 Windows Server 2003
2.2.3. 负载均衡Adaptive Load Balancing (ALB)
此种模式实现负载均衡和冗余,在windows操作系统下,同时可以对teaming进行实时控制,如关闭进入数据的负载均衡,此中模式对于交换机没有限制。
2.2.4. Fast EtherChannel*/Link Aggregation (FEC)
此种模式提供2-8个网卡,通过100M的速度链接到交换机,实现负载均衡和冗余,但是要求交换机支持相应协议,如Cisco 交换机
2.2.5. Link Aggregation(GEC)
此种模式是FEC的扩展,不通的是工作于1000M,而起交换机端口需要配置静态模式(static)
2.2.6. IEEE 802.3ad
此种模式中,网卡可以工作于不同的速度,就是说可以用不通速度的网卡建立teaming, 但同样要求交换机完全支持IEEE 802.3ad 标准
3. 实现 Teaming实例
以Windows 2000 和Redhat为例,其他操作系统请参见Broadcom/intel cdrom附带光盘的用户手册目录
3.1. Window 2000
3.1.1. Broadcom 网卡
1. 在Broadcom 光盘中找到MgmtApps目录,运行其中的setup 文件,开始安装 The Broadcom Advanced Server Program (BASP)
如图
![]() | |
|
2. 点击下一步,选取所有协议
![]() | |
|
3. 点击下一步,进行安装,完成后在控制面板中会出现如下图标
![]() | |
|
4. 如果需要卸载,可以通过控制面板中的添加删除程序来完成
5. 击broadcom图标,进入管理界面,可以看到各个物理网卡的状态
![]() | |
|
6. 在负载均衡标签里面可以进行teaming 的配置
![]() |
![]() |
8、通过网上邻居的属性,定义网络参数
![]() | |
|
9.定义网络参数完成配置
![]() |
把Intel 网卡光盘放到cdrom中,运行,在菜单中选择网卡软件安装,完成安装,之后,控制面板中就会出现类似的一个配置工具,运行可以进行teaming配置,具体方法与Broadcom网卡配置方法基本相同。
![]() | |
|
3.2. Linux
3.2.1. Broadcom 网卡
1. 先正确安装Broadcom 网卡
2. 在光盘中间linux目录下找到安装程序,复制到 redhad 下
3. 执行命令
rpm -i basplnx-{version}.src.{arch}.rpm
4. 编译驱动(8.0以上用rpmbuild命令)
% cd /usr/src/{redhat or packages}
% rpm -bb SPECS/basplnx.spec or rpmbuild -bb SPECS/basplnx.spec
5.安装新的RPM包
% rpm -i RPMS/i386/basplnx-{version}.{arch}.rpm
5. 加载驱动,完成安装
% insmod basp
6. 配置之前请确认/etc/sysconfig/network-scripts目录下每个网卡都有如下属性,文件为ifcfg-eth(*)
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
7.拷贝例子配置文件"/etc/basp/samples" 目录到 "/etc/basp" 目录
修改配置文件确定teaming 类型
TEAM_ID: this number uniquely identifies a team
TEAM_TYPE: 0 = SLB, 1 = Generic Trunking/GEC/FEC, 2 = 802.3ad
TEAM_NAME: ascii name of the team
TEAM_PAx_NAME: ascii name of the physical interface x, where x can be 0 to 7
TEAM_PAx_ROLE: role of the physical interface x 0 = Primary, 1 = Hot-standby.This field must be 0 for Generic Trunking/GEC/FEC team.
TEAM_VAx_NAME: ascii name of the virtual interface x, where x can be 0 to 63
TEAM_VAx_VLAN: 802.1Q VLAN ID of the virtual interface x.For untagged virtual interface, i.e., without VLAN enable, set it to 0. The valid VLAN ID can be 0 to 4094.
TEAM_VAx_IP: IP address of the virtual interface x. The format should be aa.bb.cc.dd.
TEAM_VAx_NETMASK: Subnet mask of the virtual interface x. The format should mm.nn.oo.pp
8.启动teaming 程序
% /etc/init.d/basp start
3.2.2. Intel 网卡
1. 以 root身份登陆
2. Copy iANS-x.x.x.tar.gz 一个目录下(本文件可以在光盘中linux目录下找到)
3. tar xzf iANS-x.x.x.tar.gz 解压缩
4. 进入 iANS-x.x.x/src 目录
5. 运行make编译文件
6. 运行make install 完成安装
7. 运行ianstool来配置teaming,出现菜单如下
1) Adding a team
2) Deleting an existing team
3) Viewing an existing team’s status
4) Configuring an existing team’s topology
5) Saving the current topology
或者可以通过以下方法手动配置teaming
用ifconfig 把所有网卡down掉 #ifconfig ethx down
调用模块#insmod ians
用ianscfg 命令配置teaming,具体命令格式参考man
#man ianscfg
激活teaming
#ifconfig <vadapter_name>; <IPaddr>; [netmask <NETMASK>;] [broadcast <BROADCAST>;]
用ianscfg命令保存teaming配置
如果想每一次重新起动都自动运行,用如下命令,调用上一部保存的配置文件
ianscfg –b [-f <file name>;]
编辑 /etc/sysconfig/network-scripts里面的网络文件ifcfg-<vadapter_name >;
使得文件中包含如下内容
DEVICE="<vadapter_name>;"
BOOTPROTO="none"
ONBOOT="yes"
IPADDR="<IP_address>;"
NETMASK="<netmask>;"
配置实例
modules.conf
#alias eth0 eepro100
#alias eth1 eepro100
#alias eth2 eepro100
alias eth0 e100
alias eth1 e100
alias eth2 e100
alias parport_lowlevel parport_pc
alias scsi_hostadapter aic7xxx
Script for Setting up AFT Mode with VLANs: (two PRO/100 adapters)
insmod e100
insmod ians
ianscfg -a -t team1 -M AFT -V
ianscfg -at team1 -m eth0 -p primary
ianscfg -at team1 -m eth1 -p secondary
ianscfg -at team1 -v vadapt1 -i 10
ianscfg -at team1 -v vadapt2 -i 15
ianscfg -c team1
ianscfg -s
ifconfig vadapt1 192.168.1.1 netmask 255.255.255.0
ifconfig vadapt2 192.168.2.1 netmask 255.255.255.0
4. 相关资源
1. 从哪里可以得到broadcom的光盘
ftp://ftp.software.ibm.com/pc/pccbbs/options/v678-cd.exe
2. 从哪里可以得到Intel nic 的光盘
ftp://ftp.software.ibm.com/pc/pccbbs/options/v82-cd.exe
4. 访问Broadcom网址
http://www.broadcom.com
5. 访问Intel 网址
http://www.intel.com
5. 注释
1, 可以是服务器集成的和后添加的网卡,也可以是不通生产商生产的网卡
2, 有关IP地址的说明请参考TCP/IP协议有关解释
3, 本文档如果没有特殊说明都是针对Broadcom网卡的配置
4, 网卡的物理地址,可以通过ipconfig /all (windows) 或者ifconfig –a (linux)查看
5, 通过交换机内部的操作系统来配置,如Cisco 的IOS系统,可以通过串口线,或者网络telnet命令登陆交换机的操作系统