1 RSTP的引入
虽然STP消除了二层网络环路并为网络提供了冗余,但其网络收敛时间比较长,使得对时延敏感的业务不能接受,就引入了STP的升级版快速生成树RSTP。
RSTP的IEEE标准为802.1w,RSTP消除环路的思想跟STP一致,同时RSTP能兼容STP。与STP相比,RSTP比STP进行了如下改变:
1. 减少了端口状态
2.增加了端口角色
3.配置BPDU的格式和发送方式有所改变
4.处理网络拓扑改变的方式不同,可以实现快速的收敛
1.1 RSTP端口状态
端口状态 |
是否发送BPDU |
是否学习MAC地址 |
是否发送数据 |
Discarding |
否 |
否 |
否 |
Learning |
是 |
是 |
否 |
Forwarding |
是 |
是 |
是 |
RSTP中的Discarding相当于STP中的Disabled、Blocking、listening。RSTP在Discarding状态就确定了端口角色,处于Learning状态的端口跟STP处理方式相同,此期间端口开始进行MAC的学习,经过Forward Delay之后,进入Forwarding状态。
1.2 RSTP端口角色
RSTP中根端口和指定端口角色的确定跟STP的确认方法一致,发生改变的是STP的Alternate端口角色。
在RSTP中,Alternate端口角色被分为两部分:Backup端口角色和Alternate端口角色,具体划分原则如下:
Ø 当阻塞端口收到的更优配置BPDU来自其他网桥时,该端口就为Alternate端口。
Ø 当阻塞端口收到的更优配置BPDU来自本网桥时,该端口就为Backup端口。
Alternate端口为根端口做备份,Backup端口为指定端口做备份。
1.3 RSTP的BPDU格式
RSTP的BPDU格式跟STP的BPDU格式非常相似,仅在如下几个字段有所不同 :
1. BPDU协议版本号变为0x02,表示RSTP。 STP的为0x00
2. BPDU的类型变为0x02,STP的为0x00
3. RSTP使用了flags字段的全部8位,STP只使用最低位和最高位2位。RSTP中flags字段包括如下位:
Ø 第0位为TC标志位,跟STP相同。
Ø 第1位为Proposal标志位,该位置位表示该BPDU为快速收敛机制中的Proposal报文。
Ø 第2位和第3位为端口角色标志位,00表示端口角色未知,01表示端口为Alternate端口或Backup端口,10表示端口为根端口,11表示端口为指定端口。
Ø 第4位为Learning标志位,该位置位表示端口处于Learnig状态。
Ø 第5位为Forwarding标志位,该位置位表示端口处于Forwarding状态。
Ø 第6位为Agreement标志位,该位置位表示该BPDU为快速收敛机制中的Agreement报文。
Ø 第7位为TCA标志位,跟STP相同
4.RSTP在BPDU最后增加了Versionl Length字段,该字段值为0x00,表示本BPDU中不包含Versionl 。
1.4 RSTP的 BPDU发送方式
STP中,通常情况下只有根桥从指定接口发送配置BPDU报文,非根桥从根端口收配置BPDU报文并更新。而RSTP对BPDU的发送方式进行了改变,RSTP中网桥可以自行从指定端口发送发送RST BPDU,不需等待根桥发送过来的BPDU,发送周期为Hello Time。这样为网桥之间提供了一种保活机制,即在一定时间内,网桥没有收到对端发送过来的RST BPDU,即可认为和对端网络的连接中断。
RSTP规定,在3个连续的Hello Time时间内网桥没有收到对端指定桥发送的RST BPDU,则该端口保存的RST BPDU老化,认为与对端网桥连接中断。
在STP中,只有指定端口收到低优先级的配置BPDU时才会立即回复,而RSTP中,当收到低优先级的RST BPDU时的Alternate端口也会对其立即回复。
2 RSTP快速收敛
2.1 边缘端口
边缘端口连接的是终端,当网络拓扑发生改变时,边缘端口不会产生临时环路,因此边缘端口不需要经过2个Forward Delay时间而直接进入Forwarding状态。
由于网桥不能自动设备边缘端口,需要手动配置与终端设备相连的端口为边缘渡口。
2.2 根端口快速切换
RSTP定义了Alternate端口为根端口的备份端口,当旧的根端口进入阻塞状态时,优先级高的Alternate端口成为新的根端口,并该新根端口连接对端网桥的指定端口处于Forwarding状态,则新根端口立即进入转发状态。
2.3 指定端口快速切换
RSTP定义了Proposal/Agreement机制(P/A机制),指定端口可以通过与对端端口进行一次握手,即可快速进入转发状态,其中不需要任何定时器。
P/A机制必须是在点对点链路中进行,从而实现网络拓扑逐链路收敛。
P/A机制实现过程如下:
1.当新链路SWA连接到SWB,链路两端的端口初始都为指定端口并处阻塞状态,当该指定端口处于Discarding和Learning状态时,SWA会发送Proposal位置位、端口角色值为11(表示为指定端口)的RST BPDU给SWB。
2.当网桥SWB收到Proposal位置位的RST BPDU时,网桥先确定收到该BPDU的端口是否为根端口。如果是,网桥会启动同步过程(指网桥会阻塞除边缘渡口外的所有端口)。
3.网桥同步完成之后,根端口将进入转发状态,并向SWA网桥发送Agreement位置位、Forwardign置位、端口角色位值为10的RST BPDU(该BPDU是复制前面Proposal位置位的RST BPDU,唯一不同的就是Flags字段的内容以及想置位的字段)进行回应。
4.收到该回应RST BPDU的网桥端口立即按照角色值来确认端口并立即进入转发状态。
5.由于启用同步之后,SWB上除边缘端口以及与SWA相连的端口处转发状态之外,与其他设备相连的端口均处于阻塞状态。处于阻塞状态的端口将重复步骤1-4来打开端口,直到整个网络收敛为止。
在P/A整个过程中不要启用任何定时器,加快了网络收敛的时间。
注:当指定端口发出Proposal BPDU后没有收到Ageement BPDU,则该端口切换到STP方式,需要等待30s(2倍Forward Delay)才能进入转发状态。
3 RSTP中拓扑改变处理
RSTP中触发拓扑改处理过程变的条件为非边缘端口转变为forwarding状态,链路中断是不会直接触发拓扑改变处理过程的。
拓扑改变处理过程如下:
1.当网桥有非边缘端口转变为forwarding状态时,网桥会在两倍Hello Time时间内向根端口或指定端口发送TC位置位的BPDU,同时会清除这些端口学习到的MAC地址。
2. 当其他网桥收到TC位置位的BPDU之后,会清除接受TC报文的端口和除边缘端口外的其他端口的MAC地址,并会在两倍Hello Time时间内向指定端口和根端口发送TC置位的RST BPDU。
通过这种方式,拓扑改变消息会快速泛洪到整个网络,而不需要等待网桥来通知个网桥拓扑改变的消息。
RSTP的拓扑改变处理过程不再使用TCN BPDU,而是发送TC位置位的RST BPDU,并通过泛洪的方式快速通知整个网络。RSTP在收到TC位置位的RST BPDU后不需要在Max Age+Forward Delay时间内将MAC地址老化时间该为Forward Delay,而是直接清除端口学习到的MAC地址,重新学习,实现网络的快速收敛 。
4 RSTP和STP的兼容
RSTP支持STP的所有功能,并能与STP兼容运行,但STP不能兼容RSTP,当启用STP协议的端口收到RST BPDU时,会将RST BPDU丢弃 。
当RSTP端口连续3次接受到配置BPDU时,网桥会将该端口切换到STP协议运行。