服务器网卡bond4交换机怎么配置?核心答案是:bond4(802.3ad动态链路聚合)需要交换机侧配置对应的LACP模式,服务器和交换机两端都开启主动LACP,聚合模式选择802.3ad,交换机端口配置为trunk或access并加入同一个聚合口,这样才能真正实现带宽叠加和链路冗余。
先搞懂bond4是什么,再动手配交换机
很多运维第一次接触bond4,容易直接照搬bond0的配置思路,结果发现交换机端口一直报错或者流量不均衡,bond4在Linux里叫802.3ad动态链路聚合,它和bond0(轮询)、bond1(主备)最大的区别是:bond4要求交换机必须支持并开启LACP协议,两边协商成功后才会把多个物理口捆绑成一个逻辑口。
行业共识认为,bond4最常见的应用场景是数据库服务器、存储服务器以及需要高吞吐量的业务节点,比如你有一台双千兆网卡的服务器,做了bond4之后,理论上最大可用带宽是2Gbps,但前提是交换机侧把这两个口加入同一个Eth-Trunk或Port-Channel,并且模式匹配。
如果交换机侧没配置,或者模式配成了静态捆绑,那bond4的LACP协商就会失败,网络不通,下面从服务器和交换机两个维度,分步骤说清楚配置方法。
服务器侧bond4配置步骤
以CentOS 7/8和Ubuntu 20.04/22.04为例,其他发行版思路一样,注意先确认网卡驱动和内核模块支持802.3ad,近几年的系统内核都默认支持。
检查网卡和NetworkManager状态
先看有几块物理网卡,记下接口名,执行:
ip link show
常见接口名是eno1、eno2、ens3、ens4,如果你用NetworkManager管理网络,建议临时关掉它,避免配置冲突:
systemctl stop NetworkManager
systemctl disable NetworkManager
如果你熟悉nmcli,也可以直接在NetworkManager里创建bond,但多数生产环境直接用配置文件更稳妥。
创建bond接口配置文件
以CentOS 7为例,配置文件在/etc/sysconfig/network-scripts/下,新建ifcfg-bond4:
DEVICE=bond4
NAME=bond4
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
IPADDR=192.168.10.50
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
ONBOOT=yes
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1 xmit_hash_policy=layer3+4"
关键参数说明:
mode=4:就是802.3ad动态链路聚合。miimon=100:每100毫秒检测一次链路状态。lacp_rate=1:LACP报文发送频率为快模式(每秒一次),交换机侧需要匹配。xmit_hash_policy=layer3+4:基于IP和端口做负载均衡哈希,比默认的layer2更均匀。
配置两个物理网卡从属于bond4
新建ifcfg-eno1:
DEVICE=eno1
NAME=eno1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond4
SLAVE=yes
ifcfg-eno2同样写法,这里不需要配置IP地址,也不设置网关,全部都由bond4接管。不要在物理网卡上单独写IPADDR,否则会出现地址冲突。
加载bonding模块并重启网络
确认bonding模块加载:
modprobe bonding
然后重启网络服务:
systemctl restart network
或者用ifup bond4逐个启动,启动后检查:
cat /proc/net/bonding/bond4
看到MII Status: up、Mode: IEEE 802.3ad Dynamic link aggregation,并且两个Slave Interface状态都是up,就说明服务器侧配置正常,如果显示down,先查交换机侧。
Ubuntu系统快速配置方案
Ubuntu 20.04以上用netplan的话,在/etc/netplan/下修改yaml文件:
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: no
eno2:
dhcp4: no
bonds:
bond4:
interfaces: [eno1, eno2]
addresses: [192.168.10.50/24]
gateway4: 192.168.10.1
parameters:
mode: 802.3ad
mii-monitor-interval: 100
lacp-rate: fast
transmit-hash-policy: layer3+4
然后执行netplan apply,netplan的mode: 802.3ad就是bond4,和Linux配置文件里mode=4是一回事。
交换机侧bond配置,这才是重点
服务器配好了,交换机不配等于白干,不同厂商命令不一样,但思路一致:把对应端口加入动态LACP聚合组,端口类型和PVID保持一致。
华为交换机配置案例
华为交换机用Eth-Trunk,命令如下:
system-view
interface Eth-Trunk 1
port link-type trunk
port trunk allow-pass vlan 10 20
mode lacp-static
traffic-limit inbound 20480
quit
interface GigabitEthernet0/0/1
eth-trunk 1
quit
interface GigabitEthernet0/0/2
eth-trunk 1
quit
mode lacp-static就是华为的LACP动态聚合模式,对应Linux的bond4,华为也支持mode lacp-dynamic,但需要配合LACP协议协商,建议直接用lacp-static,多数情况下都能和服务器bond4协商成功。
注意:如果服务器业务VLAN是access口,交换机侧也要改成access模式:
port link-type access port default vlan 10
思科交换机配置案例
思科叫Port-Channel,比较老旧的型号用channel-group:
interface range GigabitEthernet0/1-2
channel-group 1 mode active
switchport mode trunk
switchport trunk allowed vlan 10,20
exit
interface Port-channel1
switchport mode trunk
switchport trunk allowed vlan 10,20
exit
这里mode active就是主动发起LACP,对应服务器的主动协商,如果交换机用mode passive,也能协商,但必须等对端先发LACP报文。
锐捷、H3C等国产设备的常见命令
锐捷和H3C跟华为命令接近,H3C用link-aggregation mode dynamic:
interface Bridge-Aggregation 1
link-aggregation mode dynamic
quit
interface GigabitEthernet 1/0/1
port link-aggregation group 1
quit
interface GigabitEthernet 1/0/2
port link-aggregation group 1
quit
锐捷的聚合口叫AggregatePort,配置逻辑一样,先创建聚合口,再把物理口加入。
交换机配置后验证LACP状态
无论什么牌子,配置完都要验证协商结果,华为用:
display eth-trunk 1
display lacp statistics
思科用:
show lacp neighbor
show etherchannel summary
关键看LACP协商是否正常,假如看到Selected或Bundled状态,说明聚合成功,如果看到Standby或Unselected,说明对端没有响应,需要检查两端模式和物理口配置。
常见坑:交换机VLAN与服务器vlan mismatch
很多朋友bond4配好了,LACP也协商成功,但Ping不通,这时候八成出在VLAN上,服务器网卡没有配置VLAN子接口的话,默认是Access口,交换机侧如果配成了Trunk,PVID又不匹配,数据帧就进不了正确的VLAN,解决方法是:交换机聚合口设为Access,PVID设为服务器所在VLAN;如果服务器有多个VLAN,交换机设Trunk,服务器侧需要额外创建VLAN子接口。
场景化问题:业务实际怎么选
你可能会遇到这样的场景:一台服务器接了两根千兆网线,想通过bond4实现2Gbps传输,但实际压测发现只能跑到1Gbps,这大概率是hash策略的问题。xmit_hash_policy=layer2只看MAC地址,如果服务器和交换机之间只有一个网关MAC,所有流量全走第一个物理口,另一个口闲置,改成layer3+4后,通过IP和端口做哈希,多连接场景就能分摊到两个口。
如果是对延迟敏感的场景,比如游戏服务器或交易系统,业内专家指出,bond4并不一定比单网口延迟低,LACP的哈希粒度有限,单个TCP连接只能走一条物理链路,不会同时利用两根线,也就是说,
bond4提升的是并发总带宽,不是单连接速率。
还有人在纠结bond4和bond1谁好,如果你只需要冗余,不需要带宽叠加,bond1更简单,交换机什么都不用配,但如果你有两台物理交换机做堆叠,业务要求服务器到每台交换机各拉一根线,bond4就需要交换机支持跨设备链路聚合,华为叫堆叠加Eth-Trunk,思科叫vPC,H3C叫IRF,这种场景不做堆叠,只用普通LACP,是收不到预期的。
那些你容易忽略的小细节
先看物理网卡速率,如果两端网卡速率不一致,比如服务器是千兆口,交换机却是100M协商,bond4能上但带宽上不去,用ethtool eth0查看速率,确保交换机端口强制或自适应到同一速率。
还有一点,LACP报文需要二层可达,如果你在交换机上设置了端口安全、风暴控制或者ACL,可能把LACP报文拦截掉,配置bond4前,先把这些策略暂时放行。
服务器上如果开了firewalld或iptables,不影响LACP协商,但会影响业务端口连通性,排查问题的时候,先临时清掉iptables -F,确认是防火墙问题还是bond问题。
Q&A:关于服务器网卡bond4的常见疑问
bond4配置完成后,交换机不配置会怎么样?
不配置的话,服务器LACP协商报文发了没人响应,bond4会退化为单链路工作,具体表现是/proc/net/bonding/bond4里一个Slave状态为up,另一个为down,带宽没有叠加,而且可能出现广播风暴或环路,严重时导致整个二层网络异常,所以bond4不是服务器单方面能完成的事。
交换机静态链路聚合可以和bond4一起用吗?
可以协商,但取决于厂商对静态聚合组的LACP处理方式,多数华为、H3C的lacp-static其实是静态LACP,也就是主动发送LACP报文并期望对端响应,如果对端是Linux bond4,能协商成功,但思科的mode on是纯静态,不发送也不处理LACP报文,和bond4通不了,如果你遇到交换机只能配静态聚合,建议先把服务器bond4改成mode=0或mode=2,别用bond4硬凑。
三台服务器共用交换机聚合口会不会有冲突?
不会,每台服务器的bond4独立协商,不同服务器的LACP有本端系统ID和端口号区分,交换机上把物理口加到同一个Eth-Trunk后,只要端口数匹配,服务器各自协商各自的,互不干扰,但如果两台服务器的LACP system ID相同(比如都用了默认MAC),理论上可能导致交换机端口识别混乱,实际中极少遇到,除非你手动改了网卡的MAC地址。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/764178.html





