一、基础知识点


1.RSTP端口状态

  • 丢弃(也就是802.1D中的禁用、阻塞、侦听的合并)

  • 学习

  • 转发


2.端口角色:

  • 根端口:收到最优的BPDU的接口就是根端口。这是距离Root最近的(cost最小)的接口。

  • 指定端口:在每一个segment上选择一个指定端口,该端口将发送这个segment上最优的BPDU。

  • 替代端口:丢弃状态。本交换机除了根端口外,其他到根路径的端口,如果活跃的根端口发生故障,替代端口将成为根端口,所以替代端口可以理解为根端口的可替代者

  • 备份端口:丢弃状态。指定端口的备份,出现在一台交换机有两个端口连接到同一个共享介质时。

  • 禁用端口

【生成树】RSTP <wbr>(802.1W)协议机制详解

 


STP与RSTP的端口对比:

 

【生成树】RSTP <wbr>(802.1W)协议机制详解



二、BPDU格式和操作


1.802.1W BPDU格式

  RSTP只在802.1D基础上对BPDU做了少量修改:

  在802.1D中,TYPE字段只使用了最高位和最低位,来表示TC和TC确认,RSTP对该字段进行的扩展:

 

【生成树】RSTP <wbr>(802.1W)协议机制详解


  RSTP BPDU的协议是2,版本是2。


2.BPDU操作

  在802.1D中,非根交换机只有从根端口收到根桥发送的BPDU,自己才能产生BPDU。而在RSTP中,即使非根交换机没有从根交换机处收到BPDU,其自己也以“hello间隔”为周期(默认2S)发送BPDU。


3.Faster Aging of Information

  在特定的接口,如果连续三个周期没有收到BPDU(或者max-age超时),接口上的STP协议数据将迅速老化,如此一来,BPDU又有点类似交换机之间的keep-alive机制。这种快速老化的机制有助于对拓扑变化的快速响应。


4.Accepts Inferior BPDUs

  这个机制与CISCO的BackboneFast特性非常类似。

当交换机从其他指定交换机或根桥收到次优BPDU,802.1D遇到这种情况是首先忽略这些次优BPDU,而RSTP是立即接受这些次优BPDU同时回传一个更优的BPDU。


【生成树】RSTP <wbr>(802.1W)协议机制详解


  看上图,初始情况下,C的一个接口被选举为非指定端口被Block,B会从指定端口发送BPDU给C。我们先考虑一下802.1D的情况,当Root及B之间的链路故障了,由于C上连接B的接口被BLOCK,它不发送BPDU给B,因此,B此刻认为自己是Root,于是向C发送自己为Root的BPDU。而由于这个时候C的接口上还存储着之前B发给自己的BPDU,而这个BPDU相比与B后来发送给自己的BPDU更优,因此C直接忽略这些次优BPDU,一直到Max-Age超时,C的接口上存储的此前B发过来的BPDU才会老化,这时候接口进入LST,才开始发送BPDU,指示根为Root。而此刻B才接受事实,将自己连接C的接口置为根端口。

  那么对于RSTP情况就不一样了,C在收到次优BPDU后,将立即回送自己的BPDU,好让B了解拓扑情况。

 

三、Rapid Transition to Forwarding State


  RSTP的一个重要的改进是端口的快速过渡。传统的STP算法在将一个接口过渡到forwarding状态之前,需要经历几个计时器。为了获得网络的快速 收敛,我们可能会去调整计时器,然而这种方式有可能影响网络的稳定性。RSTP的设计,使得我们不用依赖调整计时器,并且可以使得接口可以安全的过渡到转 发状态。为了实现接口上的快速收敛,RSTP引入了一些新的概念:


1.边缘端口 edge ports

 

【生成树】RSTP <wbr>(802.1W)协议机制详解


  RSTP定义的这种端口类型与Portfast十分类似。因为这些接口用于连接主机,所以一般不会产生环路。这些端口可以跳过LST或LRN直接过渡到转发状态。并且当这些接口up down的时候不会引起拓扑变更。

另外,边缘端口一旦收到BPDU,则立即丢失边缘端口的特征,变成一个普通的spanning-tree接口。

