• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    RSTP 快速生成树协议

    作者:  |  上传时间:2009-11-16  |  关键字:

    本文主要介绍RSTP协议,STP相关的算法和细节在本文中不再涉及。虽然这种分割的做法不利于产生全局的观念,但通过对RSTP改进点的详细介绍,将会使你对该协议有一个更深刻的认识。

    IEEE 802.1D定义了STP标准后,IEEE又推出了802.1w这个草案作为802.1D的补充,并定义了RSTP标准。在新版本的802.1D2004)中已经接纳了RSTP标准,取代了原来的STP

    RSTP保留了STP的大部分算法和计时器,只在一些细节上做了改进。但这些改进相当关键,极大的提升了STP的性能,使其能满足如今低延时高可靠性的网络要求。后续诞生的MSTP,单个实例中的算法和RSTP几乎一模一样。可以说从STP发展到RSTP的这套算法,是整个生成树协议的精髓。

    1         RSTP的改进

    1.1        BPDU的变化

                                                                                                                                                     图1 RSTP/STP BPDU的区别

    RSTPBPDU被称作RST BPDU,和STP Config BPDU的主要区别在协议版本号,BPDU类型和Flags字段。RSTP中没有了TCNTCA报文,在拓扑结构变化时只发送TC报文。对拓扑结构变化的详细描述请参考1.5

    Bit7

    Bit6

    Bit5

    Bit4

    Bit3

    Bit2

    Bit1

    Bit0

    TCA

    Reserved

    TC

                                                                                                                                                             图2 STPFlags字段

     

    Bit7

    Bit6

    Bit5

    Bit4

    Bit3

    Bit2

    Bit1

    Bit0

    TCA

    Agreement

    Forwarding

    Learning

    Port role

    Proposal

    TC


    TCA=Topology Change Acknowledgement

    TC = Topology Change

    Port role =00 Unknown

    01        Alternate / Backup

    10        Root

    11        Designated

     

                                                                                                                                                           图3 RSTPFlags字段

    RSTPFlags字段增加了端口属性和状态,Bit1Bit6两个字段在1.4中会提及,用于点到点链路端口的快速迁移。常见的几种Flags需要记住,2cForwarding,Designated),0eDesignated,Proposal,6c(Agreement,Forwarding,Designated)2d(Forwarding,Designated,TC)

    运行STP的设备会丢弃收到的RST BPDU,目前RSTP交换机都提供STP兼容模式,运行在STP兼容模式的端口会发送和接收Config BPDU,表现的特性也和STP类似。

    1.2        端口角色的变化

    RSTPSTP的端口角色进行了细分,增加了几种端口:Alternate PortBackup PortEdge Port

    Alternate Port是交换机根端口的备份,当根端口发生故障时,它可以迅速替代成为新的根端口并进入Forwarding状态。

    Backup Port是被本交换机端口抑制的端口,虽然它名为Backup,却无法起到真正的备份作用。指定端口Down掉以后,Backup Port并不能马上变成新的指定端口并Forwarding

    Edge Port是管理员根据实际需要配置的一种指定端口,用以连接PC或不需要运行STP的下游交换机。管理员需要保证该端口下游不存在环路,Edge Port能够直接进入Forwarding状态。实际应用中为了避免有人恶意攻击,需要开启BPDU Guard功能,一旦收到BPDU,端口被自动shut down,需要管理员手动恢复。

                                                                                                                                                              图4 RSTP各端口角色

    1.3        端口状态的变化

    STP的几种阻塞状态,在表现上没有任何区别,RSTP中做了改进,只保留了三种端口状态。

     

    STP Port State

    RSTP Port State

    Disabled

    Discarding

    Blocking

    Discarding

    Listening

    Discarding

    Learning

    Learning

    Forwarding

    Forwarding

                                                                                                                                                    表1 STPRSTP的端口角色

     

    注:Learning状态不转发流量,只学习MAC

    1.4        端口快速迁移

    STP中任何最终能进入Forwarding状态的端口都至少需要经过2×Forwarding Time才能转发流量。这种保守的设计可以保证不产生环路,但显然不够聪明,RSTP对此做了一系列改进。

    1.4.1       根端口的快速迁移

    假如设备上旧的根端口不再有可能重新转发数据,新的根端口可以立刻迁移到Forwarding状态,Alternate端口的快速迁移就符合这个条件。

    假如设备上旧的根端口还有可能重新转发数据,此时它必然是一个指定端口,指定端口的快速迁移请参考1.4.2

    点到点以太网链路上,根端口总能快速迁移到Forwarding状态。

    1.4.2       指定端口的快速迁移

    1.被配置为边缘端口的指定端口可以无条件的快速迁移到Forwarding状态。

    2.在点到点以太网链路上,指定端口可以和对端通过握手协商的方式进行快速迁移。双方设备必须满足如下状态机:

    1.        proposing. 指定端口处于discardinglearning状态的时候,会设置该变量。向下游交换机传递Proposal flag被置位的RST BPDU

    2.        proposed. 当收到指定端口发来的proposal BPDU的时候,该变量设置。该变量指示本网段上的指定端口希望尽快的进入forwarding状态。

    3.        sync. proposed被设置以后,收到proposal的根端口会依次为自己的其他端口设置sync变量。将所有不是Edge port的指定端口转为discarding状态。

    4.        synced. 当端口完成转到discarding, 会设置自己的syncedAlternateBackup 和边缘端口会马上设置该变量。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回RST BPDU,其中Agreement flag被设置。

    5.        agreed. 当指定端口接收到一个RST BPDU的时候,如果该BPDU中的agreement flag被置位且端口角色字段是根端口,该变量被设置。当agreed被设置的时候,指定端口马上转入forwarding状态。

    2004版的802.1DP/A握手的状态机做了稍许改进,把synced拆分成syncedagree两个状态机,并不再要求只有根端口能设置该状态,AlternateBackup端口也可以设置该状态,并发送aggreement flag置位的BPDU,加速了这种情况下上游指定端口的快速迁移。

                                                                                                                                                                    图5 P/A协商机制

    1.5        拓扑结构变化

    RSTP判断拓扑结构变化的标准是:非边缘端口的端口进入Forwarding状态。发现变化的交换机会做以下工作:

    1.        为所有非边缘端口的其他端口启动一个计时器TC While Timer2倍的hello time

    2.        清空这些端口上的MAC地址;

    3.        TC While Timer有效期内,这些端口向外发送TC位置1BPDU

    其他交换机接收到TC RSTP BPDU,作如下变化:

    1.        清空除收到TC端口以外的所有端口的MAC地址

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

                                                                                                                                                               图6 RSTPTC泛洪

    STP不同的是,RSTP没有单独的TCNTCA报文,都用TC位置位的RST BPDU来替代;TC报文的泛洪也由STP的根桥泛洪改为逐级泛洪;收到TC报文的交换机直接刷新端口MAC,不用再等待1Forwarding Timer

    802.1w2004版的802.1D还提到一种可选的能进一步优化的情况:

    当根端口发生故障,Alternate端口替代成为新的根端口后,学习在原根端口的MAC地址可以迁移(复制)到新的根端口,使转发路径迅速切换。

    1.6        inferior BPDU处理

    STP中指定端口收到inferior BPDU会马上把端口保存的更优的BPDU发送出去,但对非指定端口不会做同样处理。RSTP中不管是否是指定端口,收到inferior BPDU都会马上发送本地更优的BPDU给对端。

    如图,如果A,B中的链路down了,STPRSTP各会如何处理(假设优先级A<B<C)。

                                                                                                                                                     图7 inferior BPDU的处理

    答:STP中:A,B中链路downB会认为自己是根桥,并发送Config BPDU。但CP2不会回应更优的BPDU,直到maxage=20s CP2上保存的原BP2BPDU超时,CP2才发送新的以A为根的BPDUB接收到后,承认A为根。再经过30sBP2进入转发状态。一共经历50s的时间。

        RSTP中:A,B链路down掉后,CP2收到BP2发来的inferior BPDU会上发送本端口更新后的更优BPDUCP2变为指定端口后有2种处理方式,一种为保持Forwarding状态不变,另一种变成Discarding,由于是点到点链路,都能迅速迁移到Forwarding,拓扑瞬间收敛。

     

    说明:

           RST BPDU

    BPDU Type共有三种:0x00Config BPDU0x80TCN0x02RST BPDU&MST BPDURST BPDUVersion ID2MST BPDUVersion ID3

           点到点以太网链路:

    某端口在所属的共享以太网上的对端只有一台设备,这样的以太网被认为是点到点的。