STP生成树协议 

作用:在二层网络中有链路备份的情况下可能存在网络环路,STP生成树协议就是为了破除这个环路

工作原理:

一、选择根桥

交换机启动时,每个交换机都认为自己是根桥,发送自己交换机设备的配置BPDU参数来选举根桥,主要通过BID来确认根桥。

BID=优先级+MAC地址

先比较优先级,越小越优,在比较MAC地址,越小越优。

二、在非根桥上选举根端口

确定了根交换机后,然后选举根端口,根端口是非根交换机接收最好的配置BPDU的端口。根交换机确定后,非根桥在所有端口中选举出一个最优的BPDU端口作为根端口。通过配置BPDU的四个参数来比较

Root ID  根桥的BID

RPC       到根交换机的距离

BID      发送配置BPDU的交换机的BID

PID     端口的优先级+端口编号

三、选举指定端口

在非根交换机上确定了根端口后,通过根端口计算出指定端口的参数,然后用算出来的参数去比较设备本身的指定端口参数,如果计算出来的优,那么该端口为指定端口,如果设备本身的指定端口优,那么该端口为AP端口。

根交换机上的所有端口都是指定端口

四、确定端口状态

disable       关闭状态   端口物理层处于关闭或者shutdown,不处理任何数据。

blokning     阻塞状态  端口启用STP协议后进入到该状态,该状态下设备只接收处理配置BPDU,不发送任何数据,不学习MAC地址。

listning       监听状态  端口正在选举端口角色,该状态下设备接收处理配置BPDU,发送配置BPDU,不学习MAC地址,不转发用户数据。

learning       学习状态  端口认为自己是根端口或者指定端口的时候,该状态下,设备接收处理配置BPDU,发送配置BPDU,学习MAC地址,不转发用户数据。

forwarding    转发状态,该状态是最终状态, 接收处理配置BPDU,发送配置BPDU,学习MAC地址,转发用户数据。

在生成树中,只有blokning状态和forwarding状态是最终状态,代表最稳定。


五、当生成树出现问题。

1、当RP端口失效,且有AP端口的情况下,AP成为新的根端口。经过30S的转发延迟。

2、当RP端口失效,没有AP端口的情况下,DP成为新的根端口。经历50S的才能进入到转发状态。20S的端口配置BPDU的老化时间,30S的转发延迟。

3、当根桥失效,会重新选举根桥,需要50S才能恢复网络。


当DP变为RP时,状态从forwarding立即转变为discarding,在经历2个转发延迟,才进入到forwarding,所以至少需要30S



当交换机的端口角色发生变化时,MAC地址表固定的300S老化时间,导致在这段时间内 ,部分主机无法通信。所以STP改进了这个机制。拓扑变更通知简称TC泛洪。

拓扑变化的条件

1、所有端口进入到Forwarding状态,就会认为拓扑发生变化。

2、根端口失效或者恢复时,也会认为拓扑发生变化。



当拓扑发生变化时,MAC地址表如何老化?

1、当满足以上2个条件时,交换机则认为拓扑发生变化,沿着根端口发送,TCN BPDU,通知上游设备,

2、上游设备收到拓扑变更通知(TCN)后,会立即回复TAC确认消息,告诉下游设备收到了,下游设备立即停止发送TCN。上游设备会继续沿着根端口朝着根桥发送TCN。

3、根桥收到会立即从所有的指定端口发送TC置位的BPDU。持续35S

4、非根交换机收到TC置为的BPDU后,将自己的MAC地址表项在15S内老化。


但是当主机连接到交换机时,交换机的端口forwarding了,会发生TCN拓扑变化通知,导致网络产生震荡。所以在STP,RSTP,MSTP的网络中,连接三层设备的接口都必须配置边缘端口。


边缘端口的好处:

1、配置边缘端口后,不发送TCN置位的BPDU,

2、配置边缘端口后,收到TC置位的BPDU,不老化MAC地址表

3、配置边缘端口后,端口从discarding状态立即变为Forwarding状态.



生成树协议为什么要有监听15S的转发延迟?

因为当前STP运行的网络中,当拓扑发生改变,AP端口直接转变为RP端口的时候,没有任何转发延迟,会导致网络出现临时环路。

RP如果在规定时间内没有收到根桥发生的配置BPDU,可能因为网络阻塞,导致AP端口成为RP,没有转发延迟的话,网络中的所有端口都是转发状态会出现临时的环路。

当RP失效或者恢复,当有端口进入到Forwarding状态时,交换机都会用根端口朝着根桥发送TCN BPDU,通知根桥网络发生变化,根桥发生TC使所有交换机老化MAC在15S内老化MAC地址, 在15S内 TC配置BPDU会发送至全网(7层)。


生成树协议为什么要有学习15S的转发延迟?

因为当拓扑发生变化时,交换机往根桥发生TCN BPDU,根桥收到后发送TC,使全网的交换机都老化当前MAC地址,如果没有学习状态,直接转发,会导致交换机没有形成MAC地址表,导致未知单播帧泛洪在网络中,造成网络振荡。