双网卡绑定-bond

下述操作均在centos7.6系统下亲测

1. 双网卡绑定的7种模式

一般mode=0与mode=1比较常用,mode=6负载均衡方式两块网卡都工作,不需要交换机支持,常用。

1.1 网卡负载均衡模式

网卡负载均衡模式mode=0
该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。

特点:所有链路处于负载均衡状态,以轮询方式向每条链路发送报文,基于per packet方式(按数据分流)发送。如在配置bond0的服务器ping baidu.com 两个网卡均会有流量发出,流量会负载到两条链路上,说明是基于per packet方式进行的轮训发送。该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。

1.2 网卡容错模式

网卡容错模式mode=1
当主端口down掉时,从端口会接手主端口的状态

特点:一个端口处于主状态,一个端口处于从状态,所有的流量都会在主链路上处理,从端口不会有任何流量。当主端口down掉时,从端口接手主状态

1.3 balance-xor需要交换机支持

需要交换机支持mode=2
通过源和目标mac做hash因子来做xor算法来选择链路

特点:该模式将限定流量,以保证到达特定对端的流量总是从同一个接口是上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有 流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不 是最好的选择。和网卡的负载均衡模式一样,交换机端口需要能配置为“port channel”。这模式是通过源和目标mac做hash因子来做xor算法来选路的。

1.4 broadcast广播策略

广播策略mode=3
此模式需要高可靠性的网络,不允许出现任何问题。本模式提供负载均衡和容错的能力

特点此模式的特点是一个报文会负载两份王bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源,在所有的slave接口上传送所有的报文。本模式提供容错能力。

1.5 IEEE 802.3ad 动态链路聚合

动态链路聚合mode=4

802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。
802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。
802.3ad标准也要求帧按顺序 (一定程度上)传递,因此通常单个连接不会看到包的乱序。
802.3ad也有些缺点:标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和 除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
此外,linux bonding的802.3ad实现通过对端来分发流量(通过MAC地址的XOR值),因此在“网关”型配置下,所有外出(Outgoing)流量将使用 同一个设备。
进入(Incoming)的流量也可能在同一个设备上终止,这依赖于对端802.3ad实现里的均衡策略。在“本地”型配置下,路两将通过 bond里的设备进行分发。BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2"      2层模式=IPBONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2+3"   2+3层模式 =MAC+IPBONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4"      3+4层模式=IP+端口

1.6 自适应传输负载均衡模式

balance-tlb自适应传输负载均衡模式mode=5

 自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。先决条件:每个slave的基本驱动支持Ehtool获取速率状态。

1.7 网卡虚拟化模式

网卡虚拟化mode=6
回复报文数第一个从端口1发第二个从端口2发,以此类推

特点:此模式包含了自适应传输负载均衡模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商(地址解析协议)实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。所有端口都会收到对端的ARP请求报文,回复ARP回时,bond驱动模块会截获所发的ARP回复报文,跟进算法算到相应端口,这时会把ARP回复报文的源Mac,send源Mac都改成相应端口Mac。从抓包情况分析回复报文是第一个从端口1,第二个端口2发,以此类推。

2. bond0配置

mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。

2.1 修改两块网卡配置

# 加载bonding模块,并确认已经加载
$ modprobe --first-time bonding
$ lsmod | grep bonding
bonding               152656  0# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens34 ifcfg-ens34.bak
$ mv -f ifcfg-ens38 ifcfg-ens38.bak# 重新配置ens34与ens38网卡
$ vim ifcfg-ens34
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens34
MASTER=bond0
SLAVE=yes$ vim ifcfg-ens38
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens38
MASTER=bond0
SLAVE=yes

2.2 配置bond0网卡

$ vim ifcfg-bond0
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.50.100
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=0"

2.3 bond配置文件

$ vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=0

2.4 开机自动加载bond

$ vim /etc/rc.local
modprobe bonding miimon=100 mode=0

2.5 验证

