分享
 
 
 

Linux2.2.18环境下实现多网卡Bonding

王朝system·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

将多块网卡虚拟成为一块网卡,使其具有相同的IP地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding。这项技术其实在sun和cisco中已经存在,分别称为Trunking和etherchannel技术,在Linux中,这种技术称为bonding。

bonding驱动最早来自于Donald Becker的beowulf对kernel2.0的补丁。但是已经有了很大的改进和变化,最早来自于extreme-linux和beowulf的工具已经不适用于现在版本的驱动了。

对于新版本的驱动,请参考本文最后的链结地址。

1、安装

1) 编译带有bonding driver的内核

对于最新版本的bonding驱动,使用内核2.2.18或以上版本(否则需要对内核打补丁)。

使用make menUConfig/xconfig/config来编译内核,并在"Network device support"部分选择"Bonding driver support",这里推荐配置该驱动为模块方式,因为目前这是传递给参数给驱动并配置多个bonding设备的唯一方法。

编译和安装新的内核和模块:

make dep;make clean;make bzImage;make modules;make modules_install;

2) 获取并安装用户治理工具

这个版本的bonding驱动需要新的ifenslave程序。来自extreme-linux和beowulf的原始工具程序不能在这里使用。内核2.2.18及其以上版本在Documentation/network中包含文件ifenslave.c。对于更老的内核,请参考文章最后的资源链结部分的内容。

安装ifenslave.c:

# gcc -O2 -s -o ifenslave ifenslave.c

# cp ifenslave /sbin/ifenslave

3) 配置系统

参考下一部分关于模块参数的内容。首先需要在/etc/conf.modules中添加如下内容:

alias bond0 bonding

使用标准的发布技术来定义bond0这个网络接口,例如在redhat发布中,在/etc/sysconfig/network-scripts目录中添加ifcfg-bond0文件:

DEVICE=bond0

IPADDR=192.168.1.1

NETMASK=255.255.255.0

NETWORK=192.168.1.0

BROADCAST=192.168.1.255

ONBOOT=yes

BOOTPROTO=none

USERCTL=no

(使用适当的值来替代IP地址192.168.1)

所有属于bond的接口动必须被定义为SLAVE或MASTER。例如,在Redhat中,假如希望定义eth0和eth1定义为属于接口bond0的一部分,那么它们的配置文件(ifcfg-eth0, ifcfg-eth1,等)间如下所示:

DEVICE=eth0

USERCTL=no

ONBOOT=yes

MASTER=bond0

SLAVE=yes

BOOTPROTO=none

(对于eth1使用DEVICE=eth1;假如定义bond2,那么使用MASTER=bond1)。

假如治理工具支持可以重新启动网络子系统或者仅仅启动bonding设备,否则重新启动机器。(对于redhat发布,使用`ifup bond0'或`/etc/rc.d/init.d/network restart')

假如你的发布提供的治理工具不支持在网络接口配置中定义master/slave,则需要使用下面的命令手工配置bonding设备:

# /sbin/ifconfig bond0 192.168.1.1 up

# /sbin/ifenslave bond0 eth0

# /sbin/ifenslave bond0 eth1

(根据网络实际情况定义IP地址等参数)

当然也可以将这些命令定义为一个脚本,以方便执行。

4) 模块参数

下面的模块参数可能被传递:

mode=

可能的值为0(默认的轮转模式round robin policy),或者1(热备份模式),参考下面的HA部分来得到更多的相关信息。

miimon=

整数值,定义MII链路监测频率(单位为频率)。默认值为0,表示关闭链路监测。假如希望使用链路监测,一个合适的值为100。参考HA部分得到更多信息。

downdelay=

在发现链路故障时,这里规定的整数值定义disable一个链路的延迟(单位为毫秒)。必须是miimon的整数倍。默认值为0。参考HA部分得到更多信息。

updelay=

侦测到"link up"状态时,这里规定的整数值定义了enable一个链路的延迟。必须是miimon的整数倍。默认值为0。参考HA部分得到更多信息。

假如需要定义多个bonding设备,驱动必须被多次加载。例如,对于有两个bonding设备的情况,/etc/conf.modlues必须包含如下内容:

alias bond0 bonding

