将多块网卡虚拟成为一块网卡,使其具有相同的IP地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding
bonding modes
數字表示 | 文字表示 | 說明 |
0 | balance-rr | ?負載平衡模式, 需有 switch 設定 (trunk) 支援才能發揮實質效果 ?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作 |
1 | active-backup | ?同一時間只有單一 Slave 網卡運作 ?Active Slave 網卡失效時自動啟用次一順位 Slave 網卡 ?不需 switch 支援 |
2 | balance-xor | *未研究* |
3 | broadcast | ?所有 Slave 網卡一齊收送網路封包 ?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作 |
4 | 802.3ad | *未研究* |
5 | balance-tlb | ?傳出自動負載平衡 ?傳入由 Current Active Slave 負責 ?具容錯功能, 其中一張 Slave 網卡失效仍可持續運作 ?不需 switch 支援及設定 |
6 | balance-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