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

四、华为交换机 STP

        生成树协议(STP)的核心目的是在存在冗余链路的网络中,构建一个无环的拓扑结构,从而防止网络环路带来的广播风暴等问题

  • 一、STP 原理

    • 选举根桥:网络中的每台交换机都会有一个唯一的桥 ID(BID),由桥优先级(默认 32768)和交换机 MAC 地址组成。具有最低桥 ID 的交换机会被选举为根桥,根桥是生成树拓扑的中心。
    • 确定根端口:在非根桥交换机上,每个交换机需要确定一个根端口。根端口是距离根桥最近的端口,衡量距离的指标是路径开销(Path Cost)。路径开销与端口带宽相关,带宽越高,路径开销越低。如果有多条路径开销相同的链路,则会比较发送方的桥 ID 以及端口 ID,选择最优的作为根端口。
    • 确定指定端口:每个网段都需要确定一个指定端口。指定端口负责向本网段转发来自根桥的流量。在每个网段中,比较连接到该网段的各个交换机端口的路径开销。具有最低路径开销的端口成为该网段的指定端口。如果多个端口的路径开销相同,则比较这些端口所在交换机的桥 ID,桥 ID 较低的交换机端口成为指定端口。
    • 阻塞非指定端口:除了根端口和指定端口之外,其他端口将被阻塞(Blocked)。被阻塞的端口不会转发用户流量,但会继续接收和处理 STP 协议报文,以便能够感知网络拓扑的变化。通过阻塞非指定端口,STP 协议有效地防止了网络环路的产生,确保了网络的稳定性和可靠性。
  • 二、STP 状态

    • 禁用(Disabled):端口处于非工作状态,不参与 STP 运算,也不转发任何数据帧。该状态通常是由于管理员手动关闭端口,或者端口出现硬件故障等原因导致。
    • 阻塞(Blocking):端口不转发用户数据帧,但会接收并处理 STP 协议报文,用于监听网络拓扑的变化。在网络初始化阶段或者拓扑结构发生变化后,部分端口会暂时处于阻塞状态,以防止网络环路的产生。
    • 监听(Listening):端口开始参与 STP 运算,不再处于阻塞状态,但仍然不转发用户数据帧。在这个阶段,端口会发送和接收 STP 协议报文,以确定其在生成树拓扑中的角色(根端口、指定端口或非指定端口)。
    • 学习(Learning):端口仍然不转发用户数据帧,但开始学习网络中 MAC 地址的分布情况,并将学到的 MAC 地址信息记录在端口的 MAC 地址表中。通过学习阶段,端口能够逐步建立起准确的 MAC 地址表,为后续的数据转发做好准备。
    • 转发(Forwarding):端口正常转发用户数据帧,同时也继续参与 STP 运算,接收和处理 STP 协议报文,以确保网络拓扑结构发生变化时能够及时做出响应,重新调整端口的状态和角色,维持网络的稳定性和无环性。
  • 三、STP 主要参数

    • 桥优先级(Bridge Priority):取值范围通常是 0 - 65535,默认值为 32768。桥优先级用于在选举根桥时确定交换机的优先级。具有较低桥优先级的交换机更有可能被选举为根桥。如果多个交换机的桥优先级相同,则会比较它们的 MAC 地址,MAC 地址较小的交换机将成为根桥。
    • 路径开销(Path Cost):路径开销是衡量一个端口到根桥距离的指标。它与端口的带宽密切相关,一般来说,带宽越高,路径开销越低。不同标准定义的路径开销计算方法略有不同。在选举根端口时,非根桥交换机上的每个端口都会计算其到根桥的路径开销,具有最低路径开销的端口将成为根端口。如果有多条路径开销相同的链路,则会进一步比较发送方的桥 ID 以及端口 ID,以确定最优的根端口。在确定指定端口时,也会比较连接到同一网段的各个交换机端口的路径开销,具有最低路径开销的端口将成为该网段的指定端口。
    • 端口优先级(Port Priority):取值范围一般是 0 - 255,默认值为 128。端口优先级用于在路径开销相同的情况下,进一步确定根端口和指定端口。在选举根端口时,如果多个端口到根桥的路径开销相同,则会比较这些端口的端口优先级。具有较高端口优先级(即端口优先级数值较小)的端口更有可能被选举为根端口。如果端口优先级也相同,则会比较端口的编号,端口编号较小的端口将成为根端口。在确定指定端口时,当连接到同一网段的多个交换机端口路径开销相同时,也会依据端口优先级来进行抉择,规则与根端口选举时类似。
    • Hello 时间(Hello Time)默认值为 2 秒。Hello 时间是指根桥交换机每隔多长时间向网络中的其他交换机发送一次 Hello 报文。Hello 报文包含了根桥的桥 ID、路径开销等重要的 STP 信息。通过周期性地发送 Hello 报文,根桥能够向网络中的其他交换机宣告自己的存在,并确保整个网络的 STP 拓扑信息保持同步。其他交换机在接收到 Hello 报文后,会根据报文中的信息来更新自己的 STP 状态和拓扑信息。如果某个交换机在连续多个 Hello 时间间隔内都没有收到来自根桥的 Hello 报文,那么它会认为网络拓扑结构可能发生了变化,进而触发 STP 的重新计算过程,以确保网络能够重新收敛到一个无环的拓扑结构。
    • 转发延迟(Forward Delay)默认值为 15 秒。转发延迟是指端口从阻塞状态或监听状态转换到转发状态所需要等待的时间。在网络初始化阶段或者拓扑结构发生变化后,STP 协议需要重新计算网络拓扑,以确定各个端口的角色和状态。在这个过程中,部分端口可能需要从阻塞状态或监听状态转换到转发状态。为了防止网络中出现临时的环路,STP 协议引入了转发延迟机制。当端口需要从阻塞状态或监听状态转换到转发状态时,它不会立即开始转发用户数据帧,而是需要等待一段转发延迟时间。在这段时间内,端口仍然处于监听或学习状态,继续接收和处理 STP 协议报文,同时学习网络中的 MAC 地址分布情况。只有在等待完转发延迟时间后,端口才会正式转换到转发状态,开始正常转发用户数据帧。这样可以确保在网络拓扑重新收敛的过程中,不会因为端口状态的快速变化而导致网络中出现临时的环路,从而保证了网络的稳定性和可靠性。
    • 最大老化时间(Max Age)默认值为 20 秒。最大老化时间是指交换机端口保存的 STP 拓扑信息的最长有效时间。在网络正常运行过程中,交换机通过接收来自根桥的 Hello 报文来更新自己的 STP 拓扑信息。Hello 报文包含了根桥的桥 ID、路径开销等重要信息,交换机根据这些信息来确定自己在网络拓扑中的位置和角色。然而,如果某个交换机在连续多个 Hello 时间间隔内都没有收到来自根桥的 Hello 报文,那么它会认为网络拓扑结构可能发生了变化。此时,交换机并不会立即触发 STP 的重新计算过程,而是会等待一段时间,这个时间就是最大老化时间。在最大老化时间内,交换机仍然会使用之前保存的 STP 拓扑信息来转发数据帧。如果在最大老化时间结束之前,交换机又收到了来自根桥的 Hello 报文,那么它会认为网络拓扑结构没有发生变化,继续使用之前保存的 STP 拓扑信息。然而,如果在最大老化时间结束时,交换机仍然没有收到来自根桥的 Hello 报文,那么它会认为网络拓扑结构已经发生了变化,进而触发 STP 的重新计算过程。在重新计算过程中,交换机会根据新收到的 STP 信息来重新确定自己在网络拓扑中的位置和角色,同时更新各个端口的状态,以确保网络能够重新收敛到一个无环的拓扑结构。最大老化时间的设置在网络拓扑结构变化时起到了缓冲作用,避免了因为短暂的 Hello 报文丢失而频繁触发 STP 的重新计算过程,从而提高了网络的稳定性和可靠性。
  • 四、华为交换机 STP 使用方式

    • 开启和关闭 STP

      • 华为交换机默认情况下,STP 是开启的。如果网络规模较小且不存在环路风险,或者出于特殊网络优化需求,可以选择关闭 STP。在系统视图下,使用命令 “stp disable” 即可关闭 STP 。若之后需要重新开启 STP,在系统视图下使用命令 “stp enable”。

                

  • 配置 STP 模式

    • 华为交换机支持多种 STP 模式,如 STP(Spanning Tree Protocol)、RSTP(Rapid Spanning Tree Protocol)和 MSTP(Multiple Spanning Tree Protocol)。不同的模式在收敛速度、功能特性等方面有所差异。RSTP 相比 STP 收敛速度更快,能够在网络拓扑发生变化时更快地恢复网络连通性。MSTP 则在 RSTP 的基础上,进一步支持将多个 VLAN 映射到同一个生成树实例中,从而实现更灵活的网络拓扑管理和负载均衡。可以根据网络的实际需求和规模来选择合适的 STP 模式。在系统视图下,使用命令 “stp mode {stp | rstp | mstp}” 来配置 STP 模式。例如,要将交换机的 STP 模式配置为 RSTP,可以在系统视图下输入命令 “stp mode rstp”。
  • 设置桥优先级

    • 通过调整交换机的桥优先级,可以影响根桥的选举结果,从而优化网络拓扑结构。在系统视图下,使用命令 “stp priority priority - value” 来设置桥优先级。其中,priority - value 为桥优先级的取值,范围是 0 - 65535,并且必须是 4096 的倍数。例如,要将交换机的桥优先级设置为 8192,可以在系统视图下输入命令 “stp priority 8192”。这样设置后,在进行根桥选举时,如果其他交换机的桥优先级默认值 32768 或者更高,那么这台交换机将更有可能被选举为根桥。通过合理设置桥优先级,可以确保网络中的根桥选择符合网络规划和优化的需求,从而提高网络的稳定性和性能。

                                ​​​​​​​        

  • 配置端口路径开销和优先级

    • 端口路径开销和优先级对于根端口和指定端口的选举至关重要。在某些情况下,默认的路径开销和端口优先级可能无法满足网络优化的需求,这时就需要手动配置这些参数。
  • 可以使用命令 “stp cost cost - value” 来配置端口的路径开销。其中,cost - value 为路径开销的取值,取值范围根据不同的标准有所不同。例如,在 IEEE 802.1D - 1998 标准中,10Mbps 端口的默认路径开销为 100,100Mbps 端口的默认路径开销为 19,1Gbps 端口的默认路径开销为 4 等。

  • 使用命令 “stp port - priority priority - value” 来配置端口的优先级。其中,priority - value 为端口优先级的取值,范围是 0 - 255,默认值为 128。在根端口和指定端口的选举过程中,当路径开销相同时,端口优先级将成为决定端口角色的关键因素。具有较高端口优先级(即端口优先级数值较小)的端口更有可能被选举为根端口或指定端口。

