STP的从选举到转发的过程:
1.在二层网络中,接口DOWN或者未运行STP,接口状态为Disable
2.开始运行stp,端口很快进入Blocking状态,只接收BPDU。这个blocking到listening的间隔时间看网络直径长不长。
3.端口进入 Listening状态 ,只接收并转发BPDU报文,选举根桥,根端口和指定端口,选举持续时间到15s后,
4.指定端口和根端口进入 Learning过渡状态,接收并转发BPDU报文,接收用户流量构建MAC地址表 ,该状态可以继续选举未完成的步骤,顺便学习建立MAC地址转发表,该状态持续15s;
5.最后根端口和指定端口进入 Forwarding状态;其余既不是根端口也不是指定端口的都是阻塞端口,堵塞端口为Blocking状态
4.STP在listening状态先选举根桥,再同时选举根端口和指定端口:
通过桥ID(BID:网桥优先级+mac地址) 来选举,网络中每台设备都会认为自己是根桥,通过交互配置BPDU来选举BID小的为根桥。
{1}根端口,是非根网桥用于接收根桥的BPDU,每台交换机选举
选举规则:
a.非根桥交换机上,到根桥的cost开销最小的优先;
b.若到达根桥开销相同,则比较上一级BPDU的发送者的BID,越小越优;
c.若发送者BID相同,则比较对端PID小的越小越优先,再比较本端PID小的优先,(PID:端口优先级+端口编号)
{2}指定端口,用于转发根桥的BPDU,每条链路选举
a.根桥上都是指定端口,
b.每条链路的两个端口,那个端口到达根桥开销最小的为指定端口,(注意:到根桥途中不要经过该链路上的另一个端口)
C.根路径开销相同,再比较两端BID,越小越优;再比较两端交换机PID,越小越优
虽然选举指定端口的范围和根端口不同,但是选举的原则是一致的依次按照
RPC---->BID----->PID越小越优选举(除根桥的指定端口除外)
3 种端口角色:根端口、指定端口、备用端口
5 种端口状态:禁用状态、阻塞状态、侦听状态、学习状态、转发状态。
从非根桥到根桥的路径可能有很多条,从该端口(包括该端口)到根桥的路径上所有出端口的端口开销总和就是 根路径开销值
STP 交换机发送配置 BPDU 的时间间隔HELLO-time,默认是 2 秒
对于 STP 而言,一个阻塞端口选举为根接口或指定接口后,进入转发状态至少需要经历 30 秒的时间。
最大存活期 :在丢弃BPDU之前,网桥用来存储BPDU的时间 ,缺省 20S. 如果连续收不到10个BPDU的话,20的BPDU老化时间,开始进入listening状态。
根桥故障:
要等待20sBPDU老化,再在listening状态重新选举根桥,根端口,还有经过learning,两个15s转发延迟;故根桥故障要等待50s,网络才会恢复正常。
根桥直连链路故障:
就要重新选举根端口,也就是备用端口成为根端口,备用端口状态变化为堵塞-侦听-学习:两个15s即可恢复正常。
根桥非直连故障:
则需要等待故障链路收不到根桥BPDU,BPDU老化20s老化时间,备用端口不在堵塞,期间会经过堵塞-侦听-学习,即共要50s才可以使得网络恢复正常。
拓扑变更机制:
交换机当出现端口变为转发状态,且交换机至少有一个指定口
端口有从转发状态或者学习状态变为堵塞状态
出现拓扑变更,交换机回向根网桥路径发送TCN置位的BPDU
沿途交换机继续向根网桥转发该TCN BPDU,并在下一次向下游交换机发送BPDU将TCA置位为1,通知下游交换机,已经收到了TCN置位的BPDU,
根桥收到TCN BPDU,则会发出TC 置位的BPDU ,收到TC 置位的BPDU将mac地址表老化时间由300s缩短到15s
由于stp计算最少要经历30s转发延迟,所以在15s对mac地址老化足以在stp完成故障切换前解决mac地址错误的问题。