华为交换机生成树STP配置案例
- 企业内部网络怎么防止网络出现环路?学会STP生成树技术就可以解决啦。
STP简介
在二层交换网络中,一旦存在环路就会造成报文在环路内不断循环和增生,产生广播风暴,从而占用所有的有效带宽,使网络变得无法正常通信。
在这种环境下生成树协议应运而生,生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路备份功能。
生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是IEEE802.1D-1998 STP(Spanning Tree Protocol,生成树协议),随后以它为基础产生了IEEE 802.1w RSTP(Rapid Spanning Tree Protocol,快速生成树协议)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。
三种生成树协议特点比较:
生成树协议 | 特点 | 应用场景 |
STP |
| 无需区分用户或业务流量,所有VLAN共享一棵生成树。 |
RSTP |
| |
MSTP |
| 需要区分用户或业务流量,并实现负载分担。不同的VLAN通过不同的生成树转发流量,每棵生成树之间相互独立。 |
STP实现说明
华为实现说明
- STP在交换机所有版本,所有形态都支持。
- 华为交换机默认STP模式是MSTP。需要运行STP或RSTP模式时,必须要手动配置。
- 华为交换机在STP模式下,使用的端口角色和RSTP是一样的,也就是说支持下面5种端口角色:指定端口、根端口、Alternate端口、Backup端口和边缘端口。
- 华为交换机在STP模式下,支持下面4种保护功能:BPDU保护、Root保护、环路保护和防TC-BPDU攻击保护。
- 版本差异说明:
- 从V100R006版本开始,华为X7交换机全局默认使能STP功能。
- V200R001版本及之后版本,开始支持边缘端口属性自动探测功能。即如果端口从未收到过BPDU报文,则边缘端口属性自动生效(端口下不会自动生成stp edged-port enable配置)。
- V200R001版本及之后版本,如果端口已经配置stp edged-port enable,可以再配置根保护和环路保护,而其他版本会提示Error。
其他厂商实现
- H3C交换机STP相关命令配置与S系列交换机基本没有差异。
- H3C交换机默认采用legacy标准来计算路径开销,而S系列交换机默认为dot1t。在与S系列交换机对接时,建议配置相同的计算标准。
- 某些H3C老形态设备,全局不使能STP或全局使能端口不使能STP时,端口收到BPDU报文后,可以当做普通组播数据报文在VLAN内转发。S系列交换机端口默认会丢弃。
Cisco交换机所支持的生成树协议类型分别有:PVST(Per VLAN Spanning Tree)、PVST+(Per VLAN Spanning Tree Plus)、Rapid-PVST+(Rapid Per VLAN Spanning Tree Plus)和MST(Multiple Spanning Tree)。这几种生成树协议的某些BPDU报文采用其私有的报文格式,与IEEE标准的BPDU报文格式不一样。
- 当Cisco交换机运行私有的PVST+或Rapid-PVST+生成树协议时,与S系列交换机能否互通,取决于Cisco侧的端口链路类型:
- 如果端口链路类型为trunk且退出VLAN 1,与S系列交换机无法实现互通。Cisco侧端口在非VLAN 1中发送其私有的BPDU报文,S系列交换机默认不会处理该报文,当做普通组播数据报文进行转发,可以通过配置l2protocol-tunnel进行透传。S系列盒式交换机通过l2protocol-tunnel透传PVST+报文时,全局需要配置bpdu mac-address 0100-0ccc-cccd。
- 如果端口链路类型为trunk而且加入VLAN 1,只可以在VLAN 1中与S系列交换机互通。
- 如果端口链路类型为access,可以与S系列交换机互通。
- 当Cisco交换机运行MST协议时,可以理解为标准的MSTP模式,可以与S系列交换机互通。但是需要注意:在使用MSTP协议的S系列交换机与使用MST的Cisco交换机采用相同的域配置(域名、修订级别、VLAN与实例的映射关系)的情况下,要想实现域内互通,需要在S系列交换机端口配置摘要侦听功能stp config-digest-snoop。这是两者由于采用不同的密钥来生成MSTP的摘要信息,因此端口发送的BPDU报文中的摘要信息不同。由于摘要信息不同,则属于不同的MST域,会进行域间互通。
注意以下介绍的STP是狭义的STP,即IEEE 802.1D-1998 中定义的STP 协议。
STP原理
协商原则
STP协议是根据4个维度进行选举协商的,设备之间通过发送BPDU报文,经过4个维度的比较,最终会阻塞综合能力最差的端口。
选举维度(桥ID,累计根路径开销,发送设备BID,发送端口PID)
维度 | 定义 | 作用 |
桥ID | BID(Bridge ID),是由16位的桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。 | 确定根桥。桥ID最小的设备会被选举为根桥。 |
累计根路径开销 | 某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的路径开销累加而成。 | 选举根端口、指定端口和阻塞端口时使用。 |
发送设备BID | 发送BPDU报文的桥ID。 | 选举根端口、指定端口和阻塞端口时使用。 |
发送端口PID | 发送BPDU报文的端口ID。 PID由两部分构成的,高4位是端口优先级,低12位是端口号。 | 只在存在Backup端口时使用。 |
角色和状态
经过4个维度的比较,最终会协商出端口的角色和状态,确定报文流量的转发路径。STP角色的定义,如图所示。
- 根桥:就是桥ID最小的设备。桥ID是由16位的桥优先级与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。华为交换机默认桥优先级都是32768。所以在不修改桥优先级时,MAC地址最小的设备就是根桥。
- 指定端口:就是负责转发BPDU报文的端口。根桥上的端口都是指定端口。该端口可以正常转发流量。
- 根端口:就是去往根桥路径开销最小的端口。该端口可以正常转发流量。
- 阻塞端口:就是禁止转发流量的端口。
从上面的官方定义,可以看出:STP协商完成后,端口要么被阻塞,要么正常转发报文。其实在STP进行协商的过程中,是有一些中间状态的。
端口状态 | 目的 | 说明 |
Forwarding | 端口既转发用户流量也处理BPDU报文。 | 只有根端口或指定端口才能进入Forwarding状态。 |
Learning | 设备会根据收到的用户流量构建MAC地址表,但不转发用户流量。 | 过渡状态,增加Learning状态防止临时环路。 |
Listening | 确定端口角色,将选举出根桥、根端口和指定端口。 | 过渡状态。 |
Blocking | 端口仅仅接收并处理BPDU,不转发用户流量。 | 阻塞端口的最终状态。 |
报文格式
STP协议报文是通过BPDU报文封装的,目的MAC是组播MAC:01-80-C2-00-00-00,封装格式是IEEE 802.3。
BPDU报文处理流程
BPDU报文的分类
-
- 配置BPDU报文:根据Flags标记位,分为3类
第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文
第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文
第三类配置BPDU报文:Flags的TCA位置为0,TC位置为1的配置BPDU报文
-
- TCN BPDU报文: BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文
BPDU报文的处理流程
BPDU报文格式
- 配置BPDU报文:BPDU Type为0x00的BPDU报文,都叫做配置BPDU报文
- 第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文
该报文用于STP状态的协商和维持。具体报文格式如下:
- 第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文
该报文用于通知下游设备停止发送TCN BPDU报文。具体报文格式如下:
- 第二类配置BPDU报文: Flags的TCA位置为0,TC位置为1的配置BPDU报文
该报文用于通知下游设备删除MAC地址表项。具体报文格式如下:
- TCN BPDU报文:BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文,用于通知上游设备网络拓扑变更。具体报文格式如下:
使用注意事项
- 盒式交换机需要通过“bpdu enable”使能BPDU报文上送CPU处理的功能,才能使STP报文上送CPU处理,否则STP状态无法收敛。
V100R005及之前版本,在S2700系列设备,检查全局是否配置bpdu enable;其他系列盒式交换机,检查物理端口、Eth-trunk接口下是否配置bpdu enable。
V100R006及后续版本,对应形态设备全局或端口默认使能bpdu enable。
- Eth-Trunk接口使能STP时,建议修改Eth-Trunk接口的cost值使其小于物理端口的cost值,使其不易协商为备份端口。一是因为Eth-Trunk接口的开销为单个成员接口的开销除以成员接口数量,当成员口状态变化时Eth-trunk接口的cost值会变化;二是cost值越小说明链路质量越高。
- 通过命令“display stp brief”查看端口状态时,只会显示使能STP且UP的端口。
- 可以通过修改路径开销和发送者的BID,选择阻塞指定的端口。
配置举例
组网需求
如图所示,当前网络中SwitchA、SwitchB、SwitchC和SwitchD通过环形组网备份链路。希望通过运行生成树协议阻塞端口,将环形网络结构修剪成无环路的树形网络结构。
- 在主链路故障时,对切换到备份链路的时间要求不高,要求配置简单,所以这里使用STP模式。
- SwitchA设备的性能较高,希望作为根桥,SwithB为备份根桥。
- SwtichC和SwitchD设备连接用户,希望阻塞SiwtchC和SwitchD之间的链路。
- SwitchC和SwitchD连接用户的接口GE0/0/3不要参与STP计算。
配置思路
采用如下的思路配置STP:
- 配置模式是STP模式。
- 配置SwitchA为根桥,SwitchB为备份根桥。
- 统一使用默认路径开销。华为交换机默认的路径开销计算标准使用的是标准的dot1t。GE接口默认路径开销是20000,而Ethernet接口默认路径开销是200000。注意:eNSP模拟器中,STP的路径开销默认是1。
- SwitchC和SwitchD的GE0/0/3端口去使能STP协议。
- SwitchA、SwitchB、SwitchC和SwitchD使能STP协议。
操作步骤
步骤1:配置模式为STP模式。
<HUAWEI> system-view [HUAWEI] sysname SwitchA [SwitchA] stp mode stp |
<HUAWEI> system-view [HUAWEI] sysname SwitchB [SwitchB] stp mode stp |
<HUAWEI> system-view [HUAWEI] sysname SwitchC [SwitchC] stp mode stp |
<HUAWEI> system-view [HUAWEI] sysname SwitchD [SwitchD] stp mode stp |
步骤2:配置SwitchA为根桥,SwitchB为备份根桥。
[SwitchA] stp root primary //也可以使用命令stp priority 0 配置优先级为0,和stp root primary的作用是一样的。 |
[SwitchB] stp root secondary //也可以使用命令stp priority 4096 配置优先级为4096,和stp root secondary的作用是一样的。 |
步骤3:去使能SwitchB和SwitchC设备GE0/0/3端口的STP功能。
[SwitchC] interface gigabitethernet0/0/3 [SwitchC-GigabitEthernet0/0/3] stp disable [SwitchC-GigabitEthernet0/0/3] quit |
[SwitchD] interface gigabitethernet 0/0/3 [SwitchD-GigabitEthernet0/0/3] stp disable [SwitchD-GigabitEthernet0/0/3] quit |
步骤4:全局使能STP功能。
华为X7系列交换机默认是使能,该步骤可以省略。
[SwitchA] stp enable |
[SwitchB] stp enable |
[SwitchC] stp enable |
[SwitchD] stp enable |
步骤5:验证配置结果。
查看STP简要信息,通过STP简要信息可以快速的看出端口的角色和状态。
配置文件
SwitchA的配置文件
# sysname SwitchA # stp mode stp stp instance 0 root primary # return |
SwitchB的配置文件
# sysname SwitchB # stp mode stp stp instance 0 root secondary # return |
SwitchC的配置文件
# sysname SwitchC # stp mode stp # interface GigabitEthernet0/0/3 stp disable # return |
SwitchD的配置文件
# sysname SwitchD # stp mode stp # interface GigabitEthernet0/0/3 stp disable # return |
联系我们
相关文章:

