本文最后更新于 2026-10-12,文章内容可能已经过时。

一、实验环境

本实验源于工作中遇到的实际问题

实验环境均为物理真机,模拟器进行测试可以会有较大差异。

两台设备的 STP 模式默认均为 MSTP,所有 VLAN 均位于实例 0 中。

原链路:接入交换机1 XG0/0/1 光口经光路接入接入交换机2 XG0/0/1,两台设备对应接口配置均如下:

port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan xxx

新加链路:接入交换机1&2使用千兆电口。

二、模拟环境测试步骤

步骤一:为 SW1、SW2 新链路对应端口配置 Eth-Trunk。

注意:配置前必须确保该链路处于手动 shutdown 状态,链路两端任一端手动 shutdown 即可,或者不接线也可。

注意:Eth-Trunk 分为手动模式和 LACP 模式,默认使用手动模式。手动模式原生支持将不同速率的链路加入同一聚合组;LACP 模式虽然可以将不同速率的接口加入同一聚合组,但只启用与聚合组内第一个 UP 物理链路速率相同的接口,速率不相同的接口不会被启用——这些接口虽显示为 UP 状态,但在聚合组中处于 Down 状态(可通过 display eth-trunk 0 命令查看)。为解决该问题,可在 Eth-Trunk 接口视图下执行 lacp mixed-rate link enable 命令,开启混合速率 LACP。由于手动模式存在较大缺陷,建议使用 LACP 模式。

SW1&2 新链路对应端口配置如下:

interface Eth-Trunk0
mode lacp-dynamic
lacp mixed-rate link enable
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 10 20 30
shutdown
interface GE1/0/24
eth-trunk 0

步骤二:调整新链路 STP 开销,确保流量自动切换。

确保新链路 UP 后,STP 自动使用新链路转发数据。使用 display stp brief 或 display stp 等命令,结合拓扑图确定根桥位置。假设根桥为 SW1(或与 SW2 相比,SW1 距离根桥的 cost 更小),则在 SW2 上调整 Eth-Trunk 0 的 STP cost,使其优于老链路——cost 值越小越优先。华为设备默认万兆链路 cost 值为 2000,千兆链路 cost 值为 20000,故将新链路 cost 由默认值 20000 修改为 1999。若不修改 cost,老链路 cost 优于新链路,流量无法自动切换。

若不用上述方式将流量迁移至新链路,而是通过手动 shutdown 老链路的方式切换流量,可能导致新链路在老链路 down 后无法及时完成 STP 端口状态收敛,造成流量暂时中断(该情况存在较大可能性,但未进行实验验证)。

interface Eth-Trunk0
stp instance 0 cost 1999

步骤三:连接新链路线缆并取消手动 shutdown。

连接新链路的物理线缆,取消接口的手动 shutdown。此时数据会自动切换到新链路上,老链路被 STP 自动阻塞,可使用 display stp brief 命令查看端口状态。

步骤四:清除原链路接口配置并加入聚合组。

清除两台设备原链路对应接口的配置,并将其加入链路聚合组。

interface 10GE0/0/1
undo port link-type
eth-trunk 0

步骤五:删除新链路聚合组上的 STP 开销配置。

interface Eth-Trunk0
undo stp instance 0 cost

三、实验结果

模拟环境中,SW1 配置 VLANIF 10,IP 地址为 192.168.10.254/24;PC 接入 SW2 任意端口,IP 地址为 192.168.10.1/24,对应端口配置为 access 模式并划分至 VLAN 10。

测试开始前,PC 开启五个 CMD 窗口,分别执行以下命令:三个常规长 ping、一个 3000 字节大包长 ping 和一个 6000 字节大包长 ping。执行上述每一步骤时持续观察五个 ping 进程,均未出现丢包或延迟异常。

ping 192.168.10.254 -t
ping 192.168.10.254 -t
ping 192.168.10.254 -t
ping 192.168.10.254 -t -l 3000
ping 192.168.10.254 -t -l 6000

四、新问题补充

1. lacp mixed-rate link enable 不同速率需要配置这个,还是说千兆强制百兆后需要配置这个?

    都要配置,只要聚合组中存在不同速率的成员端口就要配置

2. 老链路被 STP 自动阻塞(这时候stp重新选举,链路应该会中断把?)

   根据测试过程及结果结论为不会中断

3. eth-trunk成员端口应该是备份模式,不是负载,实验中试一下是不是这样。

默认情况下,也就是没有配置最大活动链路数(max active-linknumber X)的情况下,所有可以参与转发的链路都参与转发,不会为备份端口。

4. 新老链路正常收敛完成后任意中断其中一条链路,业务会不会中断

   五个ping命令随机出现丢一个包,例如五个ping中三个各丢一个包,五个ping中四个各丢一个包

5. 如果把新链路一侧(如PCR侧)千兆口改为百兆,另一侧需不需要手动改

   在测试环境中,当一个改为强制百兆,另一个不需要改,另一个自动协商成百兆,不知道实际环境中一侧电口一侧光口如测试环境相同,并且实际环境还需要经过传输设备。

6. 新链路一侧改百兆后,eth-trunk工作模式、以及实验效果有没有变化。

再次测试后,实验结果没有变化