-
一、
L
inux
bonding
研究及实现
Linux Bonding
本文介
绍
Linux
(具体发行版本是
Cen
tOS5.6
)下的双卡绑定的原理及实现。
Linux
双网卡绑定实现是使用两块网卡虚拟成为一块网卡设备,这简单来说
,就是两块网卡
具有相同的
IP
地址而
并行链接聚合成一个逻辑链路工作。这项技术在
Sun
和
Cisco
中分别
被称为
Trunking
和
Etherchannel
技术,在
Linux
的
2
.4.x
及其以后的内核则称为
Bonding
技
术。
bonding
p>
的前提条件:网卡应该具备自己独立的
BIOS
芯片,并且各网卡芯片组型号相同。
同一台服务器上的网卡毫无疑问是是符合这个条
件的。
Bonding
原理
bonding
的原理:在正常情况下,网卡只接收目的硬件地址
(MAC Address)
是自身
MAC
的以
太网帧,过滤别的数据帧,以减轻驱动程序的负担;但是网卡也支持
另外一种被称为混杂
promisc
的模式,
< br>可以接收网络上所有的帧,
bonding
就运行在这种
模式下,
而且修改了驱动
程序中的
ma
c
地址,将两块网卡的
MAC
地址改成
相同,可以接收特定
MAC
的数据帧。然
后把相应的数据帧传送给
bond
驱动程序处理。
为方便理解
bonding
的配置及实现,
顺便阐述一下
Linux
< br>的网络接口及其配置文件。
在
Linux
中,所有的网络通讯都发生在软件接口与物理网络
设备之间。与网络接口配置相关的文件,
以及控制网络接口状态的脚本文件,全都位于<
/p>
/etc/sysconfig/netwrok-
scripts/
目录下。网络
接口配置文件用于控制系统中
的软件网络接口,
并通过这些接口实现对网络设备的控制。
当<
/p>
系统启动时,
系统通过这些接口配置文件决定启动哪些接口,
p>
以及如何对这些接口进行配置。
接口配置文件的名称通常类似于
p>
ifcfg-
,其中
与配置文件所控制的设备的
名称相关。
在所有的网络接口中,最常用的就是以太网接口
ifcfg-e
th0
,它是系统中第一块
网卡的配置文件。
< br>虽然在不同的系统之间,
文件的类型和数量并不一定相同,
但各种的网络
设备都需要用到这些文件保证设备的正常运作。
bonding
技术,就是通过配置文件建立绑定
接口,从而实
现多个物理网卡绑定到一个虚拟网卡。
测试环境
本次作业环境中,使用的是
CentOS5.6
,其系统信息如下:
[root@support ~]# cat /etc/issue
CentOS release 5.6 (Final)
Kernel r on an m
[root@support ~]# uname -a
Linux support 5 #1 SMP Tue Apr 12
18:10:13 EDT 2011 x86_64 x86_64 x86_64
GNU/Linux
可以通过
modinfo
bondi
ng
命令查看
Linux
是否支持
p>
bonding
,据资料介绍,
RHEL4
已默认
支持了,
RHEL5
、
CentOS5
毫无疑问也是支持的。
系统有类似下面的信息输出,
就说明已支
持了。
[root@support ~]# modinfo
bonding
filename:
/lib
/modules/5/kernel/drivers/net/bonding/
author:
Thomas
Davis,
tadavis@
and many
others
description:
Ethernet Channel Bonding Driver,
v3.4.0-1
version:
3.4.0-1
license:
GPL
srcversion:
358EAAF5610876F44387AEF
depends:
ipv6
vermagic:
5 SMP
mod_unload gcc-4.1
parm:
max_bonds:Max number of bonded devices
(int)
??
??
parm:
debug:Print debug messages; 0 for off
(default), 1 for on (int)
module_sig:
883f3504da4d65c2ddc58dbbe9356811249c0a0
993d9c1c5b9055a7e4f2b4d86e86e
bb2c5fbdbf
09e2c41b93ca13b6b809914bc6a201c3cf694855143
Bonding
配置
通过在
/etc/sysconfig/network-scripts/
目录下创建
ifcfg-
bond
配置文件,就能够创建绑
定
< br>接
口。
文件
名称
中的
为接
口的
编号
,
如第
一个
通道
绑定
接口<
/p>
的名
称一
般
为<
/p>
ifcfg-
bond0
。
ifcfg-bond
< br>文件的内容与以太网接口的配置文件
(
如
ifcfg-
eth0)
基本相同,
只是
DEVICE
选项的值,应该为
bond
。
< br>Bonding
接口创建以后,被绑定的网卡必须在他们的设置文件里面添加
p>
MASTER
和
SLA
VE
两个参数。每个
bonding
接口的设置基本相同,具体配置如下:
1
< br>、新建
/etc/sysconfig/network-
scripts/ifcfg-
bond0
文件,输入以下配置信息:
[root@support ~]# cat
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=10.8.0.231
NETMASK=255.255.0.0
NETWORK=10.8.0.0
BROADCAST=10.8.255.255
ONBOOT=yes
USERCTL=NO
BONDING_OPTS=
说明:
这里使用了
p>
BONDING_OPTS
选项,
则不需要
再使用
/etc/
配置文件对
p>
绑定设备进行配置。参数
mode=0
,指
负载均衡模式,详见下文。
miimon
是用来进行链路监
p>
测的,其原理是检测网上的链路状态,一般将
miimon
值设为
100
,表示系统每
100ms
监测
一次链路连接状态,如果有一条线路不通就
转入另一条线路。
2
、修改
/etc/sysconfig/network-scripts/ifcfg-
eth0
网卡属性
[root@support ~]# cat
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:30:48:56:DA:72
ONBOOT=yes
MASTER=bond0
SLA
VE=yes
3
、修改
/etc/sysconfig/network-scripts/ifcfg-
eth1
网卡属性
[root@support ~]# cat
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:30:48:56:DA:73
ONBOOT=yes
HOTPLUG=no
DHCP_HOSTNAME=support
MASTER=bond0
SLA
VE=yes
说明:修改单个网卡配置,主要是去掉
IP
< br>地址、子网掩码等信息。同时添加
MASTER
及
SLA
VE
两项参数。
MASTER=
:
的值是以太网卡连接到的通道绑定接口的名
称,这个指令与
p>
SLA
VE
指令配合使用。
< br>SLA
VE=
:
yes
-
表示此设备可以由
MASTER
指令中配置的通道绑定接口进行控
制。
no -
表示此设备不能由
MASTER
指令中配置的通道绑定接口进行控制。
4
、
编辑
/etc/
文件,
添加:
alias bond0
bonding
,
以使系统在启动时加载
bonding
模块,对外虚拟网络接口设备为
bond0
[root@support ~]# cat
/etc/
alias bond0 bonding
alias eth0 e1000
alias eth1
e1000
alias scsi_hostadapter ata_piix
alias scsi_hostadapter1 usb-storage
注:
在
linux6
下测试时,
发现没有
这个文件,
需要进入
modprobe.d
文件夹创
p>
建
,再将“
ali
as bond0 bonding
”添加到里面
[root@ara ~]# cat /etc/modprobe.d/
alias bond0 bonding
5
、重启网络服务,以使用
bond
< br>生效
[root@support ~]#
service network restart
在网络设置可以看到
bond0
与
eth0
、<
/p>
eth1
之间的主从关系
[root@support ~]# ifconfig
bond0
Link
encap:Ethernet
HWaddr
00:30:48:56:DA:72
inet addr:10.8.0.231
Bcast:10.8.255.255
Mask:255.255.0.0
inet6 addr: fe80::230:48ff:fe56:da72/64
Scope:Link
UP
BROADCAST RUNNING MASTER MULTICAST
MTU:1500
Metric:1
RX packets:19015
errors:0 dropped:0 overruns:0 frame:0
TX packets:4714 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2557139
(2.4 MiB)
TX bytes:469585 (458.5 KiB)
eth0
Link
encap:Ethernet
HWaddr
00:30:48:56:DA:72
UP BROADCAST RUNNING SLA
VE
MULTICAST
MTU:1500
Metric:1
RX packets:10592 errors:0 dropped:0
overruns:0 frame:0
TX packets:2011 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1295667
(1.2 MiB)
TX bytes:209014 (204.1 KiB)
eth1
Link
encap:Ethernet
HWaddr
00:30:48:56:DA:72
UP BROADCAST RUNNING SLA
VE
MULTICAST
MTU:1500
Metric:1
RX packets:8423 errors:0 dropped:0
overruns:0 frame:0
TX packets:2705 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1261472
(1.2 MiB)
TX bytes:260887 (254.7 KiB)
lo
Link encap:Local
Loopback
inet addr:127.0.0.1
Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK
RUNNING
MTU:16436
Metric:1
RX packets:1178
errors:0 dropped:0 overruns:0 frame:0
TX packets:1178 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2054820
(1.9 MiB)
TX bytes:2054820 (1.9 MiB) <
/p>
至此,完成了
bonding
配置,系统
已经在网卡的负载均衡模式下运行,随意拔掉一个网卡口
的网线,网线依然正常。
Bonding
工作模式
bonding
的模式一共有
7
< br>种,常用的为
0
、
1
两种:
round-
robin(balance-rr)
0
网卡的负载均衡模式
active-
backup
1
网卡的容错模式
balance-xor
2
需要交换机支持
broadcast
3
广播模式
ieee802.3ad
4
动态链路聚合模式,需要交换机支持
mode-tlb
5
自适应模式
mode-alb
6
网卡虚拟化方式
mode=0
表示
load
balancing(round-robin)
为负载均衡方式,两块网卡都工作。在
这种模式下,
能在提供带宽的负载均衡的同时提供失效保护。
B
mode=1
表示
fault-
tolerance(active-backup)
提供冗余功能,
< br>工作方式是主备的工作方式,
也就
是说默认情况下只有一
块网卡工作,另一块做备份。
bonding
定义了网卡的
p>
4
个链路状态:
正
常
状
态
(BOND_LINK_UP)
、
网
卡
出
p>
现
故
障
(BOND
_LINK_FAIL)
、
失
效
状
态
(BOND_LINK_DOWN)
p>
及网上恢复状态
(BOND_LINK_BACK)
。
mii
的作用就是依次检查网
卡链路状态是否处于这些状态,
然后通过标记某个变量来说明当前是否需要切换
slave
网卡。
在这种模式下,
两块网卡有一块是不工作的,
同时,
bond
p>
虚设备的
MAC
地址均一致,
所以
这张备用网卡不会被外界察觉,交换机也不存在向该端口发包的情况。当
bond
的
mii
检测
到当前的
active
设备失
效了以后,
bonding
会迅速将另外一块网卡设置为首选<
/p>
slave
设备。
在以上模式中,
虚拟网卡的
MAC
地址始终是第一个
slave
网卡的
M
AC
。
由于外界学习到的
服务器
MAC
地址始终是不变的,
在网络上确定了<
/p>
IP
和
MAC
的
唯一对应关系,
保证了上层
业务传输的逻辑一致性,所以链路的
状态不会受很大的影响。
Bonding
工作情况
1
、工作在模式
0
时
p>
通过查看
bond0
的工作
状态查
询能详
细的掌握
p>
bonding
的工
作情况,
正常状
态下的
/proc/net/bonding
/bond0
文件:
[root@support ~]# cat
/proc/net/bonding/bond0
Ethernet Channel Bonding Driver:
v3.4.0-1 (October 7, 2008)
Bonding
Mode: load balancing (round-robin)
MII
Status: up
MII Polling Interval (ms):
100
Up Delay (ms): 0
Down
Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 100
Mbps
Duplex: full
Link
Failure Count: 1
Permanent HW addr:
00:30:48:56:da:72
Slave Interface: eth1
MII Status: up
Speed: 100
Mbps
Duplex: full
Link
Failure Count: 2
Permanent HW addr:
00:30:48:56:da:73
从
win7
ping
,通过拔插网线查看结果,不存在丢包
通过日志查看网卡工作情况
[root@support ~]# tail -f
/var/log/messages
May
29
08:01:41
support
kernel:
e1000:
eth0
NIC
Link
is
Up
100
Mbps
Full
Duplex,
Flow
Control: RX/TX
May 29 08:01:41 support kernel:
bonding: bond0: link status definitely up for
interface eth0.
May 29 08:01:48 support
kernel: e1000: eth1 NIC Link is Down
May 29 08:01:48 support kernel:
bonding: bond0:
link status definitely
down for interface eth1,
disabling it
May
29
08:02:18
support
kernel:
e1000:
eth1
NIC
Link
is
Up
100
Mbps
Full
Duplex,
Flow
Control: RX/TX
May 29
08:02:18 support kernel: bonding: bond0: link
status definitely up for interface eth1.
May 29 08:08:49 support kernel: e1000:
eth0 NIC Link is Down
May 29 08:08:49
support kernel: bonding: bond0:
link
status definitely down for interface eth0,
disabling it
May
29
08:08:56
support
kernel:
e1000:
eth0
NIC
Link
is
Up
100
Mbps
Full
Duplex,
Flow
Control: RX/TX
May 29
08:08:56 support kernel: bonding: bond0: link
status definitely up for interface eth0.
2
、工作在模式
1
时
正常状态下的
/proc/net/bondin
g/bond0
文件:
[root@support ~]# cat
/proc/net/bonding/bond0
Ethernet Channel Bonding Driver:
v3.4.0-1 (October 7, 2008)
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
Speed: 100 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:30:48:56:da:72
Slave Interface: eth1
MII
Status: up
Speed: 100 Mbps
Duplex: full
Link Failure
Count: 0
Permanent HW addr:
00:30:48:56:da:73
从
win7 ping
,通过拔插网线查看结果,发现在拔网线时,偶尔会存在丢掉一个包的情况。
通过日志查看网卡工作情况
[root@support ~]# tail -f
/var/log/messages
May 29 08:25:24
support kernel: e1000: eth0 NIC Link is Down
May 29 08:25:24 support kernel:
bonding: bond0:
link status definitely
down for interface eth0,
disabling it
May 29 08:25:24 support kernel:
bonding: bond0: making interface eth1 the new
active one.
May
29
08:25:32
support
kernel:
e1000:
eth0
NIC
Link
is
Up
100
Mbps
Full
Duplex,
Flow
Control: RX/TX
May 29 08:25:32 support kernel:
bonding: bond0: link status definitely up for
interface eth0.
May 29 08:27:02 support
kernel: e1000: eth1 NIC Link is Down
May 29 08:27:02 support kernel:
bonding: bond0:
link status definitely
down for interface eth1,
disabling it
May 29 08:27:02 support kernel:
bonding: bond0: making interface eth0 the new
active one.
May
29
08:27:48
support
kernel:
e1000:
eth1
NIC
Link
is
Up
100
Mbps
Full
Duplex,
Flow
Control: RX/TX
May 29 08:27:48 support kernel:
bonding: bond0: link status definitely up for
interface eth1.
小结
在测试过程中,
发现丢包情况与设备有关,
老式的网新易得
服务器上做测试时,
两个网卡无
论是接到同一个二层交换机,<
/p>
还是分别接到两个二层交换机,
在拔插网线,
偶尔会出现丢掉
一个包的情况。但是在戴尔
R710
上,当使用模式
1
时,丢包比较多,甚至在被
其他计算机
ping
时,会出现
pin
g
不同的情况。
另外,
模式
0
只是实现了简单的负载均衡及冗余备份。
p>
如果要实现高效的负载均衡,
提高网
络流量
,需设置成模式
4
,而这需要交换机的支持,牵涉到交换机的链
路聚合
(LACP)
功能。
有待日后再
研究。
二、
L
inux bonging
(
双网卡绑定
)
一、
引言现今几乎各行各业内部都建立了自己的服务器,
由于服务器的特殊地位,<
/p>
它的可靠性、
可用性及其
I/O
速度就显得非常的重要,
保持服务器
的高可用性
和安全性是企业级
IT
环
境的重要指标,
其中最重要的一点是服务器网络连接的
高可用性
,
为实现这些要求,
现在服务器大
都采用多网卡配置,
系统大都采用现在非常流行
的
linux
作为服务器工作的环境。现在带宽已经不是服务质量提高的瓶
颈了,
相对的网络设备和服务器的处理能力就渐渐成为新的瓶颈。
为提高服务器的网络
连
接
的
可
用性
和
可
靠性
,
目
前
Sun
公
司
的
Trunking
技
术
、<
/p>
3Com
公
司
的
DynamicAccess
技术、
Cisco
公司的
Etherchannel
技术等等都在研究将服务器
的多个网卡接口绑定在一起的链路聚集技术,
链路聚集技术将多个链路虚拟成一
p>
个逻辑链路进而提供了一种廉价、
有效的方法扩展网络设备和服务器
的带宽,
提
高网络的灵活性与可用性。
本文介绍
linux
下的
bonding
技术,
linux
2.4.x
的内核中采用了这种技
术,利用
bonding
技术可以将多块网卡接口通过绑定虚拟成为一块网卡,在用
户看来这个聚合起来的设备好像是一个单独的以太网接口设备,
通俗点讲就
是多
块网卡具有相同的
IP
地址而
并行连接聚合成一个逻辑链路工作。现在在关于
linux
bonding
技术中,
有几种算法
来实现负载均衡的要求,
此文针对这些算法,
在此进行简单分析
与研究,
讨论其不足,
并提出另外一种在此基础上改进的一种<
/p>
基于传输协议的负载均衡实现方法。
讨论如何实现多个网络接口的
分在均衡及其
故障接管。
二、负载均衡技术和高可用技术介绍
2.1
负载均衡技术负载均衡技术的主要思想就是如何根据某种算法将网络
的业务流量平均分配到不同的服务器和网络设备上去,
以减轻单台服务器和
网络
设备的负担,
从而提高整个系统的效率。
< br>负载均衡既可以由有负载均衡功能的硬
件实现,
也可以通
过一些专用的软件来实现,
负载均衡是一种策略,
它能让多台<
/p>
服务器或多条链路共同承担一些繁重的计算或者
I/O
任务,从而以较低的成本
消除网络瓶颈,提高网络的灵活性和可靠性。
2.2
高可用技术实现负
载均衡首先是基于网络的高可用性提出来的,
高可用
技术是容错
技术的一个分支。实现系统的高可用性最简单的一个办法就是冗余。
完整的网络负载均衡
和高可用性网络技术有两个方面构成,
一是多服务器的绑定
和负
载均衡,
二是一个服务器内部的多网卡绑定的负载均衡,
这里主
要讨论一个
服务器内部的多网卡绑定时的负载均衡。
三、
Linux
的
bonding
技术中负载均衡的简单实现
3.1
Linux
的
bonding
技术
Linux
的
bonding
技术是网卡驱动程序之上、数
据链路层之下
实现的一个虚拟层,
通过这种技术,
服务器接在交换机上的多块
网
卡不仅被绑定为一个
IP
,
MAC
地址也被设定为同一个
,进而构成一个虚拟的网
卡,
工作站向服务器请求数据,
服务器上的网卡接到请求后,
网卡根据某种算法
智能决定由谁来处理数据的传输。
Bonding
技术可以
提高主机的网络吞吐量和
可用性。
3.2 Linux
的几种发送均衡算法目前
Linux <
/p>
的发送算法最主要的有三种:
轮转算法(
Round-Robin
)
、备份算法(
Active-
Backup
)
、
MAC
地址异或算法
(
MAC-
XOR
)
.
下面对目前这三种主要算法进行简单分析。
3.2.1
轮转算法该算法是基于公平原则进行的,
它为每个将要被发送的数据
包选择发送接口,
< br>算法的主要思想是首先第一个数据包由一个接口发送,
另一个
数据包则由另外一个接口发送,
下面依次进行循环选择。
通
过分析我们可以看出
这种算法比较比较简单,
在发送数据方面也
比较公平,
能保证网卡发送数据时候
的负载均衡,
资源利用率很高。
但是我们知道如果一个连接或者会话的数据包从
不同的接口发出的话,
中途再经过不同的链路,
在
客户端很有可能会出现数据包
无序到达的问题,
而无序到达的数
据包需要重新要求被发送,
这样网络的吞吐量
就会下降。
3.2.2
备份算法该算法将多
个网卡接口中的一个接口设定为活动状态,
其他
的接口处于备用
状态。
当活动接口或者活动链路出现故障时,
启动备用链路,<
/p>
由
此可见此算法的优点是可以提供高网络连接的可用性,但是它的
资源利用率较
低,只有一个接口处于工作状态,在有
N
个网络接口的情况下,资源利用率为
1/N.
3.2.3
MAC
地址异或算
法该算法的主要思想是:由服务器的
MAC
地址和客户
端的
MAC
地址共同决定每个数据包的发送端口号,由源
MAC
地址和目的
MAC
地址进行异或计
算,
并将异或结果对接口数求余计算。
由于发送到同一个客户端
的数据流经过同一个链路,
因此数据包能够有序到达客户端。<
/p>
此算法在只有一个
客户机访问服务器或者服务器和客户机不在同一
子网的情况下,
由算法思想得知
这种情况下负载不会均衡,
p>
在只有一个客户机访问服务器的时候,
资源的利用率
也是
1/N
(
N
为接口数)。
首先是你要内核支持,
如果不支持,
请你自己重新编译,
在编译的时候把
网络设
备选项中的
Bonding driver
support
选中就可以了。
简介
=============================
Linux
bonding
驱动提供
了一种方法,
用以把多个网络接口
(
n
etwork
interface
)
组合成一个逻辑的
接口。
Bonded
接口的工作方式取决于驱动的模式:
不同的模式提供了热备份或
负载均衡等不同的服务。
此外,
驱动还会监控链路的
可用性。
Bonding
驱动最早来自
Donald
Becker
针对
Linux 2.0
内核的
beowulf
补丁。现
在已经
有了很多的变化,
最早的来自
beowulf
< br>网站的工具已经不能和现在的驱动
一起使用。
如果你希望得到最新的版本,
或者最新的用户工具,
或者寻求相关的帮助,
请留
意本文末尾的链接。
目录
============================
1. Bonding
驱动简介
2. Bonding
驱动选项
3.
配置
Bonding
驱动
3.1
通过
p>
Sysconfig
配置
Bonding
3.1.1
通过
Sysconfig
使用
DHCP
3.1.2
通过
Sysconfig
配置多个
Bond
3.2
通过
I
nitscripts
配置
Bonding
3.2.1
通过
Initscrip
ts
使用
DHCP
3.2.2
p>
通过
Initscripts
配置多个
p>
Bond
3.3
通过
< br>Ifenslave
手工配置
Bonding
3.3.1
手工配置多个
Bond
3.4
通过
Sysfs
手工配置
Bonding
4.
< br>查询
Bonding
配置
4.1 Bonding
配置
4.2
网络配置
5. Switch
(交换机)配置
6. 802.1q VLAN
7.
链路监控
7.1 ARP
监控
7.2
配置多个
ARP
监控目标
7.3
MII
监控
8.
可能的问题
8.1
Routing
(路由)
8.2
Ethernet
设备重命名
8.3
网速变慢或
Mii
监控无法发现出错的
链接
9.
SNMP
代理
10.
Promiscuous
(混杂)模式
11.
配置
Bonding
用于高可靠性
11.1
单一
Switch
下的高可靠性
11.2
多
Switch
下的高可靠性
11.2.1
< br>多
Switch
下的
Bondi
ng
模式选择
11.2.1
多
Switch
下的链路监控
12.
配置
Bondin
g
用于大吞吐量
12.1
单一
Switch
下的大吞吐量网络配置
12.1.1
单一
Switch
下的
Bonding
模
式选择
12.1.2
单一
Switch
下的链路监控
12.2
多
Switch
下的大吞吐量网络配置
12.2.1
多
Switch
下的
B
onding
模式选择
12.2.1
多
Switch
下的链路监控
13.
Switch
的问题
13.1
p>
链路建立和
Failover
延时
13.2
Incoming
包重复
14.
硬件相关
14.1
IBM
刀片服务器
15. FAQ
16.
相关资源和链接
1.
Bonding
驱动简介
=================================
大多数目前发布的
Linux
内核都以模块(
p>
module
)方式带了
bonding<
/p>
驱动,
ifenslave
工具也都已经
安装好。如果你的
Linux
没有,或者你确实需要自己来
p>
编译
bonding
(比如要配置或安装自
己的
Linux
内核),请参考如下步骤:
1.1
配置并编译支持
bon
ding
的内核
---------------------------------
当前版本的
bonding
驱动位于
Linux
内核源码
(从
<
/p>
下载)
的
drivers/net/bo
nding
子目录中。你可以在
下载到
最新版本的内核
源码。
通过
(或
)
配置内核,在
“Network device
support”下选择“Bonding driver support”。建议你将
bonding
驱动配置为模块(
module
)方式,因为如果你要给驱动传递参数或者希
望配置多个
bonding
驱动,只有通过模块方式。
编译并安装新的内核和编译出的模块,然后参照下面的步骤安装
ifensl
ave
。
1.2
< br>安装
ifenslave
控制工具
--------------------------------
ifenslave
控
制
工
具
也
在
内
核
源
码
中
p>
:
Documentation/networking/ifen
slave.c
。
一
般
建议
最
好
使用
和
内
核匹
配
< br>的
ifenslave
(同一
份源码中或同一个发布中),然而较老的内核中的
ifenslave
< br>也应该能够正常工作(较新的一些功能将不能使用),不过更新的内核中的
ife
nslave
将可能不能工作。
参照
如下步骤以安装
ifenslave
:
# gcc -Wall -O -I/usr/src/linux/include
ifenslave.c -o ifenslave
# cp ifenslave
/sbin/ifenslave
如
果
你
的
内
核
源
码
不
在
“/u
sr/src/linux”
下
,
请<
/p>
将
上
面
的
“/usr/src/linux/include”替换成相应的正确目录。
如果希望备份现有的
/sbin/ifenslav
e
,
或者只是试用一下,
你可以把
p>
ifenslave
文件名加上内核版本信息(比如,
/sbin/ifenslave-2.6.10
)
重要提示:
如果你忽略了
参数或者指定了一个不正确的目录,
你可能会得到
一个和内核
不
兼
容
的
ifenslave
。
有
些
发
布
(
比
如
Red
Hat <
/p>
7.1
之
前
的<
/p>
版
本
)
没
有
/usr/include/linux
符
号链接指向当前内核的
include
目录。
< br>
另一个重要提示:
如果你打
算使用
sysfs
来配置
bondin
g
,你不需要使用
ifenslave
。
2.
Bonding
驱动选项
=================================