• 2022-08-13 网工进阶(二十五) RSTP进阶知识-RSTP对STP的改进、拓扑收敛过程


    RSTP基础知识

    详见

    2021-12-21 网工基础(十三) STP的选举规则、STP的接口状态、边缘端口、生成树版本的进化、链路聚合技术原理与配置_鹅一只的博客-CSDN博客_stp选举规则

    RSTP对STP的改进

    通过端口角色的增补,简化了生成树协议的理解及部署;

    端口状态的重新划分;

    配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;

    配置BPDU的处理发生变化;

    快速收敛; 增加保护功能。

    PS:RSTP可以兼容STP:但是此时会丧失快速收敛等RSTP优势。当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RSTP的BPDU。运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现了互操作。在华为的设备上可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式。

    改进点1:端口角色

    RSTP的端口角色共有4种:RP-根端口、DP-指定端口、AP-Alternate端口DP-Backup端口

    从配置BPDU报文发送角度来看: Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。 Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。

    从用户流量角度来看: Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。

    改进点2:端口状态

    RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:

    Discarding状态:不转发用户流量也不学习MAC地址;

    Learning状态:不转发用户流量但是学习MAC地址;

    Forwarding状:既转发用户流量又学习MAC地址。

    对比stp的端口状态

    STP端口状态

    RSTP端口状态

    端口在拓扑中的角色

    Forwarding

    Forwarding

    包括根端口、指定端口

    Learning

    Learning

    包括根端口、指定端口

    Listening

    Discarding

    包括根端口、指定端口

    Blocking

    Discarding

    包括Alternate端口、Backup端口

    Disabled

    Discarding

    包括Disable端口

    改进点3:配置BPDU - RST BPDU

    除了保证和STP格式基本一致之外,RSTP作了如下变化:

    Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。 BPDU类型,1 Byte,RST BPDU的类型值为0x02

    Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。

    bit 7:TCA,表示拓扑变化确认;

    bit 6:Agreement,表示同意,用于P/A机制;

    bit 5:Forwarding,表示转发状态;

    bit 4:Learning,表示学习状态;

    bit 3和bit 2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口;

    bit 1:Proposal,表示提议,用于P/A机制;

    bit 0:TC,表示拓扑变化。

    抓包观察

    1 BPDU类型:0x02 RST BPDU

    2 Flag字段

    3 拓扑变化确认位:否

    4 Agreement:是,用于P/A机制

    5 转发状态:是

    6 学习状态:是

    7 端口角色:3 代表二级制 11 ,指定端口

    8 Proposal:否,用于P/A机制

    9 拓扑变化位:否

    分析:其中,3 拓扑变化确认位与9 拓扑变化位是STP中也存在的。4 Agreement与8 Proposal是用于使上游设备快速进入转发的P/A机制的情况,另外RST BPDU相比配置BPDU还多了5 转发状态、6 学习状态、7 端口角色等更多详细描述。

    改进点4:配置BPDU的处理

    1 RSTP对配置BPDU的发送方式进行了改进。

    RSTP非根桥也会按照hello间隔时间发送BPDU。STP只有根桥发送配置BPDU。

    2 更短的BPDU超时时间

    RSTP失效时间改为 Hello 时间的3倍,即缺省值6秒。STP失效时间为Max Age,缺省值20秒。

    3 处理次优BPDU

    RSTP的任何端口角色都会处理次优BPDU,从而加快了拓扑收敛。STP只有指定端口会立即处理次优BPDU。

    改进点5:快速收敛机制

    端口快速切换

    如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。

    如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。因为Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。

    边缘端口 (Edge Port)

    在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。

    边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。

    但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。可以通过BPDU保护机制防止这个问题

    相关命令

    配置全局边缘端口

    [SW1]stp edged-port default 

    配置接口为边缘端口

    [SW1-GigabitEthernet0/0/1]stp edged-port enable 

    开启BPDU保护

    [SW1]stp bpdu-protection 

    BPDU报文过滤功能

    配置为边缘端口后,端口仍然会发送BPDU报文,这可能导致BPDU报文发送到其他网络,引起其他网络产生震荡。因此可以配置边缘端口的BPDU报文过滤功能,使边缘端口不处理、不发送BPDU报文。

    注意:

    在全局模式下配置边缘端口和BPDU报文过滤功能后,设备上所有的端口不会主动发送BPDU报文,且均不会主动与对端设备直连端口协商,所有端口均处于转发状态。这将可能导致网络成环,引起广播风暴。

    在端口模式下配置边缘端口和BPDU报文过滤功能后,端口将不处理、不发送BPDU报文。该端口将无法成功与对端设备直连端口协商STP协议状态。
     

    相关命令

    在全局下配置BPDU报文过滤功能

    [SW1]stp bpdu-filter default 

    在接口下配置BPDU报文过滤功能

    1. [SW1-GigabitEthernet0/0/1]stp bpdu-filter ?
    2. disable Disable port's BPDU filter function
    3. enable Enable port's BPDU filter function

    Proposal/Agreement机制

    简称P/A机制。

    RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。

    在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。具体过程如下:

    1 新增链路时,交换机之间的直连接口先进入指定DP端口状态,并且互发RST BPDU。 

    2 下游交换机的接口改变为RP根端口,并且停止发送RST BPDU。上游交换机的DP端口进入Discarding状态,并且发送Proposal位置位的RST BPDU。

    3 下游交换机收到Proposal位置位的RST BPDU后,所有接口进入同步状态,同步完成后,RP根端口进入Forwarding状态并发送Agreement位置位的回应RST BPDU给上游交换机的DP端口。并且下游交换机的下游接口除了边缘端口外都进入Discarding状态。

    4 上游交换机收到Agreement位置位的回应RST BPDU后进入Forwarding状态。下游交换机的和它的下游设备继续执行P/A协商过程。

    改进点6:拓扑变更机制

    在RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪。

    1 链路发送故障时,交换机会启动一个计时器While Timer,While Timer的时长为Hello Time的两倍。在While Timer中,除了边缘端口以外的RP端口和AP端口会清空学习到的MCA地址并且发送TC置位的RST BPDU给其他交换机,当While Timer计时结束时,停止发送RST BPDU。

    2 其他交换设备接收到RST BPDU后,清空所有除了收到RST BPDU的端口和边缘端口学习到MAC地址,然后也启动一个计时器While Tim er,重复上述过程。

    改进点7:保护功能

    BPDU保护

    正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。

    交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。

    相关命令在上述边缘端口描述中。

    根保护(Root保护)

    对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。

    一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。

    根保护功能确保了根桥的角色不会因为一些网络问题而改变。

    相关命令

    开启根保护

    [SW1-GigabitEthernet0/0/1]stp root-protection 

    环路保护

    在启动了环路保护功能后,如果根端口Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。

    直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。

    相关命令

    开启环路保护

    [SW1-GigabitEthernet0/0/1]stp loop-protection 

    防TC-BPDU攻击

    启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。

    如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。

    对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。

    单位时间的取值的等于Hello Time。

    相关命令

    配置单位时间内交换设备处理TC BPDU报文的次数

    1. [SW1]stp tc-protection threshold ?
    2. INTEGER<1-255> The threshold of TC-BPDU protection, default is 1

    RSTP拓扑收敛过程

    网络初始化时,网络中所有的RSTP交换机都认为自己是“根桥”。通过P/A机制进行协商。关于P/A机制部分详见上述。               

  • 相关阅读:
    神经网络与深度学习-8- 前馈神经网络1 -PyTorch
    灰色关联分析
    【Java多线程JUC入门详解】Atomic原子类、LongAdder源码详解
    后端面试必备知识点
    【Android知识笔记】进程通信(一)
    2024年最新版云开发cms开通步骤,开始开发微信小程序前的准备工作,认真看完奥!
    【记录】Python 之于 C/C++ 区别
    快速幂算法(数论)
    Unity 场景烘培 ——unity Post-Processing后处理1(四)
    魔兽WOW外网搭建的新手教程
  • 原文地址:https://blog.csdn.net/x629242/article/details/126318566