网络工程师修仙指北---STP(Spanning Tree Protocol)

news/2025/4/2 13:00:39/文章来源:https://www.cnblogs.com/littlejere/p/18803354

网络工程师修仙指北---STP(Spanning Tree Protocol)

Hello哇,欢迎来到《网络工程是修仙指北系列》,今天我们接着上一篇VLAN的内容,继续为大家介绍网络交换二层技术中另一个重要的内容---STP

一口小酒🍸,一首歌📻,阿轩带你修成仙!

上一篇中我们讲到,通过VLAN的技术可以实现交换机之间通过一根线缆能够实现所有VLAN间的通信。

那么大家有没有想过一个问题,就是如果我这根线缆出现了故障,那是否就意味着我所有的通信就中断了呢?那么我又没有什么方法避免呢?

有的人可能就会说了,那可以再接一根线,这样一根线断了的话另一根还在。

没错,这确实是一个好办法,但是有没有想过这样的一个问题呢:

如图:

image-20250401010115976

我们说交换机是工作在二层的,他们之间的通信和信息的宣告是通过ARP广播报文来实现的.

假设现在A和B都是两个全新的交换机;

那么当交换机刚开机的时候,我们以交换机A为例,首先它看到的是我在0/3接口上对应的一个11的地址,然后我发送广播,架设从0/1发送,那么B接收,并查看MAC地址表,这个时候发现B上面是没有MAC地址表的,所有我接收完成后会再发送广播,这个广播将从0/1和0/3发送;

这个时候A将从0/2接收到B发送的广播报文,那A就会产生疑惑,为什么我之前记录的是11对应的是从0/3过来的,现在变成了0/2?

那这个时候是不是就产生了环路呢?

这其实就是我们所说的二层环路,二层环路是一件很危险的事情的,二层的环路会带来广播风暴,大量的广播风暴会使交换机高负荷工作,轻则设备宕机,严重的甚至会造成设备过温,烧坏硬盘,配置丢失

那么我们有没有一种技术,既能够避免二层环路的产生,又能够支持我接入多条链路为主用链路做备份呢?

这其实就是STP协议出现的初衷

STP的好处

讲到这里,其实我们能够很清楚的看到,STP的好处就是避免二层网络出现环路,避免二层网络中的广播风暴的产生

STP的工作原理

其实STP的工作原理就是在逻辑上把交换机中的一个端口断开,防止环路的产生,当主用链路故障的时候,会将这个端口自动启起来,开启备用链路,恢复通信(不要指望能够很快,这个后面应该会讲到---如果没有喝多的话)

STP的算法

那么STP是如何工作呢?STP的工作大致遵循下面的几个步骤:

首先STP需要选择根网桥;

其次选择根端口;

第三选择指定端口;

最后将其余端口逻辑down掉。

接下来我们依次来讲解每个步骤的工作内容和规则

选择根网桥

生成树协议,你就想象成有一棵树,有树的话就必须要有根

那么这个根要如何定义呢,主要是遵循以下规则:选择根网桥ID最小的作为根

那么什么是根网桥ID呢?

网桥ID即BID(Bridge ID),是由网桥优先级+网桥MAC组成的。

网桥优先级的取值范围为0-61440,默认值是32768,所以一般没有特殊设定的话我们在选取根的时候是选择网桥MAC地址最小的,当然优先级是能够手动指定的。

手动配置的话需要遵循以下几点:

  1. 必须是2的整数倍
  2. 必须是16的证书倍
  3. 最小值是4096

因此常用的优先级为4096/8192/24576/32768

选择根端口

选择完根网桥后,需要选择根端口。

根端口是用来做什么的呢?

根端口是用来接收从根过来的消息的端口,所以必须是要在非根网桥上去进行选择,并且选择一个到达根最近的端口作为根端口

