当前位置: 首页 > news >正文

从 STP 到 RSTP 再到 MSTP:网络生成树协议的工作机制与发展

目录

回顾:STP的工作原理(802.1Q)

STP的配置BPDU

STP树的生成过程

STP的端口状态迁移

STP的不足

RSTP基本概念及工作原理(快速生成树,802.1w)

RSTP对STP的改进:

改进点1:端口角色

改进点2:站端口状态 

改进点3:配置BPDU-RST BPDU 

改进点4:配置BPDU的处理(1) 

改进点4:配置BPDU的处理(2)

改进点4:配置BPDU的处理(3)

改进点5:快速收敛机制(1)

改进点5:快速收敛机制 (2) 

改进点5:快速收敛机制(3)

P\A机制详解

改进点6:拓扑变更机制 

改进点7:保护功能(1) 

改进点7:保护功能 (2)

改进点7:保护功能(3)

改进点7:保护功能 (4)

RSTP拓扑收敛过程

RSTP拓扑收敛过程(1)

RSTP拓扑收敛过程(2) 

RSTP拓扑收敛过程(3) 

RSTP的不足

RSTP/STP的不足 

RSTP/STP的不足(1)

RSTP/STP的不足(2) 

MSTP基本概念及工作原理(多生成树,802.1S)

 MSTP Region

MSTI 

CST

IST

CIST

SST

总根,域根和主桥 

小结

​MSTP的端口角色

MSTP的端口状态 

 MSTP报文

MSTP的工作原理 

MSTP拓扑计算

CIST计算

 MSTI计算

MSTP网络数据转发


回顾:STP的工作原理(802.1Q)

STP的配置BPDU

  • STP通过在交换机之间传递配置BPDU来选举根交换机 (或根桥),以及确定每个交换机端口的角色和状态。
    • 在初始化过程中,每个交换机都主动发送配置BPDU。
    • 在网络拓扑稳定以后,只有根桥周期性发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
  • 配置BPDU包含了桥ID、路径开销和端口ID等参数。

STP树的生成过程

  • 主要通过比较4个参数进行角色选举
    • 根桥ID、根路径开销、网桥ID和端口ID。
  • 选举根桥(RootBridge) 
    • 在一个交换网络中选举一个根桥
  • 选举根端口(Root Port)  接受BPDU
    • 在每个非根桥上选举一个根端口。
  • 选举指定端口(Designated Port)  发送BPDU
    • 每个二层链路选一个指定端口
  • 阻塞非指定端口
    • 阻塞交换机士所有剩余的非根、非指定端口。

STP的端口状态迁移

  1. 端口初始化或者使能,进入Blocking状态。
  2. 端口被选为根端口或者指定端口,进入Listening状态。
  3. 端口的ForwardDelay时间到,进入Learning状态;再经过一个Forward Delay,进入Forwarding状态。
  4. 端口不再是根端口、指定端口,进入Blocking状态。
  5. 端口被禁用或者链路失效
  • 阻塞  ->   转发   30s
  • 转发   ->   阻塞  0s
  • 为了防止临时环路

STP的不足

  • STP虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
  • STP的不足:
    • STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
      • ·从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
      • ·从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。
  • STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  • STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。 

RSTP基本概念及工作原理(快速生成树,802.1w)

RSTP对STP的改进:

  • 通过端口角色的增补,简化了生成树协议的理解及部署;
  • 端口状态的重新划分;
  • 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
  • 配置BPDU的处理发生变化;
  • 快速收敛;
  • 增加保护功能。

改进点1:端口角色

  • 通过端口角色的增补,简化了生成树协议的理解与部署。
  • 替换端口  作为根端口的备份端口
  • 备份端口  作为指定端口的备份端口

改进点2:站端口状态 

  • RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分
  • Discarding状态:不转发用户流量也不学习MAc地址;
  • Learning状态:不转发用户流量但是学习MAc地址;
  • Forwarding状:既转发用户流量又学习MAc地址。

改进点3:配置BPDU-RST BPDU 

  • RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色。
  • 除了保证和STP格式基本一致之外,RSTP作了如下变化:
    • Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
    • Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
  • RSTBPDU报文格式:

改进点4:配置BPDU的处理(1) 

  • 拓扑稳定后,配置BPDU报文的发送方式
  • RSTP对配置BPDU的发送方式进行了改进
    • 在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照HelloTime规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行
  • STP拓扑稳定后,根桥按照HelloTime规定的时间间隔发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP计算复杂且缓慢。

