前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >爱情就像 RSTP 协议,哪怕有再多的干扰和潜在分歧,我们也能找到最优路径,让爱稳稳流动,不会陷入迷茫的循环——基于华为ENSP的RSTP、MSTP全面深入剖析

爱情就像 RSTP 协议,哪怕有再多的干扰和潜在分歧,我们也能找到最优路径,让爱稳稳流动,不会陷入迷茫的循环——基于华为ENSP的RSTP、MSTP全面深入剖析

作者头像
盛透侧视攻城狮
发布2025-02-13 09:24:19
发布2025-02-13 09:24:19
14000
代码可运行
举报
运行总次数:0
代码可运行

本篇技术博文摘要 🌟

  • 本文介绍了生成树协议(STP)及其演进版本RSTP和MSTP的基本概念与配置。首先,阐述了STP的角色选举过程,包括根网桥、根端口、指定端口和非指定端口的选举。此外,解释了STP的接口工作状态(阻塞、侦听、学习、转发)及收敛时间。接着,提供了STP的基本配置实战,包括启动STP协议、修改桥优先级和开销值等。
  • 文章还介绍了RSTP(802.1w)的改进,包括端口角色、状态、快速收敛机制、BPDU处理方式以及拓扑变更保护等,进一步提高了网络的收敛效率和稳定性。最后,讲解了MSTP(802.1s)的特点及配置,支持多个生成树实例的场景,适用于复杂的网络架构。

1.STP角色选举过程

STP交换机初始启动后

  • 交换机都会认为自己是根网桥,并在发送给其他交换机的BPDU报文中宣告自己为根桥。
  • 当交换机收到网络中其他设备发送的BPDU后,会比较BPDU重的根桥ID和自己的BID
  • 交换机之间不断交互BPDU报文,同时对比BID信息,最终选举出一台BID最小的交换机作为根网桥,其他交换机为非根网桥。
  • 根网桥的角色是可抢占的。当拥有更优BID的交换机加入网络时,网络会重新进行STP计算,选举出新的根网桥。
在选举出根网桥后

  • 根网桥持续发送BPDU报文,而非根网桥持续接收BPDU报文,并计算自己的BPDU报文发送给其他设备。
根据收到的BPDU选择出根端口

  • 每个交换机根据从自己不同接口收到的BPDU报文中选择出最优BPDU,从而选择出根端口
    • 选举规则---越小越优
      • 比较RPC
      • 比较对端的BID
      • 比较对端的PID
      • 比较本地的PID
每台交换机的每一条链路选举一个指定端口

  • 交换机将本接口与本接口收到的BPDU进行对比,若本地BPDU更优,则本接口称为指定端口。
  • 比较规则---越小越优
    • RPC
    • BID
    • PID
交换机身上剩余端口成为非指定端口

  • 非指定端口被STP协议在逻辑上阻塞,从而构造出STP树。
  • 阻塞端口不能转发由终端设备产生并发送的数据帧,也不能转发BPDU,但是可以接收和处理BPDU报文。
注意:

  • 根网桥的选举,因为STP协议的一切工作都是基于根网桥的位置而定的,如果根网桥位置选举不恰当,那么流量走向异常
  • 流量走向异常:解决方案----三点合一(网关所在地、STP树根所在地、流量汇聚之地)

2.STP的接口工作状态

image-20230418022900048
image-20230418022900048
阻塞

  • 设备激活STP协议后进入的第一个状态
  • 不能收发业务数据、不能学习MAC地址、不能发送BPDU,但是可以接收BPDU
  • 目的:将二层网络中的所有数据报文全部清空。
  • 每个设备需要在阻塞状态停留20S时间。进入下一个状态
侦听

  • 目的:完成STP的所有角色选举过程。
  • 接口可以收发BPDU报文,但是不能收发业务数据,也不能学习MAC地址
  • 需要在侦听状态停留一个转发延迟时间(15S)
  • 当转发延迟时间超时后,跟端口和指定端口会进入下一个状态,而非指定端口会退回到阻塞状态
学习

  • 目的:学习MAC地址,从而填充MAC地址表项
  • 可以收发BPDU报文,可以学习MAC地址,不能收发业务数据
  • 需要在学习状态停留一个转发延迟时间(15S)
