为什么需要STP?想象一个村子(网络)里有很多桥(交换机),如果不加控制,村民(数据包)会在环路上无限绕圈(广播风暴),导致交通瘫痪!STP就是村里的 “修路委员会”,负责 拆掉多余的桥,只留一条主干道,确保数据包不迷路!
对于STP而言,最重要的工作就是在交换网络中计算出一个 五环拓扑。在拓扑计算的过程中,一个非常重要的内容就是配置BPDU的比较。在配置BPDU中,有四个字段非常关键,他们是“根桥ID”、“跟路径开销”、“网桥ID”以及“接口ID”,这四个字段便是交换机进行配置BPDU比较的关键内容。
STP按照如下顺序选择最优的配置BPDU:1.最小的根桥ID;2.最小的RPC;3.最小的网桥ID;4.最小的接口ID。在这四条原则中(每条原则都对应配置BPDU中的相应字段),第一条原则主要是用于在网络中选举根接口及制定接口。
一、STP选举的终极目标
选出一套 无环路的转发路径,分为三个角色:
1、根桥(Root Bridge) → 村长(全村的中心)
2、根端口(Root Port) → 每台交换机去村长家的 最近的路
3、指定端口(Designated Port) → 每条路上 负责传信的哨所
二、选举四步走——选村长大会开始!
假设村里有3台交换机:SW1、SW2、SW3(类似3个候选人)。
1、第一步:选村长(根桥)
(1)规则:比谁的 “身份证号”最小(Bridge ID = 优先级 + MAC地址)。
- 优先级默认32768(可手动改小),数字越小越优先。
- 优先级相同?比 MAC地址(越小越优先,如00:00:00:11:11:11 < 00:00:00:22:22:22)。
(2)举例:
- SW1优先级=4096 → 身份证号最小 → 当选村长!
- 其他交换机高喊:“SW1是根桥!”
2、第二步:每台交换机选根端口(找最近的路去村长家)
(1)规则:比较每条路到根桥的 “路费”(累计路径开销),路费越少越好!
路费标准:
千兆链路:开销=4
百兆链路:开销=19
十兆链路:开销=100
(2)举例:
SW2有两条路去SW1(根桥):
路1:直连SW1,开销=4(千兆)
路2:经过SW3再到SW1,开销=4+4=8
→ 选择路费更低的路1作为根端口!
3、第三步:每条链路上选指定端口(路上的哨所)
(1)规则:同一条路上,哪个交换机离村长更近,谁就设哨所(指定端口)。
比累计路费
:路费小的赢。
路费相同?比交换机的 身份证号(Bridge ID小的赢)。
(2)举例:
SW2和SW3之间的路:
SW2到根桥开销=4
SW3到根桥开销=8
→ SW2离村长更近 → SW2的端口成为指定端口!
4、第四步:阻塞多余端口(拆掉多余的桥)
落选的端口:既不是根端口,也不是指定端口 → 进入 阻塞状态(Blocking),相当于拆桥!
- 阻塞的端口只监听数据,不转发,破环完成!
三、选举流程图——一张图看懂
[选村长] → 根桥(Bridge ID最小)
↓
[找近路] → 每台交换机选根端口(到根桥开销最小)
↓
[设哨所] → 每条链路选指定端口(比累计开销,再比Bridge ID)
↓
[拆废桥] → 阻塞剩余端口(防环路!)
四、实际配置(H3C示例)
# 把SW1设为根桥(优先级改小)
system-view
stp root primary # 优先级自动变为0
# 把SW2设为备份根桥
stp root secondary # 优先级自动变为4096
display stp brief
输出关键信息:
根桥:Root Bridge的MAC地址
端口角色:ROOT(根端口)、DESI(指定端口)、ALTE(阻塞端口)
五、总结口诀
1、村长选举看身份证(Bridge ID越小越好)。
2、找近路要比谁省钱(累计路径开销最小)。
3、设哨所要拼关系网(离村长近的当指定端口)。
4、多余的路直接拆(阻塞端口保平安)!
终极目标:让全村(网络)
只有 一条主干道(无环路径)
,数据包不绕圈、不堵车!