改进点4:配置BPDU的处理(2)

  • 更短的BPDU超时时间
    • 如果一个端口在超时时间(即三个周期,超时时间=HelloTime(2s)x3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。
  • STP需要先等待一个MaxAge(20s)

改进点4:配置BPDU的处理(3)

  • 处理次优BPDU
    • 当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RSTBPDU进行比较。
    • 如果该端口缓存的RSTBPDU优于收到的RSTBPDU那么该端口会直接丢弃收到的RSTBPDU,立即回应自身缓存的RSTBPDU,从而加快收敛速度。
  • STP协议只有指定端口会立即处理次优BPDU。

改进点5:快速收敛机制(1)

改进点5:快速收敛机制 (2) 

  • 边缘端口(Edge Port)
  • 在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
  • 边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态
  • 但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

改进点5:快速收敛机制(3)

  • Proposal/Agreement机制
    • 简称P/A机制。
    • RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。
    • 在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。
  • 在STP中,该端口至少要等待一个Forward  Delay (Learning)时间才会进入到Forwarding状态。
P\A机制详解

改进点6:拓扑变更机制 

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。

  • 一旦检测到拓扑发生变化,将进行如下处理:
    • 为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是HelloTime的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址。
    • 同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
    • 其他交换设备接收到RST BPDU后,清空所有端口(除了收到RST BPDU的端口和边缘端口)学习到MAC地址,然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
  • 如此,网络中就会产生RSTBPDU的泛洪

改进点7:保护功能(1) 

  • BPDU保护
  • 正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算从而引起网络震荡。
  • 交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统

改进点7:保护功能 (2)

  • 根保护(Root保护)
    • 对于启用根保护功能的指定端口其端口角色只能保持为指定端口
    • 一旦启用根保护功能的指定端口收到优先级更高的RSTBPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的ForwardDelay),如果端口一直没有再收到优先级较高的RSTBPDU,端口会自动恢复到正常的Forwarding状态。
    • 根保护功能确保了根桥的角色不会因为一些网络问题而改变。

改进点7:保护功能(3)

  • 环路保护(防止临时环路)
  • 在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
  • 直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。

改进点7:保护功能 (4)

  • 防TC-BPDU攻击
    • 启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TCBPDU报文的次数可配置。
    • 如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。
    • 对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。

RSTP拓扑收敛过程

RSTP拓扑收敛过程(1)

  • 每一台交换机启动RSTP后,都认为自己是“根桥”并且发送RST BPDU
    • 所有端口都为指定端口,处于Discarding状态。

RSTP拓扑收敛过程(2) 

  • 上游链路的设备互联端口通过P/A机制,快速进入转发状态。
    • SW2收到更优的RSTBPDU后,经比较认为SW1才是当前根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RSTBPDU。
    • SW1的端口进入Discarding状态,发送Proposal位置位的RSTBPDU。SW2收到后阻塞除边缘端口以外的所有其他端口(该过程称为同步过程)。
    • SW2的各端口同步后,根端口立即进入Forwarding状态,并向sW1返回Agreement位置位的RST BPDU。SW1收到该报文后,会让指定端口立即进入Forwarding状态

RSTP拓扑收敛过程(3) 

  • 下游链路的设备互联端口会进行新一轮的P/A协商。
    • SW2的下游端口设置为指定端口,持续发送Proposal位置位的RST BPDU。
    • SW3的下游端口收到该BPDU后,发现不是本设备收到的最优BPDU,则会忽略,不会发送Agreement位置位的RST BPDU。
    • SW2的下游端口一直收不到Agreement位置位的回应报文,等待2倍的Forward Delay后,进入转发状态。

RSTP的不足

  • RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但在划分VLAN的网络中运行RSTP/STP,局域网内所有的VLAN共享一棵生成树,被阻塞后的链路将不承载任何流量无法在VLAN间实现数据流量的负载均衡,导致链路带宽利用率、设备资源利用率较低。 

RSTP/STP的不足 

RSTP/STP的不足(1)

  • 不足1:流量无法负载分担
  • 背景:
    • SW3为接入交换机连接终端网段,使用两条链路连接SW1和SW2,并且所有链路均允许VLAN2和VLAN3通过。
    • 将SW1设为VLAN2内终端的网关,SW2设为VLAN3内终端的网关,并希望VLAN2和VLAN3内的终端分别使用不同的链路到相应的网关
  • 问题:
    • 如果网络中只有一个生成树,假设SW3与SW2相连的端口为阻塞端口,则VLAN2和VLAN3的数据都只能通过一条链路到汇聚交换机,不能实现流量负载分担

RSTP/STP的不足(2) 

  • 不足2:二层次优路径
  • 背景:
    • SW3为接入交换机连接终端网段,SW1和SW2为汇聚交换机。将SW1设为VLAN2内终端的网关,SW2设为VLAN3内终端的网关,并且所有链路均允许VLAN2和VLAN3通过。
    • 运行单个生成树之后,环路被打破,VLAN2和VLAN3的数据都直接到sW1。
  • 问题:
    • 由于SW3与SW2间的链路被阻塞,VLAN3的数据到达网关的路径是次优的,最优的路径应当是由SW3直达SW2。

MSTP基本概念及工作原理(多生成树,802.1S)

  • MSTP是IEEE802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
  • MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树。

 MSTP Region

  • MSTP网络层次:
    • MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
  • MST Region (Multiple Spanning Tree Region, 多生成树域),也可简称MST域
    • 由交换网络中的多台交换设备以及它们之间的网段所构成。
    • 一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
    • MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个多生成树实例。 