转发

  • 可以正常收发业务数据和BPDU报文。
  • 只有根端口和指定端口可以处于转发状态
STP收敛时间[记住就好,根据具体业务快速而定]

  • 首次收敛---50S
  • 结构突变
    • 根网桥故障---50S
    • 直连链路故障---30S
    • 立即将端口状态切换到侦听
    • 非直连链路故障---50S

3.生成树STP基本配置实战

image-20240531185356129
image-20240531185356129
启动STP协议,默认开启的协议
代码语言:javascript
代码运行次数:0
复制
[sw1]stp enable 
修改STP工作模式,默认情况为MSTP
代码语言:javascript
代码运行次数:0
复制
[sw1]stp mode ?
  mstp  Multiple Spanning Tree Protocol (MSTP) mode
  rstp  Rapid Spanning Tree Protocol (RSTP) mode
  stp   Spanning Tree Protocol (STP) mod

[sw1]stp mode stp
修改交换机的桥优先级
代码语言:javascript
代码运行次数:0
复制
[sw1]stp priority 0 

干涉BID数值---一般不常在根网桥使用
修改主根/备份根网桥优先级
代码语言:javascript
代码运行次数:0
复制
[sw1]stp root ?
  primary    Primary root switch   ---代表主根网桥,将优先级修改为0
  secondary  Secondary root switch  ---备份根网桥,将优先级修改为4096
修改开销值算法
代码语言:javascript
代码运行次数:0
复制
[sw1]stp pathcost-standard ?   
  dot1d-1998  IEEE 802.1D-1998
  dot1t       IEEE 802.1T
  legacy      Legacy
只修改一个接口
代码语言:javascript
代码运行次数:0
复制
[sw1-GigabitEthernet0/0/24]stp cost ?   
  INTEGER<1-200000000>  Port path cost
修改接口优先级
代码语言:javascript
代码运行次数:0
复制
[sw1-GigabitEthernet0/0/24]stp port priority ?  
  INTEGER<0-240>  Port priority, in steps of 16
image-20240531190046922
image-20240531190046922

4.RSTP---802.1W---快速生成树协议

  1. 收敛速度慢----STP的算法是一种被动的算法,依赖于计时器来进行状态变化
  2. 路利用率低
  3. RSTP向下兼容STP协议

RSTP在园区网络中的应用位置

RSTP对STP的改进点讨论

改进点1---端口角色

  • 802.1D协议---根端口、指定端口、非指定端口
  • 802.1W协议---根端口、指定端口、(替代端口、备份端口)

  • 替代端口----简单理解为根端口的备份。
    • 替代端口是收到其他交换机的BPDU报文从而被阻塞的端口。
    • 如果根端口发生故障,那么替代端口可以成为新的根端口,加快了网络的收敛速度。
    • 一台交换机,有且只有一个根端口;替代端口可以有0个或多个。如果存在多个,最优的替代接口将成为新的根端口。

  • 备份端口----理解为指定端口的备份。
    • 备份端口是一台设备上由于收到了自己所发送的BPDU报文从而被阻塞的接口。
改进点2----端口状态
改进点3----RST BDPU报文
image-20221019213147640
image-20221019213147640
代码语言:javascript
代码运行次数:0
复制
bit 6----表示同意的含义,P/A机制
bit 5----表示转发状态
bit 4----表示学习状态
bit 3和bit 2----代表发送该报文的端口角色
bit 1----表示提议含义,P/A机制

  • RSTP在网络稳定后,任何设备,都可以周期性发送RST BPDU报文
改进点4---快速收敛机制

根端口和指定端口的快速切换。

P/A机制

边缘端口

如果交换机的某个端口处于网络的边缘,即不与其他交换设备相连,直接与终端设备直连,这种端口可以被设置为边缘端口----因为终端设备无法处理STP报文。

边缘端口不会参与到生成树的计算过程中,当某个接口被设置为边缘端口,则立即切换到转发状态

  1. 边缘端口的关闭或激活不会触发RSTP拓扑变更。

代码语言:javascript
代码运行次数:0
复制
[sw3-GigabitEthernet0/0/22]stp edged-port enable 

---设置为边缘端口

边缘接口会持续性发送BPDU报文。---但是这种持续性发送是没有必要的。

