bond双网卡绑定总结

什么是bond?

所谓bond,是一种通过把多个物理网卡绑定成一个逻辑网卡实现网卡冗余、负载均衡、提高带宽,从而实现网络性能高可用高可靠的技术。

bond有七种模型:

mod0:(balance-rr,平衡轮循环策略,提供负载均衡和容错能力),数据包传输是依次传输,第一个包从网卡1传输,第二个包从网卡2传输,第三个包从网卡3.......,一直循环直到传输完最后一个数据包。这种模式的bond有一个不完善的地方,如果一个数据包从不同的网卡传输,而中途再经过不同的链路,当客户端接受到数据包的时候,数据包就可能出现无序到达的情况,而无序到达的数据包需要重新发送,这样网络的性能便会大大下降。

mod1:(active-backup,主备策略,提供冗余能力),只有一个网卡被使用,当一个网卡宕了之后,马上由备网卡接替主网卡的工作,为了避免交换机发生混乱,逻辑网卡的mac地址是唯一的。这种模型的bond可提高网络的可用性,但是它的资源利用率低,只有1/网卡个数(N)。

mod2:(balance-xor,平衡策略,提供负载均衡和容错能力)---不是很明白实现原理与算法,有哪位大神知道的话,可以在下面留言,让小弟也开开眼界。

mod3:(broadcast,广播策略,提供容错能力)每一个备网卡传输每个数据包。

mod4:(802.3ad,动态链路聚合),创建聚合组,聚合组中的每个备网卡共享同样的速率和双工,必要条件是交换机需要支持802.3ad以及需要ethtool的支持

mod5:(balance-tlb,适配器传输负载均衡),在每个网卡上根据当前的压力负载分配流量,如果正在工作的网卡宕了,另外的网卡接管宕机的网卡的mac地址。必要条件是:需要ethtool的支持。

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

实验(mod0为例,其他mod大同小异)

创建逻辑网卡的配置文件

[[email protected] network-scripts]# catifcfg-bond0

DEVICE=bond0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.31.100

NETMASK=255.255.255.0

NETWORK=192.168.31.0

GATEWAY=192.168.31.1

BROADCAST=192.168.31.255

BONDING_OPTS="mode=0  miimon=200"  #mode指定模式,miimon为探测的时间间隔(毫秒)

USERCTL=no     #是否允许非root用户控制该设备  yes|no

修改物理网卡的配置文件

[[email protected] network-scripts]# catifcfg-eno16780032

DEVICE=eno16780032

BOOTPROTO=none

MASTER=bond0    #指定master为bond0

SLAVE=yes            #是否为附属

USERCTL=no

[[email protected] network-scripts]# catifcfg-eno33561344

DEVICE=eno33561344

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no

bond0是通过bonding的驱动来配置的,所以我们还需要为bond0这块网卡添加驱动支持,将这个驱动添加到 /etc/modprobe.d/ 这个目录下

[[email protected] ~]# cat/etc/modprobe.d/bonding.conf

alias bond0 bonding

加载bonding模块

[[email protected] ~]# modprobe  bonding

[[email protected] ~]# lsmod |grep bonding

bonding               136705  0

重启网络

[[email protected] ~]# systemctl restart network

Job for network.service failed because thecontrol process exited with error code. See "systemctl statusnetwork.service" and "journalctl -xe" for details.

 

bond network[10418]:Bringing up interface bond0:  Error:Connection activation failed: No suitable device found for this connection.

bond network[10418]:Bringing up interface eno16780032: Error: Connection activation failed: Master device bond0 unmanaged ornot available for activation

如果发现有如上报错,需要关闭NetworkManager。