MSTI 

  • MSTI(Multiple Spanning Tree Instance,多生成树实例)
    • 一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。
    • MSTI使用InstanceID标识,华为设备取值为0~4094。
  • VLAN映射表
    • MST域的属性,描述了VLAN和MSTI之间的映射关系。
    • 如图所示的MSTRegion4的VLAN映射有:
      • VLAN1映射到MSTI 1
      • VLAN2映射到MSTI 2
      • 其余VLAN映射到MSTI 3

CST

  • CST(Common Spanning Tree,公共生成树)
    • 是连接交换网络内所有MST域的一棵生成树。
    • 如果把每个MST域看作是一个节点,CST就是这些节点通过生成树协议计算生成的一棵生成树。
    • 如图深蓝色粗线条连接各个域构成CST。 

IST

  • IST(Internal SpanningTree,内部生成树)
    • 是各MST域内的一棵生成树
    • IST是一个特殊的MSTI,MSTI的InstanceID为0。
    • 如图所示的MSTRegion4,黑色细线条在域中连接该域的所有交换设备构成IST。 

CIST

  • CIST(Common and Internal Spanning Tree,公共和内部生成树)
    • 通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
    • 如图所示,所有MST域的IST加上CST就构成一棵完整的生成树,即CIST。 

SST

  • SST(Single Spanning Tree,单生成树)有两种情况:
    • 运行生成树协议的交换设备只能属于一个生成树。
    • MST域中只有一个交换设备,这个交换设备构成单生成树。
  • 如图所示的MST Region3,该域中的唯一的交换设备构成SST。

总根,域根和主桥 

  • 总根(CIST Root)
    • 是CIST的根桥,如图中SW1。
  • 域根(Regional Root)
    • 分为IST域根和MSTI域根。
    • IST域根,在MST域中IST生成树中距离总根最近的交换设备是IST域根,如图中SW2、SW3、SW4。
    • MSTI域根是每个多生成树实例的树根
  • 主桥(Master Bridge)
    • 是IST Master,它是域内距离总根最近的交换设备,如图中SW1、SW2、SW3、SW4。
    • 如果总根在MST域中,则总根为该域的主桥。

小结

 MSTP的端口角色

  • MSTP中定义的所有端口角色包括:
    • 根端口、指定端口、Alternate端口、Backup端口、Master端口、域边缘端口和边缘端口。

MSTP的端口状态 

  • MSTP定义的端口状态与RSTP协议中定义相同:
    • Forwarding状态:端口既转发用户流量,学习MAc地址,又接收/发送BPDU报文。
    • Learning状态:过渡状态,端口接收/发送BPDU报文,不转发用户流量但是学习MAc地址。
    • Discarding状态:端口只接收BPDU报文,不转发用户流量也不学习MAC地址。

 MSTP报文

  • MSTP使用MST BPDU (Multiple Spanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。
  • MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录
  • MSTP BPDU报文格式:

MSTP的工作原理 

MSTP拓扑计算

  • MSTP拓扑计算
    • MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST,域内生成IST,CST和IST构成了整个交换设备网络的CIST。
    • 域内还可以基于实例计算生成多棵生成树,每棵生成树都被称为是一个MSTI。
  • CIST和MSTI都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成CIST和MSTI。
    • 参与CIST计算的优先级向量为:
      • {根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID}
    • 参与MSTI计算的优先级向量为:
      • {域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID}        
    • 注意:括号中的向量的优先级从左到右依次递减

CIST计算

  • 经过比较MST BPDU消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根,即总根。
  • 在每个MST域内,MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备网络的CIST。

 MSTI计算

  • 在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例
  • 每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似。

MSTP网络数据转发

  • 在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:
  • 在MST域内,沿着其对应的MSTI转发。
  • 在MST域间,沿着CST转发。

相关文章:

  • Docker部署.NetCore8项目
  • 【Axure视频教程】中继器表格轮播含暂停效果
  • 蓝桥杯真题:数字串个数
  • 【今日三题】小乐乐改数字 (模拟) / 十字爆破 (预处理+模拟) / 比那名居的桃子 (滑窗 / 前缀和)
  • Spring Security6 从源码慢速开始
  • 系统思考—提升解决动态性复杂问题能力
  • C++对象生命周期管理:从构造到析构的完整指南
  • Unity Addressables资源生命周期自动化监控技术详解
  • 【智能指针】—— 我与C++的不解之缘(三十三)
  • 02-redis-源码下载
  • mysql-锁的算法(记录锁、间隙锁、临键锁)
  • 【电商】基于LangChain框架将多模态大模型连接数据库实现精准识别
  • 基于CNN-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码
  • 【js面试题】new操作做了什么?
  • # 爬虫技术的实现
  • 2747. 统计没有收到请求的服务器数目
  • 7-openwrt-one通过web页面配置访客网络、无线中继等功能
  • OLAP与OLTP架构设计原理对比
  • Java学习手册:Java发展历史与版本特性
  • 开源的7B参数OCR视觉大模型:RolmOCR