1. 项目概述:为什么STP不是“过时的老古董”,而是网络工程师绕不开的底层逻辑
你打开任何一台企业级交换机的配置界面,输入display stp brief,十有八九能看到几行状态为FORWARDING、BLOCKING或LEARNING的端口信息。哪怕你用的是最新款的华为S6730-H48X2M,哪怕你刚配完M-LAG双活,哪怕你正在调试SRv6的SID分配——只要底层物理拓扑存在环路,STP(Spanning Tree Protocol)就还在后台默默运行,像空气一样看不见,却一刻不能少。
这不是教科书里躺在“传统协议”章节里的化石。我带过的某高校网络实验室项目X,在一次模拟核心层链路故障演练中,三台S5735-L堆叠后接入两台S6730做双上行,结果主备切换耗时超过90秒,业务大面积中断。抓包一看,根本不是VRRP的问题,而是STP重新收敛花了整整85秒——RSTP的理论收敛时间明明是1秒内。后来发现,其中一台接入交换机的BPDU报文被误配的ACL策略全部丢弃,导致根桥选举失败,整个生成树退化回原始STP模式。这个坑,没亲手调过STP的人,永远想不到ACL一条规则就能让整张网络“呼吸暂停”。
STP的本质,是用算法给物理环路“动手术”,只保留一棵逻辑无环的树,把其他冗余路径暂时“麻醉”(BLOCKING),等主路径出问题时再快速“唤醒”。它不解决带宽利用率低的问题,也不提供负载分担,但它解决了最基础、最致命的问题:广播风暴。一个发疯的ARP请求在环路里兜一圈变成两个,再兜一圈变四个……指数级增长的广播帧能在3秒内打满千兆链路,让所有设备CPU飙到100%,连SSH都连不上。这不是理论风险,是我在某制造企业现场亲眼见过的真实事故——产线PLC通信全断,停机损失按分钟计算。
所以,别被“STP太老”“现在都用MSTP或ERPS”的说法带偏。华为设备上stp mode stp、stp mode rstp、stp mode mstp三条命令背后,是同一套底层状态机在驱动;stp root primary和stp priority 4096看似只是数字变化,实则决定了整张网络的控制平面话语权;而stp port priority和stp cost的微调,往往就是故障定位时最关键的突破口。这篇内容,不讲RFC文档的抽象定义,只讲你在华为设备上敲下每一条STP命令时,背后发生了什么、为什么这么设计、踩过哪些坑、怎么一眼看出问题在哪——就像当年我的导师手把手教我用display stp topology看拓扑图那样,直接给你掏心窝子的经验。
2. STP核心机制拆解:从“广播风暴”到“一棵树”的硬核推演
2.1 广播风暴:为什么物理环路必须被“砍掉”一根枝?
先说个反直觉的事实:以太网交换机默认不学习广播帧的源MAC地址。当你发出一个目的MAC为ffff-ffff-ffff的ARP请求时,交换机会把它从所有非入端口泛洪出去,这是IEEE 802.1D标准规定的死命令。如果网络里存在物理环路,比如交换机A的G0/0/1连B,B的G0/0/2连C,C的G0/0/3又连回A——这个三角形拓扑就是灾难温床。
我们来手动推演一帧广播包的死亡循环:
- A收到PC1发来的ARP请求(源MAC=PC1,目的MAC=广播),查MAC表无此条目,于是从G0/0/2和G0/0/3两个端口同时泛洪;
- B从G0/0/1收到该帧,同样泛洪到G0/0/2(连C)和G0/0/3(连A);
- C从G0/0/2收到后,泛洪到G0/0/1(连B)和G0/0/3(连A);
- 此时A的G0/0/2和G0/0/3端口会再次收到自己最初发出的帧,但因为是广播帧,交换机不会比对源MAC是否为自己,照单全收并继续泛洪……
一个帧在3台设备间绕一圈,产生6个副本;绕两圈,变成36个;绕三圈,216个……实测数据:在千兆环境下,第5圈时单端口流量就突破800Mbps,CPU软中断占用率瞬间拉满。这时候你ping任何设备都超时,display cpu-usage显示98%,连console线连上去都卡顿——不是设备坏了,是它被自己产生的流量“淹死”了。
STP的破局点,就是主动制造一个“可控的单点故障”。它不禁止环路物理存在,而是通过交换BPDU(Bridge Protocol Data Unit)报文,让所有交换机坐下来投票,选出一个“总指挥”(Root Bridge),然后每个非根桥再各自选一个“离总指挥最近的门”(Root Port),最后每个网段推举一个“对外联络员”(Designated Port)。所有其他端口,统统进入BLOCKING状态——它们的物理链路依然通着,但STP协议层强制关闭了数据转发能力,相当于在端口上加了一把逻辑锁。
提示:BLOCKING状态的端口不转发用户数据帧,但接收并处理BPDU。这是很多初学者误解的点——以为BLOCKING就是“彻底断开”,其实它时刻监听着根桥是否还活着,一旦BPDU停止发送,它会在20秒(Max Age)后启动重新选举。
2.2 BPDU报文:STP的“外交电报”长什么样?
STP的全部智慧,都封装在BPDU这个802.3帧里。华为设备默认每2秒发送一次,目的MAC固定为01-80-c2-00-00-00(这是一个组播地址,专供桥接协议使用,普通终端网卡会直接丢弃,不增加负担)。我们用display stp bpdu命令抓一个典型BPDU来看:
Root ID: 32768.4c1f-cc12-3456 RegRoot: 32768.4c1f-cc12-3456 Root Path Cost: 0 Bridge ID: 32768.4c1f-cc12-3456 Port ID: 128.1 Message Age: 0 Max Age: 20 Hello Time: 2 Forward Delay: 15这串数字不是乱码,而是STP选举的全部依据。关键字段解读:
Root ID:当前公认的根桥ID,由“优先级+MAC地址”组成。优先级是4096的倍数(0~61440),默认32768。选举时先比优先级,小者胜;优先级相同时比MAC,小者胜。这就是为什么
stp root primary命令实际是把本机优先级设为0——不是“设为根”,而是“让自己在优先级PK中必赢”。Root Path Cost:从本桥到根桥的累计路径开销。华为默认参考带宽:10M=100,100M=19,1G=4,10G=2。注意!这个值不是物理链路带宽决定的,而是由端口配置的
stp cost值累加而来。比如A-B是千兆链路(cost=4),B-C也是千兆(cost=4),那么C到根桥A的Root Path Cost就是8。选举根端口时,每个非根桥会计算所有端口收到的BPDU中的Root Path Cost,加上本端口的cost,取最小值对应的端口作为Root Port。Bridge ID:本桥ID,格式同Root ID,用于在本桥有多条路径通向根桥时,打破平局。比如某交换机有两个端口都收到Root Path Cost=4的BPDU,此时就比较BPDU中携带的Bridge ID,小者胜。
Port ID:端口ID,格式为“端口优先级.端口号”,默认端口优先级128。当两条路径的Root Path Cost和Bridge ID都相同时,就比Port ID,小者胜。这也是为什么调整
stp port priority能精细控制端口角色。
这些字段共同构成STP的“四元组”选举法则:Root ID → Root Path Cost → Bridge ID → Port ID,逐级比较,永不平局。没有随机性,没有模糊地带,完全可预测——这正是工程落地的关键。
2.3 STP状态机:端口如何从“懵圈”到“上岗”的五步养成记
STP端口不是简单地“开”或“关”,而是一个有严格时序的状态机。华为设备支持STP/RSTP/MSTP,但底层状态机逻辑一脉相承。理解这五个状态,是读懂display stp brief输出的基础:
DISABLED(禁用):端口被
shutdown或物理断开,STP完全不参与。此时display stp brief中看不到该端口。BLOCKING(阻塞):端口不转发数据帧,不学习MAC地址,但接收BPDU。这是非指定端口的归宿,也是网络稳定的基石。持续时间:直到收到更优BPDU或Max Age超时。
LISTENING(侦听):端口开始发送自己的BPDU,但仍不转发数据、不学习MAC。这是新端口加入或拓扑变更后的过渡态,持续
Forward Delay时间(默认15秒)。作用是让全网有足够时间“听到”你的存在,避免临时环路。LEARNING(学习):端口开始学习源MAC地址并构建MAC表,但仍不转发数据帧。持续另一个
Forward Delay(默认15秒)。这是为了防止刚上线的端口把未知单播帧错误泛洪,造成短暂混乱。FORWARDING(转发):端口正常转发数据帧、学习MAC地址、收发BPDU。这才是真正上岗的状态。
RSTP的进化,核心就是砍掉了LISTENING和LEARNING的僵化等待。它引入了Proposal/Agreement(P/A)机制:当一个端口准备转为FORWARDING时,先发一个带Proposal标记的BPDU,下游如果认可(即自己不是根桥且该端口是其根端口),就立即回复Agreement,并把自己的指定端口同步设为FORWARDING——整个过程毫秒级完成,无需傻等30秒。但要注意,P/A机制只在点对点全双工链路上生效。如果你把一台S5735-L的GE口插在HUB上(半双工),RSTP会自动降级为STP模式,因为HUB无法保证P/A握手的可靠性。
注意:
display stp brief中看到的DISCARDING状态,就是RSTP/MSTP对BLOCKING/LISTENING/LEARNING的统一称呼,本质相同,只是状态合并了。
3. 华为设备STP实操全流程:从零配置到故障定位的完整闭环
3.1 基础配置:三步搭建一棵“健康”的生成树
假设我们有三台华为交换机:SW1(核心)、SW2(汇聚)、SW3(接入),物理连接为SW1-SW2、SW1-SW3、SW2-SW3,构成三角环路。目标:让SW1成为根桥,SW2的G0/0/1和SW3的G0/0/1为根端口,SW1的G0/0/1和G0/0/2为指定端口,SW2-SW3之间的链路被阻塞。
第一步:全局启用STP并指定模式
# 在所有三台设备上执行 [SW1] stp mode rstp [SW2] stp mode rstp [SW3] stp mode rstp为什么选RSTP?因为它是STP的超集,兼容STP报文,且收敛更快。华为设备默认是stp mode stp,必须显式修改。切记:全网所有参与STP的设备必须运行同一模式,否则可能因BPDU版本不兼容导致选举失败。
第二步:指定根桥与备份根桥
# 在SW1(主根)上 [SW1] stp root primary # 在SW2(备份根)上 [SW2] stp root secondarystp root primary等价于stp priority 0,secondary等价于stp priority 4096。这样设置后,SW1的Bridge ID为0.4c1f-cc12-3456,SW2为4096.4c1f-cc12-7890,SW3保持默认32768.xxxx。选举毫无悬念,SW1稳坐根桥。
第三步:验证与微调端口角色
# 在SW1上查看 [SW1] display stp brief MSTID Port Role STP State Protection 0 GigabitEthernet0/0/1 DESI FORWARDING NONE 0 GigabitEthernet0/0/2 DESI FORWARDING NONE 0 GigabitEthernet0/0/3 ALTE DISCARDING NONE这里DESI是Designated Port(指定端口),ALTE是Alternate Port(替代端口,即RSTP对BLOCKING的叫法)。但你会发现SW2-SW3之间的端口可能没按预期阻塞。原因往往是路径开销相同,设备按MAC地址“随机”选择。这时就需要第四步——精准干预。
3.2 精准干预:用stp cost和stp port priority掌控每一条链路
回到SW2-SW3链路未阻塞的问题。我们希望SW2-SW3这条线被BLOCK,让流量都走SW1中转。查看当前开销:
[SW2] display stp interface GigabitEthernet 0/0/3 ... Port Path Cost(Inner) : 200000 # 这是默认千兆口开销 ... [SW3] display stp interface GigabitEthernet 0/0/2 Port Path Cost(Inner) : 200000SW2到SW1的开销是200000,SW3到SW1也是200000,SW2到SW3也是200000。那么SW2计算:从G0/0/1(连SW1)收到Root Path Cost=0,加上自身cost=200000,总开销200000;从G0/0/3(连SW3)收到SW3发来的BPDU,其Root Path Cost=200000(SW3到SW1),加上SW2-G0/0/3的cost=200000,总开销400000。显然G0/0/1更优,成为Root Port。SW3同理。但SW2-SW3之间,双方都认为对方的路径更差,于是都把自己连对方的端口设为指定端口——环路形成!
破局点:人为抬高SW2-SW3链路的开销,让它在计算中天然处于劣势:
# 在SW2上,抬高连SW3的端口开销 [SW2] interface GigabitEthernet 0/0/3 [SW2-GigabitEthernet0/0/3] stp cost 500000 # 在SW3上,同样操作 [SW3] interface GigabitEthernet 0/0/2 [SW3-GigabitEthernet0/0/2] stp cost 500000再display stp brief,SW2-SW3端口立刻变为ALTE(DISCARDING)。原理很简单:现在SW2从G0/0/3收到的BPDU,其Root Path Cost=200000(SW3到SW1),加上SW2-G0/0/3的cost=500000,总开销700000,远大于从G0/0/1收到的200000,自然放弃。
stp port priority则用于更精细的控制。比如SW2有两个端口都连向SW1(双上行),你想指定G0/0/1为主,G0/0/2为备。只需:
[SW2] interface GigabitEthernet 0/0/1 [SW2-GigabitEthernet0/0/1] stp port priority 0 # 最小,优先 [SW2] interface GigabitEthernet 0/0/2 [SW2-GigabitEthernet0/0/2] stp port priority 32 # 默认128,设大些当两条路径的Root Path Cost和Bridge ID都相同时,Port ID(优先级.端口号)小者胜。0.1 比 128.2 小得多。
3.3 深度诊断:display stp家族命令的实战解读
光会配不够,得会看懂设备在想什么。华为STP诊断命令是个体系,各司其职:
display stp brief:速览全局,看端口角色(ROOT/DESI/ALTE/BACK)和状态(FORWARDING/DISCARDING)。第一眼就看有没有不该DISCARDING的端口。display stp region-configuration:查MSTP区域配置(如果用了MSTP),确认region-name、revision-level、instance-vlan是否全网一致。不一致会导致MSTP实例分裂,这是MSTP故障头号原因。display stp topology:最强大的命令,生成ASCII艺术拓扑图。例如:[SW1] display stp topology MSTID 0, Root Bridge: 0.4c1f-cc12-3456, Root Path Cost: 0 +----[SW1]----+ | | | | [SW2] [SW3] \ / \ / +---+---+这张图直观显示SW1是根,SW2和SW3是分支。如果图中出现
[SW2]---[SW3]的直连线,说明那条链路没被阻塞,立刻去查stp cost。display stp abnormal-port:专治“不听话”的端口。当某个端口应该FORWARDING却一直是DISCARDING,或者状态反复震荡,运行此命令能直接告诉你原因,比如Root port conflict(根端口冲突)或Loop guard blocked(环路保护触发)。display stp history:记录最近10次拓扑变更事件,包括时间、端口、变更原因(如Topology Change due to port up)。配合系统日志,能精准复盘故障时间线。
实操心得:我处理过一个案例,客户抱怨网络隔几天就卡顿一次。
display stp history显示每天凌晨3:15都有一次TC(Topology Change)事件。追查发现是某台旧打印机定时发送广播包,触发了STP的TC保护机制,导致全网MAC表刷新。解决方案不是禁用TC,而是给打印机端口配stp tc-protection,限制单位时间内TC报文处理次数。
3.4 高级防护:环路保护、根保护、BPDU保护的落地场景
STP基础配置只能防“意外”,高级保护才是防“作死”。华为提供了三把锁:
环路保护(Loop Guard):防“静默断链”。场景:SW2的G0/0/1(根端口)连SW1,某天光纤被施工挖断,但SW2的端口物理状态还是UP(因为对端SW1没断电,只是光模块没信号)。此时SW2收不到BPDU,按STP规则,它会认为根桥死了,开始自立为王,把自己所有端口转为FORWARDING——环路瞬间爆炸。开启环路保护后,一旦根端口收不到BPDU,它会自动将该端口置为
LOOP_INCONSISTENT状态(逻辑DOWN),彻底切断风险。[SW2] stp loop-protection [SW2] interface GigabitEthernet 0/0/1 [SW2-GigabitEthernet0/0/1] stp loop-protection根保护(Root Guard):防“以下犯上”。场景:接入层SW3本该是叶子节点,但有人误把一台更高优先级的交换机(priority=0)插到SW3下面。SW3收到更优BPDU,会立刻放弃根端口身份,可能导致整张网络拓扑重构。在SW3的下联端口(连用户)开启根保护,一旦收到更优BPDU,该端口立即进入
ROOT_INCONSISTENT状态,阻止非法根桥入侵。[SW3] interface GigabitEthernet 0/0/24 [SW3-GigabitEthernet0/0/24] stp root-protectionBPDU保护(BPDU Protection):防“恶意泛洪”。场景:接入端口(如连PC)本不该收BPDU,但有人用笔记本装了Yersinia工具疯狂发伪造BPDU,试图让交换机误认为自己是根桥。开启BPDU保护后,一旦在边缘端口收到BPDU,该端口立即
error-down,并告警。[SW3] stp bpdu-protection [SW3] interface GigabitEthernet 0/0/1 to 0/0/20 [SW3-GigabitEthernet0/0/1] stp edged-port enable # 先设为边缘端口
这三项保护默认关闭,必须手动开启。它们不是锦上添花,而是生产环境的保命符。我经手的某金融网点,就因没开BPDU保护,被实习生用手机热点连交换机发BPDU,导致柜台业务中断2小时。
4. STP常见故障排查与避坑指南:那些年我们踩过的“隐形坑”
4.1 故障速查表:症状、原因、命令、解决方案
| 症状 | 可能原因 | 关键诊断命令 | 解决方案 |
|---|---|---|---|
display stp brief中大量端口为DISCARDING,但业务不通 | 根桥选举失败,全网都在互相BLOCK | display stp、display stp topology | 检查stp mode是否全网一致;检查stp priority是否有冲突;用display stp bpdu看是否收到BPDU |
某端口长期处于LISTENING或LEARNING,无法FORWARDING | Forward Delay时间未到,或P/A协商失败 | display stp interface、display stp abnormal-port | 检查链路是否为点对点全双工(display interface看Media type);检查两端STP模式是否匹配 |
display stp history频繁出现TC事件,MAC表频繁刷新 | 边缘端口收到BPDU,或网络存在真实环路 | display stp abnormal-port、display logbuffer | 开启stp tc-protection;检查物理连线;在边缘端口启用stp edged-port enable |
某台交换机CPU持续90%以上,display cpu-usage显示STP_TASK占比高 | BPDU处理异常,如ACL误丢BPDU、端口震荡 | display cpu-usage、display acl resource | 检查ACL是否放行01-80-c2-00-00-00;检查端口error-down记录;关闭不必要的STP特性 |
| MSTP环境下部分VLAN不通 | MSTI实例与VLAN映射不一致 | display stp region-configuration、display stp instance 1 vlan | 全网统一region-name、revision-level;用stp instance 1 vlan 10 to 20精确映射 |
4.2 真实避坑经验:来自一线的血泪教训
坑一:“边缘端口”不是万能胶布,乱贴会撕裂网络
新手常把所有接入PC的端口都配stp edged-port enable,觉得“反正不连交换机,开STP没用”。但某次客户把IP电话和PC共用一个端口,IP电话内部有交换芯片,会透传BPDU。结果该端口被设为边缘端口后,突然收到IP电话发的BPDU,触发bpdu-protection直接error-down,整个工位断网。正确做法:边缘端口只用于明确不连接任何桥接设备的纯终端端口;对于IP电话、无线AP等可能透传BPDU的设备,必须关闭edged-port,并考虑开启root-protection。
坑二:“cost值越大越安全”是伪命题
曾有个项目,为确保某条链路绝对不被选中,把stp cost设为10000000。结果发现STP计算溢出,display stp显示Root Path Cost: 0,整个拓扑错乱。华为设备stp cost有效范围是1~200000000,但超过10000000后,不同设备厂商实现可能不一致,极易引发互操作问题。我的建议:千兆链路cost设4,万兆设2,需要抬高时设到500000足矣,留足安全余量。
坑三:忽略“端口优先级”的隐性影响
某次割接,新换的S6730-H交换机替换旧S5720,配置完全复制。但割接后发现STP收敛变慢。对比发现,S5720默认端口优先级是128,而S6730-H默认是160!虽然不影响根桥选举,但在多路径场景下,Port ID(160.1 vs 128.1)的差异导致端口角色分配与预期不符,触发了更复杂的P/A协商流程。解决方案:全网统一端口优先级,stp port priority 128写进模板配置。
坑四:MSTP区域配置的“隐形炸弹”
MSTP要求region-name、revision-level、instance-vlan三者全网严格一致,缺一不可。但revision-level默认是0,很多人复制配置时漏掉这一行。结果就是:SW1和SW2在一个区域,SW3在另一个“虚拟区域”,SW3的VLAN 10和VLAN 20被映射到不同MSTI实例,而SW1/SW2却映射到同一实例——VLAN间通信直接中断。排查时display stp region-configuration显示Region configuration is not consistent,但具体哪不一致?华为不直接告诉你。我的土办法:在所有设备上执行display stp region-configuration verbose,逐字比对三行输出。
4.3 性能与安全平衡:STP参数调优的黄金法则
STP不是配完就完事,参数调优直接影响网络健壮性。以下是经过百台设备验证的黄金法则:
Hello Time(默认2秒):缩短可加快故障感知,但过短会增加CPU和带宽开销。生产环境建议保持2秒,仅在超低延迟要求场景(如高频交易)可降至1秒,需同步调小Max Age和Forward Delay,否则状态机紊乱。
Max Age(默认20秒):决定BPDU丢失后多久启动重选举。公式:
Max Age = (2 * Hello Time * (3 + 1)),即4倍Hello Time。若Hello Time=1,则Max Age应设为4;若强行设为20,设备会自动修正为4。不要手动设Max Age,让设备自动计算。Forward Delay(默认15秒):RSTP下已弱化,但为兼容STP设备,仍需关注。RSTP中它只用于初始启动,P/A协商成功后立即跳过。因此,在纯RSTP网络中,可安全设为4秒(最小值),加速首次收敛。
BPDU发送速率限制:华为支持
stp transmit-limit,限制每秒发送BPDU数量。默认不限制,但在接入层大量端口时,可能引发CPU尖峰。建议设为10(每秒最多10个BPDU),既保障协议运行,又避免资源争抢。
最后分享一个压箱底技巧:STP故障,永远先看物理层。90%的“STP不工作”问题,根源是光纤衰减过大、模块不兼容、网线水晶头氧化导致端口频繁UP/DOWN。display transceiver diagnosis和display interface transceiver verbose这两条命令,比display stp更能直达病灶。毕竟,再完美的算法,也跑在真实的铜缆和光模块之上。
5. STP与现代网络的共生关系:它从未退出,只是换了马甲
很多人觉得STP是“上古协议”,云网融合时代早该被淘汰。这种看法忽略了技术演进的本质:不是推倒重来,而是层层叠加。STP没有消失,它只是沉到了更底层,成了新协议的“肌肉组织”。
看几个真实场景:
VXLAN Underlay网络:在Spine-Leaf架构中,Leaf交换机之间用OSPF或BGP建立三层邻居,但Leaf与Server之间的二层接入,依然依赖STP(或更常见的RSTP)来防环。VXLAN本身是Overlay,Underlay的稳定性,依然由STP守护。
Wi-Fi 6 AP的有线回传:一台AP通过千兆口连交换机,AP内部有多个虚拟AP(SSID),每个SSID对应不同VLAN。这些VLAN的二层环路,依然靠交换机上的MSTP来管理。AP厂商甚至会在管理界面里直接调用交换机的
display stp结果。工业互联网PLC网络:某汽车厂产线PLC控制器通过PROFINET通信,要求<10ms确定性时延。他们采用ERPS(以太网环网保护协议)作为主保护,但ERPS的底层心跳检测,依然依赖STP的BPDU机制进行环路探测。ERPS不是取代STP,而是站在STP肩膀上构建的更快应用层。
所以,学STP的意义,从来不只是为了配通一台交换机。它是理解整个以太网控制平面的钥匙。当你看懂Root Path Cost如何累加,你就明白为什么SDN控制器下发流表时要计算最短路径;当你搞清Proposal/Agreement握手细节,你就知道为什么某些白盒交换机在P4编程时要专门预留BPDU处理流水线;当你亲手用display stp topology画出一张树状图,你就获得了对网络拓扑进行自动化校验的能力——这正是AIOps平台做基线比对的核心输入。
我带过的某跨平台系统项目X,最终交付的不是一个配置文档,而是一套Python脚本:它定期登录所有交换机,执行display stp brief和display stp topology,用正则解析出端口角色和拓扑结构,自动生成DOT格式文件,再用Graphviz渲染成动态拓扑图。当图中某条线突然变红(DISCARDING状态异常),脚本自动触发告警并推送根因分析。这个能力的起点,就是你今天在这里读懂的每一个stp cost、每一行display stp输出。
STP不会教你如何写代码,但它教会你一件事:所有炫酷的上层应用,都建立在对底层协议深刻理解的基础上。那些看起来“过时”的命令,其实是网络世界的语法根基。敲下stp root primary的那一刻,你不是在配置一个协议,而是在参与一场跨越三十年的工程共识——关于如何让机器,在混沌的物理世界里,达成确定性的逻辑秩序。