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

HCIA-Datacom跟官方路线学习第二部分

接着前面第六章,通过VLAN技术, 可以将物理的局域网划分成多个广播域, 实现同一VLAN内的网络设备可以直接进行二层通信, 不同VLAN内的设备不可以直接进行二层通信。

第七章 生成树

在以太网交换网络会使用冗余链路, 但是使用冗余链路会在交换网络上产生环路。为解决交换网络中的环路问题, 提出了生成树协议STP( Spanning Tree Protocol) 。需要注意,生成树协议只对二层交换网起作用,在三层以太网中,由于传递TTL值减一的特性,是不会一直出现环路问题。所以生成树协议解决的主要层面还是在二层以太网中。

学习目标:▫ 描述园区交换网络中的二层环路产生原因及引发的问题。▫ 描述STP的基本概念与工作原理。▫ 区分STP与RSTP,并能够描述RSTP对STP的改进。▫ 完成STP的基础配置。▫ 了解除了生成树之外的其他消除交换网络二层环路的方法。
1. 生成树技术概述
2. STP的基本概念及工作原理
3. STP的基础配置
4. RSTP对STP的改进
5. 生成树技术进阶

常见环路主要分为二层环路和三层环路。
         ▫ 二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环;
         ▫ 三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发。

在STP网络中,桥优先级是可以配置的,取值范围是0~ 65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址, MAC地址越小则越优先。

在命令配置里面,如果手动选为根桥,它的优先级为0,且此优先级不能修改。如果选为备份根桥,它的优先级为4096,且此优先级不能修改。而其它情况,缺省下是32768。而且如果是在接口模式下,设置优先级的命令:stp priority priority。此时,默认是128。

根桥,略,就是根据桥ID选出来的。

Cost:交换机的每个端口都有一个端口开销( Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。

RPC(最短路径开销),路径开销,该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口)。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。

 

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

配置BPDU包含了桥ID、路径开销和端口ID等参数。

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

交换机在刚启动时都认为自己是根桥,互相发送配置BPDU进行STP运算
 

STP的计算过程:

首先,选举根桥。需要注意:为了确保交换网络的稳定, 建议提前规划STP组网, 并将规划为根桥的交换机的桥优先级设置为最小值0。根桥的角色可抢占。
然后,在每台非根桥(交换机)上选举一个根接口(根端口)。用处:在网络收敛后,根端口将不断的收到来自根桥的BPDU。它保证了交换机与根桥之间工作路径的唯一性和最优性。
需要注意:它的选举原则,不一定是要端口朝向根桥的才是根端口!!

         选举根端口的原则:最先比较路径开销,再比较接收过来的BPDU的BID和PID,若相同就比较自己的接口ID(PID)。

         1. 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“ RootID、        RPC、 BID、 PID”等关键字段,端口会针对这些字段进行PK。
         2. 首先比较根路径开销( RPC), STP协议把根路径开销作为确定根端口的重要依据。      RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
         3. 当RPC相同时,比较上行交换机的BID, 即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。
         4. 当上行交换机BID相同时,比较上行交换机的PID, 即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。
         5. 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。

       按我的理解是: BID就是交换机的MAC地址,PID就是交换机对应接口的接口号。

最后,在每条链路上选举一个指定接口
         选举过程:指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。需要注意,指定接口再链路上举行。一条链路只存在一个指定接口。

最最后,非指定接口被阻塞。注意:
         ▫ 非指定端口可以接收并处理BPDU。但不能发送BPDU,也不能转发数据帧。
         ▫ 根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。

 

 上图搞错了,禁用状态是端口没开启。上面那个应该是从阻塞状态到侦听状态是20s。

需要注意,如果是物理链路故障(一般指接口状态关闭down):端口状态变化过程:
        ▫ 备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。
        ▫ 收敛时间:直连链路故障,备用端口会经过30s后恢复转发状态。

     它不用像根桥一样重新选举根桥。所以只经过两个Forward Delays时间就能进入转发状态。
 

如果是非物理链路故障(就是接口状态是up,但是其它原因导致的):
          预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。需要50s的时间才能恢复转发状态。

      因为是非接口问题,所以非根桥会一直等待根桥发送BPDU,就会等待最大MAX Age(20s)。

再来看STP生成树中,链路发生变化的问题: 

