STP(生成树协议)

STP的基本概念

概述

  • STP是一个用于局域网中消除环路的协议。
  • 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
  • STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性
  • 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

桥ID

  • STP中,每一台交换机都有一个标示符,叫做Bridge ID或者IDID16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是065535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
  • 如图,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥。

根桥

  • STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP)。
  • 根桥是一个STP交换网络中的“树根”。
  • STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
  • STP网络中,桥ID最小的设备会被选举为根桥
  • BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。

Cost

  • 交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小
  • 华为交换机支持多种STP的路径开销计算标准,提供多厂商场景下最大程度的兼容性。缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。
  • 用户也可以根据需要通过命令调整接口的Cost

RPC(根路径开销)

  • STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC
  • 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加
  • 在本例中,SW3GE0/0/1接口到达根桥的RPC等于接口1Cost加上接口2Cost

Port ID

运行STP交换机的每个端口都有一个端口ID端口ID由高4 bit端口优先级和低12 bit端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。

BPDU

  • 为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。
  • BPDU有两种类型:配置BPDUTCN BPDU
  • 配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU
  • TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

配置BPDU报文格式

配置BPDU比较原则

STP的计算过程

STP 中定义了三种端口角色:指定端口,根端口和预备端口。
  • 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
  • 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
  • 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

选举根桥

  • STP在交换网络中开始工作后,每个交换机都会向网络中发送BPDU。配置BPDU中包含交换机自己的桥ID
  • 网络中拥有最小桥ID的交换机成为根桥。
  • 在一个连续的STP交换网络中只会存在一个根桥。
  • 桥的角色是可抢占的。
  • 为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0

选举根端口

  • 每一台非根桥交换机都会在自己的接口中选举出一个根接口。
  • 非根桥交换机上有且只会有一个根接口。
  • 当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口。
  • 可以形象地理解为,根接口是每台非根桥上“朝向”根桥的接口。

根端口选举规则:

  1. 选择RPC(根路径开销)最低的端口。
  2. 若有多个端口的RPC相等,选择对端桥ID最低的端口。
  3. 若有多个端口的对端桥ID相等,选择对端端口ID最低的端口。
  4. 若有多个端口的对端端口相等,选择本端端口ID最低的端口。

选举指定端口

网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口。因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU,一般情况下,根桥的所有接口都是指定接口。

指定端口的选举规则:

  1. 选择RPC(根路径开销)最低的端口。
  2. 若有多个端口的RPC相等,选择桥ID最低的端口。
  3. 若有多个端口的桥ID相等,选择端口ID最低的端口。

堵塞预备端口

  • 一台交换机上,既不是根接口,又不是指定接口的接口被称为预备接口。
  • STP操作的最后一步是阻塞网络中的预备接口。这一步完成后,网络中的二层环路就此消除。

STP端口状态机

1.禁用(Disable)   :不收发BPDU、不学习MAC地址、不转发业务数据。

2.阻塞(Blocking)  :收BPDU、不发BPDU、不学习MAC地址、不转发业务数据。

3.侦听(Listening) :收发BPDU、不学习MAC地址、不转发业务数据。

                        就是进行端口角色的选举,需要等待一个转发延迟的时间(15s)

4.学习(Learning)  :收发BPDU、学习MAC地址、不转发业务数据。

                        就是防止大量未知单播数据帧的泛洪,需要等待一个转发延迟的时间(15s)

5.转发(Forwarding):收发BPDU、学习MAC地址、转发业务数据。

STP拓扑变化

根桥故障

根桥故障:
在稳定的 STP 网络,非根桥会定期收到来自根桥的 BPDU 报文。
如果根桥发生了故障,停止发送 BPDU ,下游交换机就无法收到来自根桥的 BPDU 报文。
如果下游交换机一直收不到 BPDU 报文, Max Age 计时器(缺省 : 20s )就会超时,从而导致已经收到的 BPDU 报文失效,此时,非根桥会互相发送配置 BPDU ,重新选举新的根桥。
端口状态:
SW3 的预备端口, 20s 后会从 Blocking 状态进入到 Listening 状态,再进入 Learning 状态,最终进入到 Forwarding 状态,进行用户流量的转发。
收敛时间:
根桥故障会导致50s左右的恢复时间 ,等于 Max Age 加上 2 倍的 Forward Delay 收敛时间。

直连链路故障

直连链路故障:
当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
当网络稳定时,交换机 SW2 检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。
端口状态:
备用端口会从 Blocking 状态,迁移到 Listening-Learning-Forwarding 状态。
收敛时间:
直连链路故障,备用端口会经过30s后恢复转发状态

