Linux下多网卡绑定bond及模式介绍
【介绍】
网卡bond一般主要用于网络吞吐量很大,以及对于网络稳定性要求较高的场景。
主要是通过将多个物理网卡绑定到一个逻辑网卡上,实现了本地网卡的冗余,带宽扩容以及负载均衡。
Linux下一共有七种网卡bond方式,实现以上某个或某几个具体功能。
最常见的三种模式是bond0,bond1,bond6.
【bond0】
平衡轮循环策略,有自动备援,不过需要"Switch"支援及设定。
balance-rr(Round-robin policy)
方式:
传输数据包的顺序是依次传输(即:第一个包走eth0,第二个包就走eth1……,一直到所有的数据包传输完成)。
优点:
提供负载均衡和容错能力。
缺点:
同一个链接或者会话的数据包从不通的接口发出的话,中间会经过不同的链路,在客户端可能会出现数据包无法有序到达的情况,而无序到达的数据包将会被要求重新发送,网络吞吐量反而会下降。
【bond1】
主-备份策略
active-backup(Active -backup policy)
方式:
只有一个设备处于活动状态,一个宕掉之后另一个马上切换为主设备。
mac地址为外部可见,从外面看,bond的mac地址是唯一的,switch不会发生混乱。
优点:
提高了网络连接的可靠性。
缺点:
此模式只提供容错能力,资源利用性较低,只有一个接口处于active状态,在有N个网络接口bond的状态下,利用率只有1/N。
【bond2】
平衡策略
balance-xor(XOR policy)
方式:
基于特性的Hash算法传输数据包。
缺省的策略为:(源MAC地址 XOR 目标MAC地址) % slave数量。 # XRO为异或运算,值不同时结果为1,相同为0
可以通过xmit_hash_policy选项设置传输策略。
特点:
提供负载均衡和容错能力。
【bond3】
广播策略
broadcast
方式:
在每个slave接口上传输每一个数据包。
特点:
提供容错能力。
【bond4】
IEEE 802.3ad 动态链接聚合
802.3ad( IEEE 802.3ad Dynamic link aggregation)
方式:
创建一个聚合组,共享同样的速率和双工设定。
根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举基于传输Hash策略,同样,此策略也可以通过xmit_hash_policy选项进行修改。
注意:
并不是所有的传输策略都是802.3ad所适应的。
条件:
1. ethtool支持获取每个slave的速率和双工设定。
2. switch支持IEEE 802.3ad Dynamic link aggregation(大多数交换机需要设定才支持)
【bond5】
适配器传输负载均衡
balance-tlb(Adaptive transmit load balancing)
方式:
在每个slave上根据当前的负载(依据速度)分配外出流量,接收时使用当前轮到的slave。
如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
条件:
ethtool支持获取每个slave的速率。
特点:
不需要任何特别的switch(交换机)支持的通道bonding。
【bond6】
适配器适应性负载均衡
balance-alb(Adaptive load balancing)
方式:
此模式包含了bond5的balance-tlb,同时增加了针对IPV4流量的接收负载均衡。(receive load balance, rlb)
接收负载均衡是通过ARP协商实现的。
bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
来自服务器端的接收流量也会被均衡。
当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。
当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。
使用ARP协商进行负载均衡的一个问题是:
每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。
这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。
当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。
接收的负载被顺序地分布(round robin)在bond中最高速的slave上当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。
下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答不会被switch(交换机)阻截。
条件:
1. ethtool支持获取每个slave的速率
2. 底层驱动支持设置某个设备的硬件地址
特点:
总是有一个slave(curr_active_slave)使用bond的硬件地址,同时每个bond里面的slave都有一个唯一的硬件地址。
如果curr_active_slave出了故障,则它的硬件地址会被重新选举产生的slave接管。
与bond0最大的区别在于,bond0的多张网卡里面的流量几乎是相同的,但是bond6里面的流量是先占满eth0,再占满eth1……依次
【网卡绑定】
我们假定前条件:
2个物理网口eth0,eth1
绑定后的虚拟口为bond0
服务器IP为10.10.10.1
配置文件:
1. vi /etc/sysconfig/network-scripts/ifcfg-bond0
|
DEVICE=bond0 BOOTPROTO=none ONBOOT=yes IPADDR=10.10.10.1 NETMASK=255.255.255.0 NETWORK=192.168.0.0 |
2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
|
DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes |
3. vi /etc/sysconfig/network-scripts/ifcfg-eth1
|
DEVICE=eth1 BOOTPROTO=none MASTER=bond0 SLAVE=yes |
修改modprobe相关设定文件,并加载bonding模块:
1. vi /etc/modprobe.d/bonding.conf
|
alias bond0 bonding options bonding mode=0 miimon=200 |
2. 加载模块
|
modprobe bonding |
3. 确认是否加载成功
[root@slb ~]# lsmod | grep bonding
bonding 100065 0
4. 重启网络
[root@slb ~]# /etc/init.d/network restart
[root@slb ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
……
[root@slb ~]# ifconfig |grep HWaddr
bond0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
eth0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
eth1 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
以上信息可以确认:
a. 现在的bonding模式是active-backup
b. 现在Active的网口是eth0
c. bond0, eth1的物理地址和处于active状态下的eth0的物理地址相同,这样是为了避免上位交换机发生混乱。
可以随意拔掉一根网线或者在交换机上shutdown一个网口,查看网络是否依旧联通。
5. 系统启动自动绑定并增加默认网关(可选)
[root@slb ~]# vi /etc/rc.d/rc.local
ifenslave bond0 eth0 eth1
route add default gw 10.10.10.1
【多网卡绑定】
上面只是两个网卡绑定一个bond0的情况,如果我们要设置多个bond口,就不能这样做了。
·/etc/modprobe.d/bonding.conf·的修改可以如下:
1. 多个bond的模式一样的情况
|
alias bond0 bonding alias bond1 bonding options bonding max_bonds=2 miimon=200 mode=1 |
2. 多个bond的模式不一样的情况
|
alias bond0 bonding options bond0 miimon=100 mode=1 install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0 |
Linux下多网卡绑定bond及模式介绍的更多相关文章
- 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理
http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...
- (转)深度分析Linux下双网卡绑定七种模式
现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对window ...
- 深度分析Linux下双网卡绑定七种模式
现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在网卡产商也会出一些针对windows操 ...
- Linux下多网卡绑定bond0及模式
Linux 多网卡绑定 网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0:平衡负载模式,有自动备援,但 ...
- Linux下双网卡绑定bond配置实例详解
本文源自:http://blog.itpub.net/31015730/viewspace-2150185/ 一.什么是bond? 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡冗余,带宽 ...
- Linux下双网卡绑定(bonding技术)
Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...
- Linux下双网卡绑定bond0
一:原理: linux操作系统下双网卡绑定有七种模式.现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑 ...
- Linux下双网卡绑定bond0【转】
一:原理: linux操作系统下双网卡绑定有七种模式.现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑 ...
- CentOS下多网卡绑定bond/多网卡聚合
网卡bond我直接理解成网卡聚合了,就是把多张网卡虚拟成1张网卡,出口时,这张网卡无论哪个断线都不影响网络,入口时,需要结合交换机的端口聚合功能实现和网卡配置的bond模式进行负载均衡.bond需要在 ...
随机推荐
- AI2XAML's Bug
原文:AI2XAML's Bug My picture is like this: I use Adobe Illustator CS to draw the outline of that, I s ...
- 零元学Expression Design 4 - Chapter 5 教你如何用自制笔刷在5分钟内做出设计感效果
原文:零元学Expression Design 4 - Chapter 5 教你如何用自制笔刷在5分钟内做出设计感效果 本章将教你如何运用笔刷与简单线条,只要5分钟,就能做出设计感效果 ? 本章将教你 ...
- HQL链接查询
和SQL查询一样,HQL也支持各种各样的连接查询,如内连接.外连接.我们知道在SQL中可通过join字句实现多表之间的连接查询.HQL同样提供了连接查询机制,还允许显示指定迫切内连接和迫切左外连接.H ...
- Assertion failure in UITableViewCell layoutSublayersOfLayer解决办法
iOS6 设备在更新UITableViewCell的时候遇到了 Assertion failure in -[UITableViewCell layoutSublayersOfLayer:], /So ...
- 探究操作系统的内存分配(malloc)对齐策略
问题: 我们在写程序的时候经常发现程序使用的内存往往比我们申请的多,为了优化程序的内存占用,搅尽脑汁想要优化内存占用,可是发现自己的代码也无从优化了,怎么办?现在我们把我们的焦点放到malloc上,毕 ...
- PHP XDebug Sublime Text 单步调试
前置环境:已经安装好LNMP 1. 安装xdebug 可以通过pear包管理来安装 sudo apt-get install php-pear sudo pecl install xdebug 这里我 ...
- ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...
- 零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」
原文:零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的 ...
- sklearn文本特征提取——TfidfVectorizer
什么是TF-IDF IF-IDF(term frequency-inverse document frequency)词频-逆向文件频率.在处理文本时,如何将文字转化为模型可以处理的向量呢?IF-ID ...
- 百度网盘web端项目总结
项目背景 网盘作为一个在线备份存储,共享文件的工具类产品,给人们的工作和生活带来了很大的帮助和便利.百度网盘是目前国内使用量最大的网盘产品,至今发展已有4年,总用户数超4亿,为了让用户有着更好的使用体 ...