华为交换机生成树STP配置案例
企业内部网络怎么防止网络出现环路?学会STP生成树技术就可以解决啦。 STP简介 在二层交换网络中,一旦存在环路就会造成报文在环路内不断循环和增生,产生广播风暴,从而占用所有的有效带宽,使网络变得无法正常通信。 在…...
Avalonia框架下实现热更新
在Avalonia框架下实现热更新(也称为动态加载或模块化更新),通常涉及程序集的动态加载与卸载,以及UI元素、视图模型或其他应用程序逻辑部分的实时替换。由于Avalonia本身是一个跨平台的GUI框架,并没有直接内置热更新机制…...

适用于各种危险区域的火焰识别摄像机,实时监测、火灾预防、安全监控,为安全保驾护航
火灾是一种极具破坏力的灾难,对人们的生命和财产造成了严重的威胁。为了更好地预防和防范火灾,火焰识别摄像机作为一种先进的监控设备,正逐渐受到人们的重视和应用。本文将介绍火焰识别摄像机在安全监控和火灾预防方面的全面应用方案。 一、火…...

react-router-dom5升级到6
前言 升级前版本为5.1.2 下载与运行 下载 npm install react-router-dom6运行 运行发现报错: 将node_modules删除,重新执行npm i即可 运行发现如下报错 这是因为之前有引用react-router-dom.min,v6中取消了该文件,所以未找到文件导致报错。…...

