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的速率和双工设定
必要条件2:switch(交换机)支持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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)