2.11.0 以太网 RSTP快速生成树(简介、RSTP与STP、RSTP BPDU、RSTP端口状态、RSTP工作过程之P/A机制)
RSTP快速生成树
简介
RSTP(Rapid Spanning Tree Protocol )快速生成树协议。
传统STP生成树在进行选举根桥与阻塞端口时需要等待30~50秒的时间才能完成收敛,在网络中等待如此长的时间是不可能的,为此RSTP诞生了,它之所以称为快速生成树指的就是它的收敛时间更快。
RSTP、STP的区别
1、RSTP快速生成树,STP生成树,其最本质的区别就是RSTP具备了STP特点的同时通过P/A选举机制加快了STP的收敛。
2、在RSTP中,端口的角色与端口状态变化也将有所改变:
- 由STP的3种端口角色(RP、DP、BP)增加上了AP(Alternate Port)备用端口、EP(Edge Port)边缘端口角色。
- 由STP的5种端口状态(禁用、阻塞、侦听、学习、转发)缩短成了(丢弃、学习、转发)。
3、在STP中根桥发送BPDU,非根桥进行转发BPDU。RSTP则是无论是根桥还是非根桥都会发送RSTP BPDU。
- 非根桥将根桥发来的BPDU在本地进行保留/缓存一份,以Hello间隔为基准,定时发送保留/缓存的根桥BPDU。
4、RSTP BPDU超时由STP的20秒到RSTP的6秒
Hello * Timer Factor
= 2 * 3
=6秒
Timer Factor,超时倍数默认3
修改超时倍数:set timer-factor 倍数(1-10)
`
- Timer Factor:超时倍数,默认为3秒,可调整为1~10秒。
RSTP BPDU格式
- 如何识别RSTP BPDU?
- 1、通过PVI协议版本标识(Protocol Version Identifier)
- 0:STP
- 1:RSTP
- 2:MSTP
- 2、通过BPDU中的BPDU Type字段:
- 0x00:STP BPDU
- 0x80:TCN BPDU
- 0x02:RST BPDU
RSTP与STP的兼容性
当交换网络中存在RSTP与STP时,由于RSTP BPDU并不能被STP所处理,所以RSTP必须向下进行兼容STP。
RSTP如何兼容STP?
- 运行RSTP的交换设备,只要在端口接收到STP BPDU,就会在一段时间之后将由RSTP端口转换成STP端口。
- 转换成STP的端口只会发送和接收STP BPDU,并且不会进行P/A机制,与正常的STP一样进行工作。
RSTP端口状态
RSTP的5种端口角色
-
RP端口,根端口
-
DP端口,指定端口
-
BP端口,阻塞端口,与STP中的阻塞端口一致。
-
AP端口,备用端口,该端口是去往根桥的次优端口,可以理解为备用的RP端口,当RP失效,AP端口将成为新的RP。
-
EP端口,边缘端口,接入终端设备的端口并不需要发送BPDU,同时也为了保障交换网络的稳定性需要将终端接入端口设置为边缘端口。
- 特性1,状态可直接进入Forwarding转发状态。
- 特性2,不会主动向边缘端口发送RSTP BPDU。
- 但边缘端口接收到STP/RSTP BPDU之后,将会转变回STP端口。
-
BP与AP端口的区别
- 1、当RP故障之后,如果存在AP端口,该端口将马上转换成RP。
- 2、当DP故障之后,如果存在BP端口,该端口将马上转换成DP。
RSTP的3种端口状态
- 丢弃(Discarding)
- 代表着STP的禁用、阻塞、侦听状态。
- 该状态下仅接收BPDU、不转发BPDU、不学习MAC、不转发用户数据。
- 注:DP端口角色下,可发送BPDU。
- 学习(Learning)
- 该状态下,收发BPDU、学习MAC地址、不转发用户数据。
- 转发(Forwarding)
- 正常收发BPDU,学习MAC,转发用户数据。
RSTP工作过程之P/A机制
P/A机制用于加速端口状态的收敛,无需等待30秒,当网络拓扑变更之后,收敛时间大概的3~6秒左右,依据P/A机制而定,没有准确的数值。
P/A机制
-
P,指BPDU中 Flags字段的Proposal置位。P机制主要用于协商。
-
A,指BPDU中Flags字段的Agreement置位。A机制主要用于确认协商。
-
P/A机制要求两台交换机之间链路必须是点对点的全双工模式。
P/A机制的工作过程
-
每台交换机启动RSTP之后,都认为自己是“根桥”,所有端口都为指定端口(已经指定的EP端口除外)都处于Discarding状态,然后向DP端口发送BPDU。
- 你可能会疑惑端口状态为Discarding不是无法发送BPDU吗?
- 结论:虽然Discarding状态下不发送BPDU,但如果端口角色为DP端口,Discarding将有权发送BPDU!
- 解释:DP端口面向下游,远离根网桥。DP端口代表的下游去往根桥优方向
(就像RP端口对端的就是DP端口)
,如果下游Sw没有接收到DP端口发来的BPDU,他会认为自己失去到根桥的路径,将会尝试寻找其他路径。 - 参考Cisco社区的一些大佬回复:Do ports with discarding state in RSTP send BPDU?
-
由于LSW1优先级高,会对其它设备的BPDU消息置之不理,但可以通过收到的BPDU更加确认自己就是根桥。
- 当LSW2、LSW3收到LSW1的BPDU将知道LSW1才是根桥,以此同时将停止发送自己的BPDU,接收缓存根桥的BPDU。
- 成为根桥的LSW1将主动向下发送P置位的BPDU(Flags中的Proposal置位1)
-
LSW2、LSW3确认根桥的同时可以收到根桥LSW1发来的P置位BPDU。接收P置位BPDU后,会将连接LSW1的端口切换为RP端口直接进入Forwarding转发状态,并将下游的非边缘端口阻塞(即DP端口阻塞)
- 阻塞之后向根桥回复A置位BPDU(Flags中的Agreement置位1)
- 阻塞之后向根桥回复A置位BPDU(Flags中的Agreement置位1)
-
以上是根桥与下游一层的设备进行交互PA机制,那么下游和下游设备又是如何交互的呢?
RSTP与STP在发送BPDU上有所不同,STP只有根桥发送BPDU,RSTP中通过缓存根桥的BPDU然后间隔Hello时间主动向外发送根桥的BPDU。
-
前面提到在设备启动RSTP之后,默认都处于DP端口,且为Discarding状态,主动向外发送BPDU。
- 由于LSW2的E0/0/2收到了自己发出的BPDU,将由DP转换成BP(DP的备份端口角色)。
- LSW3收到LSW2的BPDU,由于LSW2更具备优先级
(即去根桥次优先,毕竟RP还存在)
,LSW3的E0/0/1、E0/0/2将成为AP端口。
-
-
如果之前并没有选出端口角色,在根桥选举出来之后,LSW2到达Hello间隔之后,也会主动向DP端口发送P置位的BPDU
(携带有根桥缓存信息)
。-
LSW2的E0/0/2端口收到自己的P置位BPDU,将切换为BP角色。
-
LSW3从E0/0/1、E0/0/2收到P置位BPDU,将其BPDU信息与缓存的根桥BPDU相比,发现没有E0/0/3口的优先,将不做回复,但将E0/0/1、E0/0/2口切换为AP角色(RP端口的备份)。
-
LSW2的DP端口发现没有回复A置位BPDU,将正常等待30秒之后切换为Forwarding状态。
-