参考(https://access.redhat.com/discussions/2162171)

[[email protected] ~]# systemctl stopNetworkManager

[[email protected] ~]# systemctl disabledNetworkManager

验证       #仔细观察发现物理网卡的mac地址和逻辑网卡的mac地址一样

[[email protected] ~]# ip add show

3: eno16780032: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>mtu 1500 qdisc mq master bond0 state UP qlen1000

link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

inet6 fe80::20c:29ff:febc:7d41/64 scopelink

valid_lft forever preferred_lft forever

4: eno33561344: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>mtu 1500 qdisc mq master bond0 state UP qlen1000

link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

inet6 fe80::20c:29ff:febc:7d41/64 scopelink

valid_lft forever preferred_lft forever

5: bond0:<BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP

link/ether 00:0c:29:bc:7d:41 brdff:ff:ff:ff:ff:ff

inet 192.168.31.100/24 brd 192.168.31.255 scope global bond0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:febc:7d41/64 scopelink tentative dadfailed

valid_lft forever preferred_lft forever

查看逻辑网口设备的信息

[[email protected] ~]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1(April 27, 2011)

Bonding Mode: load balancing (round-robin)    #模式为负载均衡

MII Status: up      #状态为up

MII Polling Interval (ms): 200     #侦测间隔为200ms

Up Delay (ms): 0     #启动延迟为0ms

Down Delay (ms): 0   #关闭延迟为0ms

Slave Interface: eno16780032

MII Status: up     #状态up

Speed: 10000 Mbps    #速率为10000

Duplex: full       #全双工

Link Failure Count: 0

Permanent HW addr: 00:0c:29:bc:7d:41

Slave queue ID: 0

Slave Interface: eno33561344

MII Status: up

Speed: 10000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:bc:7d:4b

Slave queue ID: 0

测试

冗余测试

模拟宕一个网口

[[email protected] ~]# ifconfig eno16780032 down

ping正常

模拟宕另外一个网口

[[email protected] ~]# ifconfig eno33561344 down

ping超时

网络性能测试(通过netperf工具)

有关netperf的使用可以看看这篇文章:http://blog.itpub.net/22664653/viewspace-714569/

逻辑网口的两个物理网卡正常工作之时

[[email protected] ~]# netserver    #在服务端运行netserver

[[email protected] ~]# netperf -H192.168.31.100 -l 60 -t TCP_STREAM     #-H 指定测试端,-l 指定测试时长,-t 指定测试模型,这里是TCP的批量传输

MIGRATED TCP STREAM TEST from 0.0.0.0(0.0.0.0) port 0 AF_INET to 192.168.31.100 () port 0 AF_INET

Recv  Send    Send

Socket Socket  Message Elapsed

Size  Size    Size     Time     Throughput

bytes bytes   bytes    secs.   10^6bits/sec

87380 16384  16384    60.00   10151.01

模拟宕一个网卡

[[email protected] ~]# ifconfig  eno33561344 down

[[email protected] ~]# netperf -H192.168.31.100 -l 60 -t TCP_STREAM

MIGRATED TCP STREAM TEST from 0.0.0.0(0.0.0.0) port 0 AF_INET to 192.168.31.100 () port 0 AF_INET

Recv  Send    Send

Socket Socket  Message Elapsed

Size  Size    Size     Time    Throughput

bytes bytes   bytes    secs.   10^6bits/sec

87380 16384  16384    60.00   9509.36  #吞吐量降低

通过测试,做了bond之后,的确可以实现网口的冗余和网络性能的提高

如有纰漏,欢迎指正。我对bond七种模式不是很明白理解透彻,这篇文章只是讲了个大概。另外,如果各位博友有立志从事关于linux方面的事业,可以留下您的联系方式或者博客首页,我将主动联系您,大家互相提高,一起共勉。

时间: 2024-08-05 14:43:59

bond双网卡绑定总结的相关文章

bond双网卡绑定

centos双网卡绑定 在/etc/sysconfig/network-scripts/目录下建立ifcfg-bond0文件,文件内容如下: DEVICE=bond0 USERCTL=no BOOTPROTO=none ONBOOT=yes IPADDR=192.168.100.17 NETMASK=255.255.255.0 GATEWAY=192.168.100.1 TYPE=UnKnown BONDING_OPTS="miimon=80 mode=0" 绑定mode为0,是ron

Linux下bond双网卡绑定

bond,是一种双网卡绑定技术.即将多块物理网卡绑定成一个逻辑网卡,并实现网卡冗余.流量均衡等的一种可靠性强且高可用技术. 七种bond模式: 一.mod=0即banlance-rr(平衡轮循环策略) 特点:传输数据包的顺序是依次传输,第一个走eth0,第二个包走eth1--一直这样循环下去,直到传输完成.该模式提供负载均衡和容错能力. 假如当一个连接或会话的数据包从不同的接口发出,并经过不同的链路,客户端可能会出现数据包无序到达的情况,这样导致无序到达的数据需重新被发送,便会导致网络的吞吐量的

bond 双网卡绑定

说明:两个网卡做成一个虚拟的网卡,一个坏掉以后不影响业务 1. 两个网卡  eth0 eth1 备注:没有eth1的话添加一块网卡,克隆的虚拟机要配置好 2.bond的主机 bond0 3.第一步:配置设置文件  [[email protected] network-scripts]# vim  /etc/sysconfig/network-scripts/ifcfg-bond0 内容: [[email protected] ~]# cat   /etc/sysconfig/network-sc

Oracle Linux 6.4(BOND)双网卡绑定实战—附加说明

操作环境Oracle Linux Server release 6.4内核Linux rac1 2.6.39-400.17.1.el6uek.x86_64 [[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.254.2 NETMASK=255.255.255.0 BROADCAST=192.168.254.1 ONBOOT=

双网卡绑定后bond是eth3的网卡信息

问题描述:做了双网卡绑定后,发现只有个网卡起作用,只有bond0开启模式,eth都没有开启,拔了eht3后网络就会断开,问题原因是同事之前做双网卡绑定配置错误后重启机器. 问题原因:重启主机后bond0信息记录到了如下文件,正常情况下不会有bond0信息,所以查看并注释后重启,问题解决. [[email protected] network-scripts]# cat /etc/udev/rules.d/70-persistent-net.rules 正确的不会写到这个文件中: # PCI de

深度分析Linux下双网卡绑定七种模式

现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持).进入正题,linux有七种网卡绑定模式:0. round robin,1.active-backup,2.load balancing (xor), 3.fault-tolerance (broadcast),

linux服务器双网卡绑定

Linux双网卡绑定 双网卡绑定在项目应用中较多,通常配置上网卡绑定有两种方法,第一种是采用传统方法修改配置文件,第二种是采用新的命令直接生成配置文件. 传统配置方法步骤如下: 第一步:编辑网卡eth1配置文件 第二步:复制网卡eth1配置文件,重命名为eth2 第三步:复制网卡eth1配置文件,重命名为bond0,并设置双网卡绑定的相关选项如:双网卡之间检测周期100ms,双网卡之间的模式模式1 为主被模式,模式0为双主模式,如BONDING_OPTS="miimon=100 mode=0&q

Linux下双网卡绑定(bonding技术)

http://www.cnblogs.com/qmfsun/p/3810905.html Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的网卡绑定模式,Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个网络接口设置来使用,用于网络负载均衡及网络冗余.当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(win

Redhat6 双网卡绑定

Redhat6 双网卡绑定 一.环境情况   1.操作系统:redhat6.4 64位 注意:redhat6以下版本部分配置文件不一样   2.网卡2块:eth0  eht1 二.操作步骤    1.需要彻底关闭NetworkManager服务,否则会和bond网卡冲突        service NetworkManager stop        //关闭NetworkManager服务 chkconfig NetworkManager off       //系统启动时不启动服务