LINUX服务器网卡接口聚合Bond技术及原理

一、什么是Bond?

Bond技术,也被称为网卡绑定或网卡捆绑,是将两个或更多的物理网卡绑定成一个虚拟的网卡(Bond)。通过这一技术,多块网卡对外呈现为一个单独的以太网接口设备,并具有相同的IP地址。Bond技术主要用于解决网卡单点故障或网卡负载较高的场景,旨在提高服务的可靠性和网络带宽。

二、查看LINUX内核是否支持Bond

LINUX中,Kernels 2.4.12及以后的版本均供bonding模块,可以这样查看:

[root@shad0w-top ~]# cat /boot/config-3.10.0-1127.el7.x86_64 | grep -i bonding
CONFIG_BONDING=m
[root@localhost ~]#

三、Bond技术原理

3.1虚拟网卡创建

通过Bond技术,多块物理网卡被虚拟成一张网卡。对于多物理网卡的Bond网卡,其中一块物理网卡会被设置为Master(主设备),其他网卡则为Slave(从设备)。Bond网卡的MAC地址通常取自Master物理网卡,并复制到其他物理网卡上。

3.2Bond的工作模式

bond的模式常用的有两种:

#1) mode=0
表示负载分担round-robin,并且是轮询的方式比如第一个包走eth0,第二个包走eth1,直到数据包发送完毕。

优点:流量提高一倍

缺点:需要接入交换机做端口聚合,否则可能无法使用
#2) mode=1
表示主备模式,即active-backup,在此模式下,只有主网卡工作,备份网卡处于待机状态。当主网卡失效时,备份网卡将接管数据传输,确保服务的连续性。

优点:冗余性高

缺点:链路利用率低,两块网卡只有1块在工作

bond其他模式:

#1) mode=2
Balance-xor(平衡策略),它基于HASH算法的负载均衡模式,网卡的分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使得各种不同处理来源的访问都尽量在同一个网卡上进行处理。

Balance-xor模式通常与交换机的聚合强制不协商方式配合。如果网卡连接到交换机,交换机对应的端口可能需要采取聚合方式。
#2) mode=3
broadcast,即广播模式式。所有数据包从所有网络接口发出,该模式只有冗余能力,过于浪费资源。
#3) mode=4
IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad动态链接聚合)

特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。

外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。

必要条件:

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

条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation

条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式
#4) mode=5
Adaptive transmit load balancing(适配器传输负载均衡)

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

该模式的必要条件:ethtool支持获取每个slave的速率
#5) mode=6
即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

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

注:以上模式使用小结: 



mode5和mode6不需要交换机端的设置,网卡能自动聚合。

mode4需要支持802.3ad。

mode0,mode2和mode3理论上需要静态聚合方式。

四、配置举例

4.1禁用NetworkManager

[root@shad0w-top ~]# systemctl stop NetworkManager
[root@shad0w-top ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
[root@shad0w-top ~]# 

4.2查看当前网卡信息

[root@shad0w-top ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
    link/ether 20:04:0f:f8:38:08 brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
    link/ether 20:04:0f:f8:38:08 brd ff:ff:ff:ff:ff:ff
4: em3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond2 state UP qlen 1000
    link/ether 20:04:0f:f8:38:0a brd ff:ff:ff:ff:ff:ff
5: em4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond2 state UP qlen 1000
    link/ether 20:04:0f:f8:38:0a brd ff:ff:ff:ff:ff:ff

em1em2为例,插上网线,网卡端口处于up状态。

4.3创建Bond配置文件

[root@shad0w-top ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond1
TYPE=Bond
BOOTPROTO=static
DEVICE=bond1
NAME=em1
ONBOOT=yes
IPADDR=192.168.250.11
NETMASK=255.255.255.0
GATEWAY=192.168.250.1
BONDING_OPTS="mode=4 miimon=100"

4.4修改两个聚合网卡的配置文件

# em1:

[root@shad0w-top ~]# vim /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
NAME=em1
BOOTPROTO=none
ONBOOT=yes
SLAVE=yes
MASTER=bond1

# em2:

[root@shad0w-top ~]# vim /etc/sysconfig/network-scripts/ifcfg-em2
DEVICE=em2
NAME=em2
BOOTPROTO=none
ONBOOT=yes
SLAVE=yes
MASTER=bond1

4.5重启服务

[root@shad0w-top ~]# systemctl restart network
[root@shad0w-top ~]# 

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值