STP:Spanning-Tree Protocol
生成数协议,执行802.1D标准。是一种工作在局域网中,属于数据链路层的协议,目的解决是二层交换机出现环路引发的问题(MAC地址表抖动,挂广播风暴)。
STP报文分类
配置BPDU(Bridge Protocol Data Unit)
一般所说的BPDU就是配置BPDU,运行STP协议的交换机(网桥)回周期性的发送BPDU。
ST稳定后只有根桥会发送BPDU,其他网桥负责处理转发。
重要字段:
根ID:桥根的MAC+优先级
COST:路径开销值
桥ID:发出此BPDU的桥
端口ID:发出BPDU的端口号+优先级
TCN BPDU
用于链路发送变化时,告知其他网桥
STP计时器
Hello Time:
指允许STP的设备发送BPDU的时间间隔。当网络拓扑稳定之后,若要修改该定时器,只有在根桥修改才能生效。
Forward Delay:
指接口进行状态更换的延迟时间。也就是在处于Listening和Learning的持续时间,缺省值为15秒。
Message Age:
配置BPDU从根网桥生成开始,到当前为止所经过的时间。
Max Message Age:
指接口的BPDU最大生存时间,默认为20s。
BPDU从根桥被发出的时候,Message Age值为0,每经过一个桥设备,其值加1。当非根桥设备收到BPDU后,会比较Message Age和Max Age的大小。如果前者小于等于后者,该非根桥设备继续转发该BPDU;如果前者大于后者,该BPDU将被丢弃,此时可以认为网络直径过大,根桥连接失败。
在同一个拓扑中,Max Age是相同的,可在根桥上修改该值。
STP 工作原理
-
交换机角色确定:根桥与非根桥
刚启动STP时,每台交换机都认为自己是根桥
1)优先级(交换机默认优先级是32768)越小越优先,0的优先级最高。
2)优先级一样,看MAC地址表,最小的就是根桥。
-
端口角色确定:根端口,指定端口,阻塞端口
非根交换机在选举根端口时分别依据该端口的根路径开销、桥ID、对端PID和本端PID。
端口状态变化过程
-
端口状态分类:
- 关闭 disable
- 阻塞 blocking 不发送BPDU、不学习MAC、只处理BPDU报文
- 侦听 listening 不学习MAC地址,会发送处理BPDU报文
- 学习 learning 开始学习MAC地址
- 转发 forwarding 开始数据转发
端口变化过程
- 端口enable
- 端口shutdown
- 端口被选为非阻塞端口(根端口或指定端口)
- 端口被选为阻塞端口
- 等待计时器超时(15s)
- 端口被设定为边缘端口
STP网络拓扑变化
-
直接收敛 ALET-->ROOT
端口变化 blocking-->forwarding
时间 2*forwading Delay=15*2=30s
-
间接收敛 根丢失
需要等待端口Max Message Age(最大老化时间)超时
max age+2*forwading Delay=20+15*2=50s
STP保护方式
-
BPDU保护-----边缘端口
[SW-int]stp edged-port enable
[SW]stp bpdu-production
-
Root保护-------根保护
[SW-int]stp root-production
-
TC 保护------防止TCNBPDU伪造,导致MAC表的频繁刷新
[SW]stp tc-production