HCIP的学习(27)
RSTP—802.1W—快速生成树协议
STP缺陷:
1、收敛速度慢----STP的算法是一种被动的算法,依赖于计时器来进行状态变化
2、链路利用率低
RSTP向下兼容STP协议。(STP不兼容RSTP)
改进点1—端口角色
802.1D协议---根端口、指定端口、非指定端口
802.1W协议---根端口、指定端口、(替代端口、备份端口)替代端口----简单理解为根端口的备份。替代端口是收到其他交换机的BPDU报文从而被阻塞的端口。如果根端口发生故障,那么替代端口可以成为新的根端口,加快了网络的收敛速度。一台交换机,有且只有一个根端口;替代端口可以有0个或多个。如果存在多个,最优的替代接口将成为新的根端口。备份端口----理解为指定端口的备份。备份端口是一台设备上由于收到了自己所发送的BPDU报文从而被阻塞的接口。
改进点2----端口状态

改进点3----RST BDPU报文

bit 6----表示同意的含义,P/A机制
bit 5----表示转发状态
bit 4----表示学习状态
bit 3和bit 2----代表发送该报文的端口角色
bit 1----表示提议含义,P/A机制
RSTP在网络稳定后,任何设备,都可以周期性发送RST BPDU报文。
P/A机制----加快收敛
改变状态切换机制,将原本基于计时器的切换方式,修改为选择出端口角色,立即切换状态。

1、SW11发送P标记位置为1的BPDU报文,请求将本接口的状态切换为转发状态。---能切换的前提是后续网络无环
2、SW12收到该报文后,将本地除了根端口以外的端口全部阻塞。来保证本地无环这个阻塞接口的过程被称为“同步过程”
3、完成同步过程后,本地其他接口都处于丢弃状态,设备向上游发送A标记位置为1的BPDU报文,并将自己的根端口切换为转发状态。
4、SW11收到该报文后,将自己的接口转换为转发状态。
5、向下游重复该过程,直到所有的根端口和指定端口状态切换为转发状态。
改进点4—对BPDU处理方式
- 所有设备在网络收敛完成后,都会周期性发送BPDU报文
- 缩短了BPDU的超时时间
- RSTP将最大老化时间修改为三个周期更新时间(6S)
- 对次优BPDU报文的处理方式
- 每一个交换机的每一个接口都会保存一份BPDU报文。—一定是最优的BPDU报文。
- 对于根端口和非指定端口而言,交换机保存的是对端发送的BPDU报文。
- 对于指定端口而言,交换机保存的是根据根节点发送的BPDU而计算出的本地的BPDU报文。
- 次优BPDU===接口收到的不如接口保存的BPDU报文。
- STP
- 指定端口:收到一个次优BPDU报文,它将立即发送自己的BPDU报文。
- 非指定端口:收到一个次优BPDU报文,需要等待接口所保存的BPDU报文老化后,重新计算自己的BPDU报文,并将新的BPDU报文发送出去。
- RSTP
- 无论任何接口角色,只要接口收到的次优BPDU报文,立即发送自己的BPDU报文。
- 每一个交换机的每一个接口都会保存一份BPDU报文。—一定是最优的BPDU报文。
改进点5—快速收敛机制
-
根端口和指定端口的快速切换。
-
P/A机制
-
边缘端口
-
如果交换机的某个端口处于网络的边缘,即不与其他交换设备相连,直接与终端设备直连,这种端口可以被设置为边缘端口----因为终端设备无法处理STP报文。
-
边缘端口不会参与到生成树的计算过程中,当某个接口被设置为边缘端口,则立即切换到转发状态。
- 边缘端口的关闭或激活不会触发RSTP拓扑变更。
-
[sw3-GigabitEthernet0/0/22]stp edged-port enable —设置为边缘端口
-
边缘接口会持续性发送BPDU报文。—但是这种持续性发送是没有必要的。
-
[sw1-GigabitEthernet0/0/1]stp bpdu-filter enable ----激活接口的BPDU过滤功能,激活后,该接口不会再发送BPDU报文。并且,该接口收到BPDU报文后,会直接忽略掉。
-
注意:一旦边缘端口收到BPDU报文,会立即丧失边缘端口属性,成为普通的STP端口,并重新进行生成树计算,引发网络震荡。----故,上述两条配置一般共同使用。
-
改进点6—保护功能
BPDU保护[Huawei]stp bpdu-protection ---在全局激活BPDU保护功能,激活后,如果边缘端口收到的BPDU报文,
则交换机直接关闭边缘端口。受保护的边缘接口由于收到BPDU报文而被关闭,缺省时,不会自动恢复。需要网络管理员在接口下通过
undo shutdown命令打开。根保护如果在一个稳定的二层网络环境中,新加入一台第三方设备,并且该设备的BID小于根网桥。那么会
抢占原本的根网桥角色,从而引发网络的重新收敛。部署根保护功能后,根网桥上的指定接口在收到更优的BPDU报文后,会忽略这些BPDU报文并将接口状态
切换到丢弃状态。从而保证根网桥的地址。[Huawei-GigabitEthernet0/0/1]stp root-protection ---开启根保护功能,只能在指定接口上激活。当接口不再收到更优的BPDU报文后,经过两倍的转发延迟时间,接口状态从丢弃直接切换到转发状态。
环路保护

