一、环路的危害

1.现象

  • 链路指示灯快速闪烁

  • MAC表震荡:交换机频繁修改MAC地址表 → 转发失效。

2.环路危害造成的影响

  • 链路堵塞
  • 主机操作系统响应迟缓
  • 二层交换机管理缓慢
  • 冲击网关设备的CPU


三、STP的作用

1.STP基本原理

STP即生成树协议,它通过阻断冗余链路来消除桥接网络中可能存在的路径环路。在一个网络中,当存在多条路径连接不同的网络设备(如交换机,图中的 SWA、SWB、SWC )时,可能会形成物理环路,这会导致广播风暴、多帧复制等问题,影响网络的正常运行。STP 通过在交换机之间交换 BPDU(Bridge Protocol Data Unit,桥协议数据单元),来计算出一个无环的网络拓扑结构将某些端口设置为阻塞状态,从而避免网络环路的产生。

--怎么实现冗余链路的?

交换机通过交互 BPDU(网桥协议数据单元),比较报文中的 参数,依次选举出:

  1. 根网桥(全网唯一)

  2. 根端口(每台非根桥上唯一)

  3. 指定端口(每个网段唯一)
    未被选中的冗余端口将进入 阻塞状态从而消除二层环路。

2. STP的作用

  • 冗余链路:在网络中,冗余链路是为了提高网络的可靠性而设置的备份链路。比如图中被阻塞的链路,在正常情况下虽然不传输数据,但当网络中的其他链路出现故障时,它就可以发挥作用。
  • 故障恢复:当 当前正在使用的路径发生故障时,STP 会检测到链路状态的变化,然后激活之前被阻塞的冗余备份链路,恢复网络的连通性。例如,如果 SWA 和 SWC 之间的链路出现故障,原本被阻塞的 SWB 的 E0/20 端口可能会被重新激活,使得网络流量可以通过其他路径传输,保证网络的正常通信 。

3.STP报文


四、STP的工作原理

1. 基础逻辑:BPDU 交互

核心是交换机间通过交互 BPDU(桥协议数据单元 ),完成拓扑收敛,消除环路

BPDU 里包含网桥优先级、MAC 地址、路径开销等参数,交换机,依靠这些参数,确定网络角色(根网桥、端口角色 ),构建无环拓扑。

 2.BPDU参数

2.1网桥ID

由交换机的优先级和MAC地址组成网桥优先级取值范围必须在0-65535之中,同时也必须是4.96的倍数。

2.2端口ID

由发送端口的优先级与端口号组成。端口优先级取值范围0-255(默认128),必须是16的倍数。

2.3路径开销 

3. 角色选举

基于 BPDU 交互,STP 会依次完成以下关键动作,最终让网络无环且保留冗余:

3.1 选根网桥

  • 规则网桥优先级(默认 32768 )+ MAC 地址,数值越小越优先。
  • 作用:选 1 台 “主交换机” 当根,所有交换机以它为中心计算拓扑,避免多中心导致环路。

3.2 非根交换机选根端口

  • 规则:非根交换机上,选 “到根网桥路径开销最小” 的端口(路径开销由链路带宽等决定,带宽越小开销越大 )。
  • 作用:每台非根交换机只留 1 条最优 “上联根网桥” 的通道,避免同一设备多条路径回根引发环路。

3.3 每个网段选指定端口

  • 规则每个物理网段(如两台交换机之间的链路 )里,选 “到根网桥路径开销最小” 的端口(网段内所有设备对比,最终 1 个端口当选 )。

当每个交换机的根端口选举出来之后,切换视角,以链路为视角。链路两边的BPDU进行评比,选举角色。

1.如果两个端口中,一个是根端口,另一个就是指定端口

2.如果这个端口是根网桥上的端口,那么就一定是指定端口

3.如果另一端连接的是主机,那么这个端口一定时指定端口

4.看链路连接的两个端口中的BPDU,比较BPDU的优劣,优的一方作为指定端口,劣的一方作为堵塞端口。

  • 作用:保证每个网段只有 1 个 “转发端口” 向根网桥传递流量,防止网段内环路。