大概意思就是,sw1到sw3的链路发生问题,重新选举了根桥和路径,但此时sw1的MAC地址表,由于绑定的接口还是GE0/0/3。所以他还是会从g0/0/3出去。而这种情况就需要等待MAC地址表老化300s后自动更新了,才会改变。这种情况,怎么缩短这个时间。

解决:拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。过程,省略,只需要知道,这个过程最多15s。

STP基本配置命令:省。

STP介绍就到这里了。但是STP也存在一定的缺陷,因为STP拓扑收敛慢。而在日常使用的时候,等50s的恢复时间肯定不现实,于是后面提出了RSTP协议。

RSTP对比STP:

RSTP的接口角色共有4种:根接口、指定接口(共有)、预备接口和备份接口

       Alternate(预备)接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。
       Backup(备份)接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。

RST也多了边缘端口,一般与用户终端设备直接连接,可以由Disabled状态直接转到Forwarding状态。

RSTP的状态规范把原来的5种状态缩减为3种。
       ▫ 如果不转发用户流量也不学习MAC地址,那么接口状态就是Discarding状态。
       ▫ 如果不转发用户流量但是学习MAC地址,那么接口状态就是Learning状态。
       ▫ 如果既转发用户流量又学习MAC地址,那么接口状态就是Forwarding状态。

STP/RSTP的缺陷:所有的VLAN共享一棵生成树。
虽然说STP/RSTP实现了网络拓扑快速收敛,但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树, 因此无法在VLAN间实现数据流量的负载均衡, 链路被阻塞后将不承载任何流量, 还有可能造成部分VLAN的报文无法转发。就是阻塞后不在使用此链路造成带宽浪费。

 解决:

方式一:华为公司提出了VBST( VLAN-Based Spanning Tree) 生成树解决方案。 该解决方案中, 生成树的形成是基于VLAN的, 不同VLAN间可形成相互独立的生成树, 不同VLAN内的流量沿着各自的生成树转发, 进而可实现流量的负载分担。

优缺点:

• 企业网中部署VBST:
         ▫ 可消除网络中可能存在的通信环路。
         ▫ 可实现链路的复用和流量的负载分担,进而有效地提高链路带宽的利用率。
         ▫ 配置和维护简单,进而可降低配置和维护成本。
• 但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源。

方式二:为了弥补STP和RSTP的缺陷, IEEE于2002年发布的802.1s标准定义了MSTP。• MSTP兼容STP和RSTP, 既可以快速收敛, 又提供了数据转发的多个冗余路径, 在数据转发过程中实现VLAN数据的负载均衡。但是MSTP其实并不能保证流量是均分到每一根链路上的。于是后面提出了聚合链路的技术。

小结:在以太网交换网中部署生成树协议后, 如果网络中出现环路, 生成树协议通过拓扑计算, 可实现:
     ▫ 消除环路:通过阻塞冗余链路消除网络中可能存在的网络通信环路。
     ▫ 链路备份:当前活动的路径发生故障时, 激活冗余备份链路, 恢复网络连通性。

但是不能实现,链路负载和链路的复用。需要用到其它的有些技术。

相关文章:

HCIA-Datacom跟官方路线学习第二部分

接着前面第六章,通过VLAN技术, 可以将物理的局域网划分成多个广播域, 实现同一VLAN内的网络设备可以直接进行二层通信, 不同VLAN内的设备不可以直接进行二层通信。 第七章 生成树 在以太网交换网络会使用冗余链路, 但…...

BIO、NIO和AIO的区别

一、基础知识: I/O 模型的简单理解: 1.BIO(Blocking I/O):同步阻塞,一个线程处理一个通道上的事件。 2.NIO(Non-blocking I/O):同步非阻塞,使用选择器&…...

makefile 学习(5)完整的makefile模板

参考自: (1)深度学习部署笔记(二): g, makefile语法,makefile自己的CUDA编程模板(2)https://zhuanlan.zhihu.com/p/396448133(3) 一个挺好的工程模板,(https://github.com/shouxieai/cpp-proj-template) 1. c 编译流…...

专业远程控制如何塑造安全体系?向日葵“全流程安全闭环”解析

安全是远程控制的重中之重,作为国民级远程控制品牌,向日葵远程控制就极为注重安全远控服务的塑造。近期向日葵发布了以安全和核心的新版“向日葵15”以及同步发布《贝锐向日葵远控安全标准白皮书》(下简称《白皮书》),…...

node.js解决输出中文乱码问题