代码语言:javascript
代码运行次数:0
复制
[sw1-GigabitEthernet0/0/1]stp bpdu-filter enable 

----激活接口的BPDU过滤功能,激活后,该接口不会再发送BPDU报文。并且,该接口收到BPDU报文后,会直接忽略掉。

注意:一旦边缘端口收到BPDU报文,会立即丧失边缘端口属性,成为普通的STP端口,并重新进行生成树计算,引发网络震荡。----故,上述两条配置一般共同使用

P/A机制----加快收敛

  • 改变状态切换机制,将原本基于计时器的切换方式,修改为选择出端口角色,立即切换状态。
image-20240531194516302
image-20240531194516302

  1. SW11发送P标记位置为1的BPDU报文,请求将本接口的状态切换为转发状态。---能切换的前提是后续网络无环
  2. SW12收到该报文后,将本地除了根端口以外的端口全部阻塞。来保证本地无环
  3. 这个阻塞接口的过程被称为“同步过程”
  4. 完成同步过程后,本地其他接口都处于丢弃状态,设备向上游发送A标记位置为1的BPDU报文,并将自己的根端口切换为转发状态。
  5. SW11收到该报文后,将自己的接口转换为转发状态。
  6. 向下游重复该过程,直到所有的根端口和指定端口状态切换为转发状态。
改进点5---对BPDU处理方式

  • 所有设备在网络收敛完成后,都会周期性发送BPDU报文

  • 缩短了BPDU的超时时间
  • RSTP将最大老化时间修改为三个周期更新时间(6S)

  1. 对次优BPDU报文的处理方式
    • 每一个交换机的每一个接口都会保存一份BPDU报文。---一定是最优的BPDU报文
      • 对于根端口和非指定端口而言,交换机保存的是对端发送的BPDU报文。
      • 对于指定端口而言,交换机保存的是根据根节点发送的BPDU而计算出的本地的BPDU报文。
      • 次优BPDU===接收收到的不如接口保存的BPDU报文。
    • STP
      • 指定端口:收到一个次优BPDU报文,它将立即发送自己的BPDU报文。
      • 非指定端口:收到一个次优BPDU报文,需要等待接口所保存的BPDU报文老化后,重新计算自己的BPDU报文,并将新的BPDU报文发送出去。
    • RSTP
      • 无论任何接口角色,只要接口收到的次优BPDU报文,立即发送自己的BPDU报文
改进点6---保护功能

BPDU保护

代码语言:javascript
代码运行次数:0
复制
 [Huawei]stp bpdu-protection 

 ---在全局激活BPDU保护功能,激活后,如果边缘端口收到的BPDU报文,则交换机直接关闭边缘端口。

受保护的边缘接口由于收到BPDU报文而被关闭,缺省时,不会自动恢复。需要网络管理员在接口下通过undo shutdown命令打开。

根保护

如果在一个稳定的二层网络环境中,新加入一台第三方设备,并且该设备的BID小于根网桥。那么会抢占原本的根网桥角色,从而引发网络的重新收敛。

部署根保护功能后,根网桥上的指定接口在收到更优的BPDU报文后,会忽略这些BPDU报文并将接口状态切换到丢弃状态。从而保证根网桥的地址。

代码语言:javascript
代码运行次数:0
复制
[Huawei-GigabitEthernet0/0/1]stp root-protection   

---开启根保护功能,只能在指定接口上激活。

当接口不再收到更优的BPDU报文后,经过两倍的转发延迟时间,接口状态从丢弃直接切换到转发状态。

环路保护

  • 网络正常时,接口将持续收到BPDU报文,而当网络出现链路的单向故障或者网络拥塞等问题时,接口无法正常接收BPDU报文,导致交换机需要重新计算RSTP,此时接口角色和状态发生改变,可能引入环路。
image-20230419033305693
image-20230419033305693

  • 根端口
    • 如果常时间没有收到BPDU报文,那么交换机会重新选举根端口,并且该端口调整为指定端口。该接口状态切换为丢弃状态,避免环路产生。
  • 替代端口
    • 如果常时间没有收到BPDU报文,该端口调整为指定端口。将其状态保持在丢弃状态。