Linux调试工具—gdb
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:HEART BEAT—YOASOBI 2:20━━━━━━️💟──────── 5:35 🔄 ◀️ ⏸ ▶️ ☰ …...

SpringCloud(H版alibaba)框架开发教程之nacos做配置中心——附源码(2)
上篇主要讲了使用eureka,zk,nacos当注册中心 这篇内容是nacos配置中心 代码改动部分mysql驱动更新到8.0,数据库版本升级到了8.0,nacos版本更新到了2.x nacos2.x链接 链接:https://pan.baidu.com/s/11nObzgTjWisAfOp…...

网络摄像头爆破实战
*** 重要说明:仅用于交流网络安全测试技术,并唤起大家对网络安全的重视,如用本文的技术干违法的事情,博主概不负责。*** 文章目录 前言1. 发现摄像头2. 发现端口3. 确定品牌信息4. 确定RTSP地址5. 获取视频流6. 获取密码7. 再次获…...

亚信安慧AntDB数据并行加载工具的实现(二)
3.功能性说明 本节对并行加载工具的部分支持的功能进行简要说明。 1) 支持表类型 并行加载工具支持普通表、分区表。 2) 支持指定导入字段 文件中并不是必须包含表中所有的字段,用户可以指定导入某些字段,但是指定的字段数要和文件中的字段数保持一…...