3.4 阻塞冗余端口(非根非指定端口)

  • 规则:既不是根端口、也不是指定端口的端口,进入阻塞(Blocking )状态,不转发用户数据(仅收 BPDU 维持拓扑 )。
  • 作用:直接 “切断” 冗余链路的转发功能,从物理拓扑上消除环路;但链路仍保留,故障时可自动激活。

3.4 逐个网段分析(以图为例)

(1)LANA 网段(连 SWA 和 SWB )

  • SWA 的端口:到根网桥(自己)的路径开销是 0(根网桥自己的开销为 0 ),所以 SWA 在 LANA 网段的端口总开销 = 0 + LANA 链路开销(4 )= 4 。
  • SWB 的端口:到根网桥的总路径开销是 4(SWB → LANA → SWA ,开销 4 ),所以 SWB 在 LANA 网段的端口总开销 = 4 + LANA 链路开销(4 )= 8 。

比较两个端口的总开销:4(SWA 端口) < 8(SWB 端口) → SWA 在 LANA 网段的端口被选为指定端口

(2)LANB 网段(连 SWA 和 SWC )

  • SWA 的端口:到根网桥开销 0 ,总开销 = 0 + LANB 链路开销(4 )= 4 。
  • SWC 的端口:到根网桥的总路径开销是 4(SWC → LANB → SWA ,开销 4 ),总开销 = 4 + LANB 链路开销(4 )= 8 。

比较后:4(SWA 端口) < 8(SWC 端口) → SWA 在 LANB 网段的端口被选为指定端口

(3)LANC 网段(连 SWB 和 SWC )

  • SWB 的端口:到根网桥的总路径开销是 4(SWB → LANA → SWA ),所以 SWB 在 LANC 网段的端口总开销 = 4 + LANC 链路开销(4 )= 8 。
  • SWC 的端口:到根网桥的总路径开销是 4(SWC → LANB → SWA ),所以 SWC 在 LANC 网段的端口总开销 = 4 + LANC 链路开销(4 )= 8 。

此时,路径开销相同,需要比 桥 ID:

  • SWB 的桥 ID:32768 + 00e0-fc41-4259
  • SWC 的桥 ID:32768 + 00e0-fc41-43b9

比较 MAC 地址(十六进制):00e0-fc41-4259 < 00e0-fc41-43b9 → SWB 的桥 ID 更小 → SWB 在 LANC 网段的端口被选为指定端口,SWC 对应的端口成为 Alternate Port(备用端口,阻塞状态 )。

(4)LAND 网段(连 SWB )

这个网段只有 SWB 一个交换机的端口(因为 LAND 是末端网段,没有其他交换机 )。根据规则,单个交换机的端口自动成为指定端口 → SWB 在 LAND 网段的端口是指定端口。

(5)LANE 网段(连 SWC )

同理,LANE 是末端网段,只有 SWC 的端口 → SWC 在 LANE 网段的端口自动成为指定端口

 综合分析:

4.STP协议报文

五、STP解决临时环路问题

1 .STP端口状态

STP 为了避免网络环路,给交换机端口定义了 5 种状态,不同状态下端口的行为(收发 BPDU、学习 MAC、转发数据)不同,目的是有序控制端口角色,逐步放开数据转发,防止环路

端口状态中文描述转发数据帧学习 MAC 地址表参与生成树计算处理 BPDU
Disabled端口没有启用
Blocking阻塞状态接收并处理
Listening侦听状态接收并发送
Learning学习状态接收并发送
Forwarding转发状态接收并发送

2. 时间计时器

STP 中的计时器用于控制 BPDU 的传播和端口状态的转换,进一步防止临时环路。

Hello Timer(Hello 时间)

作用:根网桥周期性发送 “配置 BPDU” 的时间间隔,默认 2 秒

 触发:非根网桥靠收根桥的 BPDU 维持状态,若收不到,会触发拓扑重新计算。

Forward Delay(转发时延)