STP 故障排除与维护

        在网络运行过程中,可能会出现各种与 STP 相关的故障,影响网络的正常运行。需要定期检查交换机的 STP 状态和配置信息,确保 STP 功能正常运行。使用命令 “display stp” 可以查看交换机的 STP 全局状态信息,包括当前交换机的角色(根桥、非根桥)、根桥的桥 ID、Hello 时间、转发延迟、最大老化时间等重要参数。通过查看这些信息,可以了解交换机当前的 STP 运行状态是否正常,以及各项参数的设置是否符合网络规划和优化的需求。

使用命令 “display stp brief” 可以查看交换机各个端口的 STP 简要状态信息,包括端口编号、端口角色(根端口、指定端口、非指定端口)、端口状态(转发、阻塞、监听、学习等)、路径开销、端口优先级等重要信息。

五、实验:

[LSW1]stp enable       开启STP[LSW1]stp mode stp       设置生成树的模式为STP[LSW1]stp priority 4096        设置优先级为 4096      越小越优         必须是4096的倍数[LSW2]stp enable            开启STP[LSW2]stp mode stp              设置生成树的模式为STP[LSW2]stp priority 8192          设置优先级为 8192      越小越优         必须是4096的倍数[LSW3]stp enable                  开启STP[LSW3]stp mode stp                    设置生成树的模式为STP[LSW4]stp enable                   开启STP[LSW4]stp mode stp                  设置生成树的模式为STP

