目录
1. STP(Spanning Tree Protocol,生成树协议)的作用
2. STP的缺点
2.1 STP网络拓扑收敛慢
2.2 STP网络链路故障,端口状态切换慢
2.3 终端链路参与STP网络运算,浪费网络资源
2.4 STP网络拓扑变更机制复杂,效率低下
2.5 STP交换机端口角色偏少,角色转换缓慢
2.6 STP交换机端口状态偏多
3. RSTP和STP的不同之处
4. RSTP和STP端口状态对比
5. RSTP的端口角色
6. RSTP的BPDU格式
7. RSTP的P(Proposal)/A(Agreement)机制(请求/确认机制)
8. RSTP根端口快速切换机制
9. RSTP次优BPDU处理机制
10. RSTP引入边缘端口
11. RSTP拓扑改变处理机制
12. RSTP配置命令
RSTP(Rapid Spanning Tree Protocol )快速生成树协议:RSTP由IEEE 802.1D-1998标准定义的STP(Spanning Tree Protocol,生成树协议)改进而来,最早在IEEE 802.1W-2001中提出,并且在IEEE 802.1D-2004标准中替代了原来的STP协议。
STP从初始状态(启动)到完全收敛(正常转发数据)至少需要30秒时间。
1)直连链路故障
SW-C交换机感知到根端口故障(关闭SW-C交换机GE 0/0/1端口),SW-C交换机STP端口都进入Discarding状态(按照STP的5种状态来说,进入侦听Listening状态),持续15秒;再从Discarding状态转变为Learning状态,此状态持续15秒,最后从Lerarning状态转变为Forwarding状态,开始转发数据。由上述所得,此故障需要30秒STP网络才能恢复。
2)非直连链路故障
SW-B交换机根端口故障(关闭SW-B交换机GE0/0/1端口),无法接收到根桥SW-A交换机的Configuration BPDU ,会认为自己是根桥,SW-B交换机发送自己的Configuration BPDU给SW-C交换机,SW-C交换机无法直接感知到其他交换机端口故障,SW-C的阻塞端口GE0/0/2收到SW-B交换机的Configuration BPDU信息后,和根桥SW-A交换机发来的Configuration BPDU相比,SW-B交换机发送的Configuration BPDU为次优(SW-C交换机发现有2个根桥,对优先级低的根桥信息不处理),不作处理,等待20秒(Configuration BPDU 的最大生存周期Max Age默认为20s)还没收到根桥SW-A交换机的Configuration BPDU,SW-C的阻塞端口GE0/0/2就从Blocking转变为Discarding状态(按照STP的5种状态来说,进入侦听Listening状态),转变为指定端口,转发根桥SW-A交换机发送的Configuration BPDU(SW-B交换机GE0/0/2端口由指定端口转变为根端口),持续15秒后,SW-C交换机GE0/0/2端口从Discarding状态(STP的侦听Listening状态)转变为Learning状态,持续15秒,从Lerarning状态转变为Forwarding状态,开始转发数据。由上述所得,此故障需要约50秒STP网络才能恢复。
在STP网络中,连接终端的链路也要参与STP构建,要等待至少30秒才能进入数据转发状态;实际上,只要确保STP交换机端口下连接的是终端设备,就不会出现网络环路,所以终端链路没有必要参与STP构建,等待计时器超时浪费时间。
先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项,机制复杂,效率低下。如果网络中的拓扑结构变化频繁,网络会频繁地失去连通性。
RSTP是STP的改进版本,消除环路的基本思想与STP一致,具备STP所有功能,兼容STP。
说明 | RSTP端口状态 | STP端口状态 | 说明 |
不能进行MAC地址学习和转发用户数据帧。 | 丢弃(Discarding) | 去能(Disabled) | 无法接收和发送任何帧,端口处于关闭(down)状态 |
阻塞(Blocking) | 只能接收STP协议帧(BPDU),不能发送STP协议帧,不能转发用户数据帧。 | ||
侦听(Listening) | 能接收和发送STP协议帧,不能进行MAC地址学习和转发用户数据帧。 | ||
不能进行MAC地址学习,能转发用户数据帧。 | 学习(Learning) | 学习(Learning) | 能接收和发送STP协议帧,能进行MAC地址学习,不能转发用户数据帧。 |
能进行MAC地址学习和转发用户数据帧。 | 转发(Forwarding) | 转发(Forwarding) | 能接收和发送STP协议帧,能进行MAC地址学习,能转发用户数据帧。 |
端口角色 | 描述 |
根端口 Root Port |
非根交换机上到根交换机开销最小的端口,处于转发状态。 |
指定端口 Designated Port |
转发所连接的网段发往根交换机方向的数据; 从根交换机发往所连网段的数据,处于转发状态。 |
预备端口 Alternate Port |
根端口备份端口,不处于转发状态。 |
备份端口 Backup Port |
指定端口备份端口,不处于转发状态。 |
举例说明
以上图为例,所有交换机都在STP模式下。
在STP模式下端口角色虽然有Backup和Alternate角色,但是不起作用。
将拓扑图中所有交换机都设置为RSTP模式后:
模拟SW3的根端口出现故障,预备端口立刻转换为根端口,如下图所示:
模拟SW2的指定端口出现故障,备份端口快速转换为指定端口,如下图所示:
RSTP的BPDU和STP相比不同之处有:
在RSTP BPDU的FIags字段中,除TC以及TCA标志位,还包含PIA标志位、端口状态标志位以及端口角色标志位。
P/A机制 P:Proposal-协商 A:Agreement-同意
P/A机制要求两台交换设备之间链路必须是点对点的全双工模式,一旦P/A协商不成功,指定端口到转发状态就需要等待两个转发延时(30秒),协商过程与STP一样。
RSTP选举原理和STP本质上相同:选举根交换机->选举非根交换机上的根端口->选举指定端口->选举预备端口和备份端口。
但是RSTP在选举的过程中加入了“发起请求-回复同意”(P/A机制)这种确认机制,由于每个步骤有确认就不需要依赖计时器来保证网络拓扑无环后才去转发,只需要考虑BPDU发送报文并计算无环拓扑的时间(一般都是秒级)。解决了STP网络收敛慢问题。
以下图为例,抓包查看数据。
shutdown掉SW1交换机(根桥)E 0/0/1端口,然后再undo shutdown掉SW1交换机E 0/0/1端口,在SW2交换机E 0/0/1端口抓包,所抓数据如下:
重启SW1交换机(根桥)E 0/0/1端口后,SW1交换机E 0/0/1端口为Discarding状态的指定端口,并立即发起请求(发送P置位BPDU),SW2交换机E 0/0/1端口回复确认(发送A置位BPDU),SW1交换机E 0/0/1端口变为Forwarding状态指定端口,并发送TC(Topology Change拓扑改变确认)置位的BPDU,最后进入正常转发状态。
shutdown掉SW2交换机E 0/0/1端口,然后再undo shutdown掉SW2交换机E 0/0/1端口,在SW1交换机E 0/0/1端口抓包,所抓数据如下:
重启SW2交换机E 0/0/1端口后,SW2交换机E 0/0/1端口为Discarding状态的指定端口,并立即发起请求(发送P置位BPDU),SW1交换机E 0/0/1端口回复确认(发送A置位BPDU),SW2交换机E 0/0/1端口变为Forwarding状态的根端口,并发送TC(Topology Change)置位的BPDU,最后进入正常转发状态。
P/A机制详解请看另外一边文章
预备端口快速切换为根端口。
直连链路故障,预备端口可快速切换成根端口并进入转发状态。
预备端口快速切换为指定端口。
非直连链路故障,预备端口可快速切换成指定端口并进入转发状态。
RSTP交换机连接终端的边缘端口可立即进入转发状态。
RSTP交换机连接终端的边缘端口可立即进入转发状态,边缘端口收到BPDU后,就丧失了边缘端口属性,成为普通STP端口,重新进行生成树计算。
拓扑改变触发条件:
只有非边缘端口转变为Forwarding状态时,产生拓扑改变。
拓扑改变处理步骤:
不适用TCN,STP网络收敛速度更快。
拓扑改变处理过程:
命 令 | 说 明 |
stp mode rstp | 配置RSTP模式 |
display stp | 显示RSTP配置信息和参数 |
stp edged-port enable | 配置某个端口为边缘端口 |
stp edged-port default | 配置所有端口为边缘端口 |
stp edged-port disable | 禁用边缘端口 |
RSTP配置:华为VRP中,在STP和RSTP模式下,配置命令和显示命令没有任何差异。