个人简介 👨🏻‍💻个人主页:九黎aj 🏃🏻‍♂️幸福源自奋斗,平凡造就不凡 🌟如果文章对你有用,麻烦关注点赞收藏走一波,感谢支持! 🌱欢迎订阅我的…...

CentOS 7 使用异步网络框架Libevent

CentOS 7 安装Libevent库 libevent github地址:https://github.com/libevent/libevent 步骤1:首先,你需要下载libevent的源代码。你可以从github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2:下载完成后&…...

枚举 B. Lorry

Problem - B - Codeforces 题目大意:给物品数量 n n n,体积为 v ( 0 ≤ v ≤ 1 e 9 ) v_{(0 \le v \le 1e9)} v(0≤v≤1e9)​,第一行读入 n , v n, v n,v,之后 n n n行,读入 n n n个物品,之后每行依次是体…...

ON1 Photo RAW 2024 for Mac——专业照片编辑的终极利器

ON1 Photo RAW 2024 for Mac是一款专为Mac用户打造的照片编辑器,以其强大的功能和易用的操作,让你的照片编辑工作变得轻松愉快。 一、强大的RAW处理能力 ON1 Photo RAW 2024支持大量的RAW格式照片,能够让你在编辑过程中获得更多的自由度和更…...

从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式

从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式? 将 Word 中的内容复制到富文本编辑器时,常常会带有大量的 HTML 标签和样式,这可能导致不必要的格式…...

项目中如何配置数据可视化展现

在现今数据驱动的时代,可视化已逐渐成为数据分析的主要途径,可视化大屏的广泛使用便应运而生。很多公司及政务机构,常利用大屏的手段展现其实力或演示业务,可视化的效果能让观者更快速的理解结果并直观的看到数据展现。因此&#…...

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用 HarmonyOS,作为一款全场景分布式操作系统,为了推动更广泛的应用开发,采用了一种先进而灵活的编程语言——ArkTS。ArkTS是在TypeScript(TS)的基础上发展而来,为HarmonyOS提供了丰富的应用开发工具,使开…...

大语言模型概述(三):基于亚马逊云科技的研究分析与实践

上期介绍了基于亚马逊云科技的大语言模型相关研究方向,以及大语言模型的训练和构建优化。本期将介绍大语言模型训练在亚马逊云科技上的最佳实践。 大语言模型训练在亚马逊云科技上的最佳实践 本章节内容,将重点关注大语言模型在亚马逊云科技上的最佳训…...

键入网址到网页显示,期间发生了什么?

文章目录 键入网址到网页显示,期间发生了什么?1. HTTP2. 真实地址查询 —— DNS3. 指南好帮手 —— 协议栈4. 可靠传输 —— TCP5. 远程定位 —— IP6. 两点传输 —— MAC7. 出口 —— 网卡8. 送别者 —— 交换机9. 出境大门 —— 路由器10. 互相扒皮 —…...

深度学习基于Python+TensorFlow+Django的水果识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介技术组合系统功能使用流程 二、功能三、系统四. 总结 一项目简介 # 深度学习基于PythonTensorFlowDjango的水果识别系统介绍 简介 该水果识别系统基于…...

vs动态库生成过程中还存在静态库

为什么VS生成动态库dll同时还会生成lib静态库 动态库与静态库(Windows环境下) ​ 动态库和静态库都是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 ​ 静态库实际上是在链接时被链接到exe的,编译后,静态…...

P13 C++ 类 | 结构体内部的静态static

目录 01 前言 02 类内部创建静态变量的例子 03 在类的内部创建静态变量的作用 04 最后的话 01 前言 本期我们讨论 static 在一个类或一个结构体中的具体情况。 在几乎所有面向对象的语言中,静态在一个类中意味着特定的东西。这意味着在类的所有实例中&#xff…...

【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB在实战项目中替换Milvus测试

为什么尝试使用Tencent Cloud VectorDB替换Milvus向量库? 亮点:Tencent Cloud VectorDB支持Embedding,免去自己搭建模型的负担(搭建一个生产环境的模型实在耗费精力和体力)。 腾讯云向量数据库是什么? 腾…...

git clone -mirror 和 git clone 的区别

目录 前言两则区别git clone --mirrorgit clone 获取到的文件有什么不同瘦身仓库如何选择结语开源项目 前言 Git是一款强大的版本控制系统,通过Git可以方便地管理代码的版本和协作开发。在使用Git时,常见的操作之一就是通过git clone命令将远程仓库克隆…...

