-
Linux
多网卡绑定
网卡绑定
mode
共有七种
(0~
6) bond0
、
bond1
、
p>
bond2
、
bond3
< br>、
bond4
、
bond5
p>
、
bond6
常用的有三种
mode=0
:平衡负载模式,有自动备援,但需要”
Switch
< br>”支援及设定。
mode=1
:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=6
:平衡负载模式,有自动备援,不必”
Swit
ch
”支援及设定。
需要说明的是如果想做成
mode 0
的负载均衡
,
仅仅设置这里
optio
ns bond0 miimon=100
mode=0
是不
够的
,
与网卡相连的交换机必须做特殊配置
(这两个端口应该采取聚合方式)
,
因为做
bonding
的这两块网卡是使用同一个
MAC
p>
地址
.
从原理分析一下
(
bond
运行在
mode
0
下):
mode 0
下
bond
所绑定的网卡的
IP
都被修改成相同的
mac
地址,如果这些网卡都被接在
同一个交换机,
那么交换机的
arp
表里这个
mac<
/p>
地址对应的端口就有多
个,那么交换机
接
受到发往这个
mac
地址的包应该往
哪个端口转发呢?正常情况下
mac
地址是全球唯一的,
一个
mac
地址对应多个端口肯定使交换机迷
惑了。
所以
mode0
下的
bond
如果连接到交换
机,交换机这几个端口
应该采取聚合方式(
cisco
称为
ethernetchannel
,
foundry
称为
portgroup
)
,
因为交换机做了聚合后,
聚合下的几个端口也被捆绑成一个
mac
地址
.
我们的
解
决办法是,两个网卡接入不同的交换机即可。
mode6
模式下无需配置交换机,因为做
bondi
ng
的这两块网卡是使用不同的
MAC
地址。
七种
bond
模式说明:
第一种模式:
mod=0
,即:
(balance-rr) Round-robin
policy
(平衡抡循环策略)
特
点:传输数据包顺序是依次传输(即:第
1
个包走
eth0
,下一个包就走
eth1
< br>…
.
一直循环
下去,
直到最后一个传输完毕)
,此模式提供负载平衡和容错能力;但是我们知道
如果一个
连接或者会话的数据包从不同的接口发出的话,
中途再
经过不同的链路,
在客户端很有可能
会出现数据包无序到达的问
题,
而无序到达的数据包需要重新要求被发送,
这样网络的吞吐
量就会下降
第二种模式:
mod=1
,即:
(active-
backup) Active-backup policy
(主
-
备份策略)
特点:只有一个设
备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。
mac
< br>地
址是外部可见得,从外面看来,
bond
的
MAC
地址是唯一的,
以
避免
switch(
交换机
)
发生混
乱。
此模式只提供了容错能力;
由此可见此算法的优点是可以提供高网络连接的可用性,
但
是它的资源利用率较低,只有一个接口处于工作状态,在有
N
个网络接口的情况下,资源
利用率为
1/N
p>
第三种模式:
mod=2
,即:
(balance-xor) XOR policy
(平衡策略)
特点:基
于指定的传输
HASH
策略传输数据包。缺省的策略是:
(
源
MAC
地址
p>
XOR
目标
MAC
地址
) % slave
数量。
其
他的传输策略可以通过
xmit_hash_policy
选项
指定,
此模式提
供负载平衡和容错能力
第四种模式:
mod=3
,即:
broadcast
(广播策略)
特点:在每个
slave
接口上传输每个数据包
,此模式提供了容错能力
第五种模式:
mod=4
,即:
(802.3ad) IEEE
802.3ad Dynamic link
aggregation
(
IEEE
802.3ad
动态链接聚合)
<
/p>
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据
8
02.3ad
规范将多个
slave
工
作在同一个激活的聚合体下。
外出流量的
slave
选举是基于传输
hash
策略,
该策略可以通过
xmit_hash_policy<
/p>
选项从缺
省的
XOR
策略改变到其他策略。需要注意的
是,并不是所有的传输
策略都是
802.3ad
适
应的,尤其
考虑到在
802.3ad
标准
43.2
.4
章节提及的包乱序问题。不同的实现可能会有不
同的适应<
/p>
性。
必要条件:
条件
1
:
ethtool
支持获取每个
slave
的速率和双工设定
条件
2
:
switc
h(
交换机
)
支持
IEEE 802.3ad Dynamic link aggregation
条件
3
:大多数
switch(
p>
交换机
)
需要经过特定配置才能支持
802.3ad
模式
第六种模式:
mod=5
,即:
(b
alance-tlb) Adaptive transmit load balancing
(适配器传输负
载均衡)
特点:不需要任何特别的
switch(
交换机
)
支持的通道
bonding
。在每个
slave
上根据当前的
负载
(根据速度计算)分配外出流量。如果正在接受数据的
slave
出故障了,另一个
slave
接管失败的
slave
的
MAC
地址。
该模式的必要条件:
ethtool
支持获取每个
slave
的速率
第七种模式:
mod=6
,
即:
(balance-alb) Adaptive
load balancing
(适配器适应性负载均衡)
特点:
该模式包含了
balance-
tlb
模式,
同时加上针对
IPV4<
/p>
流量的接收负载均衡
(receive load
balance, rlb)
,而且不需要任何
switch(
交换机
)
的支
持。接收负载均衡是通过
ARP
协商实现
的。
bonding
驱动截获本机发送的
ARP
应答,
并把源硬件地址改写为
bond
中某个
slave
的
唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
来自服务器端的接收流量也会被均衡。当本机发送
ARP
请求时,
bonding
驱动把对端的
IP
信息从
ARP
包
中复制并保存下来。当
ARP
应答从对端到达
< br>
时,
bonding
驱动把它
的硬件
地址提取出来,并发起一个
ARP
应答给
bond
中的某个
slave
。使用
ARP
协商进行负载均
衡的一个问题是:每次广播
ARP
请求时都会
使用
bond
的硬件地址,因此对端学习到这个
硬件地址后,接收流量将会全部流向当前的
slave
。这个问题可以通过给所有的对端发送更
新
< br>(
ARP
应答)来解决,应答中包含他们独一无二的硬件
地址,从而导致流量重新分布。
当新的
slave
加入到
bond
中时,或者某个未激活的
slave
重新
激活时
,接收流量也要重新
分布。接收的负载被顺序地分布(
roun
d robin
)在
bond
中最高速
的
slave
上
当某个链路被重新接上,或者一个新的
slave
加入到<
/p>
bond
中,接收流量在所有当前激活的
slave
中全部重新分配,通过使用指定的
MAC
地址给每个
client
发起
< br>ARP
应答。下面介绍
的
upd
elay
参数必须被设置为某个大于等于
switch(
交换机
)
转发延时的值,
从而保证发往对
端的
ARP
应答<
/p>
不会被
switch(
交换机
)
阻截。
必要条件:
条件
1
:
ethtool
支持获取每个
slave
的速率;
条件
2
:
底层驱动支持设置某
个设备的硬件地址,
从而使得总是有个
slave(curr_
active_slave)
使用
bond
的硬件地址,同时保证每个
bond
中的
slave
都有一个唯一的硬件地址。如果
curr_
active_slave
出故障,它的硬件地址将会被新选出来的
curr_active_slave
接管