RSTP技术详解
STP技术点的回顾
1、STP的作用是什么?
通过阻塞端口来达到我们破环的目的 可以进行冗余备份
2、STP的端口角色有哪几个?
根端口(RP) 在非根交换机上选举
指定端口(DP)在每一个链路上进行选举
阻塞端口(AP)在非根交换机在进行逻辑阻塞
总结:端口角色的变化是秒变
3、STP的端口状态有哪几个?
disable:是生成树的关闭状态
block:AP端口的最终状态一定是block
listening:从侦听到学习需要15s
learning:从学习到转发需要15s
forwarding:DP端口和RP端口的最终状态一定是forwarding
总结:一个端口从disbale到转发至少需要30s的时间
4、简述STP的工作原理
1、在二层交换网络中会选举一个ROOT交换机出来
2、在非根交换机上会选举一个RP端口 这个RP端口是到达ROOT交换机一条最优的路径
3、在每一个链路上面会选举一个指定端口 这个指定端口是用来发送BPDU报文或者转发BPDU报文的 一般情况 ROOT交换机上面的所有接口是指定端口
4、阻塞端口 不转发用户流量 但是可以接收BPDU
5、端口(RP端口或者DP端口)的竞选规则
1、比较设备的BID(就是比较ROOT交换机)
2、接口下比较到达ROOT交换机的开销值(入向成本之和)一般就是比较RP端口这一块
3、发送设备BID(一般是比较DP端口这一块)
4、发送设备的PID
5、自己的PID
STP的不足
问题一:STP从初始状态到完全收敛至少需经过30s
问题二:交换机有AP端口,RP端口down掉场景
SWC与SWA的直连链路down掉,其AP端口切换成RP端口并进入转发状态至少需要经过30s
问题三:交换机无AP端口,RP端口down掉场景
SWB与SWA的直连链路down掉,则SWC的AP端口切换成DP端口并进入转发状态大约需要50s
小结:
如果该AP端口可以收到BPDU的话 收敛时间是30s
如果该AP端口收不到BPDU的话 收敛时间是20s+30s=50s
问题四:运行STP的交换机连接用户终端的场景
交换机连接终端的链路进入转发需要经过30s
问题五:STP的拓扑变更机制
先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项,机制复杂,效率低下。
问题六:端口角色
问题七:端口状态
RSTP对STP的改进
报文格式改变
STP的配置BPDU中Flag字段的中间6位在RSTP中得到了应用
PID:协议ID,永远都是0
PVI:协议版本ID,对于stp来说是0
RSTP来说是2,对于MSTP来说是3
BPDU type:0X00 表示配置BPDU
0X80 TCN BPDU
0X02 RST BPDU或者MST BPDU
端口角色与端口状态
RSTP定义了两种新的端口角色:备份端口(Backup Port)和预备端口(Alternate Port)
小结:
RP端口的备份端口就是AP端口
DP端口的备份端口就是BP端口
实验如下:
问题1:为什么SW3的G0/0/5成为BP端口?而不是G0/0/4
问题2:怎么样让SW3的G0/0/5成为DP端口呢?
RSTP的状态规范把原来的5种状态缩减为3种:
小结:
Discarding:不转发用户流量 也不学习MAC地址表项
learning:不转发用户流量 学习我们MAC地址表项
forwarding:转发用户流量和转发BPDU报文
RSTP收敛快之处
1、STP中,根桥按照Hello Timer规定的时间间隔发送配置BPDU报文,其他非根桥设备在收到上游设备发送过来的配置BPDU报文后,才会触发发出配置BPDU报文,此方式使得STP协议计算复杂且缓慢。
2、RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备都会仍然按照Hello Timer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
链路故障/根桥失效
STP中,当出现非直连链路故障或根桥失效导致交换机收不到BPDU时,交换机需要等待Max Age时间后才能确认出现了故障。
RSTP中,如果交换机的端口在连续3次Hello Timer规定的时间间隔内没有收到上游交换机发送的RST BPDU,便会确认本端口和对端端口的通信失败,从而需要重新进行RSTP的计算来确定交换机及端口角色。
P/A机制
Proposal(提议)/Agreement(同意)机制,其目的是使一个指定端口尽快进入Forwarding状态 P/A进程中任何帧转发都将被阻止
P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样。特点:由于有来回确认机制和同步变量机制,就无需依靠计时器来保障无环
事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少两个Forward Delay,所有端口才能进行转发
小结:
两台交换机SW1和SW2之间连接 由于SW1的BID是4096 SW2的BID是8192 因为SW1会主动向SW2发送P置位的BPDU报文(此时的SW1的情况 Discarding 端口角色是DP) 当SW2收到之后同步变量(阻塞除边缘端口外的其他端口,防止出现环路) 同步好之后 SW2会发送一个A置位的BPDU报文给SW1(SW2的情况 Forwarding RP端口) 当SW1收到之后收到A置位BPDU报文,端口立即进入Forwarding
根端口快速切换机制
SWC与SWA的直连链路down掉,其AP端口切换成RP端口并进入转发状态可在秒级时间内完成收敛
小结:
当交换机的RP端口出现故障的时候 该交换机如果有多个AP端口的话 该交换机会从中挑出一个最优的AP作为RP端口 非常快进入到转发状态
当交换机的DP端口出现故障的时候 该交换机如果有多个BP端口的话 该交换机会从中挑出一个最优的BP作为DP端口 非常快进入到转发状态
次等BPDU处理机制
SWB与SWA的直连链路down掉,SWC的AP端口切换成DP端口并进入转发状态可在秒级时间内完成
边缘端口的引入
在RSTP中,交换机连接终端的链路可立即进入转发状态 用于连终端主机和交换机之间的端口 可以设置为边缘端口即插即用
边缘端口特点:
边缘端口一般与用户终端设备直接连接
边缘端口不参与RSTP运算但是边缘端口可以往外发BPDU
可以由Disabled状态直接转到Forwarding状态,且不经历时延
一旦边缘端口收到配置BPDU报文,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡
实验如下:
SW2上的边缘端口都是往外发BPDU的
问题:为什么边缘端口可以向外发BPDU?
比如1号端口的BPDU经由交换机发往2号端口,这时2号端口因为收到BPDU,会转变为普通端口,进行生成树的选举
1号端口因为收到2号端口的BPDU,也会转变为普通端口,进行生成树的选举。先决出一个DP端口和BP端口,此时两端口的状态都是discarding状态。所以 DP会在30秒后进入转发状态,BP维持阻塞状态
Stp bpdu-filter enable命令的作用
从G0/0/5上抓包看到没有BPDU报文了
拓扑变化处理机制
判断拓扑变化唯一标准:一个非边缘端口迁移到Forwarding状态
为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址。同时,由这些端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。 如此,网络中就会产生RST BPDU的泛洪。
拓扑变化引发的问题
拓扑变化处理 (1)
拓扑变化处理 (2)
拓扑变化处理 (3)
拓扑变化处理 (4)
RSTP兼容STP
当同一个网段里既有运行STP的交换机又有运行RSTP的交换机时,STP交换机会忽略接收到的RST BPDU,而RSTP交换机在某端口上接收到STP BPDU时,会等待两个Hello Time时间之后,把自己的端口转换到STP工作模式,此后便发送STP BPDU
保护功能
BPDU保护
BPDU的应用场景
BPDU的作用
[SWB]stp bpdu-protection
配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被立即关闭,并通知网管系统(eSight网管)。被关闭的边缘端口可配置成自动恢复或管理员手动恢复。
根保护
根保护的应用场景
根保护的作用
根保护功能仅在指定端口生效
一旦启用了root保护功能的指定端口收到优先级更高的BPDU,端口状态进入Discarding状态,不在转发报文,在经过一段时间(通常为两倍的Forward Delay)后,如果端口一直没有再收到优先级更高的BPDU,端口自动恢复到正常的Forwarding状态
[SWA]interface GigabitEthernet 0/0/1 [SWA-GigabitEthernet0/0/1]stp root-protection
实验如下:
在我们SW4上面让其优先级变为4096
环路保护
SW6和SW7交换机间全双工链路 SW6到SW7方向中断 SW7到SW6方向正常,所以SW7的AP端口收不到BPDU后,成为DP端口,而SW6的DP端口还存在
在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路
在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在阻塞状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路,直到RP端口或AP端口收到BPDU,端口状态才恢复到
正常的Forwarding状态
实验如下:
因为环路保护的端口不能让端口成为DP端口所以开启环路保护的交换机不饿能成为Transit交换机,环路保护多用在网络中的干线端口以避免干线端口的单向路径所致的环路
TC-BPDU泛洪保护
TC-BPDU的应用场景
交换设备在接收到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意***交换设备时,交换设备短时间内会收到很多TC BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
TC保护多用于在互联设备的边界端口上,可避免由于一个网络规划/优化不善,或边缘网络没有防御措施,而致核心网络频受TC泛洪的影响
TC-BPDU的作用
启用防TC-BPDU报文***功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的
在stp tc-protection interval指定的时间内,设备只会处理stp tc-protection threshold指定数量的拓扑变化报文,对于其他的报文会延迟处理,所以可能会影响生成树的收敛速度。例如,时间设定为10秒,阈值设定为5,则设备收到拓扑变化报文后,在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理。
RSTP配置实例
SWA、SWB和SWC组成了一个环形的交换网络,为了消除环路对网络的影响,故使交换机都运行RSTP,最终将环形网络结构修剪成无环路的树形网络结构。
案例如下
在SWA上查看生成树信息
<SWA>display stp brief MSTID Port Role STP State Protection 0 GigabitEthernet0/0/1 DESI FORWARDING NONE 0 GigabitEthernet0/0/2 DESI FORWARDING NONE <SWA>display stp -------[CIST Global Info][Mode RSTP]------- CIST Bridge :0 .4c1f-cc5f-55e4 Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20 CIST Root/ERPC :0 .4c1f-cc5f-55e4 / 0 CIST RegRoot/IRPC :0 .4c1f-cc5f-55e4 / 0 CIST RootPortId :0.0 BPDU-Protection :Disabled CIST Root Type :Primary root
在SWB上查看生成树信息
[SWB]display stp brief MSTID Port Role STP State Protection 0 GigabitEthernet0/0/1 ROOT FORWARDING NONE 0 GigabitEthernet0/0/3 DESI FORWARDING NONE 0 GigabitEthernet0/0/4 DESI FORWARDING BPDU <SWC>display stp brief MSTID Port Role STP State Protection 0 GigabitEthernet0/0/2 ROOT FORWARDING NONE 0 GigabitEthernet0/0/3 ALTE DISCARDING NONE 0 GigabitEthernet0/0/4 DESI FORWARDING BPDU