非直连链路故障

非直连故障
在稳定的 STP 网络,非根桥会定期收到来自根桥的 BPDU 报文。
SW1 SW2 之间的链路发生了某种故障(非物理故障),因此 SW2 一直收不到来自根桥 SW1 BPDU 报文, Max Age 计时器(缺省 : 20 s )就会超时,从而导致已经收到的 BPDU 报文失效。
此时,非根桥 SW2 会认为根桥失效,并且认为自己是根桥,从而发送自己的配置 BPDU SW3 ,通知 SW3 自己是新的根桥。
在此期间, SW3 预备 端口一直收不到包含根桥 ID BPDU Max Age 计时器超时后,端口进入到 Listening 状态,开始向 SW2 “转发”从上游发来的包含根桥 ID BPDU
因此, Max Age 定时器超时后, SW2 SW3 几乎同时收到对方发来的 BPDU ,再进行 STP 重新计算, SW2 发现 SW3 发来的 BPDU 更优,就放弃宣称自己是根桥并重新确定端口角色。
端口状态:
SW3 预备 端口 20s 后会从 Blocking 状态进入到 Listening 状态,再进入 Learning 状态,最终进入到 Forwarding 状态,进行用户流量的转发。
收敛时间:

非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。

拓扑改变导致MAC地址表错误

在交换网络中,交换机依赖 MAC 地址表转发数据帧。缺省情况下, MAC 地址表项的老化时间是 300 秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时 MAC 地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新 MAC 地址表项
本例中, SW2 中的 MAC 地址表项定义了通过端口 GigabitEthernet 0/0/1 可以到达主机 A ,通过端口 GigabitEthernet 0/0/3 可以到达主机 B 。由于 SW3 的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机 A 到主机 B 的帧仍然不能到达目的地。这是因为 MAC 地址表项老化时间是 300 秒,主机 A 发往主机 B 的帧到达 SW2 后, SW2 会继续通过端口 GigabitEthernet 0/0/3 转发该数据帧。
拓扑变化过程中,根桥通过 TCN BPDU 报文获知生成树拓扑里发生了故障。根桥生成 TC 用来通知其他交换机加速老化现有的 MAC 地址表项。
拓扑变更以及 MAC 地址表项更新的具体过程如下:
SW3 感知到网络拓扑发生变化后, 会不间断地向SW2发送TCN BPDU报文
SW2 收到 SW3 发来的 TCN BPDU 报文后, 会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文
SW2 根桥转发 TCN BPDU 报文
SW1 把配置 BPDU 报文中的 Flags TC 位设置为 1 后发送, 通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)
最多等待 15 s 之后, SW2 中的错误 MAC 地址表项会被自动清除。此后, SW2 就能重新开始 MAC 表项的学习及转发操作。

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

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

相关文章

GLM-4-Plus初体验

引言:为什么高效的内容创作如此重要? 在当前竞争激烈的市场环境中,内容创作已成为品牌成功的重要支柱。无论是撰写营销文案、博客文章、社交媒体帖子,还是制作广告,优质的内容不仅能够帮助品牌吸引目标受众的注意力&a…

Jetpack Compose赋能:以速破局,高效打造非凡应用

Android Compose 是谷歌推出的一种现代化 UI 框架,基于 Kotlin 编程语言,旨在简化和加速 Android 应用开发。它以声明式编程为核心,与传统的 View 系统相比,Compose 提供了更直观、更简洁的开发体验。以下是对 Android Compose 的…

MinerU:PDF文档提取工具

目录 docker一键启动本地配置下载模型权重文件demo.py使用命令行启动GPU使用情况 wget https://github.com/opendatalab/MinerU/raw/master/Dockerfile docker build -t mineru:latest .docker一键启动 有点问题,晚点更新 本地配置 就是在Python环境中配置依赖和…

UE4_控件蓝图_制作3D生命血条

一:效果图如下: 二、实现步骤: 1、新建敌人 右键蓝图类 选择角色, 重命名为BP_Enemytest。 双击打开,配置敌人网格体 修改位置及朝向 效果如下: 选择合适的动画蓝图类: 人物就有了动作&#x…

【深度学习】深刻理解ViT

ViT(Vision Transformer)是谷歌研究团队于2020年提出的一种新型图像识别模型,首次将Transformer架构成功应用于计算机视觉任务中。Transformer最初应用于自然语言处理(如BERT和GPT),而ViT展示了其在视觉任务…

用于日语词汇学习的微信小程序+ssm

日语词汇学习小程序是高校人才培养计划的重要组成部分,是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。本学生所在学院多采用半手工管理日语词汇学习小程序的方式,所以有必要开发日语词汇…

