RSTP(rapid spanning Tree Protocol ),即快速生成树协议,最早在IEEE 802.1W-2001中提出,这种协议在
网络结构发生变化时,能更快的收敛网络。它比802.1d多了一种端口类型:备份端口(backup port)类型,用来做指定端口的备份。 STP(Spanning Tree Protocol )是
生成树协议的英文缩写。该
协议可应用于环路网络,通过一定的算法实现
路径冗余,同时将环路网络修剪成无环路的
树型网络,从而避免
报文在环路网络中的增生和无限循环。
简介
快速生成树协议(Rapid Spanning Tree Protocol ,RSTP) 用于在
局域网中消除
数据链路层物理环路,其核心是快速生成树算法。RSTP由IEEE 802.1D-1998标准定义的STP(Spanning Tree Protocol,生成树协议)改进而来,最早在IEEE 802.1W-2001中提出,并且在IEEE 802.1D-2004标准中替代了原来的
STP协议。RSTP完全向下兼容STP协议,除了和传统的STP协议一样具有避免
回路、动态管理冗余链路的功能外,RSTP极大的缩短了拓扑收敛时间,在理想的网络拓扑规模下,所有交换设备均支持RSTP协议且配置得当时,拓扑发生变化(链路UP/DOWN)后恢复稳定的时间可以控制在秒级,而传统的拓扑稳定且能正常工作所需时间为50秒。RSTP的主要功能可以归纳如下:
1、 发现并生成局域网的一个最佳树型拓扑结构;
2、 发现拓扑故障并随之进行恢复,自动更新
网络拓扑结构,启用备份链路,同时保持最佳树型结构;
运行RSTP协议的网络交换设备通过对自身网桥信息和接收到的BPDU中来自其他网桥的信息进行比较,利用RSTP算法进行计算,更新系统状态机,选举端口角色并阻塞某些
端口,将
环形网络裁剪成树形网络,防止环形网络中的报文增生和无限循环产生的广播风暴,避免因此带来的报文处理能力下降问题的发生。
原理
STP协议由IEEE802.1D定义,RSTP由IEEE802.1W定义。STP的基本原理是,通过
交换机之间传递一种特殊的协议报文(在IEEE 802.1D中这种协议报文被称为“配置消息”)来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成
生成树计算。
RSTP是从STP发展过来的,其实现基本思想一致,但它更进一步的处理了网络临时失去连通性的问题。Rstp规定在某些情况下,处于Blocking状态的端口不必经历2倍的Forward Delay时延而可以直接进入转发状态。如网络边缘端口(即直接与终端相连的端口),可以直接进入转发状态,不需要任何时延。或者是
网桥旧的根端口已经进入Blocking状态,并且新的根端口所连接的对端网桥的指定端口仍处于Forwarding状态,那么新的根端口可以立即进入Forwarding状态。即使是非边缘的指定端口,也可以通过与相连的网桥进行一次握手,等待对端网桥的赞同报文而快速进入Forwarding状态。当然,这有可能导致进一步的握手,但握手次数会受到
网络直径的限制。
生成树协议最主要的应用是为了避免
局域网中的网络环回,解决成环
以太网网络的“
广播风暴”问题,从某种意义上说是一种网络保护技术,可以消除由于失误或者意外带来的循环连接。STP也提供了为网络提供
备份连接的可能,可与SDH保护配合构成以太环网的双重保护。新型以太单板支持符合ITU-T 802.1d标准的生成树协议STP及
802.1w规定的快速生成树协议RSTP,收敛速度可达到1s。
端口状态
802.1d
交换机的端口在STP环境中共有5种状态:阻塞blocking、监听listening、学习learning、转发forwarding、关闭(disable)。
*Blocking:处于这个状态的端口不能够参与转发数据
报文,但是可以接收配置消息,并交给CPU进行处理。 不过不能发送配置消息,也不进行地址学习。
*Listening:处于这个状态的端口也不参与数据转发,不进行地址学习;但是可以接收并发送配置消息。
*Learning:处于这个状态的端口同样不能转发数据,但是开始地址学习,并可以接收、处理和发送配置消息。
*Forwarding:一旦端口进入该状态,就可以转发任何数据了,同时也进行地址学习和配置消息的接收、处理和发送。
交换机上一个原来被阻塞掉的端口由于在最大老化时间内没有收到BPDU,从
阻塞状态转变为倾听状态,倾听状态经过一个转发延迟(15秒)到达学习状态,经过一个转发延迟时间的
MAC地址学习过程后进入转发状态。
如果到达倾听状态后发现本端口在新的
生成树中不应该由此
端口转发数据则直接回到阻塞状态。
当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为转发延迟(Forward Delay),协议默认值是15秒。
在所有
网桥收到这个变化的消息之前,若旧
拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,生成树使用了一种
定时器策略,即在端口从
阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是Forward Delay,这样就可以保证在拓扑变化的时候不会产生临时环路。
802.1w
STP定义了5种不同的端口状态,关闭(disable),监听(Listening),学习(Learning),阻断(Blocking)和转发(Forwarding),其端口状态表现为在
网络拓扑中端口状态混合(阻断或转发),在拓扑中的角色(根端口、指定端口等等)。在操作上看,阻断状态和
监听状态没有区别,都是丢弃
数据帧而且不学习MAC地址,在转发状态下,无法知道该端口是根端口还是指定端口。
在RSTP中只有三种端口状态,Discarding、Learning和Forwarding。802.1D中的禁止端口,监听端口,阻塞端口在802.1W中统一合并为禁止端口。
RSTP根据端口在活动拓扑中的作用,定义了3种端口角色(STP有5种角色):禁用端口(Disabled Port)、根端口(Root Port)、指定端口(Designated Port)、为支持RSTP的快速特性规定的替代端口(Alternate Port)和备份端口(Backup Port)。
表1 STP和RSTP端口状态比较
RSTP有五种端口类型。根端口和指定端口这两个角色在RSTP中被保留,阻断端口分成
备份和替换端口角色。
生成树算法(STA)使用BPDU来决定端口的角色,端口。
类型也是通过比较端口中保存的BPDU来确定哪个比其他的更优先。
1)根端口
非根桥收到最优的BPDU配置信息的端口为根端口,即到根桥开销最小的端口,这点和STP一样。请注意图1上方的
交换机,根桥没有根端口。
按照STP的选择根端口的原则,SW-1和SW-2和根连接的端口为根端口。
2)指定端口
与STP一样,每个
以太网网段段内必须有一个指定端口。假设SW-1的BID比SW-2 优先,而且SW-1的P1口端口ID比P2优先级高,那么P1为指定端口,如图2所示。
3)替换端口
如果一个端口收到另外一个
网桥的更好的 BPDU,但不是最好的,那么这个端口成为替换端口,如图3所示。
对于SW-2来说,端口P3收到的BPDU比自己优先,自己为次优先,P3为替换端口。
如果一个端口收到同一个网桥的更好 BPDU,那么这个端口成为备份端。当两个端口被一个点到点链路的一个环路连在一起时,或者当一个
交换机有两个或多个到共享
局域网段的连接时,一个备份端口才能存在。
如图4所示,SW-1的P1和P2口同时接入到
以太网的
同一网段,P1为指定端口,P2 优先级低,则P2端口为备份端口。
5)禁用端口
配置
步骤1:进入全局模式
Switch#configure terminal
步骤2:开启生成树协议
Switch(config)#spanning-tree
默认状态下STP协议是关闭的,需要用命令打开
步骤3:配置生成树模式
Switch(config)#spanning-tree mode { mstp | rstp | stp }
P/A机制
P/A机制即Proposal/Agreement机制。其目的是使一个指定端口尽快进入Forwarding状态。其过程的完成根据以下几个端口变量:
A)Proposing。当一个指定端口处于Discarding或Learning状态的时候,该变量置位。并向下游交换传递Proposal位被置位的BPDU。
B)Proposed。当下游交设备端口收到对端的指定端口发来的携带Proposal的BPDU的时候。该变量置位。该变量指示上游网段的指定端口希望进入Forwarding状态。
C)sync。当Proposed被设置以后,收到Proposal置位信息的根端口会依次为自己的其他端口置位sync变量。如果端口是非边缘的指定端口则会进入Discarding状态。
D)synced。当其它端口完成转到Discarding后,会设置自己的synced变量(Alternate、Backup和
边缘端口会马上设置该变量)。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回BPDU,其中Agreement位被置位。
E)agreed。当指定端口接收到一个BPDU时,如果该BPDU中的Agreement位被置位且端口角色定义是“根端口”,该变量被设置。Agreed变量一旦被置位,指定端口马上转入Forwarding状态。
STP没有明确区分端口状态与端口角色,收敛时主要依赖于端口状态的切换。RSTP比较明确的区分了端口状态与端口角色,且其收敛时更多的是依赖于端口角色的切换。STP端口状态的切换必须被动的等待时间的超时。而RSTP端口状态的切换却是一种主动的协商。STP中的非根
网桥只能被动的中继BPDU。而RSTP中的非根网桥对BPDU的中继具有一定的主动性。