作用:端口状态迁移的 “过渡时间”,默认 15 秒,控制 “监听→学习→转发” 的等待时长。

  •  端口从监听状态到学习状态,需要等待一个 Forward Delay 时长,即 15 秒;
  •  从学习状态到转发状态 ,又需要等待一个 Forward Delay 时长,同样是 15 秒。
  •  所以,端口从监听状态最终进入转发状态,经历了两次 Forward Delay 的等待, 总计 30 秒。
Message Age(消息老化时间)

作用:记录 “配置 BPDU 从根网桥生成后,到当前交换机的时间”,每经过一个交换机,Message Age 会累加(默认每跳 + 1 )。

网桥在转发 BPDU 时,会根据 Message Age 判断 BPDU 的时效性。如果 Message Age 超过 Max Message Age,网桥会认为该 BPDU 已经过期,不再使用这个 BPDU 中的信息,可能会导致端口状态的重新计算和迁移。例如,当网络中的链路出现故障,BPDU 的传递路径发生改变,Message Age 可能会增加,若超过限制,端口可能会重新进入阻塞状态,重新参与生成树计算 。

Max Message Age(最大老化时间)

作用规定了配置 BPDU 存活的最大时间,默认 20 秒(10 个 Hello 周期) ,用于保证 BPDU 信息的有效性。

与端口状态迁移联系:非根网桥若超过 20 秒没收到新 BPDU,会认为根桥可能故障,触发重新选举根桥和拓扑计算。

3.STP 的传统缺陷—— 拓扑变化时收敛慢 

4.拓扑发生改变处理机制

4.1触发条件

前提:拓扑变化触发

情况 1:网络里新接了一台交换机,或者原本阻塞的端口(Blocking)被激活,变成 Forwarding 状态(能转发流量了 )。

  • 条件细化
    不仅要 “有端口进入 Forwarding”,还得满足 “该交换机至少有一个指定端口(Designated Port)” 。
    • 解释:“指定端口” 是 STP 里每个网段(链路)中负责转发 BPDU 的端口,有指定端口说明交换机在网络里 “有正式角色”,不是孤立的。如果新激活的端口所在交换机是 “孤网”(没指定端口),就算端口状态变,也不用发 TCN(发了也没人处理 )。

情况 2:有端口 “丢失活跃链路”(从 Forwarding/Learning 转 Blocking)

  • 场景:常见的如链路中断(网线被拔、设备断电 )、端口被手动关闭,或者 STP 重新计算后,端口从 Forwarding(转发流量 )或 Learning(学习 MAC 地址 )状态,被迫变成 Blocking(阻塞,不转发流量,防止环路 )。
  • 本质:原本能转发 / 学习的路径失效了,网络拓扑实际 “断了一块”,需要通知全网更新。

 4.2 TCN BPDU

在STP中,只有根网桥才能发送配置BPDU,下面的拓扑发生改变,根网桥是不知道的。所以需要定义一个新的BPDU用于通知根网桥——TCN BPDU。又为了保证可靠性,就有了TCA BPDU。上游交换机根网桥一旦收到TCN BPDU,那么就会发送TC置为的BPDU,通知各个网桥更改MAC表的老化时间由300s改为15s。