基于51单片机的公交自动报站系统

**单片机设计介绍, 基于51单片机的公交自动报站系统 文章目录 一 概要公交自动报站系统概述工作原理应用与优势 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 很高兴为您介绍基于51单片机的公交自动报站系统: 公交自动报…...

NextJS开发:Image组件的使用及缺陷

Next.js 中的 Image 组件相比于传统的 img 标签有以下几个优点: 懒加载:Image 组件自带懒加载,当页面滚动到 Image 组件所在位置时才会加载图片,从而加快页面的渲染速度。自动优化:Image 组件会自动将图片压缩、转换格…...

代码冲突率飙升47%?从LLM生成逻辑到Git三路合并,一文讲透智能编码时代的冲突根因与防御体系

第一章:代码冲突率飙升47%?从LLM生成逻辑到Git三路合并,一文讲透智能编码时代的冲突根因与防御体系 2026奇点智能技术大会(https://ml-summit.org) LLM生成代码的“语义相似性陷阱” 大型语言模型在补全函数或重构模块时,常基于…...

从单分量到多分量:Hilbert变换在瞬时频率估计中的局限与进阶

1. Hilbert变换与瞬时频率的基本原理 第一次接触Hilbert变换时,我和大多数信号处理新手一样,被它"计算瞬时频率"的能力惊艳到了。但真正在项目中应用时才发现,这个看似强大的工具其实有着严格的适用条件。让我们从一个简单的例子开…...

香瓜树莓派RP2350之USB虚拟串口驱动开发实战

1. 硬件准备与环境搭建 第一次接触树莓派RP2350开发板时,我被它小巧的体积和强大的功能惊艳到了。这块板子虽然只有信用卡大小,但内置双核ARM Cortex-M0处理器,主频高达133MHz,特别适合用来做嵌入式开发。要实现USB虚拟串口功能&…...

京东自动评价终极指南:5分钟释放你的购物评价时间

京东自动评价终极指南:5分钟释放你的购物评价时间 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 你是否曾经面对堆积如山的京东待评价订单感到无从下手?是否因为忙碌而…...

MyBatis-Plus Samples企业级应用架构:从单体到微服务的平滑过渡

MyBatis-Plus Samples企业级应用架构:从单体到微服务的平滑过渡 【免费下载链接】mybatis-plus-samples MyBatis-Plus Samples 项目地址: https://gitcode.com/gh_mirrors/my/mybatis-plus-samples MyBatis-Plus Samples是一套全面的企业级应用架构示例&…...

逆向思维:不写爬虫,用FFmpeg一键下载微信小程序里的M3U8视频流

逆向思维:用FFmpeg高效下载微信小程序M3U8视频流 每次遇到需要保存微信小程序里的视频时,大多数开发者第一反应就是写爬虫——抓包分析、下载TS片段、合并文件,一套流程下来至少得折腾半小时。但今天我要分享一个更聪明的解决方案&#xff1a…...

MySQL 分区表设计的常见错误

MySQL分区表设计的常见错误及规避策略 分区表是MySQL中用于优化大表查询性能的重要技术,但设计不当反而会引发性能下降、维护困难等问题。许多开发者因缺乏经验而陷入常见误区,导致分区效果适得其反。本文将剖析分区表设计的典型错误,帮助开…...

J-Link-OB改造版供电问题详解:为什么我的仿真器烧了?

J-Link-OB改造版供电问题详解:为什么我的仿真器烧了? 调试嵌入式系统时,J-Link-OB改造版因其性价比高、使用便捷而广受欢迎。但不少开发者都遇到过这样的场景:连接开发板后,仿真器突然停止工作,甚至冒出焦糊…...

【tinyGTC】北斗授时授频 GPSDO 驯服钟的PPS和10M时钟测量

技术交流,产品咨询,项目开发,请添加文章下方微信号 目录驯服钟tinyGTC测试测试结果驯服钟 手上做了一个mini的驯服钟,使用刚入手的tinyGTC进行PPS信号和10MHz时钟信号的测量。 tinyGTC测试 针对驯服钟的PPS信号和10MHz时钟信号&…...

7大录制模式+双音轨独立控制:QuickRecorder让macOS录屏变得如此简单

7大录制模式双音轨独立控制:QuickRecorder让macOS录屏变得如此简单 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.co…...