将多块网卡虚拟成为一块网卡,使其具有相同的IP地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding


bonding modes

數字表示文字表示說明
0balance-rr?負載平衡模式, 需有 switch 設定 (trunk) 支援才能發揮實質效果
?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作
1active-backup?同一時間只有單一 Slave 網卡運作
?Active Slave 網卡失效時自動啟用次一順位 Slave 網卡
?不需 switch 支援
2balance-xor*未研究*
3broadcast?所有 Slave 網卡一齊收送網路封包
?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作
4802.3ad*未研究*
5balance-tlb?傳出自動負載平衡
?傳入由 Current Active Slave 負責
?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作
?不需 switch 支援及設定
6balance-alb?傳出及傳入皆自動負載平衡
?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作
?Slave 網卡 driver 需支援 setting hardware address 功能
?不需 switch 支援及設定


实现bonding条件:

1. kernel支持

[root@server ~]# cat /boot/config-2.6.18-8.2|grep -i bonding

如果有CONFIG_BONDING=m,表示支持。


2.网卡支持


有些网卡不支持bonding。使用ethtool -i ethN查看使用什么驱动,使用mii-tool查看是否支持mii功能。


[root@server ~]# ethtool -i eth0

driver: pcnet32

version: 1.32

firmware-version:

bus-info: 0000:02:01.0

[root@server ~]# mii-tool

SIOCGMIIPHY on 'eth0' failed: Operation not supported

SIOCGMIIPHY on 'eth1' failed: Operation not supported

no MII interfaces found


手动启动bonding:

# /etc/init.d/network stop

# modprobe bonding miimon=100 mode=1

# ifconfig bond0 192.168.1.7 netmask 255.255.252.0

# ifenslave bond0 eth0 eth1

# route add default gw 192.168.1.1 bond0


网卡信息:


[root@server ~]# ifconfig

bond0     Link encap:Ethernet  HWaddr 00:0C:29:39:2E:A7

         inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0

         inet6 addr: fe80::20c:29ff:fe39:2ea7/64 Scope:Link

         UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

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

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

         collisions:0 txqueuelen:0

         RX bytes:124134 (121.2 KiB)  TX bytes:61276 (59.8 KiB)


eth0      Link encap:Ethernet  HWaddr 00:0C:29:39:2E:A7

         inet6 addr: fe80::20c:29ff:fe39:2ea7/64 Scope:Link

         UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

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

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

         collisions:0 txqueuelen:1000

         RX bytes:73690 (71.9 KiB)  TX bytes:47033 (45.9 KiB)

         Interrupt:67 Base address:0x2000


eth1      Link encap:Ethernet  HWaddr 00:0C:29:39:2E:A7

         inet6 addr: fe80::20c:29ff:fe39:2ea7/64 Scope:Link

         UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

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

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

         collisions:0 txqueuelen:1000

         RX bytes:50684 (49.4 KiB)  TX bytes:15645 (15.2 KiB)

         Interrupt:67 Base address:0x2080




bond的信息:




[root@server ~]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.0.3 (March 23, 2006)


Bonding Mode: fault-tolerance (active-backup)

Primary Slave: None

Currently Active Slave: eth0

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0


Slave Interface: eth0

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:39:2e:a7


Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:39:2e:b1


配置文件(/etc/sysconfig/network-scripts/ 目录下的文件):



[root@server network-scripts]# cat ifcfg-bond0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=bond0

IPADDR=192.168.1.7

NETMASK=255.255.255.0

NETWORK=192.168.1.0

ONBOOT=yes


[root@server network-scripts]# cat ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

ONBOOT=yes

SLAVE=yes

MASTER=bond0

[root@server network-scripts]# cat ifcfg-eth1

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth1

ONBOOT=yes

SLAVE=yes

MASTER=bond0


/etc/modprobe.conf 中的网卡设备信息:


[root@server network-scripts]# cat /etc/modprobe.conf

alias eth0 pcnet32

alias eth1 pcnet32

alias bond0 bonding

options bond0 miimon=100 mode=1



出错信息:



dev->set_mac_address


无法支援 mode 6 (balance-alb), 錯誤訊息如下:


bonding: Error: dev->set_mac_address of dev eth0 failed! ALB mode requires that the base driver support setting the hw address also when the network device's interface is open