STP.RSTP协议理解 联系客服

发布时间 : 星期二 文章STP.RSTP协议理解更新完毕开始阅读e0433e1c2f3f5727a5e9856a561252d380eb2094

文档密级

图2-2种标出的2c 只是RSTP Flags字段的一种可能取值,比较图2-3我们就能发现这种BPDU 对应的状态是00101100,也就是Forwarding,Designated ,用PC 抓包经常能看到这样的报文,另外还有0e ——向对方提出协商,proposal 位置1;2d ——拓扑改变,发TC 。这是几个比较常见的Flags 格式。RSTP BPDU由于多了最后的Version 1 length字段,所以为36字节,STP 为35个字节。在我司设备上display stp 能看到这样几个标识:TCN ,Configuration BPDU ,RST ,其中RST 即为RSTP 的BPDU 报文。从这里我们也可以看到,RSTP 是没有TCN 报文的,当发生拓扑结构改变时,RTSP 将BPDU 中的TC 位置1,然后向根端口发送。关于RSTP 的拓扑结构改变后面将会有介绍。

2.2 P/A协商

RSTP 的协商机制是一个必须要了解的东东,它有以下几种状态机:

1. proposing. 当一个指定端口处于discarding 或learning 状态的时候,会设置该变量。向下游交

换机传递Proposal flag被置位的RST BPDU。

2. proposed. 当收到指定端口发来的proposal BPDU的时候,该变量设置。该变量指示本网段

上的指定端口希望尽快的进入forwarding 状态。

3. sync. 当proposed 被设置以后,收到proposal 的根端口会依次为自己的其他端口设置sync 变

量。将所有不是Edge port的指定端口转为discarding 状态。

4. synced. 当端口完成转到discarding 后, 会设置自己的synced 。Alternate 、Backup 和边缘端口

会马上设置该变量。根端口监视其他端口的synced ,当所有其他端口的synced 全被设置,根端口会设置自己的synced ,然后传回RST BPDU,其中Agreement flag被设置。

5. agreed. 当指定端口接收到一个RST BPDU的时候,如果该BPDU 中的agreement flag被置位

且端口角色字段是“根端口”。该变量被设置,当agreed 被设置的时候,指定端口马上转入forwarding 状态。

具体的实现是这样的,其实是一个很简单的过程,前面讲到了协商发生在点到点的链路上,假设我们把这个过程理解为根桥接着一台交换机再接着一台交换机??的情况,从最上游开始进行协商,根桥处于Discarding 状态的指定端口向对端发proposal 置1的BPDU ,对方收到和自己一比较,发现自己的角色应该变为根端口,设置proposed 并进入sync 状态,将指定端口discarding 掉,这是为了阻塞所有的下行链路以防止可能环路的产生,按照上述状态机,各端口都进入synced 状态,根端口回送一个agreement 置1的BPDU ,指定端口收到后马上将自己转入Forwarding 状态。根端口所在的

STP/RSTP协议理解 文档密级

交换机的指定端口此时也满足DiscardingDesignated 状态,也会继续向下游进行协商。一直到最后遇到边缘端口结束,迅速收敛。或者在环路中对端为Discarding 端口,协商无法继续进行,则30s 以后指定端口进入转发状态。

图12 P/A协商机制 2.3 拓扑结构变化

由于RSTP 和STP 在本质上区别不大,关键是解决了STP 端口状态迁移速度慢的问题,当拓扑变化时(RSTP 判断拓扑结构变化的标准是:非边缘端口的端口进入Forwarding 状态)。发现变化的交换机会做以下工作:

1. 为本桥的所有非edge 指定端口启动一个计时器TC While Timer(2倍的hello time),如果

是根端口上有变化,根端口也要启动。 2. 清空这些端口上的MAC 地址; 3. 在TC While Timer有效期内,这些端口向外发送TC 位置1的BPDU 。(注意:这里和STP 的不

同,所有的端口都要发,STP 是只有根端口才发送的) 其他桥接收到TC RSTP BPDU,作如下变化: 1. 清空除收到TC 端口以外的所有端口的MAC 地址

2. 在所有的端口和根端口上启动TC While Timer,并发送TC 位然后在这段时间内,这些端口

也向外发送TC 。 STP/RSTP协议理解 文档密级

图13 RSTP 的TC 泛洪

RSTP 把STP 的刷新MAC 地址表时间缩短为直接刷新——这样的确是更有效率的。并且由各个交换机逐级泛洪,进一步减小了用户因为拓扑结构改变而造成的暂时性无法访问的问题。需要强调一点:TC 是在发现拓扑结构改变以后再发出的,也就是说STP 的网络实际上已经稳定了。TC 的作用只是刷新MAC 地址表而已。还是来讨论一下具体的实例吧,这里以3台交换机组成的环为例,采用RSTP ,看一下各种可能出现的拓扑变化吧。(假设各路径开销均为1,A ,B ,C 优先级分别为0,1,2)