网络中所有的设备使能 STP 协议后,每一台设备都认为自己是根桥。此时,每台设备仅仅收发配置 BPDU,而不转发用户流量,所有的端口都处于 Listening 状态。所有设备通过交换配置 BPDU后,进行选举工作,选出根桥、根端口和指定端口。
STP算法的基本过程:
1、初始状态:
由于每个桥都认为自己是根桥,所以在每个端口所发出的 BPDU 中,根桥字段都是用各自的 BID, Root Path Cost 字段是累计的到根桥的开销,发送者 BID 是自己的 BID,端口 PID是发送该 BPDU 端口的端口 ID。
- 选择根桥:
网络初始化时,网络中所有的 STP 设备都认为自己是“根桥”,根桥 ID 为自身的设备 ID。通过交换配置消息,设备之间比较根桥 ID,网络中根桥 ID 最小的设备被选为根桥。
3.1. 选择根端口和指定端口
1)、非根桥设备将接收最优配置消息(最优配置消息的选择过程如表 2 所示)的那个端口定为根端口;
2)、设备根据根端口的配置消息和根端口的路径开销,为每个端口计算一个指定端口配置消息:
a、根桥 ID 替换为根端口的配置消息的根桥 ID;
b、根路径开销替换为根端口配置消息的根路径开销加上根端口对应的路径开销;
c、发送者 BID 替换为自身设备的 ID;
d、发送端口 PID 替换为自身端口 ID。
3)、设备将计算出的配置消息与角色待定端口自己的配置消息进行比较:
a、如果计算出的配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性地向外发送;
b、如果该端口自己的配置消息更优,则不更新该端口的配置消息并将该端口阻塞。该端口将不再转发数据,且只接收不发送配置消息。
3.2.最优配置消息的选择过程
1)、每个端口将收到的配置消息与自己的配置消息进行比较:
a、如果收到的配置消息优先级较低,则将其直接丢弃,对自己的配置消息不进行任何处理;
b、如果收到的配置消息优先级较高,则用该配置消息的内容将自己配置消息的内容替换掉。
2)、设备将所有端口的配置消息进行比较,选出最优的配置消息。
STP 拓扑变化处理过程:
1)、在网络拓扑发生变化后,下游设备会不间断地向上游设备发送 TCN BPDU 报文;
2)、上游设备收到下游设备发来的 TCN BPDU 报文后,只有指定端口处理 TCN BPDU 报文。其它端口也有可能收到 TCN BPDU 报文,但不会处理;
3)、上游设备会把配置 BPDU 报文中的 Flags 的 TCA 位设置 1,然后发送给下游设备,告知下游设备停止发送 TCN BPDU 报文;
4)、上游设备复制一份 TCN BPDU 报文,向根桥方向发送;
5)、重复步骤 1、 2、 3、 4,直到根桥收到 TCN BPDU 报文;
6)、根桥把配置 BPDU 报文中的 Flags 的 TC 位置 1 后发送,通知下游设备直接删除桥 MAC 地址表项。
注:
1)、TCN BPDU 报文主要用来向上游设备乃至根桥通知拓扑变化;
2)、置位的 TCA 标记的配置 BPDU 报文主要是上游设备用来告知下游设备已经知道拓扑变化,通知下游设备停止发送 TCN BPDU 报文;
3)、置位的 TC 标记的配置 BPDU 报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备直接删除桥 MAC 地址表项,从而达到快速收敛的目的。
a、MAC地址表默认的老化时间是300s,收到TC置位的BPDU后,MAC地址表的老化时间就修改为15s,设计成15s的原因也是为了防止临时环路;
b、RSTP不同,是直接删除MAC地址表。
原文地址:http://blog.51cto.com/9480916/2336972