根端口的选择遵循以下顺序:

  1. 最低的到达根网桥的路径开销,带宽越高,开销越小,如果开销值一致,则进行下一步比较;
  2. 最低的发送方网桥ID,如果一样,则进行下一步比较;
  3. 最低的端口优先级,端口优先级的取值范围是0-240,默认是128,如果一致则进行下一步比较;
  4. 发送方最低的端口ID,每个端口都有端口ID,端口ID由端口优先级+端口编号组成

选择指定端口

指定端口是指用来传递消息的端口

首先需要确认的一点就是,根网桥上的所有端口都是指定端口。

这个应该就很好理解了,根网桥,所有的端口肯定都要传递数据转发数据帧的,总不至于把根都切断了吧(断。。。。根。。。。。断子绝孙?😱👀)

所以指定端口是在非根网桥上进行选择的,需要遵循以下四步:

  1. BPDU中的根网桥ID
  2. 到达根网桥的最低开销
  3. 发送方的网桥ID
  4. 若优先级相同则选择最低MAC地址

BPDU

那么在STP协议中,端口的变化,或者说选举过程中的数据包和信息又要通过什么来传递呢?

STP的信息其实是通过BPDU来传递的,我们可以将BPDU理解为信息的载体,将需要比较的信息来进行传递和交换

BPDU是通过组播来传递的,组播地址为01-80-C2-00-00-00

BPDU其实分为两种:

  1. 配置BPDU,用于首次生成树的计算
  2. 拓扑变更BPDU(TCN BPDU),用于通告网络拓扑的变化

在一个二层网络中,不太可能说是不限制整个网络的大小的,所以在BPDU中由一个参数叫Message Age,从根出来的Message Age的值为0,每经过一个交换机,该值加一,默认的最大值为20,当Message Age的值达到Max Age值的时候,非根网桥将丢弃该配置BPDU

image-20250401001925888

那么前面我们说了STP的作用主要是将端口逻辑Down掉,那么其实在STP中有以下几种端口状态:

端口状态

  1. 禁用状态,Disable,不发送不接收BPDU,不学习MAC,不转发
  2. 阻塞,Discarding,不发送BPDU,但接收BPDU,不学习MAC,不转发数据
  3. 侦听,Listening,发送和接收BPDU,不学习MAC,不转发数据
  4. 学习,Learning,学习MAC,发送和接收BPDU
  5. 转发,Forwarding,发送和接收BPDU,学习MAC地址,转发数据

侦听和学习称为中间态,是端口状态变化的中间状态

image-20250401004753857

根据上图,我们知道,端口从阻塞状态变为转发状态总共需要50秒的时间,也就是前面讲的当主用链路故障的时候,会将这个端口自动启起来,开启备用链路,恢复通信所需要的时间

实验

## 实验目的

令SWA是VLAN1的主根桥,在VLAN 1的STP中阻塞SWC的E0/0/2端口,当SWA失效时,SWB接替SWA成为VLAN1的主根桥

image-20250401004955460

----------

SWA:

<Huawei><Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]sysname SWA[SWA]undo info-center enableJan  9 2025 16:52:19-08:00 SWA DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25.191.3.1 configurations have been changed. The current change number is 4, the change loop count is 0, and the maximum number of records is 4095.Info: Information center is disabled.[SWA]stp enable[SWA]stp mode stpInfo: This operation may take a few seconds. Please wait for a moment...done.[SWA]interface E0/0/1[SWA-Ethernet0/0/1]port link-type trunk[SWA-Ethernet0/0/1]port trunk allow-pass vlan all[SWA-Ethernet0/0/1]interface E0/0/2[SWA-Ethernet0/0/2]port link-type trunk[SWA-Ethernet0/0/2]port trunk allow-pass vlan all[SWA-Ethernet0/0/2]stp priority 4096[SWA]display current-configuration \#sysname SWA\#undo info-center enable\#stp mode stpstp instance 0 priority 4096\#cluster enablentdp enablendp enable\#drop illegal-mac alarm\#diffserv domain default\#drop-profile default\#aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http\#interface Vlanif1\#interface MEth0/0/1\#interface Ethernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094\#interface Ethernet0/0/2port link-type trunkport trunk allow-pass vlan 2 to 4094[SWA]display stp brief MSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  FORWARDING      NONE0    Ethernet0/0/2               DESI  FORWARDING      NONE

