• 快速生成树原理详解


    Rapid STP

    RSTP/RPVST+

    Edge Port是Rapid STP中的一个新的端口类型,它的作用相当于Port Fast,但如果该端口收到了BPDU,则它将直接转换为普通端口。在Cisco设备中,边缘端口的实现还是通过Port Fast关键字。

    Rapid STP还添加了链路属性这一概念,RSTP只能在点到点链路和边缘端口启用快速转发(直接进入Forward模式),RSTP根据端口类型将会自动设定链路属性,手工设定可以覆盖自动配置的设定。

    • Shared——半双工模式自动配置
    • Point to Point——全双工模式自动配置

    RSTP/RPVST+ Post States and Roles

    快速生成树的端口状态只有三种:

    • Forwarding
      • 发送和接受用户数据
    • Learning
      • 建立MAC地址表
    • Discarding
      • 对应的是Listening、Blocking、Disabled三种状态

    ​ 快速生成树新增了两种端口角色:

    • Alternate
      • 它提供了到达根交换机的备用路径,默认情况为Blocking(Discarding)。
    • Backup
      • 它提供了到达同一网段的备用路径,默认情况为Blocking(Discarding)。

    BPDU in RSTP

    在802.1D中,只有根交换机才能发送BPDU,通过其余的交换机向下中继,由于这样的形式,这就导致802.1D的收敛必须等待网络平稳后才能进行。
    RSTP使用802.1D的BPDU格式来实现向后兼容,但是在消息类型(Message Type)字段中使用了一些未使用的位。BPDU中的Version字段也被设置为2,来区分802.1D BPDU和RSTP BPDU。RSTP使用交互式的过程,以便交换机协商状态的变化。

    无论交换机有没有收到来自根交换机的BPDU,BPDU都会根据Hello Time的间隔(默认2秒钟)从所有端口发送BPDU。如果连续丢失3个BPDU时(6秒没有收到BPDU),则交换机就能够检测到邻居故障,相较于802.1D速度更快。

    RSTP/RPVST+ Fast Converge

    传统的802.1D收敛速度慢主要是因为Timer多,时间长,才能安全地允许交换机端口转发数据。
    当交换机参与树形拓扑时,RSTP使用不同的策略。当交换机首次加入拓扑或在现有拓扑中检测到故障时,RSTP要求它根据端口类型做出转发决策。
    当交换机需要做出STP决策时,会与最近的邻居进行握手,如果握手成功,则将不断地向后进行握手直至抵达网络边缘。在握手过程中,交换机必须保障握手之前,不会引入循环。这通过同步过程来完成。

    RSTP/RPVST+ Synchronization Process

    非边缘端口从Discarding状态开始。在交换机交换BPDU之后,就能够选举出根桥。
    ​如果一个端口收到了更好的BPDU,则该端口成为根端口。对于每一个非边缘端口,交换机都会交换一个提议,即通过握手的方式来决定链路的每一端的状态。
    ​每台交换机都假定自己的端口都应成为指定端口,并向邻居发送建议消息(Configuration BPDU)来建议这一事件。

    • 如下图,假设根交换机与交换机A新建立了连接,此时两个交换机的端口都处于阻塞状态(Discarding),直到它们收到对方的BPDU。

      • 当一个指定端口在Discarding或Learning状态时,它发出的BPDU中的Proposal位将会被置为1。
    • 交换机A收到了更优的BPDU后会将P1调整为根端口。

    • 交换机A开始同步,以确保交换机上的端口与最新收到的消息一致,如果满足以下条件其一,则端口处于同步状态:

      • 端口处于阻塞状态,也就是在拓扑中为Discarding状态。
      • 端口为边缘端口。
    • 在下图中,P2与P4已经满足条件,交换机A只需要将P3的状态改为Blocking,并将其分配为Discarding角色。

    • 那么现在交换机A的所有端口已处于同步状态,交换机A可以解除P1端口的Blocking状态,发送一条同意消息来回复根交换机。

      • 这个消息是Proposal BPDU的副本,但修改了BPDU中Proposal Bit = 0 Agreement Bit = 1,这样能够让根交换机区分出它收到的Agreement对应于哪个Proposal。
    • 一旦P0端口收到该消息,它就立刻将端口状态转换为转发状态。

    • 此时P3仍处于Discarding状态,然后继续向外转发BPDU,向邻居开始建立握手(同步过程),并尝试快速切换到转发状态。

    以上的这种机制是非常快的,因为它并不依赖任何计时器,这种握手方式以波的形式迅速地向网络边缘进行传播,并且能在拓扑发生变化时迅速恢复连通性。同时也能够兼容802.1D协议。
    如果发送提议后没有收到回应,它会慢慢进入转发模式,并退回802.1D的生成树模式。如果对端交换机不使用RSTP,或者对端交换机端口处于Blocking状态,就可能发生以上的状况。

    RSTP/RPVST+ New Topology Change Mechanisms

    ​ 在RSTP中,只有端口转移到Forwarding状态的非边缘端口才会引起拓扑的变化。这与802.1D的生成树正好相反,端口进入到Blocking状态将不再被视为拓扑变化。当运行RSTP的交换机检测到拓扑更改时,会发生以下情况。

    • 如有必要,它将启动TC While计时器,计时器的值约等于所有非边缘端口和到根端口的Hello Time的两倍。
      • 只要该计时器在端口上运行,该端口发出的BPDU就会将TC bit置为1,在计数器为活动状态的时候,根端口也会发出BPDU。
    • 收到该BPDU的交换机,会刷新所有和这些端口关联的MAC地址。

    RSTP/RPVST+ Topology Change Propagation

    ​ 当交换机从邻居收到了TC bit置为1的BPDU时,会发生以下的情况。

    • 它清除在其所有端口学习到的MAC地址,接受拓扑更改的端口除外。
    • 它启动了TC While计时器,并在所有指定端口和根端口发送了TC bit 置为1的BPDU。(RSTP不再使用特定的TCN BPDU,除非需要通知802.1D的交换机。)

    这样,TCN消息会很快充斥在整个网络中,而且只用到了一步过程。实际上,拓扑更改的发起者会在整个网络中传播此消息,而802.1D只有根交换机才会这样做。这种机制相较于802.1D快很多,无需根交换机,就可以将网络的拓扑更改状态保持在Max Age + Forward Delay秒。


    __EOF__

  • 本文作者: RichardLuo
  • 本文链接: https://www.cnblogs.com/RichardLuo/p/16046297.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【JSS-22双延时时间继电器】
    原生Js Canvas去除视频绿幕背景
    读书笔记之C Primer Plus 3
    LeetCode力扣刷题——更加复杂的数据结构
    Django 实战开发(一)项目搭建
    Java分库分表配置
    pytorch 训练、微调YOLOv5,YOLOv8 小技巧 合集
    MySQL必知必会_第七~十二章知识总结
    Spring Cloud Gateway实现数字签名与URL动态加密
    CentOS部署Apache服务
  • 原文地址:https://www.cnblogs.com/RichardLuo/p/16046297.html