ichunqiu-2024年春秋杯网络安全联赛夏季赛-brother

1.打开题目,看到题目我就想到了再后面加一个ls,结果回显了ls,然后又想到会不会是模板注入,尝试{{7*7}},然后页面返回了49,说明存在模板注入 如下,判定为模板注入 看一下系统环境配置 然后看可…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…

QT从入门到精通——Qlabel介绍与使用

1. QT介绍——代码测试 Qt 是一个跨平台的应用程序开发框架,广泛用于开发图形用户界面(GUI)应用程序,也支持非图形应用程序的开发。Qt 提供了一套工具和库,使得开发者能够高效地构建高性能、可移植的应用程序。以下是…

Edge SCDN深度解析,边缘安全加速的创新实践

边缘安全加速(Edge Secure Content Delivery Network,SCDN)是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术,智能调度使用户就近获取所需内容,为…

WebRTC Simulcast 大小流介绍与优化实践

Simulcast 是 WebRTC 中的一种标准化技术 ,简称大小流。通过 Simulcast,客户端可以同时发送同一视频的多个版本。每个版本都以不同的分辨率和帧率独立编码,带宽较多的拉流端可以接收较高质量的视频流,带宽有限的拉流端则可以接收较…

40分钟学 Go 语言高并发:服务监控与追踪

服务监控与追踪 一、知识要点总览 模块核心内容技术选型难度监控指标请求量、响应时间、错误率、资源使用Prometheus Grafana中链路追踪分布式调用链、性能瓶颈分析Jaeger, OpenTelemetry高日志处理日志收集、分析、存储ELK Stack中告警系统告警规则、通知渠道、告警分级Ale…

vue3 使用 konva

1&#xff1a;安装 npm install vue-konva konva --save 在main.ts 里面引入 import VueKonva from vue-konva; app.use(VueKonva); 2&#xff1a;效果图 3&#xff1a;直接粘贴复制就能用你 &#xff08;重要的地方做了备注&#xff09; <template><div st…

Spring Boot集成Knife4j文档工具

Knife4j 搭建 Knife4j环境的的搭建和Swagger一样都比较简单&#xff0c;只需要极简的配置即可。 maven依赖 我使用的是较高版本的基于openapi规范的依赖包&#xff0c;OpenAPI2(Swagger)规范是Knife4j之前一直提供支持的版本&#xff0c;底层依赖框架为Springfox。 此次在4…

keil5搜索框还有左侧文件状态栏不见的问题

点击上面的window&#xff0c;弹出 reset view to default &#xff0c;然后点击&#xff0c;再点击reset&#xff0c;就ok了

基于Mybatis,MybatisPlus实现数据库查询分页功能

基于Mybatis&#xff0c;MybatisPlus实现数据库查询分页功能 目录 基于Mybatis&#xff0c;MybatisPlus实现数据库查询分页功能使用Mybatis插件实现分页数据库准备分页插件配置和使用常用数据&#xff1a; 使用MybatisPlus插件实现分页数据库准备分页插件配置和使用自定义分页查…

HNU_多传感器(专选)_作业4(构建单层感知器实现分类)

1. (论述题)&#xff08;共1题&#xff0c;100分&#xff09; 假设平面坐标系上有四个点&#xff0c;要求构建单层感知器实现分类。 (3,3),(4,3) 两个点的标签为1&#xff1b; (1,1),(0,2) 两个点的标签为-1。 思路&#xff1a;要分类的数据是2维数据&#xff0c;需要2个输入…

内圆弧转子泵绘制工具开发

接着上期的Gerotor 泵的话题继续。最近有小伙伴找我开发一个内圆弧摆线泵的计算绘制工具&#xff0c;也就是把上次计算绘制的过程做成一个桌面应用工具&#xff0c;这样用起来会更方便、效率更高。那究竟是什么样的工具呢&#xff1f;一起来看看&#xff1a; 前面不是已经有了上…

面试技术点之安卓篇

一、基础 二、高级 三、组件 Android中SurfaceView和TextureView有什么区别&#xff1f; 参考 Android中SurfaceView和TextureView有什么区别&#xff1f; 四、三方框架 五、系统源码 六、性能优化

在Ubuntu 2404上使用最新的PicGo

在转向Ubuntu之后&#xff0c;果断下载了今年最新的Ubuntu2404,但是随之而来的是底层组件的更新&#xff0c;很多以前可以畅快使用的软件&#xff0c;因为需要老版本的组件而不能正确运行&#xff0c;PicGo就是如此 我们从这里打开Release列表 其中Ubuntu可用的只有这个AppIma…