SWB:

<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]sysname SWB[SWB]stp enable[SWB]stp mode stpInfo: This operation may take a few seconds. Please wait for a moment...done.[SWB]interface E0/0/1[SWB-Ethernet0/0/1]port link-type trunk[SWB-Ethernet0/0/1]port trunk allow-pass vlan all[SWB-Ethernet0/0/1]interface E0/0/2[SWB-Ethernet0/0/2]port link-type trunk[SWB-Ethernet0/0/2]port trunk allow-pass vlan all[SWB-Ethernet0/0/2]stp priority 8192[SWB]display current-configuration \#sysname SWB\#undo info-center enable\#stp mode stpstp instance 0 priority 8192\#cluster enablentdp enablendp enable\#drop illegal-mac alarm\#diffserv domain default\#drop-profile default\#aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http\#interface Vlanif1\#interface MEth0/0/1\#interface Ethernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094\#interface Ethernet0/0/2port link-type trunkport trunk allow-pass vlan 2 to 4094\#[SWB]  display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  FORWARDING      NONE0    Ethernet0/0/2               ROOT  FORWARDING      NONE

关闭SWA后,SWB状态变化

[SWB]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  DISCARDING      NONE[SWB]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  LEARNING        NONE[SWB][SWB]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  LEARNING        NONE[SWB]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  LEARNING        NONE[SWB]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  FORWARDING      NONE[SWB]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               DESI  FORWARDING      NONE

SWC:

<Huawei><Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]sysname SWC[SWC]stp enable [SWC]stp mode stpInfo: This operation may take a few seconds. Please wait for a moment...done.[SWC]interface E0/0/1[SWC-Ethernet0/0/1]port link-type trunk[SWC-Ethernet0/0/1]port trunk allow-pass vlan all[SWC-Ethernet0/0/1]interface E0/0/2[SWC-Ethernet0/0/2]port link-type trunk[SWC-Ethernet0/0/2]port trunk allow-pass vlan all[SWC-Ethernet0/0/2]display current-configuration \#sysname SWC\#undo info-center enable\#stp mode stp\#cluster enablentdp enablendp enable\#drop illegal-mac alarm\#diffserv domain default\#drop-profile default\#aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http\#interface Vlanif1\#interface MEth0/0/1\#interface Ethernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094\#interface Ethernet0/0/2port link-type trunkport trunk allow-pass vlan 2 to 4094\#[SWC]display stp brief MSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               ROOT  FORWARDING      NONE0    Ethernet0/0/2               ALTE  DISCARDING      NONE

关闭SWA后,SWC状态变化

[SWC]display stp brief MSTID  Port                        Role  STP State     Protection0    Ethernet0/0/1               ROOT  FORWARDING      NONE0    Ethernet0/0/2               ALTE  DISCARDING      NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  DISCARDING      NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  LEARNING        NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  LEARNING        NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  LEARNING        NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  LEARNING        NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  FORWARDING      NONE[SWC]display stp briefMSTID  Port                        Role  STP State     Protection0    Ethernet0/0/2               ROOT  FORWARDING      NONE

最后,给各位兄弟们加点氮!

图片

部分图片来源于网络,如有侵权请联系删除

See yo!

Motto: Actions speak louder than words.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908923.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「通义灵码+X」公开课开讲啦!和赛博同桌一起完成开发任务 有奖励

在AI技术重塑未来的今天,阿里云通义灵码团队携手高校开发者,推出「通义灵码+X系列公开课」暨赛博同桌计划,为编程学习注入全新活力!活动将于2025年3月12日至4月30日火热进行,无论你是技术小白还是代码达人,都能在这里找到与AI并肩学习的乐趣,赢取限定好礼!让AI成为你的…