在catalyst交换机上,可以用portfast关键字来进行手工配置。


2.链路类型 Link types

  RSTP能够在边缘端口及point2piont链路上快速过渡。RSTP的链路类型是通过接口的双工状态自动获取的,如果接口是半双工,那么链路类型就是shared port,如果是全双工,那么就是point2point。

当然,接口的链路类型可以通过命令修改,接口模式下:spanning-tree link-type ?


3.802.1D与RSTP 的收敛对比

  • 802.1D的情形:

 

【生成树】RSTP <wbr>(802.1W)协议机制详解


1.A及Root之间新增链路Link1

2.A及Root在Link1两端的接口都进入Listening状态,A将收到Root发出来的BPDU

3.A将BPDU从自己的指定端口发送出去,BPDU被泛洪到网络中

4.B和C收到这个更优的BPDU,继续向网络中泛洪

5.数秒后,D收到这个BPDU,Block掉端口P1


由 于缺乏feedback机制,A连接Root的接口从Listening到Forwarding,需要经历15*2s的延迟。此时A、B、C下联的用户流 量就出现问题了(因为D在收到更优的BPDU后,将P1口block了,这时候ABC相当于在A的根端口过渡到forwarding之前都处于网络的”隔 离地带”)


  • RSTP的情形:

 

【生成树】RSTP <wbr>(802.1W)协议机制详解
【生成树】RSTP <wbr>(802.1W)协议机制详解



【生成树】RSTP <wbr>(802.1W)协议机制详解
【生成树】RSTP <wbr>(802.1W)协议机制详解
【生成树】RSTP <wbr>(802.1W)协议机制详解
【生成树】RSTP <wbr>(802.1W)协议机制详解

4.Proposal/Agreement Sequence

  对于802.1D来说,当一个端口被选举为指定接口,它从blocking到forwarding至少需要30S的时间。然而在RSTP中,proposal/Agreement机制使得接口能够在几秒内完成迅速、可靠的过渡。

 

【生成树】RSTP <wbr>(802.1W)协议机制详解

【生成树】RSTP <wbr>(802.1W)协议机制详解

【生成树】RSTP <wbr>(802.1W)协议机制详解

 


小结:

  • proposal agreement的机制是非常快速的,因为它们不用受限于任何计时器,这个握手机制会迅速的蔓延到整个交换网络末梢,并且能在拓扑发生变更的时候迅速收敛。

  • 如果一个designated discarding接口在发出proposal后,没有收到agreement,它将慢慢的过渡到forwarding状态,这个过程是传统的802.1D的 listening-learning-forwarding过程。这种情况有可能发生在对端交换机不理解RSTP BPDUs或者对端交换机的端口被block的情况。


四、拓扑变更机制


1.拓扑变更机制(检测)

  在RSTP中,只有当非边缘端口过渡到forwarding状态才会触发拓扑变更。也就是说,一个端口如果丢失了连接,则不再认为是一次拓扑变更,这与802.1D是有区别的。

当一个RSTP交换机检测到一次拓扑变更它将:

  • 为根端口及所有的非边缘指定端口启动一个TC while timer,timer的值等于2倍的hello-time计时器

  • 向上述端口泛洪MAC表

  • 注意主要TC while timer在端口上计时,端口发送出去的BPDU就会进行TC bit置位,该BPDU也会从根端口往外发送


2.拓扑变更机制(传递)

当一台RSTP交换机收到TC bit置位的BPDU,它将:

a)清除从所有接口学习到的MAC表项,除了收到TC BPDU的那个接口。这个动作虽然有可能导致网络中存在短暂的突发性泛洪,但是也有利于刷新CAM表、清除stale表项。

b)激活TC while timer,然后从所有的非边缘指定端口及根端口往外发送TC置位的BPDU。通过这种方式,拓扑变更信息会迅速在网络中泛洪。


通过这种方式,TC消息会被迅速的泛洪到整个网络。而不用像802.1D哪样,把消息传递到root,再由root来同时拓扑变更。


cisco原文链接:http://www.cisco.com/en/US/tech/tk389/tk621/technologies_white_paper09186a0080094cfa.shtml