alias bond1 bonding

options bond0 miimon=100

options bond1 -o bonding1 miimon=100

5) 测试配置

可以通过ifconfig命令来监测配置和传输策略,例如对于轮转策略,你应该得到如下信息:

[root]# /sbin/ifconfig

bond0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4

inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0

UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1

RX packets:7224794 errors:0 dropped:0 overruns:0 frame:0

TX packets:3286647 errors:1 dropped:0 overruns:1 carrier:0

collisions:0 txqueuelen:0

eth0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4

inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0

UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1

RX packets:3573025 errors:0 dropped:0 overruns:0 frame:0

TX packets:1643167 errors:1 dropped:0 overruns:1 carrier:0

collisions:0 txqueuelen:100

Interrupt:10 Base address:0x1080

eth1 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4

inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0

UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1

RX packets:3651769 errors:0 dropped:0 overruns:0 frame:0

TX packets:1643480 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

Interrupt:9 Base address:0x1400

问题:

1. bonding会不会和SMP冲突?

不会,老的2.0.xx版本配合SMP使用会发生冲突,而新的内核不会发生问题。

2. 哪种类型的网卡可以用作bonding?

任何类型的网卡(甚至可以使用混合类型的网卡-一个Intel的therEXPress PRO/100和a 3com 3c905b),甚至可以将两个Gigabit以太网卡bond在一起使用。

3. 我可以拥有多少个bonding设备?

对应于加载的一个模块,就可以拥有一个bonding设备,参考模块参数部分来了解如何实现。

4. 一个bonding设备可以有多少个salve网卡?

受限于linux可以支持的网卡数量和系统可以插接的网卡数量。

5. 当一个slave链路出现故障,会发生什么问题?

假如你的以太网卡支持MII状态监控,并且MII监测已经在驱动中被使用(参考模块参数部分内容),那么就不会出现什么不幸的结果。这个版本的bonding驱动能得到MII信息并且根据链路状态来enable或者disable某个slave网卡。参考HA部分得到更多信息。

所有不能报告自己的链路状态的以太驱动不能很好地处理这种情况。bonding驱动不能连续发送数据报,而导致某些数据报丢失。而重传可能会引起严重的性能问题(假如一块网卡丢失,那么可能会对TCP或UDP带来严重的性能影响)。

6. bonding能被用作高可用性项目么?

当然可以,假如使用了MII监测,并且你所有的网卡驱动都支持MII链路状态汇报。参考HA部分内容。

7. bonding能适用于哪种类型的switches/systems?

在轮转模式,它和下面支持trunking的系统能一起工作:

* Cisco 5500 series (参考EtherChannel支持相关内容)。

* SunTrunking software.

* Alteon AceDirector switches / WebOS (使用Trunks).

* BayStack Switches (trunks必须被配置). 可堆叠的模块(450)能在不同的物理单元的端口中定义

* Linux bonding.

对于热备份模式下,它能和一切二层交换机工作。

8. 一个bonding设备的MAC来自于哪个网卡?

假如没有明显使用ifconfig来配置指定,bonding设备的MAC地址从它的第一个slave中得到。这个MAC地址随即被传递个所有其他的slave设备,这些其他的slave设备将具有这个MAC,即使第一个Slave设备被去除。只有bonding设备重起或者down了,MAC地址才会改变。

假如希望修改MAC地址,可以使用ifconfig来设置:

# ifconfig bond0 ha ether 00:11:22:33:44:55

可以通过up/down设备,然后修改其slave的顺序来改变bonding设备的MAC地址:

# ifconfig bond0 down ; modprobe -r bonding

# ifconfig bond0 .... up

# ifenslave bond0 eth...

这个方法将自动从下一个将被添加的slave中得到地址。

为了恢复slave的MAC地址,需要将其从bonding设备中分离出来(`ifenslave -d bond0 eth0'),down掉该设备(`ifconfig eth0 down'),去除模块(`rmmod 3c59x'),然后重载其以使其从其eeproms中得到其MAC地址。若一个驱动被多个设备所拥有,那么需要将其全部down掉。另外一种方法是察看启动时该卡的MAC地址(dmesg或 tail /var/log/messages),并使用ifconfig来reset它:

# ifc

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有