本帖最后由 山东_朱文鑫 于 2022-9-29 23:44 编辑
大家好,我是大白,正所谓千淘万漉虽辛苦,吹尽狂沙始到金。优质的帖子也在尽力中提供,也希望各位道友多多支持,让我引劫渡劫成功哈哈哈。
大白队口号就是:砸锅卖铁我最行,拼死拼活就要赢!!!!!!!!!!!!
今天不做技术分享,还是依旧要把我们的STP的讲完,之前我们也做过STP实验以及STP的原理讲解。从中我们可以看出STP确实从根本上解决了网络环路所带来的许多问题,但是我们也说过,在高性能场景下STP的收敛30-50s的速度还是过于慢了,用在高性能场景下会导致业务数据丢失等问题。
所以今天要讲解的就是STP的第一代改进版,在保证解决网络环路的基础上解决收敛速度过慢的问题,那就是RSTP快速生成树协议。
那RSTP快速生成树是什么?又是怎样解决收敛速度慢的问题?让我带着这些问题开始今天的讲解。
RSTP是什么:
RSTP(rapid spanning Tree Protocol ),即快速生成树协议,最早在IEEE 802.1W-2001中提出,这种协议在网络结构发生变化时,能更快的收敛网络。它比802.1d多了一种端口类型:备份端口(backup port)类型,用来做指定端口的备份。 STP(Spanning Tree Protocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。
RSTP产生的原因:
STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢(30S-50S),影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
STP有哪些不足:
STP的不足之处,具体如下:
网络协议的优劣往往取决于协议是否对各种情况加以准确区分,STP并没有准确区分端口状态和端口角色。例如,从端口运行角度看,端口处于Blocking和Listening状态并没有任何区别,这两种状态下的端口都无法收发数据,也不能进行MAC地址学习。
STP算法是被动算法,状态的迁移依赖定时器(如FD、MaxAge等),拓扑变化重新收敛所需的时间最短是30秒,这是收敛速度慢的主要原因。
在稳定的拓扑中,STP算法要求根桥主动发出配置BPDU报文,其它设备进行处理,传遍整个网络。这也是STP算法收敛慢的主要原因之一。
RSTP的定义者:
IEEE发布的802.1W标准定义了RSTP,该协议基于STP协议,并对原有的STP协议进行了修改和补充。
RSTP对STP的改进有哪些:
1、通过端口角色的增补,简化了生成树协议的理解和部署
2、端口状态的重新划分
3、配置BPDU格式的改变,充分利用了Flag字段,明确了端口角色
4、配置BPDU的处理发生了变化
5、快速收敛
6、保护功能
通过端口角色的增补,简化了生成树协议的理解和部署:
RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。
从配置BPDU报文发送的角度看:预备端口AP,是由于学习到其它网桥发送的更优配置BPDU报文而阻塞的端口;备份端口BP,是由于学习到自己发送的更优配置BPDU报文而阻塞的端口。(也可理解为,AP位于网段的非指定交换机上,BP位于指定交换机上)
从用户流量角度看: AP,作为RP的备份,提供从指定桥到根的另一条可切换路径; BP,作为DP的备份,提供了从根桥到对应网段的另一条可切换路径。
端口状态的重新划分:
根据端口是否转发用户流量和学习MAC地址,RSTP将STP的5种端口状态精简为3种:Discarding、Learning和Forwarding。
Discarding:既不转发用户流量,也不学习MAC地址
Learning:不转发用户流量,但学习MAC地址
Forwarding:转发用户流量,也学习MAC地址
端口状态的重新划分,使端口状态机迁移机制发生了变化:
端口在Discarding状态下完成端口角色的确定。当端口角色确定为AP端口后,端口会维持在Discarding状态;当端口角色确定为根端口和指定端口后,经过Forward Delay后,端口进入Learning状态。
处于Learning状态的端口其处理方式和STP相同,端口在Learning状态下开始学习MAC地址,并在Forward Delay后进入Forwarding状态,开始转发数据。
实际上,RSTP会通过其他方式加快这个过程(如边缘端口机制、P/A机制等)。
配置BPDU格式的变化,充分利用了Flag字段,明确了端口角色:
配置BPDU的格式,除了保证和STP格式基本一致外,RSTP作了一些小变化:
Type字段:配置BPDU类型不再是0而是2,STP设备收到RST BPDU时会丢弃。
Flag字段:使用了原来STP保留的中间6位,改变后的配置BPDU叫做RST BPDU
配置BPDU的处理发生了变化:
(1)拓扑稳定后,配置BPDU报文的发送方式发生了变化。
RSTP中,拓扑稳定后,无论非根交换机是否接收到根交换机传来的配置BPDU报文,非根交换机仍然按照Hello Timer规定的时间间隔通过指定端口向下游发送配置BPDU,该行为完全由每台设备自主进行。
(2)配置BPDU超时机制发生了变化。
RSTP中,如果一个端口连续3个Hello Timer时间内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样需要等待一个Max Age。
(3) 次级BPDU的处理发生了变化。
RSTP中,端口收到次级BPDU会 立即回应自身存储的RST BPDU。由此可见 ,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
说明:RSTP中,任何一台交换机的根端口消失,同时又没有AP端口,此时交换机会认为自己是根桥,立即置其它所有端口为DP,并产生自己的BPDU。快速收敛:
STP收敛速度慢,主要是因为STP依靠定时器超时,被动进行收敛。而RSTP加速收敛的设计原则是:在没有临时环路风险的情况下,使处于Discarding状态的端口被选举为指定端口或根端口后,尽可能快的进入转发状态,加快收敛速度。坚持这一原则下,RSTP通过Proposal/Agreement机制、根端口快速切换机制、边缘端口机制等实现了这些情况下的快速收敛。
(1)Proposal/Agreement机制(针对DP端口)
在STP中,当一个端口被选举为指定端口后,该端口至少要等待一个Forward Delay时间(learning状态)才会迁移到Forwarding状态。而在RSTP中,被选举为指定端口后,会先进入Discarding状态,再通过P/A机制快速进入Forward状态。这种机制必须在点到点全双工链路上使用。
(2)根端口快速切换机制(针对RP端口)
当某交换机上RP端口失效,那么该交换机上最优的AP端口将立即成为新的RP端口,并立即进入Forwarding状态。
这样我们就会探究一个问题:为什么根端口快速切换机制没有临时环路的风险?
答:简单说,根端口失效后,最优的AP端口成为新RP端口后,旧RP端口已经处于不转发状态,没有临时环路风险。具体理解,我们知道,一个交换机的根端口是根桥发往该交换机方向数据的唯一入口,也是该交换机发往根桥方向数据的唯一出口,所以,根端口失效,最优AP端口立即成为新RP端口并处于Forwarding状态后,新RP端口接收来自根桥方向的数据也不可能发回根桥方向,新RP端口向根桥方向发出数据也不可能收到回来的数据,从而没有临时环路风险。
(3)边缘端口机制(针对边缘端口)
在STP里面,如果某一个指定端口位于整个网络的边缘,即不再与其它交换设备连接,而是直接与终端设备直连,这种端口叫做边缘端口。当网络拓扑开始收敛或发生变化时,边缘端口直接进入转发状态。
特点:边缘端口不接收配置BPDU,不参与RSTP计算;但一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。
保护功能:
(1)BPDU保护(针对EP端口)
为什么引入BPDU保护?(场景)
正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
BPDU保护的原理:
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被shutdown,防止恶意攻击或强制连接交换机。被shutdown的边缘端口可以由网络管理员手动恢复,也可通过配置使能端口自动恢复功能并设置延迟时间使其自动恢复。
(2)根保护(针对DP端口)
为什么引入根保护?(场景)
由于维护人员的错误配置或网络中的恶意攻击,网络中合法根交换机有可能会收到优先级更高的RST BPDU,使得合法根交换机失去根地位,从而引起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。
根保护,是通过维持根交换机指定端口的角色来保护根交换机的地位,防止其它交换机成为根交换机,进而预防网络拥塞等问题。根保护功能只能在指定端口上配置生效。对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文,防止恶意攻击等。在经过一段时间(通常为2倍的Forward Delay),如果端口没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
(3)环路保护(针对RP端口或AP端口)
为什么引入环路保护?(场景)
RSTP网络中,根端口和阻塞端口的状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或单向链路故障导致RP端口或AP端口收不到来自上游交换设备的RST BPDU时,交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。
我们以案例说明:
SW2和SW3之间是全双工链路,若SW2->SW3方向中断, SW3->SW2方向正常,则SW3的AP端口在连续3次Hello间隔时间收不到RST BPDU后,成为DP端口,而SW2的DP端口还保持为DP端口,这样三个交换机之间没有阻塞端口,会形成顺时针的二层环路。
SW1和SW3之间是全双工链路,若SW1->SW3方向,而SW3->SW1方向正常,则SW3的RP端口在收不到RST BPDU(3倍Hello间隔)后,成为DP端口,AP端口成为RP端口,形成逆时针环路。
环路保护的原理:
环路保护功能只能在RP端口或AP端口上配置生效。
在启动了环路保护功能后,如果RP端口或AP端口长时间收不到来自上游的RST BPDU时,则向网管发出通知信息。如果是根端口则进入Discarding状态,而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。直到RP端口或AP端口收到RST BPDU,端口状态才恢复正常。
(4)防TC-BPDU攻击
为什么引入防TC-BPDU攻击
交换设备在接收到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多TC BPDU报文,造成MAC表项和ARP表项频繁删除,给设备造成很大负担,网络中的数据泛洪也会剧增,导致网络不稳定。
启用防TC-BPDU攻击功能后,单位时间内,交换设备处理TC-BPDU报文的次数可配置。如果在单位时间内,交换设备在收到TC-BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。其它超出阈值的TC BPDU,定时器到期后只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的。
RSTP的技术改进细节有哪些:
P/A机制
RSTP加速收敛的主要设计原则是:在没有临时环路风险的情况下,使原本处于不转发状态下的端口在成为指定端口或根端口之后,尽可能快的进入转发状态,加快收敛速度。
一个核心、一个目的和一个前提:
核心:接收到Proposal报文的交换机将所有端口(边缘端口除外)变为Discarding状态阻塞掉,确保网络没有临时环路的风险,进而使指定端口能够尽快进入Forwarding状态。
目的:使指定端口快速进入转发状态(不等待2倍的Forward Delay)。
前提:必须在点到点全双工链路上使用。
P/A机制简要过程:
我们以案例进行说明:
案例过程说明:
要成功进行P/A协商,必须是上游DP下游RP的情况。如上图所示,由于S1的优先级大于S2的优先级,S1将成为根交换机。P/A机制协商过程具体如下:
1.一开始S1、S2都认为自己是根交换机,p0和p1马上都先成为指定端口(根交换机上的端口都是指定端口)并处于Discarding状态,同时,互相发送Proposal置位、端口角色值为11(表示指定端口)的RST BPDU。
2.S1的p0和S2的p1交互RST BPDU,确认谁是上游(DP)谁是下游(RP或AP)。由于S1的p0口收到的RST BPDU比自己差,直接丢弃不做处理;S2的p1口收到的RST BPDU比自己优,更新自己的BPDU参数,自己成为RP或AP(如果是RP,转到第3步,如果是AP,转到第7步)。
3.如果下游接口p1确定为RP,则S2会启动同步过程(指S2使除边缘端口以外的所有端口处于Discarding状态)。
4.S2同步完成之后,根端口p1将直接进入 Forwarding状态,并向上游交换机S1发送Agreement置位、Forwarding置位、端口角色值为10的RST BPDU(该BPDU是复制前面Proposal置位的RST BPDU,唯一不同的是Flags字段的内容)进行回应。
5.上游交换机S1收到后,将p0口直接转变成Forwarding状态,至此上下游的DP和RP均进入Forwarding状态。
6.由于启用同步后,下游交换机S2除边缘端口以及与S1相连的端口处于转发状态外,与其它设备相连的端口均处于Discarding状态。处于Discarding状态的DP端口将重复步骤1-5,直至计算到网络边缘(即到AP/BP端口)。
拓扑改变可能导致MAC地址表错误及RSTP的解决办法:
STP中,拓扑变化可能导致MAC地址表错误,为了解决这个问题引入了TCN BPDU以及相应处理机制。同样,在RSTP中,拓扑变化也可能导致MAC地址表错误,在解决这个问题上,RSTP采用了更加完善的处理机制。
①网络拓扑发生变化和交换机感知到拓扑发生变化并不是等同的,不是同一概念。网络拓扑发生变化,比如端口发生故障或重新恢复等等;而在RSTP中,交换机感知到拓扑发生变化的标准只有一个:非边缘端口迁移到Forwarding状态。也就是说,一个交换机的接口发生了故障,但在RSTP中这个交换机不一定感知到拓扑发生了变化。
②RSTP的拓扑变化通知机制发生了很大变化一旦交换机感知到拓扑发生变化,将进行如下处理:
为本交换设备的所有转发端口(边缘端口除外)启动一个TC While定时器,该计时器值是Hello Timer的2倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址,同时由所有转发端口(边缘端口除外)向外发送TC置位的RST BPDU,直至TC While超时。
其它交换设备收到TC置位的RST BPDU后,清空所有端口学习到的MAC地址(边缘端口和RST BPDU的接收端口除外),所有转发端口(边缘端口除外)启动TC While定时器,发出TC置位的RST BPDU。重复上述过程。如此,TC置位的RST BPDU会迅速泛洪到整个网络。
注意1:RSTP的拓扑改变处理过程不再使用TCN BPDU,而是发送TC置位的RST BPDU,并通过泛洪的方式快速通知整个网络.
注意2:RSTP在收到TC置位的RST BPDU后,不需要将MAC地址老化时间改为Forward Delay,而是立即清除相关MAC地址表项。
优势(与标准STP比较):不必等待根桥通告网络变化;也不必将MAC地址表项生存期改为FD时长。
非边缘转发端口故障案例:
当E1端口出现故障后,RSTP的处理过程如下:SWB的E2立即变为根端口,并进入转发状态。SWB感知到拓扑发生了变化, 立即清除以状态发生变化的端口为目的端口的MAC地址表项,同时,在 所有的非边缘转发端口上向外发送TC置位的RST BPDU,通知其它交换机网络拓扑发生了改变。
当E1端口出现故障后,RSTP的处理过程如下:SWC收到TC置位的RST BPDU后,首先重新计算生成树(如果需要的话;次优不重新计算)。 SWC清空所有端口学习到的MAC地址(边缘端口和RST BPDU的接收端口除外),同时从所有转发端口(边缘端口除外)转发TC置位的RST BPDU。
如果SWB的E3端口出现故障,RSTP处理如下:SWB检测到E3端口出现故障之后,将MAC地址表中以 E3端口为目的端口的所有表项删除,至此,处理过程结束。 特别注意:边缘端口的任何改变,交换机不会感知到拓扑发生变化,也就不会有后续的处理过程(即不会触发拓扑变化通知机制)。
RSTP与STP的互操作(RSTP->STP)
RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。
当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RST BPDU(原因:配置BPDU的Type字段),而运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU。这样,就实现了互操作。
在华为公司的数据通信设备上可以配置,运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式。
STP知识点比较多,所以要学习就需要耐心去学习,不明白的就先去看之前发的STP的分享贴,以上就是RSTP的知识,以案例为基础,大家可以自行根据我的叙述进行研究,思路打通了这个也同样就不难了。
以上就是本次的网络技术原理详解分享之RSTP(rapid spanning Tree Protocol )快速生成树协议原理分享,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!
励志分享超清壁纸语句~~:
青春是一种持续的陶醉,是理智的狂热。——拉罗什富科
好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!
|