RSTP:快速生成树协议rapid spanning Tree Protocol ):802.1w802.1d发展而成,这种协议在网络结构发生变化时,能更快的收敛网络。它比802.1d多了两种端口类型:预备端口类型(alternate port)和备份端口类型。 STPSpanning TreeProtocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。

基本原理

编辑

STP协议由IEEE802.1D定义,RSTP由IEEE802.1W定义。

STP的基本原理是,通过交换机之间传递一种特殊的协议报文(在IEEE802.1D中这种协议报文被称为“配置消息”)来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成生成树计算。

生成树协议STP/RSTP[1] 

--------------------------------------------------------------------------------------------------------

-----STP

交换机端口角色:

RSTP@STP_第1张图片

端口状态描述:

RSTP@STP_第2张图片

STP配置命令:

RSTP@STP_第3张图片

RSTP@STP_第4张图片

RSTP@STP_第5张图片

配置BPDU重要参数:

RSTP@STP_第6张图片

RSTP交换机端口角色:

RSTP@STP_第7张图片

--RSTP和STP端口比较:

RSTP@STP_第8张图片

RSTP端口状态:

RSTP@STP_第9张图片

RSTP配置命令:

RSTP@STP_第10张图片

RSTP@STP_第11张图片

RSTP@STP_第12张图片

--------------------------------------------------------------------------------------------------------



技术原理

编辑

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中只有三种端口状态,DiscardingLearningForwarding。802.1D中的禁止端口,监听端口,阻塞端口在802.1W中统一合并为禁止端口。

RSTP根据端口在活动拓扑中的作用,定义了5种端口角色(STP只有3种角色):禁用端口(DisabledPort)、根端口(Root Port)、指定端口(DesignatedPort)、为支持RSTP的快速特性规定的替代端口(AlternatePort)和备份端口(Backup Port)。[2] 

表8-20 STP和RSTP端口状态比较

表8-20

RSTP有五种端口类型。根端口和指定端口这两个角色在RSTP中被保留,阻断端口分成备份和替换端口角色。生成树算法(STA)使用BPDU来决定端口的角色,端口

STP

Port  State

RSTP

Port  State

端口是否

为活跃状态

端口是否

学习MAC地址

禁止

禁止

No

No

阻塞

禁止

No

No

监听

禁止

Yes

No

学习

学习

Yes

Yes

转发

转发

Yes

Yes

类型也是通过比较端口中保存的BPDU来确定哪个比其他的更优先。

1)根端口

非根桥收到最优的BPDU配置信息的端口为根端口,即到根桥开销最小的端口,这点和STP一样。请注意图8-16上方的交换机,根桥没有根端口。

按照STP的选择根端口的原则,SW-1和SW-2和根连接的端口为根端口。

图8-16 RSTP根端口

2)指定端口

与STP一样,每个以太网网段段内必须有一个指定端口。假设SW-1的BID比SW-2 优先,而且SW-1的P1口端口ID比P2优先级高,那么P1为指定端口,如图8-17所示。

图8-17 指定端口的选择

3)替换端口

如果一个端口收到另外一个网桥的更好的 BPDU,但不是最好的,那么这个端口成为替换端口,如图8-18所示。

对于SW-2来说,端口P3收到的BPDU比自己优先,自己为次优先,P3为替换端口。

4备份端口

如果一个端口收到同一个网桥的更好 BPDU,那么这个端口成为备份端。当两个端口被一个点到点链路的一个环路连在一起时,或者当一个交换机有两个或多个到共享局域网段的连接时,一个备份端口才能存在。

如图8-19所示,SW-1的P1和P2口同时接入到以太网的同一网段,P1为指定端口,P2 优先级低,则P2端口为备份端口。

图8-18 替换端口的选择

 

图8-19 备份端口的选择

5)禁用端口

在快速生成树协议应用的网络运行中不担当任何角色。

配置

编辑

步骤1:进入全局模式[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状态。

改进

编辑

A、STP没有明确区分端口状态与端口角色,收敛时主要依赖于端口状态的切换。RSTP比较明确的区分了端口状态与端口角色,且其收敛时更多的是依赖于端口角色的切换。

B、STP端口状态的切换必须被动的等待时间的超时。而RSTP端口状态的切换却是一种主动的协商。

C、STP中的非根网桥只能被动的中继BPDU。而RSTP中的非根网桥对BPDU的中继具有一定的主动性。