$ systemctl restart network
# 查看是否配置成功
$ ip a
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ffinet 192.168.50.101/24 brd 192.168.50.255 scope global bond0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8a:3520/64 scope link valid_lft forever preferred_lft forever# 模拟某块网卡down
# 通过抓包来获取ping包来观察经过网卡的流量
# 一个窗口ping网关地址
$ ping 192.168.50.2# 一个终端窗口抓取ens38去往网关的包
# 注意观察mac地址
$ tcpdump -i ens38 host 192.168.50.2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens38, link-type EN10MB (Ethernet), capture size 262144 bytes
15:44:55.723646 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 1, length 64
15:44:55.723674 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 1, length 64
15:44:56.726182 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 2, length 64
15:44:56.726199 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 2, length 64
15:44:57.727318 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 3, length 64
15:44:57.727337 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 3, length 64
15:44:58.728931 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 4, length 64
15:44:58.728945 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 4, length 64
# 另一块网卡同样可以抓到# 在虚拟机中断开ens34网卡的连接
# ping 稍断即回复通信
# 注意观察mac地址
3: ens34: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN group default qlen 1000link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ffinet 192.168.50.101/24 brd 192.168.50.255 scope global bond0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8a:3520/64 scope link valid_lft forever preferred_lft forever

3. bond1配置

mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。

3.1 修改两块网卡配置

# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens34 ifcfg-ens34.bak
$ mv -f ifcfg-ens38 ifcfg-ens38.bak# 重新配置ens34与ens38网卡
$ vim ifcfg-ens34
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens34
MASTER=bond1
SLAVE=yes$ vim ifcfg-ens38
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens38
MASTER=bond1
SLAVE=yes

3.2 配置bond0网卡

$ vim ifcfg-bond1
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond1
IPADDR=192.168.50.101
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=1"

3.3 bond配置文件

$ vim /etc/modprobe.d/bond1.conf
alias bond1 bonding
options bond1 miimon=100 mode=1

3.4 开机自动加载bond

$ vim /etc/rc.local
modprobe bonding miimon=100 mode=1

3.5 验证

# 重启网卡
$ systemctl restart network
# 注意观察mac地址
$ ip a
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ffinet 192.168.50.101/24 brd 192.168.50.255 scope global bond0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8a:3520/64 scope link valid_lft forever preferred_lft forever# 查查看bond1状态
cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:20
Slave queue ID: 0Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:2a
Slave queue ID: 0

4. bond6配置

4.1 修改两块网卡配置

# 进入网卡配置目录
$ cd /etc/sysconfig/network-scripts/# 将网卡配置文件备份并删除
$ mv -f ifcfg-ens34 ifcfg-ens34.bak
$ mv -f ifcfg-ens38 ifcfg-ens38.bak# 重新配置ens34与ens38网卡
$ vim ifcfg-ens34
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens34
MASTER=bond6
SLAVE=yes$ vim ifcfg-ens38
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=ens38
MASTER=bond6
SLAVE=yes

4.2 配置bond6网卡

$ vim ifcfg-bond6
TYPE=UnKnown
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond6
IPADDR=192.168.50.101
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DNS1=8.8.8.8
DNS2=223.5.5.5
BONDING_OPTS="miimon=80 mode=6"

4.3 bond配置文件

$ vim /etc/modprobe.d/bond6.conf
alias bond6 bonding
options bond6 miimon=100 mode=6

4.4 开机自动加载bond

$ vim /etc/rc.local
modprobe bonding miimon=100 mode=6

4.5 验证

# 重启网卡
$ systemctl restart network
# 注意观察mac地址
$ ip a
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff
4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff
6: bond6: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ffinet 192.168.50.101/24 brd 192.168.50.255 scope global bond6valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8a:3520/64 scope link valid_lft forever preferred_lft forever# 查查看bond6状态
cat /proc/net/bonding/bond6
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: ens34
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:20
Slave queue ID: 0Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:8a:35:2a
Slave queue ID: 0