网络正常时,接口将持续收到BPDU报文,而当网络出现链路的单向故障或者网络拥塞等问题时,接口无法正常接收BPDU报文,导致交换机需要重新计算RSTP,此时接口角色和状态发生改变,可能引入环路。
开启保护后:
- 根端口
- 如果常时间没有收到BPDU报文,那么交换机会重新选举根端口,并且该端口调整为指定端口。该接口状态切换为丢弃状态,避免环路产生。
- 替代端口
- 如果长时间没有收到BPDU报文,该端口调整为指定端口。将其状态保持在丢弃状态。
[Huawei-GigabitEthernet0/0/20]stp loop-protection —开启接口的环路保护。
拓扑变更保护

如果网络环境极度不稳定,导致TC报文频繁洪泛,又或者网络中存在攻击者发送大量的TC报文,那么交换机的性能将受到极大的损耗。
拓扑变更保护功能—在单位时间内只进行一定次数的TC报文处理,如果超出这个次数,则按照规定次数处理,对于超出的部分,等待一段时间后进行处理。
[Huawei]stp tc-protection —开启TC保护
在单位时间2S周期内,只会处理一次TC报文。
[Huawei]stp tc-protection threshold 3 —开启TC保护并修改次数
在单位时间2S周期内,处理3次TC报文。
改进点7—拓扑变更机制的改进

1、如果SW3收不到根桥发送的BPDU报文,设备所有的指定端口和根端口启动一个TC计时器(4S)。并且
清空所有端口学习到的MAC地址。然后向外发送TC置位的BPDU报文。
2、一旦计时器超时,则停止发送BPDU报文
3、SW2收到该报文后,清空所有端口的MAC地址信息,将自己的接口也启动TC计时器,并将TC置位报文向上游发送。
4、重复上述过程。
MSTP—802.1S----多实例生成树
PVST----一个VLAN为一个生成树
MSTP—引入了“示例”----instance-----多个VLAN的集合
instance ID-----示例标识----12bit(BID16bit的后12bit)-------instance 0–华为默认存在的
MSTI—多生成树实例
一个实例能够包含多个VLAN,但是一个VLAN只能属于一个实例。
MSTP域----类似于OSPF中的区域的概念。可以将一个交换网络划分为多个MST域,在一个MST域中,会存在单个或多个实例。
- 相同的域名
- 相同的修订等级
- 相同的vlan和instance的映射关系
必须保证上述三点完全一致,交换机对MSTP的认知才相同。

[sw1]stp mode mstp
[sw1]stp enable MST域的配置
[sw1]stp region-configuration ----进入MST域配置视图
[sw1-mst-region]region-name HCIP ---修改域名
[sw1-mst-region]revision-level ? ---修改修订等级,默认为0INTEGER<0-65535> Revision level
[sw1-mst-region]instance 1 vlan 2 to 10 ---创建一个instance 1,并加入vlan2到10
[sw1-mst-region]instance 2 vlan 11 to 20
[sw1-mst-region]active region-configuration ---激活MSTP配置,如果未激活,则之前的配置不生效[sw1]stp instance 0 root primary ---设定为实例0的主根
[sw1]stp instance 1 root primary
[sw1]stp instance 2 root secondary

