前面我们了解到,STP的收敛速度很慢。需要调节STP计时器参数。但是STP默认收敛时间慢的问题导致当网络拓扑发生变化时,等待时间过长严重影响业务效率。快速生成树协议(Rapid Spanning Tree Protocol,RSTP)缩短了网络的收敛时间,RSTP的收敛速度最快可以缩短到1s之内,在拓扑发生变化时能够快速恢复网络的连通性。
RSTP在STP的基础上增加了2种端口角色:替代端口(Alternate)、备份端口(Backup),RSTP中共有4种端口角色:根端口、指定端口、替代端口、备份端口。
下图所示,交换机S1为根桥,对于交换机S3而言,有两个端口接入了该网络, S3的G0/0/1到达根桥的RPC根路径开销更小,因此该端口为设备的根端口,其G0/0/2端口由于收到了交换机S2所发送的BPDU网桥协议数据单元,并且经过交换机S3计算后决定阻塞,成为该端口的替代端口。
在交换机S3上执行 display stp brief 命令
[S3]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 ALTE DISCARDING NONE
可以看到G0/0/2接口的端口角色为 ALTE 即表示 Alternate(替代端口)
1、RSTP的端口状态:
STP定义了5种端口状态,而RSTP中简化了端口状态,将STP的禁用、阻塞及侦听状态简化为丢弃(Discarding)状态、学习状态(Learning)、转发状态(Forwarding)。
(1)端口不转发用户流量,也不学习MAC地址,那么端口就是丢弃状态。
(2)端口不转发用户流量,但是学习MAC地址,那么端口就是学习状态。
(3)端口即转发流量,也学习MAC地址,那么端口就是转发状态。
2、边缘端口:
运行了STP的交换机,其端口在初始启动之后,会进入阻塞状态。如果该端口被选举为根端口或指定端口,那么它需要经历侦听及学习状态,最终进入转发状态。对于交换机上连接到交换网络的端口而言经历上述过程是必要的,毕竟该端口存在产生环路的风险。但是,当用户PC接入到交换机后希望能立即接入到网络,而不是等待STP的收敛。毕竟PC或服务器接入到交换机上引发环路的风险是非常低的。
在 RSTP中,可以将交换机的端口配置为边缘端口(Edge Port),边缘端口默认不参与生成树计算,当边缘端口被激活后,它可以立即切换到转发状态并开始收发业务流量,边缘端口的激活或关闭不会触发RSTP拓扑变更。实际项目中,通常把连接终端设备的端口配置为边缘端口。 下面进行实验;将交换机SW2连接到三台PC的端口配置为边缘端口。
[SW2]interface ethernet 0/0/1
[SW2-Ethernet0/0/1]stp edged-port enable
[SW2]interface ethernet 0/0/2
[SW2-Ethernet0/0/2]stp edged-port enable
[SW2]interface ethernet 0/0/3
[SW2-Ethernet0/0/3]stp edged-port enable
3、BPDU保护:
边缘端口可能会误接交换设备,一旦交换设备接到边缘端口,就会引入环路隐患。当边缘端口接了交换设备,并且收到了BPDU,则该端口立即变为一个普通的生成树端口,在此过程中引发网络中的RSTP重计算。在华为交换机上,可以通过激活BPDU保护(BPDU Protection)功能解决上述问题。当交换机激活该功能后,如果边缘端口收到BPDU,则交换机会立即把端口关闭(即置为Error-Down),同时触发警告。在交换机系统视图中执行
stp bpdu-protection
可以在所有边缘端口上激活BPDU保护功能。
[SW2]stp bpdu-protection
查看交换机的RSTP状态
[SW2]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING BPDU
0 GigabitEthernet0/0/2 DESI FORWARDING BPDU
0 GigabitEthernet0/0/3 DESI FORWARDING BPDU
0 GigabitEthernet0/0/24 DESI FORWARDING NONE
可以看到G0/0/1、G0/0/2、G0/0/3端口都备配置为边缘端口,这些端口都将激活BPDU保护功能(Protection 列显示为BPDU),而G0/0/24并非边缘端口,不会激活BPDU保护功能。
我们现在把交换机SW2的G0/0/3接口接入一台交换机,看看会发生什么变化。
查看RSTP的端口状态
<SW2>display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING BPDU
0 GigabitEthernet0/0/2 DESI FORWARDING BPDU
0 GigabitEthernet0/0/24 DESI FORWARDING NONE
可以看到SW2并没有显示G0/0/3的端口状态,这是因为交换机SW2激活了BPDU保护功能后,如果边缘端口收到BPDU,则交换机会立即把端口关闭。使用命令
display curr
命令显示当前配置。可以看到交换机SW2的G0/0/3为
shutdown
关闭状态。
interface GigabitEthernet0/0/1
stp edged-port enable
#
interface GigabitEthernet0/0/2
stp edged-port enable
#
interface GigabitEthernet0/0/3
shutdown
stp edged-port enable
如果边缘端口由于接收到了BPDU而关闭,则默认是不会自动恢复的,可以手动在接口视图下执行
undo shutdown
命令来恢复端口。
也可以在系统视图下执行
[SW2]error-down auto-recover cause bpdu-protection interval 30
命令配置端口自动恢复功能。interval 关键字所指定的时间(30~86400s)后自动恢复。