服务器mode 4(802.3ad标准)与交换机对接时,交换机端必须配置LACP链路聚合,将对应端口绑定到同一个Eth-Trunk或Port-channel,并启用active或dynamic模式,否则服务器端bonding无法协商到Up状态。这是整个链路聚合能否生效的前提,也是很多运维配置bond后“物理口全up但逻辑口不工作”的根本原因。
服务器mode 4是什么,为什么交换机端必须配合LACP
mode 4是Linux bonding驱动中的802.3ad动态链路聚合模式,它不像mode 0那样靠轮询发包,而是通过交换LACPDU报文来自动协商聚合组成员,服务器端每张物理网卡都会持续发送LACPDU,交换机收到后需要回应,双方达成一致后,这些物理口才能合并成一条逻辑链路。
mode 4和mode 0/1的核心区别
mode 0(round-robin)是纯轮询,服务器端发数据包时轮流从每张网卡出去,不需要交换机做任何特殊配置,只要把网线插到同一台交换机上就能勉强跑,mode 1(active-backup)是一主一备,同一时刻只有一张网卡工作,切换时靠ARP探测,mode 4则是两张或多张网卡同时工作,且具备真正的故障切换和带宽叠加能力,但前提是交换机必须支持并启用LACP协议。
行业共识认为,生产环境选mode 4比mode 0更稳妥,因为mode 0在不支持聚合的交换机上会引发大量广播帧乱序,甚至造成网络风暴,mode 4虽然配置步骤多一步,但换来的是可验证的冗余和均衡效果。
交换机端不配置LACP会发生什么
如果你在服务器上把bond模式设为4,但交换机端口只是普通access或trunk,那么会看到:
- 服务器持续发送LACPDU,但交换机完全不理睬
- bond0状态显示为down,物理网卡MII Status为up但聚合组状态一直是“waiting”
- 即使强制把bond0设为up,业务流量也无法正常通过,因为数据帧在交换机侧没有被当作聚合组成员处理
有些朋友图省事,把服务器端bond模式改成0,交换机那边不用改,但带宽叠加效果不稳定,故障切换也容易丢包,所以mode 4的正确姿势,一定是两头配合。
华为/华三交换机配置LACP与服务器mode 4对接
国内机房最常遇到的电信级设备就是华为CE/S5720系列和华三S5130系列,这两家的配置逻辑非常接近,但命令关键词有差异。
华为交换机lacp配置:Eth-Trunk动态模式
华为交换机的操作路径是:创建Eth-Trunk接口 -> 设置为lacp动态模式 -> 把物理口加入Eth-Trunk,下面是一套可直接执行的配置:
system-view
interface Eth-Trunk 1
mode lacp dynamic
quit
interface GigabitEthernet0/0/1
eth-trunk 1
quit
interface GigabitEthernet0/0/2
eth-trunk 1
quit
这里的关键是mode lacp dynamic,华为默认的Eth-Trunk工作模式是manual load-balance,对应手工静态聚合,无法与服务器mode 4协商,改成dynamic后,交换机会主动发送LACPDU并与服务器建立动态聚合组。
配置完成后,执行display eth-trunk 1,看到成员口状态为Selected,就是协商成功了,如果显示Unselected,先检查物理口是否都加入了同一个Eth-Trunk,再检查端口速率双工是否一致。
华三交换机:Bridge-Aggregation动态聚合
华三的命令和华为略有不同,但思路一样:
system-view
interface Bridge-Aggregation 1
link-aggregation mode dynamic
quit
interface Ten-GigabitEthernet1/0/1
port link-aggregation group 1
quit
interface Ten-GigabitEthernet1/0/2
port link-aggregation group 1
quit
华三叫Bridge-Aggregation,华为叫Eth-Trunk,但底层机制都是标准的LACP,配置后执行display link-aggregation verbose,看Selected状态即可,注意华三的聚合口默认也是手工模式,必须显式改成dynamic。
负载分担策略设置
交换机端默认的负载分担策略按包目的MAC或源目IP进行hash,但有些型号默认是逐流方式,和服务器端bonding的xmit_hash_policy需要保持“基本原理一致”,才能让流量均匀分布,华为配置负载分担方式的命令是:
interface Eth-Trunk 1
load-balance src-dst-ip
华三则是:
link-aggregation load-sharing mode destination-ip source-ip
生产环境中,如果服务器流量主要是同一IP对之间的多个会话,建议用src-dst-ip模式,避免单个大流占用一个物理口。
Cisco交换机配置mode 4对接的套路
Cisco设备上叫Port-channel,与服务器mode 4对接时,需要把channel-group模式设为active,这是Cisco专有的LACP激活语法。
Cisco IOS基础配置
interface Gi0/1
channel-group 1 mode active
interface Gi0/2
channel-group 1 mode active
interface Port-channel 1
switchport mode access
注意两点:第一,两个物理口的channel-group编号必须一致;第二,Port-channel接口的switchport模式必须显式配置,否则可能默认是trunk或dynamic desirable,导致VLAN不通。
Cisco的active模式对应华为的dynamic主动模式,passive对应被动模式,默认推荐active,因为被动模式不会主动发LACPDU,服务器必须先开口,容易造成协商时序问题。
Nexus系列略有区别
Nexus交换机上配置类似,但使用interface port-channel 1后,需要额外在成员口下配置channel-group 1 mode active,Cisco IOS和Nexus都支持,但Nexus默认允许的LACP成员数更大,一般不用调整。
服务器端网卡绑定与交换机端配合验证
交换机配置只是半边,服务器侧也要确保bond配置正确,以Linux常见的CentOS/RHEL系统为例,核心是加载bonding模块并设置mode为4。
服务器bond配置文件关键项
通过/etc/modprobe.d/bonding.conf或直接使用nmcli配置,如果手动改配置文件,需要确认以下参数:
- BONDING_OPTS=”mode=4 miimon=100 xmit_hash_policy=layer3+4″
- 两张物理网卡的配置文件中都要指定MASTER=bond0,SLAVE=yes
- 重启网络服务后,执行cat /proc/net/bonding/bond0查看状态
输出中每张物理卡的MII Status应为up,而且bond0的Bonding Mode应为IEEE 802.3ad Dynamic link aggregation。
验证交换机与服务器协商结果
在服务器上执行ethtool <物理网卡名>确认速率和双工一致,比如两张网卡都要求1000M全双工,如果一张协商到100M,LACP就会把该口置为Unselected,然后再到交换机上看聚合组状态,两边看到的成员口数量必须完全匹配。
一个常见的坑是,服务器两张网卡插在了不同交换机上,而且交换机没有做堆叠,这种情况下,一台交换机的聚合口可能Selected,另一台则Unselected,业务流量依然会断,mode 4的跨设备聚合必须依赖堆叠或vPC/MLAG技术。
服务器mode 4交换机端怎么配置?高频踩坑点
直接回答“服务器mode 4交换机端怎么配置”这个问题,核心就是三步:创建聚合口、设为动态LACP、把物理口绑进去,但这三步中间埋着很多小坑。
坑点1:LACP模式不匹配
交换机端active与服务器端802.3ad协商没有问题,passive也可以但不太推荐,static模式则完全不行,华为manual load-balance或Cisco的mode on都会导致服务器收不到LACPDU。
坑点2:VLAN配置放错了位置
有人只在Eth-Trunk口配了access vlan,物理口上还带着旧的vlan配置,这会造成物理口无法正常加入聚合组,正确做法是清空物理口的二层配置,只保留eth-trunk或channel-group命令。
坑点3:STP阻塞聚合口
交换机默认生成树会认为聚合口是环路,可能把成员口阻塞,建议在聚合口或物理口上启用边缘端口,或者将STP设置为快速模式,特别是在Cisco设备上,Port-channel配好后还要检查spanning-tree状态。
坑点4:服务器bond配置被NetworkManager覆盖
很多Linux发行版默认启用NetworkManager,手动改/etc/sysconfig/network-scripts/后重启,NM会覆盖bond参数,建议禁用NetworkManager或使用nmcli配置bond,确保mode=4真正生效。
常见问题Q&A
服务器mode 4和交换机mode 2(静态聚合)能对接吗?
不能,mode 4要求交换机端为动态LACP,而华为manual load-balance或Cisco mode on都是静态手工聚合,交换机不发送LACPDU,服务器无法完成802.3ad协商,即使物理链路通,bond0也会一直处于down状态。
华为交换机配置lacp后,服务器bond0显示down,先查什么?
先看交换机display eth-trunk 1,确认成员口是不是Selected,如果Unselected,检查物理口是否都加入了同一个Eth-Trunk,是否启用了mode lacp dynamic,两端速率双工是否一致,然后在服务器执行ethtool eth0确认物理状态,再看cat /proc/net/bonding/bond0中MII Status。
Cisco交换机开启LACP后,服务器不能跨交换机聚合怎么办?
需要交换机支持堆叠或vPC(Nexus)技术,如果两台交换机没有形成单一逻辑设备,标准LACP无法允许同一聚合组成员跨设备,因为LACPDU只会转发到本设备能看到的物理口,只有配合vPC或堆叠,把两个物理口逻辑上视为同一交换机的端口,服务器mode 4才能同时使用两个上行链路。
服务器mode 4与交换机端的配合,本质上就是LACP的一次握手,只要在交换机上正确启用动态LACP,并把物理口划进同一个聚合组,服务器bond0就能稳定运行,别小看这一步,它是整个链路聚合的地基,地基歪了,上层业务再多也白搭。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/795177.html


