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

什么是Bond

Bond技术,也被称为网卡绑定或网卡捆绑,是将两个或更多的物理网卡绑定成一个虚拟的网卡。

Bond的工作模式

bond的模式有7种,mode=0,mode=1,mode=2,mode=3,mode=4,mode=5,mode=6

bond常用的模式有两种

1)mode=0,表示平衡负载round-robin,轮询的方式,第一个包走eth0,第二个包走eth1

优点:数据包传输顺序是依次传输,流量提高一倍

缺点:需要交换机做端口聚合,否则可能无法使用,客户端也很可能出现数据包无序到达,无序到达的包需要重新发送,网络吞吐量下降

2)mode=1,表示主备active-backup,只有主网卡工作,备网卡处于待机状态

优点:当主网卡down掉,备网卡马上转为主状态,可以提高网络连接的可用性,冗余性高

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

bond的其他模式

1)mode=2,表示平衡策略Balance-xor,基于HASH算法的负载均衡模式,网卡分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使的各种不同处理来源的访问都尽量在同一个网卡上进行处理。交换机对应的端口可能需要采取聚合方式

2)mode=3,broadcast即广播模式。所有数据包从所有网络接口发出,该模式只有冗余能力,过于浪费资源

3)mode=4,动态链接聚合

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

必要条件2switch(交换机)支持IEE 802.3ad Dynamic link aggregation

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

4)mode-5,适配器传输负载均衡

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

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

5)mode=6,适配器适应性负载均衡

Linux双网卡bond1 绑定

第一步,配置设定文件:

/etc/sysconfig/network-scripts/ifcfg-bond0

TYPE=bond
BOOTPROTO=none
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.167.10
NETMASK=255.255.255.0
GATEWAY=192.168.167.1
BONDING_OPTS="mode=1 miimon=100"


/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

重启一下网络,然后确认一下状况:

[root@test ~]# /etc/init.d/network restart

[root@test ~]# 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@test ~]# 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

centos8使用nmcli实现bond

#添加bonding接口
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
ipv4.method manual ipv4.addresses 192.168.42.200/24
#添加从属接口
nmcli con add type bond-slave ifname eth0 master bond0
nmcli con add type bond-slave ifname eth1 master bond0
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成

#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
#启动绑定
nmcli con up bond0

#删除bond
nmcli con del bond0

posted on   杨小杨~  阅读(221)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示