文章转自http://www.linuxidc.com/Linux/2017-04/142727.htm

一. Bonding介绍:

Bonding技术是将多块网卡虚拟成为一块网卡,使其具有相同的ip地址,来实现提升主机的网络吞吐量或者是提高可用性,这种技术被称作bonding,现实环境中,通过多端口bonding技术,解决服务器单链路故障问题,且提高了链路带宽。

目前网卡绑定mode共有七种(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6

二. 说明:

需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里optionsbond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode0下):

mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解 决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。

七种bond模式说明:

第一种模式:mod=0 ,即:(balance-rr)Round-robin policy(平衡抡循环策略)

特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

第二种模式:mod=1,即: (active-backup)Active-backup policy(主-备份策略)

特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

第三种模式:mod=2,即:(balance-xor)XOR policy(平衡策略)

特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址)% slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

第四种模式:mod=3,即:broadcast(广播策略)

特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

第五种模式:mod=4,即:(802.3ad)IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)

特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。

必要条件:

条件1:ethtool支持获取每个slave的速率和双工设定

条件2:switch(交换机)支持IEEE802.3ad Dynamic link aggregation

条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

第六种模式:mod=5,即:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡)

特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

该模式的必要条件:ethtool支持获取每个slave的速率

第七种模式:mod=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)

特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新(ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(roundrobin)在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出故障,它的硬件地址将会被新选出来的 curr_active_slave接管其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量。

转载于:https://blog.51cto.com/633405/2386035

Linux系统端口聚合技术bonding相关推荐

  1. 3种关闭linux系统端口方法

    下面总结三种关闭linux系统端口的方法 1.通过杀掉进程的方法来关闭端口 每个端口都有一个守护进程,kill掉这个守护进程就可以了 每个端口都是一个进程占用着, 第一步.用下面命令 netstat ...

  2. linux系统端口的5种状态及含义

    linux系统端口的5种状态及含义 1.listening 监听状态 说明该端口是开放的,正在等待连接,但是还没有被连接:2.established 正在建立连接 标识两台机器正在通信中:3.time ...

  3. Linux系统端口映射(路由转发)

    2019独角兽企业重金招聘Python工程师标准>>> Linux系统端口映射(路由转发),首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forw ...

  4. Linux系统端口检测脚本

    Linux系统端口检测脚本 执行脚本一键检测服务器上中间件端口是否存在 #!/bin/bash #端口连通性检测 #加入字典变量 PORT_LIST="3306 9200 9876 6379 ...

  5. 如何关闭linux系统的53端口,3种关闭linux系统端口方法

    下面总结三种关闭linux系统端口的方法 1.通过杀掉进程的方法来关闭端口 每个端口都有一个守护进程,kill掉这个守护进程就可以了 每个端口都是一个进程占用着, 第一步.用下面命令 netstat ...

  6. 如何关闭linux系统的53端口,3种关闭linux系统端口方法(示例代码)

    下面总结三种关闭linux系统端口的方法 1.通过杀掉进程的方法来关闭端口 每个端口都有一个守护进程,kill掉这个守护进程就可以了 每个端口都是一个进程占用着, 第一步.用下面命令 netstat ...

  7. 快速了解华为端口聚合技术

    目录 一.端口聚合概述 1.1.1.端口聚合简介 1.1.2.端口聚合的条件 1.1.3.端口聚合的优点 二.端口聚合配置 一.端口聚合概述 1.1.1.端口聚合简介 端口聚合也叫做以太通道(ethe ...

  8. linux系统端口更换,在Linux中怎样修改httpd的端口号

    LINUX系统教程:如何修改HTTPD的端口? 停止httpd服务 这里使用8080端口后,经过验证能够登录成功,说明httpd端口已经更改并且httpd能够正常工作. 相关介绍:Linux Linu ...

  9. Cisco 交换机端口聚合技术(EtherChannel)

    参考博客:https://www.cnblogs.com/zoulongbin/p/6654545.html建议一定要回看这个博客 端口聚合:英文简称EtherChannel(以太通道)是由Cisco ...

最新文章

  1. 前1000位粉丝的诞生
  2. 使用Action启动/关闭Service
  3. 美团Android资源混淆保护实践
  4. vue 一个组件内多个弹窗_论如何用Vue实现一个弹窗-一个简单的组件实现
  5. 03 CSS听课笔记
  6. 增加javascript的 trim函数
  7. pytorch的余弦退火学习率
  8. 安卓自定义控件的原理
  9. centos服务器安装docker步骤
  10. labelImg安装与操作
  11. 云服务器和虚拟主机的区别
  12. 在龙芯1c上使用rt-thread统一标准的spi接口
  13. 计算机基础——4.1 数字通信入门
  14. Flash MX 2004的Alpha Fader
  15. kprobe与perf probe使用简单记录
  16. 【React】React介绍环境搭建
  17. 渗透测试思路 - 工具篇
  18. python打印2020某月的日历_教你用Python打印2020年日历
  19. 杨辉三角队列c语言程序,C语言完整队列 与链式队列实现杨辉三角
  20. 淘源网-站长网站源码服务平台

热门文章

  1. 如何实现报表设计中的高精度报表套打?
  2. IOS 开发之-- textfield和textview,return键的改变,点击return键
  3. jquery隐藏表格行
  4. 如何在windows 10 x64安装佳能 CP900 驱动
  5. 37 windows_37_Thread_InterLock 线程-原子锁
  6. 102TimeStatistic
  7. #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案
  8. 【杂谈】Oracle里scott的由来
  9. c#属性的相关学习总结。
  10. VC++动态链接库(DLL)编程(四)――MFC扩展 DLL