1、查看stp状态

2、stp端口角色

3、修改转发时延

[LSW1]stp timer forward-delay 2000         <400-3000>        转发时延修改为20秒[LSW1]stp timer hello 300        <100-1000>     #stp计时值修改默认时间为3秒[LSW1]stp timer max-age 3000      <600-4000>    #stp计时值修改默认保存BPDU时间为30秒
http://www.lryc.cn/news/523606.html

相关文章:

  • 服务器卡顿是否等同于遭受CC攻击?
  • 【机器学习实战入门】使用Pandas和OpenCV进行颜色检测
  • 一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建
  • RabbitMQ基础篇
  • GPT-5 传言:一场正在幕后发生的 AI 变革
  • CSS布局与响应式
  • C++的auto_ptr智能指针:从诞生到被弃用的历程
  • iOS - Objective-C 底层实现中的哈希表
  • 什么是软件架构
  • 【Golang/nacos】nacos配置的增删查改,以及服务注册的golang实例及分析
  • RabbitMQ集群安装rabbitmq_delayed_message_exchange
  • Linux UDP 编程详解
  • 【2024年华为OD机试】(B卷,100分)- 计算最接近的数 (Java JS PythonC/C++)
  • Pytorch 自学笔记(三):利用自定义文本数据集构建Dataset和DataLoader
  • QT 使用QSqlTableModel对数据库进行创建,插入,显示
  • 如何学习Transformer架构
  • 浅谈云计算22 | Kubernetes容器编排引擎
  • 计算 SAMOut V3 在将词汇表从1万 增加到6千万的情况下能够减少多少参数
  • 03.选择排序
  • 02_登录窗口
  • NodeJS | 搭建本地/公网服务器 live-server 的使用与安装
  • SystemUI 实现音量条同步功能
  • 嵌入式知识点总结 C/C++ 专题提升(一)-关键字
  • 基础入门-传输加密数据格式编码算法密文存储代码混淆逆向保护安全影响
  • 几个Linux系统安装体验(续): 统信桌面系统
  • 算法日记6.StarryCoding P52:我们都需要0(异或)
  • 【网络协议】RFC3164-The BSD syslog Protocol
  • SpringCloud -根据服务名获取服务运行实例并进行负载均衡
  • CentOS 安装Redis
  • Linux网络 TCP socket