4.3 TCA 及TC置为的BPDU

    4.5.总结

      1.流程分步解析

    1. (绿虚线,TCN 消息)SWD → SWC:上报拓扑变化

    SWD 发现链路中断,符合 TCN拓扑变化通知,于是向自己的指定上游交换机(SWC ) 发 TCN BPDU ,说 “拓扑变啦,快处理” 。

    2. (红虚线,TCA 消息)SWC → SWD:确认收到 TCN

    SWC 收到 SWD 的 TCN 后,需要回复 TCA拓扑变化确认,告诉 SWD“我收到消息了,你别一直发” 。这一步是 “确认机制”,避免 TCN 消息一直刷屏 。

    3. (绿虚线,TCN 消息)SWC → SWA:继续上报给根桥

    SWC 除了回 TCA 给 SWD ,还要把 TCN 消息继续往根桥(SWA ) 转发(因为拓扑变化必须让根桥知道,根桥才能发全网更新指令 ),同样走 “逐级上报” 逻辑 。

    4. (紫实线,TCA 消息)SWA → SWB、SWA → SWC:根桥回 TCA

    根桥 SWA 收到 SWC 转发的 TCN 后,会向所有非根桥交换机(这里是 SWB、SWC ) 发 带 TCA 置位的配置 BPDU ,确认 “我收到拓扑变化消息了” 。这一步是根桥对全网的 “确认反馈” 。

    5. (紫实线,TC 置位 BPDU )SWA → SWB、SWA → SWC:根桥发全网更新指令

    根桥 SWA 确认拓扑变化后,开始发 带 TC(Topology Change,拓扑变化执行)置位的 BPDU ,告诉所有交换机:“拓扑变了,赶紧把 MAC 地址表老化时间从默认 300 秒改成 15 秒” 。这样交换机能快速老化旧表项,重新学习新拓扑下的 MAC 映射,保证流量转发正确 。

    6. (隐含逻辑)全网更新 MAC 表

    所有收到 TC 置位 BPDU 的交换机(SWB、SWC、SWD 等 ),会加速老化自己的 MAC 地址表。比如原本主机 A 走 SWB→SWD 的路径,链路断了后,新路径可能变 SWB→SWC→SWD ,加速老化能让交换机更快 “忘掉” 旧路径,学习新路径的 MAC 映射,网络重新收敛 。

    当拓扑变化(如链路故障)时:

    检测变化的交换机向根网桥发送 TCN  BPDU。

    上游交换机收到TCN BPDU会给下游交换机回复一个TCA BPDU,同时将TCN BPDU传给根网桥。

    根桥收到后广播 TC  BPDU,通知全网:

    全网桥收到后,缩短MAC表老化时间(默认300秒 → 15秒) 快速清除旧路径的MAC地址。 

    5.网络拓扑变化--STP网络收敛

    在生成树协议中,直接收敛和间接收敛是网络拓扑发生变化后,生成树重新计算并达到稳定状态的两种不同方式。

    5.1直接收敛

    SW3 的阻塞端口能直接收到根网桥(SW1)的 BPDU,直接切换为根端口,经 “监听→学习→转发”(2 个 Forward Delay,默认 15 秒 / 个,共 30 秒 )完成收敛。 

    5.2 间接收敛

    SW2 收不到根网桥 BPDU,“自封” 根网桥,收敛时间50秒。

    将检测拓扑变化的最长时间(Max Message Age)和端口状态迁移的总时间相加,就得到了间接收敛的大致时长:20 秒(Max Message Age) + 30 秒(两次 Forward Delay) = 50 秒。

    5.3 直接收敛vs间接收敛

    若故障导致交换机失去到达根桥的唯一路径需要重新选举根端口,则一定是间接收敛

    图中,SW2的根端口发生故障,指定端口对面又是堵塞端口,所以没有路能通往根桥了,就是间接收敛。

    六、STP 的缺点

    1.收敛时间长(主动收敛,被动收敛,拓扑改变TCN,MAC表老化)

    2.处理拓扑改变机制不灵活(主机频繁上下线时,网络会缠上大量TCN)

    1. 收敛速度极慢(30-50秒)

    根源

    • Blocking→Listening→Learning→Forwarding 强制等待 50秒(20秒 Max Age + 15秒×2 Forward Delay)。

     2.处理机制不灵活

    • TCN机制低效
      拓扑变更需逐级上报至根桥 → 延迟高,且根桥单点瓶颈。

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

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

    相关文章

    RAGFLOW~knowledge graph

    start 为了增强多跳问答&#xff0c;RAGFlow在数据提取和索引之间增加了一个知识图谱构建步骤&#xff0c;如下面所示。这一步骤会从您指定的分块方法生成的现有块中创建额外的块。 从v0.16.0版本开始&#xff0c;RAGFlow支持在知识库上构建知识图谱&#xff0c;允许你在知识库…

    机器学习【二】KNN

    KNN算法是一种基于实例的惰性学习算法&#xff0c;其核心思想是通过"多数投票"机制进行分类决策。算法流程包括数据准备&#xff08;需归一化处理&#xff09;、距离计算&#xff08;常用欧氏距离&#xff09;、选择K值&#xff08;通过交叉验证确定&#xff09;和决…

    preloader

    patch调试串口115200--- a/platform/ac8257/default.makb/platform/ac8257/default.mak-40,7 40,7 CFG_USB_DOWNLOAD :1CFG_FUNCTION_PICACHU_SUPPORT :1CFG_PMT_SUPPORT :0CFG_UART_COMMON :1 -CFG_LOG_BAUDRATE :921600 CFG_LOG_BAUDRATE :115200CFG_EVB_UART_CLOCK :260000…

    Linux基础(三)——Bash基础

    1、Bash基础1.1 Bash简介从前边操作系统的组成介绍中&#xff0c;我们可以知道操作系统为上层用户提供的与内核进行交互的接口称为shell&#xff0c;其在系统中的位置如下图所示&#xff0c;shell作为内核和用户之间的中介&#xff0c;接收用户发送的指令&#xff0c;将其解析为…

    Python 元编程实战:动态属性与数据结构转换技巧

    在处理复杂嵌套的 JSON 数据源时&#xff0c;我们常面临访问不便、结构不灵活、字段关联性差等问题。本文将以 O’Reilly 为 OSCON 2014 提供的 JSON 数据源为例&#xff0c;系统讲解如何通过 动态属性转换、对象封装、数据库映射与特性&#xff08;property&#xff09;机制&a…

    Android-侧边导航栏的使用

    在学习之前&#xff0c;我们先得知道侧边导航栏是什么&#xff1f;它是一个 可以让内容从屏幕边缘滑出的布局容器&#xff0c;由安卓官方提供&#xff0c;用于创建侧边菜单&#xff0c;通常搭配 NavigationView 使用&#xff1b;添加依赖&#xff1a;在app下的build.gradle中添…

    lesson30:Python迭代三剑客:可迭代对象、迭代器与生成器深度解析

    目录 一、可迭代对象&#xff1a;迭代的起点 可迭代对象的本质特征 可迭代对象的工作原理 自定义可迭代对象 二、迭代器&#xff1a;状态化的迭代工具 迭代器协议与核心方法 迭代器的状态管理 内置迭代器的应用 三、生成器&#xff1a;简洁高效的迭代器 生成器函数&a…

    实时语音流分段识别技术解析:基于WebRTC VAD的智能分割策略

    引言 在现代语音识别应用中&#xff0c;实时处理音频流是一项关键技术挑战。不同于传统的文件式语音识别&#xff0c;流式处理需要面对音频数据的不确定性、网络延迟以及实时性要求等问题。本文将深入解析一个基于WebRTC VAD&#xff08;Voice Activity Detection&#xff09;…

    word中rtf格式介绍

    RTF&#xff08;Rich Text Format&#xff0c;富文本格式&#xff09;是一种由微软开发的跨平台文档文件格式&#xff0c;用于在不同应用程序和操作系统之间交换格式化文本。以下是对RTF格式的简要说明&#xff1a; RTF格式特点 跨平台兼容性&#xff1a;RTF文件可以在多种文字…

    Springboot 配置 doris 连接

    Springboot 配置 doris 连接 一. 使用 druid 连接池 因为 Doris 的前端&#xff08;FE&#xff09;兼容了 MySQL 协议&#xff0c;可以像连 MySQL 一样连 Doris。这是 Doris 的一个核心设计特性&#xff0c;目的是方便接入、简化生态兼容。 首先需要引入 pom 依赖:<dependen…

    Linux 系统启动与 GRUB2 核心操作指南

    Linux 系统启动与 GRUB2 核心操作指南 Linux 系统的启动过程是一个环环相扣的链条&#xff0c;从硬件自检到用户登录&#xff0c;每一步都依赖关键组件的协作。其中&#xff0c;GRUB2 引导器和systemd 进程是核心枢纽&#xff0c;而运行级别则决定了系统的启动状态。以下是系统…

    供应链分销代发源码:一站式打通供应商供货、平台定价、经销商批发及零售环节

    在当前复杂的市场环境中&#xff0c;供应链管理成为企业发展的关键。尤其对于电商平台来说&#xff0c;高效、精准的供应链管理不仅能提升运营效率&#xff0c;还能增强市场竞争力。为了应对日益复杂的供应链挑战&#xff0c;核货宝供应链分销代发系统应运而生&#xff0c;旨在…

    机器学习、深度学习与数据挖掘:核心技术差异、应用场景与工程实践指南

    技术原理与核心概念数据挖掘作为知识发现的关键技术&#xff0c;其核心在于通过算法自动探索数据中的潜在模式。关联规则挖掘可以发现项目之间的有趣关联&#xff0c;如经典的"啤酒与尿布"案例&#xff1b;聚类分析能够将相似对象自动分组&#xff0c;常用于客户细分…

    《C++初阶之STL》【stack/queue/priority_queue容器适配器:详解 + 实现】(附加:deque容器介绍)

    【stack/queue/priority_queue容器适配器&#xff1a;详解 实现】目录前言&#xff1a;------------标准接口介绍------------一、栈&#xff1a;stack标准模板库中的stack容器适配器是什么样的呢&#xff1f;1. 栈的基本操作std::stack::topstd::stack::pushstd::stack::pop2…

    Thymeleaf 模板引擎原理

    Thymeleaf 的模板文件&#xff0c;本质上是标准的 HTML 文件&#xff0c;只是“加了标记&#xff08; th&#xff1a;&#xff09;的属性”&#xff0c;让模板引擎在服务端渲染时能 识别并处理 这些属性&#xff0c;从而完成数据&#xff08;model&#xff09; 的填充。<!DO…

    5、生产Redis高并发分布式锁实战

    一、核心问题与解决方案 问题本质 #mermaid-svg-W1SnVWZe1AotTtDy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-W1SnVWZe1AotTtDy .error-icon{fill:#552222;}#mermaid-svg-W1SnVWZe1AotTtDy .error-text{fill:#5…

    CS231n-2017 Lecture8深度学习框架笔记

    深度学习硬件&#xff1a;CPU:CPU有数个核心&#xff0c;每个核心可以独立工作&#xff0c;同时进行多个线程&#xff0c;内存与系统共享GPU&#xff1a;GPU有上千个核心&#xff0c;但每个核心运行速度很慢&#xff0c;适合并行做类似的工作&#xff0c;不能独立工作&#xff…

    以ros的docker镜像为例,探讨docker镜像的使用

    标题以ros的docker镜像为例&#xff0c;探讨docker镜像的使用&#xff08;待完善&#xff09; 1. docker介绍&#xff08;以ros工程距离&#xff09; &#xff08;1&#xff09;个人理解&#xff1a;docker就是一个容器&#xff0c;主要的作用就是将环境打包好&#xff0c;方…

    Android Audio实战——TimeCheck机制解析(十三)

    上一篇文章我们虽然通过 tombstoned Log 推断出 audioserver 崩溃的原因就是系统调用内核接口时发生阻塞,导致 TimeCheck 检测超时异常而崩溃,但并没有实质性的证据证明是 kernel 层出现问题导致的崩溃,因此这里我们继续看一下 TimeCheck 的检测原理。 一、TimeCheck机制 T…

    飞机大战小游戏

    1.视觉设计&#xff1a;采用柔和的蓝紫色渐变背景&#xff0c;营造梦幻感飞机、敌机和子弹使用柔和的糖果色调添加了粒子爆炸效果&#xff0c;增强视觉反馈星星收集物增加游戏趣味性2.游戏机制&#xff1a;玩家使用左右方向键控制飞机移动空格键发射子弹P键暂停游戏击落敌机获得…