1.简介

STP是局域网消除环路的协议,设备通过交互BPDU发现网络中的环路,并阻塞某些端口来消除环路,标准名称802.1D。

2.环路危害

广播风暴,二层网络环路会产生广播风暴导致整个网络资源耗尽,网络瘫痪不可用。

MAC地址表震荡(未知单播),二层网络拓扑频繁变化导致设备的MAC地址表震荡,影响数据转发。

3.STP作用

消除环路,通过阻塞冗余链路消除网络中可能存在的网络通信环路。

链路备份,当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。

4.基本概念

Root Bridge:交换网络的逻辑中心,会根据网络变化而变化。

Bridge ID:桥优先级(16bit)+MAC地址(48bit)。

Port ID:端口优先级(4bit)+端口号(12bit)。

Root Path Cost:端口到根桥的路径开销。

5.STP端口状态

Disabled:禁用状态,端口状态为Down,不接收BPDU,不转发用户流量。

Blocking:阻塞状态,阻塞端口的最终状态,接收并处理BPDU,不转发用户流量。

Listening:侦听状态,接收并处理BPDU进行生成树角色选举,不转发用户流量。

Learning:学习状态,接收并处理BPDU进行MAC地址学习,不转发用户流量防止临时环路。

Forwarding:转发状态,根端口和指定端口的最终状态,既处理BPDU报文也转发用户流量。

6.计时器

Hello Time(2s):发送配置BPDU的时间间隔,用于检测链路故障,网络稳定后只在根桥修改有效。

Forward Delay(15s):Listening和Learning持续时间,保证拓扑变化消息传遍整个网络,防止临时环路。

Message Age:BPDU从根桥发送到当前桥的总时间,配置BPDU报文经过一个桥,Message Age加1。

Max Age(20s):端口的BPDU报文老化时间,网络稳定后只在根桥修改有效,Message Age小于等于Max Age继续转发,Message Age大于Max Age老化。

7.STP报文

7.1.配置BPDU





端口使能STP,按照Hello Time时间间隔从指定端口发送配置BPDU。

根端口收到优先级比自己高的配置BPDU时,更新自己配置BPDU信息并从指定接口向下游发送。

指定端口收到比自己优先级低的配置BPDU时,立刻向下游设备发送自己的配置BPDU。

7.2.TCN BPDU



备份端口变为Forwarding状态,发送TCN BPDU到根桥。

指定端口收到TCN BPDU,复制TCN BPDU并发往根桥。

7.3.BPDU Type



7.4.Flags

第一个bit(左边、高位bit)表示“TCA(拓扑改变响应)”。

最后一个bit(右边、低位bit)表示“TC(拓扑改变)”。

8.STP

8.1.STP端口角色

根桥RB(Root Bridge):Bridge ID最小的桥。

根端口RP(Root Port):向根桥方向转发数据,同时还接收上游设备的BPDU报文。

指定端口DP(Designated Port):向下游交换设备转发BPDU报文。

阻塞端口AP(Alternative Port):只接收BPDU,但不发送BPDU,不转发用户流量。

8.2.STP角色选举

初始状态:每个桥都认为自己是根桥,向所有端口发送自己的配置BPDU。

选择根桥:交互配置 BPDU,桥ID最小的设备会被选举为根桥。

选择根端口:每一个非根桥设备选举一个根端口①根路径开销②对端BID③对端PID④本端PID。

选择指定端口:每一条物理链路选举一个指定端口①根路径开销②本端BID③本端PID。

阻塞预备端口:未被选举为根端口或指定端口的作为预备端口会被阻塞。

8.3.STP拓扑变更机制



1)网络拓扑发生变化后,下游设备会不间断地向上游设备发送TCN BPDU报文。

2)上游设备的指定端口收到TCN BPDU报文会给下游设备发送TCA置位的配置BPDU,告知下游设备停止发送TCN BPDU报文(其他端口收到TCN BPDU不会回复)。

3)上游设备复制一份TCN BPDU报文,向根桥方向发送。

4)根桥发送TC置位的配置BPDU,通知下游设备将MAC地址表的老化时间由300s改为15s,快速老化。

5)最多15s后,MAC地址表清空,重新开始MAC地址学习及数据转发。

9.STP的不足

未细分端口角色

从用户角度考虑,Listening、Learning和Blocking状态都不转发用户流量。

从配置角度考虑,端口之间的本质区别不在于端口状态,而在于端口扮演的角色。

时间机制

被动算法,依赖定时器判断拓扑变化,收敛速度慢。

配置BPDU处理

拓扑稳定后,只能由根桥发送配置BPDU,其他设备转发。

无法实现数据分流

所有VLAN共享一棵生成树,阻塞同一个接口。

10.附思维导图