1.STP的不足
1.端口角色和端口状态划分过于死板
网络协议的优劣往往取决于协议是否对各种情况加以细致区分,而STP细致区分端口状态和端口角色。从用户角度来讲,端口的监听、学习和阻塞3种状态并没有本质区别,都同样不转发用户流量。从配置角度来讲,端口之间最主要的区别不应该是某个过渡状态,而应该是端口的功能和角色如根端口和指定端口可以都处于监听和转发状态,然而过多的状态又会导致状态之间的切换速度慢
2.端口状态多,切换速度慢
STP为了避免临时环路,必须等待足够长的时间才能让端口进入转发状态,这个等待时间要经过2个转发延时(2个默认 15s),即监听状态保持 15s、学习状态再保持 15s,才能切换到转发状态,这也导致了 STP 的收敛速度慢。
3.拓扑变化时收敛效率低下
在 STP 中,当端口状态变为转发,或者从转发变为阻塞时,就会认为网络拓扑发生变化,此时下游交换机会不间断地向上游交换机发送 TCN BPDU。
4.对次优 BPDU 的处理慢
在 STP 中,当指定端口收到次优 BPDU 时,会立即将更优的 BPDU 发送出去,但非指定端口不会做这样的处理。这将导致在某些情况下(如链路发生故障)拓扑收敛慢。
如图1.1,STP对次优BPDU的处理
2.RSTP的改进
端口角色与端口状态
1.端口角色变化
通过端口角色的变化,大幅度提高了生成树拓扑收敛的效率。RSTP在 STP 的基础上,增加了 3种端口角色,它们是替代(Altermate)端口、备份(Backup)端口和边缘(Edge)端口。因此,在 RSTP中,共有5种端口角色:根端口(RP)、指定端口(DP)、替代端口(AP)、备份端口(BP)和边缘(EP)端口。
(1)替代端口
替代端口是根端口的备份,如果交换机的原根端口到根网桥的链路发生故障,那么替代端口可以成为新的根端口,并且无延时地进入转发状态,这加快了网络的收敛速度。
(2)备份端口
备份端口是一台交换机上由于收到了自己所发送的 BPDU从而被阻塞的端口。如果一台交换机拥有多个端口接入同一个网段,并且在这些端口中有一个被选举为该网段的指定端口,那么这些端口中的其他端口将成为备份端口,备份端口将作为到达下游相应网段的冗余端口。
注:备份端口普遍配置在古早集线器,现在比较少见,原因设备内部产生冲突域,导致设备性能低下。
(3) 边缘端口
在 RSTP 中,如果指定端口位于整个网络的边缘,则其用于直接连接终端设备或不需要运行生成树的下游交换机,这种端口就可配置为边缘端口。边缘端口不参与 RSTP 运算,可以直接进入转发状态,且不经历时延。
2.端口状态重新划分
STP 定义了5种端口状态,分别是禁用、阻塞、监听、学习和转发,而 RSTP 简化了端口状态将 STP 的禁用、阻塞及监听状态简化为丢弃(Discarding)状态。
STP 端口状态 | RSTP 端口状态 | 是否转发用户流量 | 是否学习MAC地址 |
转发 | 转发 | 是 | 是 |
学习 | 学习 | 否 | 是 |
监听 | 丢弃 | 否 | 否 |
阻塞 | 丢弃 | 否 | 否 |
禁用 | 丢弃 | 否 | 否 |
3.RSTP的BPDU报文格式
1.改进的BPDU报文格式
RSTP 的配置 BPDU 被称为 RST BPDU (Rapid Spanning Tree BPDU),它的格式与 STP 的配置BPDU 大体相同,只是其中个别字段做了修改,以便实现快速收敛
RSTP报文图解
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
TCA | Agreement | Forwarding | Learning | Port Role | Port Role | Proposal | TC |
RSTP Flags 字段中间的6个比特位的作用如下。
Agreement:同意位。该位为1表示接收端对发起端 Proposal 位为1的确认,链路两端的端口经过1次握手就可以快速进入转发状态,无须任何计时器。
Forwarding:转发状态位。该位为1表示发送该 BPDU的端口处于转发状态
Learming:学习状态位。该位为1表示发送该 BPDU的端口处于学习状态。
Port Role:表示当前BPDU是由什么角色的端口发出的,该位占2个比特位,
取值和含义如下:
00:角色未知。
01:替代端口或备份端口。
10:根端口。
11:指定端口。
Proposal:提议位。为了使 RSTP 链路两端的端口快速进入转发状态,发起端将该位的值置为 1。
补充8与0比特位的含义,TCA算法,TC泛洪位为1(则接收到设备需进行拓扑变更通告泛洪)
4.网络拓扑发生变化时 BPDU的使用机制
STP在处理拓扑发生变化时,逐级向上游发送TCN BPDU 直到根网桥,根网桥再向下游发送TC位为1的配置 BPDU,收敛速度慢,而且使用了两种 BPDU。
截然不同是运行 RSTP 的交换机当发现拓扑变化时,将启动一个计时器TC While(默认时长为 Hello 计时器的2倍),并清空状态发生变化的端口学习到的 MAC地址,同时由所有非边缘的指定端口不间断发送 TC位为1的 RST BPDU,直到 TC While 计时器超时。
由此可见,RSTP 不再使用TCNBPDU逐级通知,而是以泛洪方式发送TC位为1的RST BPDU达到快速通知整个网络、重新学习 MAC 地址、快速收敛的目的。言简意赅,通俗来讲就是只通知自己的邻居,重新学习MAC地址表,设备会删除所有端口学习到的MAC地址对应关系(除了收到RSTP BPDU的端口)
5.改进BPDU报文的处理方式
(1)拓扑稳定后BPDU的发送方式
配置了STP的交换机只有收到了来自上游交换机才会向下游发送BPDU,而RSTP不同,无论交换机收没收到BPDU,都会向下游发送BPDU
(2)更短的超时计时
RSTP交换机在超过三倍的Hello time没收到上游的BPDU将会进行重新选举根网桥,STP在超过Max Age,即BPDU最大老化时间
(3)对次优BPDU的处理
6.快速收敛机制
1.Proposal/Agreement机制
在 STP 中,当一个端口被选为指定端口后,需要等待两个转发延时时间才会转换到转发状态,这种机制虽然有助于避免产生环路,但等待时间过长,不利于快速收敛。而在RSTP中,接受到新的提议flags字段,回复同意flags字段并使所有的端口会先进入丢弃状态,再迅速转换为转发状态。
2.根端口快速切换机制
在 RSTP 中,如果网桥的根端口失效,那么该交换机最优的替代端口将立刻成为根端口,并迅速进入转发状态。而 STP 则需要等待2个转发延时时间才能进入转发状态,相较而言,RSTP 根端口的失效切换更迅捷,能减少业务流量丢包。
7RSTP保护功能
1.BPDU保护
边缘端口通常用于连接终端,理论上说是不应该收到 BPDU的,所以边缘端口默认不参与 RSTP运算。但是,当边缘端口一旦收到 BPDU后,将立即变成一个能够参与RSTP 计算的非边缘端口,这个过程可能引发网络中的 RSTP 重新计算,从而引起网络的振荡。配置BPDU保护机制可以解决,关闭边缘端口(置为Error-Down),同时警告运维人员,(注:保护机制关闭的端口需手动开启)
2.根保护
根网桥在生成树中的地位举足轻重,通常会将网桥优先级设置为0以实现该交换机被选为根网桥但是在根网桥的选举过程中,如果网桥优先级相同,则会选举网桥 MAC地址更小的为根网桥。如果根网桥频繁收到了更优的 RST BPDU,势必导致生成树拓扑重新计算、合法根网桥的地位发生变化、生成树拓扑结构发生变化、业务流量将受到严重影响。可设置转发延时不再接收更优的RSTP BPDU,网桥地位得以维护。
3.TC BPDU攻击保护
生成树网络拓扑出现变化,TCBPDU(Flags字段中TC位为1的BPDU)将会被泛洪,以便触发生成树中的交换机执行 MAC 地址表和ARP 表的删除操作。但是如果网络中有黑客持续发送大量的伪造 TC BPDU,那么不仅交换机的性能会受到极大的损耗,而且网络中会充斥大量错误的 TC BPDU这会影响链路通信的效率,设定交换机超时只处理的次数,避免了伪造TC BPDU的泛洪
4.环路保护
正常情况下,根端口和替代端口会监听并不断收到上游发来的 RST BPDU。如果长时间收不到 RSTBPDU,则会将本端口的 RST BPDU老化,并且该网桥将重新选举根端口,替代端口也将转换为转发状态。但是,如果长时间收不到对端的 RST BPDU,但这不是由于故障,而是由于临时的网络阻塞导致的,那么,一旦链路恢复正常,拓扑中就会出现错误的根端口和环路。
为了避免这种情况,可以在根端口和替代端口配置环路保护功能。配置以后,如果根端口或替代端口长时间收不到上游发送来的 RST BPDU,则根端口或替代端口就会变为指定端口,但会保持在丢弃状态,不转发 RSTBPDU。链路恢复后,根端口或替代端口将恢复到之前的角色和状态
8.RSTP配置命令
与STP大差不差,mode模式改成RSTP就行,下列为其余命令:
(1)设置边缘端口
[SW3]interface g0/0/1
[SW3-GigabitEthernet0/0/5]stp edged-port enable
(2)启动 BPDU 保护
<SW3>system-view
[SW3]stp bpdu-protection
(3)启动0/0/1的根保护
[SW3-GiqabitEthernet0/0/1]stproot-protection
(4)启用TC BPDU 攻击保护功能
[SW4]stp tc-protection
设置单位时间内处理TCBPDU的次数阈值为3
[SW4]stp tc-protection threshold 3
查看当前生效的配置
<SW4>display current-configuration
(5)启用环路保护功能
[Sw4]interface g0/0/1
[SW4-GigabitEthernet0/0/1]stp loop-protection