默认情况下,域名使用的是交换机的MAC地址。
相关文章:
HCIP的学习(27)
RSTP—802.1W—快速生成树协议 STP缺陷: 1、收敛速度慢----STP的算法是一种被动的算法,依赖于计时器来进行状态变化 2、链路利用率低 RSTP向下兼容STP协议。(STP不兼容RSTP) 改进点1—端口角色 802.1D协议---根端口、指定端口…...
6. MySQL 查询、去重、别名
文章目录 【 1. 数据表查询 SELECT 】1.1 查询表中所有字段使用 * 查询表的所有字段列出表的所有字段 1.2 查询表中指定的字段 【 2. 去重 DISTINCT 】【 3. 设置别名 AS 】3.1 为表指定别名3.2 为字段指定别名 【 5. 限制查询结果的条数 LIMIT 】5.1 指定初始位置5.2 不指定初…...
Oracle导出clob字段到csv
使用UTL_FILE ref: How to Export The Table with a CLOB Column Into a CSV File using UTL_FILE ?(Doc ID 1967617.1) --preapre data CREATE TABLE TESTCLOB(ID NUMBER, MYCLOB1 CLOB, MYCLOB2 CLOB ); INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(1,Sample row 11…...
C++无锁(lock free)队列moodycamel::ConcurrentQueue
moodycamel::ConcurrentQueue介绍 moodycamel::ConcurrentQueue一个用C++11实现的多生产者、多消费者无锁队列。 它具有以下特点: 1.快的让人大吃一惊,详见不同无锁队列之间的压测对比 2.单头文件实现,很容易集成到你的项目中 3.完全线程安全的无锁队列,支持任意线程数的并…...
python办公自动化——(二)替换PPT文档中图形数据-柱图
效果: 数据替换前 : 替换数据后: 实现代码 import collections.abc from pptx import Presentation from pptx.util import Cm,Pt import pyodbc import pandas as pd from pptx.chart.data impo…...
vue不同页面切换的方式(Vue动态组件)
v-if实现 <!--Calender.vue--> <template><a-calendar v-model:value"value" panelChange"onPanelChange" /></template> <script setup> import { ref } from vue; const value ref(); const onPanelChange (value, mod…...
Linux下Qt Creator无法输入中文(已解决)
1. 首先确保安装了搜狗输入法,且能正常运行。 2.克隆源码到本地。 git clone https://gitcode.com/fcitx/fcitx-qt5.git 3.检查Qt Creator版本,如下图所示,为基于Qt6的。 4. 进入源码目录,建立build文件夹,修改CMak…...
Codeforces 提交Java代码(自己处理输入输出)
示例一(A. Watermelon) 题目地址 Problem - 4A - Codeforces 题目截图 提交方式 可以提交本地文件,也可以在线提交。我们这里选择在线提交方式,点击上图中的 SUBMIT 按钮,会进入如下界面。 输入Java代码效果如下&a…...
剖析vue中nextTick源码
代码逻辑梳理: callbacks 数组用于存储待执行的回调函数,waiting 变量用于标记是否有待执行的回调函数。 flushCallbacks 函数用于执行所有存储在 callbacks 数组中的回调函数,并在执行完成后将 waiting 设置为 false。 timer 函数根据环境…...
SSM牙科诊所管理系统-计算机毕业设计源码98077
目 录 摘要 1 绪论 1.1研究目的与意义 1.2国内外研究现状 1.3ssm框架介绍 1.4论文结构与章节安排 2 牙科诊所管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能…...
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C模板入门 🌹🌹期待您的关注 🌹🌹 ❀STL之string 📒1. string…...
go语言linux安装
下载:https://go.dev/dl/ 命令行使用 wget https://dl.google.com/go/go1.19.3.linux-amd64.tar.gz解压下载的压缩包,linux建议放在/opt目录下 我放在/home/ihan/go_sdk下 sudo tar -C /home/ihan/go_sdk -xzf go1.19.3.linux-amd64.tar.gz 这里的参数…...
vi和vim有什么不同?
vi 和 vim 都是流行的文本编辑器,它们之间有以下主要区别: 历史: vi 是一个非常古老的文本编辑器,最初由 Bill Joy 在 1976 年为 Unix 系统编写。vim(Vi IMproved)是 vi 的一个增强版,由 Bram M…...
CSS动画效果(鼠标滑过按钮动画)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa5SXiaicFfsrcric7TJmGO6YddqC4wFPdM7PGzPHuFgvtDS7MIvnLHB4WFaKia0Qh8VCyUaoyHMc2Zltg/640?wx_fmtgif&fromappmsg&tpwebp&wxfrom5&wx_lazy1&wx_co1 网页设计中的按钮不仅是用户交互的桥梁&#…...
数据结构(C):从初识堆到堆排序的实现
目录 🌞0.前言 🚈 1.堆的概念 🚈 2.堆的实现 🚝2.1堆向下调整算法 🚝2.2堆的创建(堆向下调整算法) ✈️2.2.1 向下调整建堆时间复杂度 🚝2.3堆向上调整算法 🚝2.…...
ChatGLM3-6B部署
ZhipuAI/chatglm3-6b 模型文件地址 chatglm3-6B-32k-int4 量化的模型地址 ChatGLM3 代码仓库 ChatGLM3 技术文档 cpolar http xxx 端口 /anaconda3/envs/chatglm2/lib/python3.8/site-packages/gradio$ networking.py 硬件环境 最低要求: 为…...
代码随想录35期Day54-JavaScript
Day54题目 ### LeetCode739每日温度 核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素". /*** param {number[]} temperatures* return {number[]}*/ var …...
把自己的服务器添加到presearch节点
Presearch is a scam. Before, judging by the price of the token you should have been able to get between $150-$200 after 12-13 months of regular searches. "If you use this service for the next 11 years you will have earned $30!" Presearch大约需要…...
Open3D(C++) OTSU点云二值化
目录 一、算法原理二、代码实现三、结果展示1、原始点云2、二值化本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 最大类间方差法(Between-class scatter method)是一种用于分割的方法,它通过计算图…...
浔川python社获得全网博主原力月度排名泸州地区第二名!
今日,浔川python社在查看全网博主原力月度排名泸州地区时,一看就震惊啦! 全网博主原力月度排名泸州地区排名榜单 全网博主原力月度排名泸州地区第二名为:浔川python社。 感谢粉丝们的支持!浔川python社还会继续努力&a…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