云原生 Kafka 问卷调研启动,你的声音很重要!参与赢精美礼品!

Apache Kafka 作为高吞吐的分布式消息系统,支持实时数据采集、传输、存储及处理,广泛应用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等场景,是大数据生态的核心组件。然而,随着云计算的快速发展,传统 Kafka 架构在云环境中的局限性日益凸显。Apache Kafka 作…

掌握FastAPI与Pydantic的跨字段验证技巧

title: 掌握FastAPI与Pydantic的跨字段验证技巧 date: 2025/04/01 00:32:07 updated: 2025/04/01 00:32:07 author: cmdragon excerpt: FastAPI中的Pydantic跨字段一致性验证用于处理用户注册、表单提交等场景中多个字段的联合验证需求。Pydantic通过验证器装饰器和根验证器实…

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用作者:牧生 Spring AI Alibaba RAG Example 示例项目源码地址: https://github.com/springaialibaba/spring-ai-alibaba-examples/tree/main/spring-ai-alibaba-rag-example RAG 应用架构概述 1.1 核…

【2025】简易实用知网爬虫,过程加代码

知网是中国最大的学术文献数据库,包含了大量期刊、会议论文、学位论文和报纸等学术资源。尽管知网提供了强大的在线搜索功能,但用户有时需要通过程序自动化地获取大量文章信息。这时,我们会使用爬虫技术来帮助完成这项任务。 工具选择和前提条件 本次爬取工作,我们选择了 P…

RabbitMQ进阶--分布式事务案例

本节主要讲述一个案例,是使用rabbitmq实现分布式事务,本章从分布式事务以sping的声明式事务,转而到rabbitMQ的分布式事务,一下环境需要的依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp<…

[Rust] 首次接触Rust

最近听闻Rust已经逐步进入了Linux Kernel,而且一个很好用的软件yazi也是rust开发的,所以想了解一下rust的开发和使用。基本操作 官网 官网:快速配置 Rust 开发环境并编写一个小应用! 官方练习环境:Rust演练场 官方教材:学习Rust 下载 curl --proto =https --tlsv1.2 -sSf…

记录给linux/ubuntu的4T新硬盘分区、格式化并挂载

之前给服务器挂载硬盘最大也就是1.2T的,今天客户的一个服务器考虑到未来用户量上传文件比较大,就搞了个4T的盘 一、查询磁盘信息 由于是新盘,df -h 是查不到的然后通过 lsblk 命令就可以看到了二、尝试分区 然后就开始熟练的先分区,结果报错了The size of this disk is 4 …

智能运维,由你定义:SAE自定义日志与监控解决方案

通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。作者:久氢、丛霄、章进 背景 SAE【1】(Serverless 应用引擎)是…

【THM】Alfred 阿尔弗雷德

【THM】 Alfred 阿尔弗雷德 Initial Access 初始访问在这个房间,我们将学习如何利用广泛使用的自动化服务器(Jenkins - 此工具用于创建持续集成/持续开发管道,允许开发者在对其代码进行更改后自动部署代码)上的常见配置错误。之后,我们将使用一种有趣的权限提升方法来获取…

从零开始编译安装Nginx:详细步骤与实战配置(附避坑指南)——基于CentOS 7的保姆级教程

一、为什么需要创建专用Nginx用户? 在Linux系统中,为服务创建独立的运行用户是安全最佳实践。Nginx默认以nobody用户运行,但通过创建专用用户nginx,可以限制其权限,防止潜在的安全漏洞影响系统其他部分。 操作步骤: # 创建不可登录的nginx用户(-M不创建家目录,-s指定不…

3.31 格林公式及其应用

1.1 类比 一元函数的积分可以通过两个边界的函数表示 二元函数的积分就可以通过曲线的积分表示1.2 例题例题2(不完全封闭的写法