stp
why's stp
stp产生背景

当网络中出现交换机成环组网时(例如上图),会造成广播风暴(广播流量在三台交换机内循环广播),进而造成mac地址频繁漂移,设备CPU、内存高,线路带宽被占满,网络中断。
- 广播风暴导致网络不可用
- MAC地址表震荡导致MAC地址表项被破坏
进而需要一种技术打破这种环路,于是生成树协议诞生。
what's stp
stp、rstp、mstp含义
- stp:spanning tree protocol,生成树协议,遵循802.1d标准设计的用于打破网络二层环路的协议。
- rstp:rapid spanning tree protocol,快速生成树协议,遵循802.1w标准设计、优化stp的生成树协议。
- mstp:mutli spanning tree protocol,多实例生成树协议,遵循802.1s标准设计、多实例的生成树协议。
stp BPDU分类
-
配置BPDU(0x00)
-
第1位和第8位没有置位的普通BPDU
-
第1位置位的TCA BPDU
-
第8位置位的TC BPDU
-
-
TCN BPDU(Topology Change Notification (0x80)
rstp/mstp BPDU分类
- Rapid/Multiple Spanning Tree(0x02)
stp、rstp、mstp报文格式
stp
- 普通配置BPDU
Protocol Identifier:stp、rstp、mstp都是固定的,都是Spanning Tree Protocol;
Protocol Version Identifier:stp字段为Spanning Tree,值为0;
BPDU Type:
Configuration(0x00)(分为 普通配置BPDU、TCA BPDU、TC BPDU)
Topology Change Notification(0x80)
BPDU flags:TCA和TC位
Root Identifier:根ID字段(包括优先级、mac地址字段)
Root Path Cost:根路径开销(自己为根,到自己的开销为0)
Bridge Identifier:BID字段包括优先级、mac地址字段
Port identifier:端口ID,用于选举堵塞端口
Message Age:
Max Age:BPDU最大老化时间,默认20s
Hello Time:BPDU发送时间间隔,默认为2s
Forward Delay:转发时延(收敛时间,默认15s)
- TCN BPDU


rstp
- Rapid/Multiple Spanning Tree BPDU
RST BPDU(包含TC BPDU和TCA BPDU(少见)),没有了TCN BPDU报文,一般分将TC置位的RST BPDU(非边缘端口进入转发状态)、TCA置位的RST BPDU、普通RST BPDU(TC、TCA均不置位的BPDU-普通BPDU)。
普通RST BPDU(没有将TC置位的 BPDU)
RSTP变化最大的部分为 BPDU flags字段,将原先stp中flags字段中间预留6位做了使用。
| 字段 | 字段描述 |
|---|---|
| BPDU flags: 0x78, Agreement, Forwarding, Learning, Port Role: Root | |
| 0... .... = Topology Change Acknowledgment: No | |
| .1.. .... = Agreement: Yes | 协议字段 |
| ..1. .... = Forwarding: Yes ...1 .... = Learning: Yes | 增加端口状态字段 |
| .... 10.. = Port Role: Root (2) 10 根端口 11 指定端口 | 端口角色字段 指定端口,备份端口,阻塞端口,根端口 |
| .... ..0. = Proposal: No | 提议字段,不同厂商对接使用 |
| .... ...0 = Topology Change: No |
mstp
- Rapid/Multiple Spanning Tree BPDU(参考RST BPDU)
在RSTP基础上扩展了MST Extension字段(多实例)
stp、rstp角色
stp
- stp端口角色
- 根端口、指定端口、ALTE(阻塞端口)
- 端口状态
- forwarding
- learning
- liensting
- blocking
- disabled

rstp
- rstp端口角色
- 根端口
- 指定端口
- AP(ALTE端口)阻塞端口
- BP(backup port)备份端口
- rstp端口状态
| 端口状态 | 状态描述 |
|---|---|
| forwarding | 转发用户流量,学习mac地址 |
| learning | 不转发用户流量,学习mac地址 |
| discarding | 不转发用户流量,不学习mac地址 |
stp、rstp拓扑计算
stp、rstp端口角色选举
选举过程中使用的4个字段 {根桥ID,累计根路径开销,发送者BID,发送端口PID}
-
交换机互联
- 只要开生成树的两台交换机或多台交换机互联(互联端口开启生成树),此时交换机不转发用户流量,所有端口都处于listening状态。首先进入选举阶段:SW们开始都认为自己是根桥,发送自己的BID(stp优先级+mac地址)给其它交换机。
-
选举根桥
- SW们比较BID(比小),最小的成为根桥
-
选举根端口和指定端口

图-1
3.1 选举根端口
- 交换机比各端口 收到根桥发送的BPDU的cost。以AS01为例:AS01从G0/1口收到根桥发送的BPDU(累计根路径开销为 AS01的G0/1接口 stp cost) cost=1,同时AS01也会收到AS02发送的根桥stp数据包,AS01收到后的数据包的BID cost=2(AS02的G0/1接口cost+AS01的G0/2口cost),所以AS01的G0/1为根端口,同样AS02类似(补充:AS02收到根桥DS01发送的BPDU后 {根桥DS01-BID,累计根路径开销(cost=1),发送者BID(AS02-BID),发送端口(AS02的G0/2)PID}数据包发送给AS01。(三角形拓扑组网)

图-2
-
图-2为例,当AS03从AS01方向收到根桥的开销cost=2(AS01的G0/1+AS03的G0/1)等于从AS02方向收到根桥的开销=2(AS02的G0/1+AS03的G0/2),此时再比较发送根桥BPDU的发送者的BID(AS01和AS02),因为AS01的mac地址小于AS02,所以AS03 G0/1为根端口。
注意:cost累加 是收到根桥发送的stp报文 入向接口的cost值累加。
3.2 选举指定端口
- AS01和AS02选举指定端口,以图-1 AS01为例 比较自己的BID和AS02的BID大小,问题来了:AS01如何知道AS02的BID呢? 通过根桥定期(hello时间间隔)发送的配置BPDU,AS02收到后添加自己的BID字段发送给AS01,此时AS01知道AS02的BID,同样AS02一样知道AS01的BID。BID小的一方端口状态为指定端口(DP),另一方将端口阻塞(ALTE端口角色)。
总结:
选举根端口依次比较cost、BID、PID,比出为止;
选举指定端口只比较BID。
stp、rstp、mstp 选举根桥、根端口、指定端口的过程都是一样的。
但是rstp、mstp协议收敛原理改进,收敛速度更快(收敛速度快体现在交换机与交换机之间的收敛速度(交换机互联端口进入Forwarding状态的速度快),交换机与终端(非边缘端口)收敛速度依然慢,详见stp、rstp、mstp对比。
stp、rstp端口状态

总结:stp、rstp、mstp先选举端口角色,再进入端口状态的变化。
stp拓扑变化

- 交换机A非边缘端口up或down后,会发送TCN BPDU给上游交换机,上游交换机B收到后发送TCA 置位的BPDU,用来告知交换机A停止发送TCN BPDU,交换机B同时发送TCN BPDU再给上游交换机,直至根桥收到TCN BPDU为止。
- 根桥收到 TCN BPDU后,发送 TC、TCA置位的BPDU,TCA目的是停止下游交换机发送TCN BPDU,TC的目的让下游所有交换机删除mac地址。
rstp拓扑变化
-
检测拓扑变化的标准只有1个:非边缘端口进入Forwarding状态。
-
此时,交换机A将自己非边缘端口、根端口启动一个定时器(hello时间的2倍),同时向自己所有非边缘端口、根端口发送TC置位的RST BPDU,定时器超时后停止发送。交换机B收到交换机A发送的TC置位的RST BPDU后,删除除收到RST BPDU端口(其它所有端口)的mac地址。
-
同时交换机B为自己所有非边缘端口、根端口启动一个定时器,向自己所有非边缘端口、根端口发送TC置位的RST BPDU(重复A的操作)
-

P/A机制
- P/A机制是rstp对stp的改进(利用flags字段中的6位)
- P/A机制的目的是 使一个指定端口尽快进入Forwarding状态。

stp端口状态变化过程
- SW01和SW02之间运行stp,当SW01与SW02互联,SW01选举为根桥,SW01的E0/0/2接口(指定端口)要经过blocking-listensing-learning-Forwarding,经过15s的转发延迟后才进入Forwarding状态。(SW02 E0/0/2端口为根端口也要经过15s进入转发状态)
- SW01和SW02之间运行RSTP,SW01和SW02之间选举根端口、指定端口后,通过P/A机制协商,使SW01 E0/0/2接口(指定端口)尽快进入Forwarding状态。
普通P/A机制与增强P/A机制

- 上游设备收到下游设备的Agreement报文后,将端口状态由discarding状态 转变为 Forwarding状态,端口角色没有变化(依旧是指定端口)
-
-
在运行生成树的通信网络中,如果华为公司的数据通信设备与其他厂商设备混合组网,可能会因为与其他厂商设备的Proposal/Agreement机制不同导致互通失败。需要根据其他厂商设备的Proposal/Agreement机制,选择端口使用增强的快速迁移机制还是普通的快速迁移机制。
-
华为设备:
执行命令interface G0/X,进入参与生成树协议计算的接口视图。
执行命令stp no-agreement-check,配置端口使用普通的快速迁移方式。
缺省情况下,端口使用增强的快速迁移机制。
-
stp优化
-
通过端口角色的增补,简化了生成树协议的理解及部署
-
端口状态的重新划分
-
配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色
-
配置BPDU的处理发生变化
-
拓扑稳定后,配置BPDU报文的发送方式
-
更短的BPDU超时计时
-
处理次等BPDU
-
-
快速收敛
- P/A机制
-
保护功能
stp的保护
-
边缘端口(stp edged-port)
-
边缘端口的UP、down交换机不会发送TC BPDU
-
边缘端口+BPDU保护:边缘端口收到stp BPDU报文 端口将会被Error-Down
-
边缘端口如果不配置BPDU保护,端口收到交换机BPDU报文后会当作普通非边缘端口(一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡)所以交换机要配置BPDU保护。
-
-
BPDU保护(stp bpdu-protection)
- 配合边缘端口使用
-
根保护(stp root-protection)
- 配置在根桥的指定端口(当收到更优的BPDU后,将端口状态变为discarding状态,经过一定时间(通常2倍 Forwarding 延迟)没有收到更优的BPDU,将端口状态恢复)
-
TC-BPDU保护(stp tc-protection)
- 交换机收到TC BPDU后会删除mac表(可能也会删除arp表),当交换机收到大量TC报文 交换机频繁删表会给设备造成很大性能压力,可以设置一个TC接受阈值,超过此阈值在1个定时器时间内不做处理。
-
环路保护
-
防止链路拥塞,造成1台交换机环路影响其它交换机
![1677657728510]()
-
how's stp
stp组网
- 常用组网方式:三角形组网

stp排障
stp常见故障
- stp频繁计算导致网络震荡
- 网络中频发TC报文,导致交换机频繁删除mac表(根因:接入交换机端口没有配置边缘端口,非边缘端口频繁UP、down)
排障命令
<Huawei>display stp topology-change
CIST topology change information
Number of topology changes :31
Time since last topology change :0 days 1h:13m:5s
Topology change initiator(detected) :Ethernet0/0/1
Number of generated topologychange traps : 17
Number of suppressed topologychange traps: 0
查看stp拓扑变化的记录
<Huawei>display stp tc-bpdu statistics
-------------------------- STP TC/TCN information --------------------------
MSTID Port TC(Send/Receive) TCN(Send/Receive)
0 Ethernet0/0/3 39/0 0/0
查看设备收发TC/TCN报文的数量
华三:
display stp bpdu-statistics
华三:
display stp tc

华三/华为:
display stp
xx现网
- MSTP协议报文存在两种格式,一种为dot1s,即IEEE802.1s规定的报文格式,另一种为legacy,是一种私有报文格式,配置时,可以指定报文的格式,也可以配置MSTP协议报文格式自适应的功能,即根据收到的MSTP协议报文格式自动切换端口支持的MSTP协议报文格式,使报文格式与对端匹配。
- 当部署MSTP的网络中存在华为设备与其他制造商的设备互连时,如果两台设备的域名、修订级别和VLAN映射表都一致,但是由于BPDU报文密钥不一致导致不能互通,则可执行本命令使得华为设备的BPDU报文与其他制造商设备的BPDU报文互通。


浙公网安备 33010602011771号