代码语言:javascript
代码运行次数:0
复制
[Huawei-GigabitEthernet0/0/20]stp loop-protection ---开启接口的环路保护。
拓扑变更保护
image-20230419033949053
image-20230419033949053

  • 如果网络环境极度不稳定,导致TC报文频繁洪泛,又或者网络中存在攻击者发送大量的TC报文,那么交换机的性能将受到极大的损耗。
  • 拓扑变更保护功能---在单位时间内只进行一定次数的TC报文处理,如果超出这个次数,则按照规定次数处理,对于超出的部分,等待一段时间后进行处理

代码语言:javascript
代码运行次数:0
复制
[Huawei]stp tc-protection ---开启TC保护

在单位时间2S周期内,只会处理一次TC报文。
改进点7---拓扑变更机制的改进
image-20230419030312788
image-20230419030312788

  1. 如果SW3收不到根桥发送的BPDU报文,设备所有的指定端口和根端口启动一个TC计时器(4S)。并且清空所有端口学习到的MAC地址。然后向外发送TC置位的BPDU报文。
  2. 一旦计时器超时,则停止发送BPDU报文
  3. SW2收到该报文后,清空所有端口的MAC地址信息,将自己的接口也启动TC计时器,并将TC置位报文向上游发送。
  4. 重复上述过程。

5.MSTP---802.1S----多实例生成树

MSTP的特点

  • PVST----一个VLAN为一个生成树
  • MSTP---引入了“示例”----instance-----多个VLAN的集合
  • instance ID-----示例标识----12bit-------instance 0--华为默认存在的
  • MSTI---多生成树实例
  • 一个实例能够包含多个VLAN,但是一个VLAN只能属于一个实例
注意:

MSTP域----类似于OSPF中的区域的概念。可以将一个交换网络划分为多个MST域,在一个MST域中,会存在单个或多个实例

  • 相同的域名
  • 相同的修订等级
  • 相同的vlan和instance的映射关系

必须保证上述三点完全一致,交换机对MSTP的认知才相同

MSTP:多实例生成树实战配置

image-20240601141826821
image-20240601141826821
代码语言:javascript
代码运行次数:0
复制
[sw1]stp mode mstp 
[sw1]stp enable 

MST域的配置
[sw1]stp region-configuration  ----进入MST域配置视图
[sw1-mst-region]region-name HCIP  ---修改域名
[sw1-mst-region]revision-level ?  ---修改修订等级,默认为0
  INTEGER<0-65535>  Revision level 
[sw1-mst-region]instance 1 vlan 2 to 10  ---创建一个instance 1,并加入vlan2到10
[sw1-mst-region]instance 2 vlan 11 to 20
[sw1-mst-region]active region-configuration   ---激活MSTP配置,如果未激活,则之前的配置不生效


[sw1]stp instance 0 root primary ---设定为实例0的主根
[sw1]stp instance 1 root primary 
[sw1]stp instance 2 root secondary 
image-20240601142611253
image-20240601142611253
补充:
  • 默认情况下,域名使用的是交换机的MAC地址
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本篇技术博文摘要 🌟
  • 1.STP角色选举过程
    • STP交换机初始启动后
    • 在选举出根网桥后
    • 根据收到的BPDU选择出根端口
    • 每台交换机的每一条链路选举一个指定端口
    • 交换机身上剩余端口成为非指定端口
    • 注意:
  • 2.STP的接口工作状态
    • 阻塞
    • 侦听
    • 学习
    • 转发
    • STP收敛时间[记住就好,根据具体业务快速而定]
  • 3.生成树STP基本配置实战
    • 启动STP协议,默认开启的协议
    • 修改STP工作模式,默认情况为MSTP
    • 修改交换机的桥优先级
    • 修改主根/备份根网桥优先级
    • 修改开销值算法
    • 只修改一个接口
    • 修改接口优先级
  • 4.RSTP---802.1W---快速生成树协议
    • RSTP在园区网络中的应用位置
    • RSTP对STP的改进点讨论
      • 改进点1---端口角色
      • 改进点2----端口状态
      • 改进点3----RST BDPU报文
      • 改进点4---快速收敛机制
      • 改进点5---对BPDU处理方式
      • 改进点6---保护功能
      • 改进点7---拓扑变更机制的改进
  • 5.MSTP---802.1S----多实例生成树
    • MSTP的特点
    • 注意:
    • MSTP:多实例生成树实战配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档