【Java进阶篇】JDK新版本中的新特性都有哪些
JDK新版本中的新特性都有哪些 ✔️经典解析✔️拓展知识仓✔️本地变量类型推断✔️Switch 表达式✔️Text Blocks✔️Records✔️封装类✔️instanceof 模式匹配✔️switch 模式匹配 ✅✔️虚拟线程 ✔️经典解析 JDK 8中推出了Lambda表达式、Stream、Optional、新的日期API等…...
力扣labuladong一刷day49天迪杰斯特拉
力扣labuladong一刷day49天迪杰斯特拉 文章目录 力扣labuladong一刷day49天迪杰斯特拉一、743. 网络延迟时间二、1631. 最小体力消耗路径三、1514. 概率最大的路径 一、743. 网络延迟时间 题目链接:https://leetcode.cn/problems/network-delay-time/ 使用迪杰斯特…...

MCS接口技术----定时/计数,中断
目录 一.中断系统相关寄存器 1.51单片机中断系统的总体结构: 2.中断源的中断级别(由高到低): 3.与中断有关的四个寄存器: (1)TCON---定时控制寄存器 (2)IE---中断允…...

Java开发框架和中间件面试题(10)
目录 104.怎么保证缓存和数据库数据的一致性? 105.什么是缓存穿透,什么是缓存雪崩?怎么解决? 106.如何对数据库进行优化? 107.使用索引时有哪些原则? 108.存储过程如何进行优化? 109.说说…...
C++ 具名要求-基本概念-指定该类型对象可以从右值构造
指定该类型对象可以从右值构造 指定该类型的实例可以从一个右值实参构造。 要求 以下情况下,类型 T 满足可移动构造 (MoveConstructible) : 给定 T 类型的右值表达式 rv任意标识符 u 下列表达式必须合法且拥有其指定的效果 表达式后条件T u rv;u…...

Python如何把类当做字典来访问及浅谈Python类命名空间
Python如何把类当做字典来访问 Python把类当做字典来访问 定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下: class A:def __init__(self)…...

简述Redis备份策略以及对应的实现机制
引言 Redis作为高性能的内存数据库,数据的安全性至关重要。一旦数据丢失,可能会对业务造成重大影响。因此,备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …...

【5G PHY】5G 物理层加速卡介绍
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...
lftp学习笔记
目录 0. ftp vs. lftp1. 安装2. 常用命令2.1 登录2.2 文件管理2.3 文件传输 3. 脚本编程4. 实践中的问题排查参考 0. ftp vs. lftp lftp是一款文件传输工具,支持FTP、HTTP、SFTP、FISH等多种协议。 功能ftplftp数据传输文件文件、文件夹多线程传输支持断点续传支持…...

idea 插件开发之 HelloWorld
前言 本文使用的 idea 2023.3 版本进行插件入门开发,首先要说明的是 idea 2023 版本及以后的 idea,对插件开发进行了一定程度的变动: 1、创建项目时不再支持 maven 选项 2、必须是 jdk17 及以后版本(点击查看官网版本对应关系&…...

极速文件搜索工具Everything结合内网穿透实现远程搜索本地文件
文章目录 前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库,我们需要两个软件的支持,分别是cpolar(用于搭建内网穿透数据隧道…...

【PowerMockito:编写单元测试过程中采用when打桩失效的问题】
问题描述 正如上图所示,采用when打桩了,但是,实际执行的时候还是返回null。 解决方案 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常,所以在测试类中需要加入以下代码片段: Beforepublic void setUp() …...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手
华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...