双网卡绑定-bond相关推荐

  1. Linux双网卡绑定bond详解

    Linux双网卡绑定bond详解 bond 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术 通过以下命令确定内核是否支持 bondi ...

  2. CentOS7双网卡绑定bond

    CentOS7双网卡绑定bond 1.bond简介 生产环境必须提供 7×24 小时的网络传输服务.借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可 ...

  3. Linux 系统双网卡绑定 bond的7种模式

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

  4. bond的主备模式_号外号外:Redhat7通过bond技术实现双网卡绑定

    说明:redhat 7虽然新增了teaming技术支持双网卡绑定,但bonding技术依然可以沿用,本文测试的是bond的绑定方式.为了避免冲突,建议关闭NetworkManager:systemct ...

  5. linux 双网卡bond命令,Linux下bond双网卡绑定(示例代码)

    bond,是一种双网卡绑定技术.即将多块物理网卡绑定成一个逻辑网卡,并实现网卡冗余.流量均衡等的一种可靠性强且高可用技术. 七种bond模式: 一.mod=0即banlance-rr(平衡轮循环策略) ...

  6. oracle 连接 双网卡,Oracle Linux 6.4(BOND)双网卡绑定实战—附加说明

    Oracle Linux 6.4(BOND)双网卡绑定实战mdash;附加说明 操作环境 Oracle Linux Server release 6.4 内核 Linux rac1 2.6.39-40 ...

  7. 嵌入式系统linux下bond,CentOS双网卡绑定bond0

    a)拷⻉并配置vim /etc/sysconfig/network-scripts/ifcfg-bond0配置⽂件(会自动创建文件) DEVICE=bond0 TYPE=Ethernet ONBOOT ...

  8. linux网卡端口绑定bond,Linux下双网卡绑定bond0

    一:原理: linux操作系统下双网卡绑定有七种模式.现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑 ...

  9. bond解除 centos7_Centos7 / RHEL 7 双网卡绑定

    1. 简要 双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用的是bonding技术, 在centos7中双网卡绑定既能使用teaming也可以使用bond ...

最新文章

  1. 字符串全排列的问题 python和c语言实现
  2. cmder 此时不应有 \Microsoft
  3. OpenvSwitch — 核心对象
  4. 【图像分割模型】多感受野的金字塔结构—PSPNet
  5. 熬夜所带来的伤害,远比我们想象的更可怕
  6. ARM立即数讲解--LDR和MOV的区别 .
  7. 数据结构(九)计数排序
  8. flinksql写入hudi 踩坑实录
  9. 大型情感剧集Selenium:8_selenium网页截图的四种方法
  10. mysql8和5.7区别_MySQL 8、MySQL 5.7和Percona server for MySQL性能比较
  11. Selenium UI自动化测试(六)WebDriver常用操作方法
  12. c语言串口控制单片机,利用USART实现单片机与串口通信[C语言]
  13. 隐藏win10资源管理器中显示的「DVD驱动器」
  14. Jenkins配置阿里企业邮箱
  15. mosquitto 使用详解
  16. linux下脚本录制工具——script和scriptreplay
  17. 您对超人搜索有什么建议?
  18. 计算机C P U的概念就是,2008计算机二级考试:C语言基础教程-C语言的特点
  19. Towards Spatio-Temporal Aware Traffic Time Series Forecasting
  20. 【数据治理】电力行业数据治理解决方案

热门文章

  1. 自动驾驶基础-AEB
  2. 识别图片转文字怎么弄?推荐两种实用工具
  3. java使用ByteBuffer.allocateDirect分配的堆外内存大小查看方法
  4. 马可.安东尼-悲剧英雄
  5. ES实战系列-Elasticsearch介绍
  6. java 相对路径转绝对路径_Java相对路径/绝对路径总结(转)
  7. 计算机毕业设计ssm高校学生宿舍管理系统183rq系统+程序+源码+lw+远程部署
  8. AMiner推荐论文:SMU: smooth activation function for deep networks using smoothing maximum technique
  9. 指导思想——人不成熟的五大特征
  10. 联发科下代旗舰芯今秋即可发布:7纳米+12核心