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地址表,导致未知单播帧泛洪在网络中,造成网络振荡。