RSTP基础知识
详见
2021-12-21 网工基础(十三) STP的选举规则、STP的接口状态、边缘端口、生成树版本的进化、链路聚合技术原理与配置_鹅一只的博客-CSDN博客_stp选举规则
RSTP对STP的改进
通过端口角色的增补,简化了生成树协议的理解及部署;
端口状态的重新划分;
配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
配置BPDU的处理发生变化;
快速收敛; 增加保护功能。
PS:RSTP可以兼容STP:但是此时会丧失快速收敛等RSTP优势。当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RSTP的BPDU。运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现了互操作。在华为的设备上可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式。
改进点1:端口角色
RSTP的端口角色共有4种:RP-根端口、DP-指定端口、AP-Alternate端口和DP-Backup端口。
从配置BPDU报文发送角度来看: Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。 Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。
从用户流量角度来看: Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。 Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
改进点2:端口状态
RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:
Discarding状态:不转发用户流量也不学习MAC地址;
Learning状态:不转发用户流量但是学习MAC地址;
Forwarding状:既转发用户流量又学习MAC地址。
对比stp的端口状态
STP端口状态 |
RSTP端口状态 |
端口在拓扑中的角色 |
Forwarding |
Forwarding |
包括根端口、指定端口 |
Learning |
Learning |
包括根端口、指定端口 |
Listening |
Discarding |
包括根端口、指定端口 |
Blocking |
Discarding |
包括Alternate端口、Backup端口 |
Disabled |
Discarding |
包括Disable端口 |
改进点3:配置BPDU - RST BPDU
除了保证和STP格式基本一致之外,RSTP作了如下变化:
Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。 BPDU类型,1 Byte,RST BPDU的类型值为0x02。
Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
bit 7:TCA,表示拓扑变化确认;
bit 6:Agreement,表示同意,用于P/A机制;
bit 5:Forwarding,表示转发状态;
bit 4:Learning,表示学习状态;
bit 3和bit 2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口;
bit 1:Proposal,表示提议,用于P/A机制;
bit 0:TC,表示拓扑变化。
抓包观察
1 BPDU类型:0x02 RST BPDU
2 Flag字段
3 拓扑变化确认位:否
4 Agreement:是,用于P/A机制
5 转发状态:是
6 学习状态:是
7 端口角色:3 代表二级制 11 ,指定端口
8 Proposal:否,用于P/A机制
9 拓扑变化位:否
分析:其中,3 拓扑变化确认位与9 拓扑变化位是STP中也存在的。4 Agreement与8 Proposal是用于使上游设备快速进入转发的P/A机制的情况,另外RST BPDU相比配置BPDU还多了5 转发状态、6 学习状态、7 端口角色等更多详细描述。
改进点4:配置BPDU的处理
1 RSTP对配置BPDU的发送方式进行了改进。
RSTP非根桥也会按照hello间隔时间发送BPDU。STP只有根桥发送配置BPDU。
2 更短的BPDU超时时间
RSTP失效时间改为 Hello 时间的3倍,即缺省值6秒。STP失效时间为Max Age,缺省值20秒。
3 处理次优BPDU
RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛。STP只有指定端口会立即处理次优BPDU。
改进点5:快速收敛机制
端口快速切换
如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。
如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。因为Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
边缘端口 (Edge Port)
在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。
但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。可以通过BPDU保护机制防止这个问题。
相关命令
配置全局边缘端口
[SW1]stp edged-port default
配置接口为边缘端口
[SW1-GigabitEthernet0/0/1]stp edged-port enable
开启BPDU保护
[SW1]stp bpdu-protection
BPDU报文过滤功能
配置为边缘端口后,端口仍然会发送BPDU报文,这可能导致BPDU报文发送到其他网络,引起其他网络产生震荡。因此可以配置边缘端口的BPDU报文过滤功能,使边缘端口不处理、不发送BPDU报文。
注意:
在全局模式下配置边缘端口和BPDU报文过滤功能后,设备上所有的端口不会主动发送BPDU报文,且均不会主动与对端设备直连端口协商,所有端口均处于转发状态。这将可能导致网络成环,引起广播风暴。
在端口模式下配置边缘端口和BPDU报文过滤功能后,端口将不处理、不发送BPDU报文。该端口将无法成功与对端设备直连端口协商STP协议状态。
相关命令
在全局下配置BPDU报文过滤功能
[SW1]stp bpdu-filter default
在接口下配置BPDU报文过滤功能
[SW1-GigabitEthernet0/0/1]stp bpdu-filter ?
disable Disable port's BPDU filter function
enable Enable port's BPDU filter function
Proposal/Agreement机制
简称P/A机制。
RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。
在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。具体过程如下:
1 新增链路时,交换机之间的直连接口先进入指定DP端口状态,并且互发RST BPDU。
2 下游交换机的接口改变为RP根端口,并且停止发送RST BPDU。上游交换机的DP端口进入Discarding状态,并且发送Proposal位置位的RST BPDU。
3 下游交换机收到Proposal位置位的RST BPDU后,所有接口进入同步状态,同步完成后,RP根端口进入Forwarding状态并发送Agreement位置位的回应RST BPDU给上游交换机的DP端口。并且下游交换机的下游接口除了边缘端口外都进入Discarding状态。
4 上游交换机收到Agreement位置位的回应RST BPDU后进入Forwarding状态。下游交换机的和它的下游设备继续执行P/A协商过程。
改进点6:拓扑变更机制
在RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪。
1 链路发送故障时,交换机会启动一个计时器While Timer,While Timer的时长为Hello Time的两倍。在While Timer中,除了边缘端口以外的RP端口和AP端口会清空学习到的MCA地址并且发送TC置位的RST BPDU给其他交换机,当While Timer计时结束时,停止发送RST BPDU。
2 其他交换设备接收到RST BPDU后,清空所有除了收到RST BPDU的端口和边缘端口学习到MAC地址,然后也启动一个计时器While Tim er,重复上述过程。
改进点7:保护功能
BPDU保护
正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
相关命令在上述边缘端口描述中。
根保护(Root保护)
对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
根保护功能确保了根桥的角色不会因为一些网络问题而改变。
相关命令
开启根保护
[SW1-GigabitEthernet0/0/1]stp root-protection
环路保护
在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
相关命令
开启环路保护
[SW1-GigabitEthernet0/0/1]stp loop-protection
防TC-BPDU攻击
启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。
如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。
对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。
单位时间的取值的等于Hello Time。
相关命令
配置单位时间内交换设备处理TC BPDU报文的次数
[SW1]stp tc-protection threshold ?
INTEGER<1-255> The threshold of TC-BPDU protection, default is 1
RSTP拓扑收敛过程
网络初始化时,网络中所有的RSTP交换机都认为自己是“根桥”。通过P/A机制进行协商。关于P/A机制部分详见上述。