STP
STP协议:spanning tree protocol 生成树协议
作用:通过阻塞 非根非指定的端口 来防止二层交换机环路。进而实现网络的冗余和备份
STP相关概念
STP协议的所有角色都是通过比较BPDU的参数选举出来的。
BPDU:(bridge protocol data unit)是运行在STP的交换机之间交换的消息帧。BPDU每隔2s自动发送,携带桥优先级和桥mac地址,以及STP所需的路径,STP便利用这些信息来确定根桥以及到根桥的路径。
BPDU参数
根桥:发送最好BPDU的交换机,并且一个广播域中只有一个根桥
RID:根桥的id。
RPC(路径开销:Root Path Cost):对于根桥来说RPC永远等于0,对于非根桥来说RPC是自己根端口到根桥的路径开销之和
BID(Bridge ID:桥ID):BID(8字节) = 桥优先级(2字节) + 桥MAC(6字节)
STP中每个交换机都有一个BID来表示自己。
pri默认值为32768,这里的pri是stp的优先级。
Pri取值有两种标准
1、0-65535
2、0-61440 华为采用0-61440.但pri取值必须是4096的陪数。
PID(Port ID:端口ID):PID(16位) = 端口优先级(4位) + 端口号(12位)
端口优先级默认128,优先级范围0-240,取16的倍数。端口ID就是端口编号,例如 e0/0/5 ID就是5
PC(port cost):PC的计算需要依据端口带宽来计算。
BPDU两种类型
- 配置BPDU
包含了桥ID,路径开销,端口ID等参数。 - TCN BPDU
指下游交换机感知到拓扑发生变化时向上游交换机发送的拓扑变化通知。用以快速刷新MAC地址表。
STP选举过程
网络中所有的设备使能 STP 协议后,每一台设备都认为自己是根桥。此时,每台设备仅仅收发配 置 BPDU,而不转发用户流量,所有的端口都处于 Listening 状态。所有设备通过交换配置 BPDU后,进行选举工作,选出根桥、根端口和指定端口,确保网络中所有目的地之间只有一条逻辑链路,从而形成一颗没有环路的转发树
选举过程
根桥—非根桥(选根端口)—根桥—指定端口
-
在一个交换网络中选举一个根桥,根桥是设备的概念。
-
根桥选举后,交换网络中的其他设备都是非根桥,每个非根桥还需选取一个到达根桥最短路径的端口称为根端口。
注:非根桥只能有一个根端口。
-
每条链路上,还需选举一个指定端口,默认情况下根桥的所有端口都是指定端口。
-
既不是根端口,也不是指定端口的其他端口需要被阻塞,不能转发数据帧。
根桥选举
- 通过比较BID选举,优选BID小的。BID由优先级+MAC地址组成。
- 首先比较优先级,优先级越小越优。
- 如果优先级一样,比较MAC地址,MAC地址越小越优。
指定端口选举
- 比较RID,优选小的。
- 比较到达根桥的RPC(Root Path Cost),越小越优。
- 比较BPDU包发送者的BID,越小越优。
- 比较BPDU包发送者的PID,越小越优。
- 比较BPDU包接收者的PID,越小越优。
那何为最好的BPDU?
收到的配置信息优先级越高替换自身的BPDU,配置优先级低于自身BPDU则丢弃,根据这个过程选出最小的BPDU。
端口角色
RP(根端口:root ports):非根桥上接收最好BPDU的端口
DP(指定端口:Designated Ports):链路上发送最好BPDU的端口,一条链路上只能有一个指定端口
AP:被block (阻塞端口):既不是指定端口又不是根端口
端口状态
端口状态state: 30-50s
disable–>blocking---->listening–15s–>learnning–15s–> forwarding(转发)
disable:接口被禁用
blocking:处理BPDU,不转发数据,不学习mac地址。
listening:处理BPDU,不转发流量,不学习mac地址,确定端口角色。
learning:处理BPDU,不转发流量。学习mac地址。
forwarding:处理BPDU,转发数据,学习mac地址(只有根端口和指点端口才会进入)
稳定stp网络只有2中状态及forwarding和blocking。
监听状态15s是避免stp协议在收敛过程中产生临时环路,让BPDU选举出端口角色。
监听状态期间,mac地址表受TC BPDU的影响会提前老化,老化错误mac地址和空闲mac地址并将其清除。如果此时转发帧就会导致大量未知DMAC的单播帧防洪现象,影响网络性能。
learning的15s收敛时间能让交换机在此期间重新构建正确的mac地址表项,减少单播帧在stp收敛期间产生大量的防洪行为。
stp协议的收敛完全依赖计时器完成,收敛速度慢为了解决临时环路和收敛期间单播帧的泛洪,需要等到30s。
三种定时器
1、Hello Time
发送两个相邻 BPDU 的时间间隔
2、forward delay :15
功能:链路故障导致stp需要重新计算,但是重新计算新的配置消息无法送到,导致每个网络如果没有选举出dp和rp,可能会产生环路,所以dp和rp需要时2倍的delay时间可以转发
3、max age
max age 是BPDU报最大存活时间。
STP故障
1、非根桥的RP失效,并从在AP时,AP成为新的RP,并经历30s的进入转发状态
2、非根桥的RP失效,但不存在AP时,此时交换机认为自己失去了到根桥的所有路径,于是该交换机将自身作为根桥,发送一致为根BPDU,下游交换机需要等待20s将之前的BPDU老化,在处理该BPDU,此时需要50s恢复网络。华为做了优化只需要30s就行。
3、root失效,重新选举root,网络连接需要50秒。
STP拓扑变化
- 如果非根桥上发生拓扑变化,向根桥发送TCN BPDU包,通告根桥拓扑已改变。
- 上联的非根桥从指定端口收到TCN BPDU包后,会向发送者回复TCA flag位置位的配置BPDU包,同时继续向根桥发送TCNBPDU包。
- 根桥收到TCN BPDU包后,向发送者回复TCA Flag位置位的配置BPDU包,同时向所有指定端口发送TCFlag位置位的配置BPDU包。TC置位的配置BPDU包会连续发送35s,同时将自己的MAC aging 设置为15s。
- 其他非根桥收到TC置位的配置BPDU包后,将自己的MAC地址的老化时间设置为15s,加速老化。
STP触发拓扑改变的条件
一个端口从forwarding状态过渡到disable或blocking状态。
一个非根桥如果从指定端口接收到TCN BPDU包,需要向根桥装发TCN BPDU包。
一个端口进入转发状态,并且本地已存在一个指端端口。