聚合与生成树怎么相互作用
在生成树眼里,聚合口是一条逻辑链路而不是多条物理链路:路径开销按聚合带宽计算,拓扑计算只认这个逻辑口。由此产生两个实用结论:STP 相关的调优(cost、端口角色、边缘端口)要配在聚合口上,配在成员口上不会参与独立决策;成员口中的某一条失效时,只要聚合仍然存活,生成树不会重新收敛,业务感受不到中断。
基本信息
| 适用平台 | 二层聚合 + STP 环境(华为 VRP、思科 IOS、H3C Comware) |
|---|---|
| 调优位置 | 逻辑聚合口(Eth-Trunk / port-channel / Bridge-Aggregation) |
| 成员口角色 | 成员口不参与独立的生成树计算 |
| 开销计算 | 按聚合后的带宽对应的路径开销 |
| 边缘端口 | 面向服务器或终端的聚合口可配边缘端口,需评估 BPDU 保护 |
| 典型部署 | 双上联时让聚合口转发、备用链路阻塞 |
典型使用场景
- 双上联拓扑设计:确认哪条链路转发、哪条阻塞,以及切换时的收敛行为
- 聚合口选路调整:希望业务走另一台汇聚设备时,在聚合口上调整开销
- 服务器聚合:交换机侧聚合 + 服务器绑定,避免生成树阻塞造成的单向不通
- 成员故障演练:拔掉一条成员,验证业务无感知
- 排障定位:端口状态异常时区分是生成树阻塞还是成员未选中
华为 VRP
华为 VRP
[Huawei] interface Eth-Trunk1
[Huawei-Eth-Trunk1] stp cost 2000 # 在聚合口上调整路径开销
[Huawei-Eth-Trunk1] stp edged-port # 面向服务器/终端时按需启用
<Huawei> display stp brief | include Eth-Trunk # 看聚合口在生成树中的角色
<Huawei> display eth-trunk 1 # 成员选中状态(与 STP 无关)思科 IOS
思科 IOS
SW-A(config)# interface port-channel 1
SW-A(config-if)# spanning-tree cost 2000 # 在逻辑口上配置
SW-A(config-if)# spanning-tree portfast # 面向服务器时按需
SW-A# show spanning-tree interface port-channel 1 # 角色与状态
SW-A# show etherchannel summary # 成员状态单独确认H3C Comware
H3C Comware
[H3C] interface Bridge-Aggregation1
[H3C-Bridge-Aggregation1] stp cost 2000
[H3C-Bridge-Aggregation1] stp edged-port
<H3C> display stp brief
<H3C> display link-aggregation verbose # 成员选中状态要点对照
| 问题 | 结论 | 实践含义 |
|---|---|---|
| 成员口失效 | 聚合仍存活则 STP 不收敛 | 业务无感知,但带宽下降 |
| 全部成员失效 | 聚合口状态变化,STP 收敛 | 需要备用路径承接流量 |
| 调优配置位置 | 聚合口(逻辑口) | 配在成员口上不生效 |
| 边缘端口 | 作用于聚合口整体 | 面向服务器的聚合需评估 BPDU 保护 |
排查时先分清两层:成员是否被聚合选中(看聚合的 verbose 输出)与聚合口在生成树中的角色(看 stp brief)。这两类信息经常被混在一起看,导致「端口明明 up 却不转发」的误判。