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

1、HCIP之RSTP协议与STP相关安全配置

目录

RSTP—快速生成树协议

STP

STP的缺点:

STP的选举(Listening状态中):

RSTP

P/A(提议/同意)机制

同步机制:

边缘端口的配置:

RSTP的端口角色划分:

ensp模拟器BUG:

Topology Change

STP的安全设置:

BPDU保护:

BPDU过滤:

根保护:

TC-BPDU泛洪保护:


RSTP—快速生成树协议

STP

STP的缺点:

        收敛慢,从初始状态到完全收敛至少需要经过30S的时间(Listening—learning—forwarding,三个阶段,每个阶段需要15S的时间)

STP的选举(Listening状态中):

BPDU的四个参数:

1、ROOT ID:根桥(ROOT)的桥ID(Bridge ID)

2、COST:到达根桥(ROOT)的开销值,G口默认为2000,越小越优先

3、Bridge ID:优先级+实例编号+MAC地址,其中优先级默认为32768,实例编号默认位0。优先级在设置的时候必须是4096的整数倍且越小越优先

4、Port ID:优先级+端口编号,优先级默认为128

根桥的选举规则:

对比自身和收到的Bridge ID,也就是优先级➕MAC地址

1、先比较优先级,越小越优先;

2、当优先级一样时对比MAC地址,越小越优先;

3、根桥上的端口都是指定端口

根端口(非根交换机)的选举规则:

1、比较到达根桥的开销COST,越小越优先;

2、比较接口对端交换机的BID,越小越优先;

3、比较对端接口的PID,越小越优先;

4、比较本设备上的PID,越小越优先;(少见)

指定端口(非必须)的选举规则:

1、根桥的所有接口都是指定接口;

2、比较接口去往根桥的开销,越小越优先;

3、比较接口对端交换机的BID,越小越优先;

4、比较本端接口的PID,越小越优先;(少见)

堵塞端口(Blocked port):

1、如果不是以上阐述的三者之一,就堵塞该端口,此时环路被消除;

2、如果两交换机的两条或以上的端口互联,则选出一个根端口后剩下都是阻塞端口;

RSTP

P/A(提议/同意)机制

        为了加快指定端口和根端口互联链路上的两端口快速进入转发状态(避免30秒的等待)而采取的机制。

        P/A协商要求在点对点全双工链路。

 P/A机制的过程:

1、当两设备的RSTP功能启动时都认为自己是根桥且会向对方发送一份BPDU,其中的P位值会设置为1(提议),A位也是1(同意)

2、当B收到对方的BPDU后与自己的“四个参数”作对比,如果选举失败就会向A发送一个A位为1的BPDU,且立即将自己端口中选举成功的一方设置为RP(根端口),选举失败的端口设置为AP(阻塞端口)

3、A收到B发送的同意BPDU后会立即将自己的端口都设置为DP(指定端口)

这里假设A的桥ID最大,B次之。

以上过程为秒级切换,但会有环路风险问题,因此需要引入同步机制

 

同步机制:

在对端设备接受同意前会将其他接口全部阻塞,会造成网络的一个中断但是周期很短,如下:

 以上拓扑中各角色的选举过程:

1、设备RSTP功能启动时都认为自己是根桥切会向对方发送一份BPDU,其中的P位值会设置为1(提议),A位也是1(同意)

2、当B收到A发送的BPDU后与自己的“四个参数”作对比,如果选举失败就会向A发送一个A位为1的BPDU,且立即将自己端口中选举成功的一方(G0/0/1)设置为RP(根端口),选举失败的端口(G0/0/2)会暂时阻塞直到A收到同意消息后,才会继续向C发送提议消息

3、当C收到A发送的BPDU后与自己的“四个参数”作对比,如果选举失败就会向A发送一个A位为1的BPDU,且立即将自己端口中选举成功的一方(G0/0/1)设置为RP(根端口),选举失败的端口(G0/0/2)会暂时阻塞直到A收到同意消息后,才会继续向B发送提议消息

4、当A收到了BC的同意后,此时B和C会互相发送提议消息但是各自也都已经同意了A的提议不能在将对方认为是ROOT。此时BC之间的线路不会立即收敛,但并不会影响网络之间正常的通信

这里假设A的桥ID最大,B次之,C最小

以上可以解决拓扑变化后收敛速度慢的问题,但是还会出现一个问题:

        如果此时C上连接了一个主机PC,C会向PC发送提议消息但是PC是没有回复功能的,所以会导致连接PC的接口收敛速度为30秒,如下图:

解决方法:

        在C连接终端的接口G0/0/24上配置边缘端口,边缘端口会直接进入转发状态而不协商,但是也发送BPDU报文,需要管理员手动配置;

        当边缘端口收到BPDU报文的时候就会放弃边缘端口的特性,重新进行生成树的计算。

边缘端口的配置:

全局下(推荐):

stp edged-port default 

接口上:

int g0/0/1
stp edged-port enable 

还有一种情况:

以上拓扑中各角色的选举过程:

1、A和B互相发送携带提议字段(P=1)的BPDU报文,由于A的桥ID大于B的,所以会忽略B的BPDU并向B发送同意消息且立即将G0/0/1接口设置为DP(指定接口)

2、B在发现A应该是根桥后发送同意消息并立即将自己的G0/0/1接口设置为RP(根接口)同时阻塞G0/0/2接口

3、当B收到A的同意消息后将G0/0/2接口打开向C发送A的提议消息

4、当C收到A的提议消息后向A发送同意消息同时立即将G0/0/2接口设置为RP(根接口)

这里假设A的桥ID最大,B次之,C最小

RSTP的端口角色划分:

STP的三种角色:根端口、指定端口和阻塞端口

RSTP定义了两种心的端口角色:备份端口(Backup Port)和预备端口(Alternate Port),其中备份端口是备份指定端口的,经常用在有集线器的拓扑上;而预备端口也叫替代端口,是用于替代根端口的,当根端口失效时,替代端口秒级替换上

RSTP中端口状态的重新划分:

以上可以分为两种情况:

1、有P/A机制的话端口会直接从Discarding状态到Forwarding状态;

2、如果没有P/A机制就会正常的经过两个周期才能转换到Forwarding状;

ensp模拟器BUG:

        无法模拟设备的自动刷新MAC地址表,会导致网络中拓扑结构发生变化时无法及时更新MAC地址表而造成的网络中断,需要手动刷新或者从另一端重新PING一下进行MAC地址表的更新。

        真机不会出现这个问题,因为真机会对拓扑的变化而做出相应的处理:Topology Change消息

Topology Change

        当交换机发现某个端口发生故障而阻塞后,会将MAC地址表中相应的MAC与端口绑定的表项删除,且会向网络中发送一条TC消息(拓扑变化消息),当其他设备接受到后会触发MAC地址表的更新,会将除了接受TC消息以外的所有端口的MAC地址表项删除(边缘端口除外),完成后会将TC消息发送给下一个设备。

STP的安全设置:

BPDU保护:

        当我们要求边缘端口只允许连接主机不能连接交换机时会进行配置BPDU保护(默认情况下边缘端口可以连接交换机,但会放弃边缘端口的特性),当启用BPDU保护的时候,如果边缘端口收到了BPDU消息,则会立即关闭该接口

配置方法:

stp bpdu-protection

        BPDU保护的功能依赖于边缘端口的设置,输入以上命令后,所有边缘端口都会自动开启BPDU保护,收到BPDU消息后会关闭接口

        注意:如果是边缘端口检测到BPDU后重新进行生成树计算的端口,也会被关闭,应该进入该接口下关闭边缘端口功能

BPDU过滤:

        当收到BPDU消息后不会关闭接口,而是丢弃BPDU消息

配置方法:

stp bpdu-filter default

根保护:

        当我们在原有的网络拓扑上新接入一台交换机且不希望它成为根桥时会配置根保护(一般在核心交换机或汇聚交换机上)

        根保护功能会继续接收BPUD消息,但是不接受会抢占自己根位置的BPDU

        注意:不能在根端口(RP)启用!!!

配置方法:

int g0/0/1
stp root-protection

        此时,G0/0/1接口的另一端如果接入了优先级更高的交换机,会拒绝接受它的BPDU信息并把接口设置为丢弃状态,就相当于将其隔离在这个网络之外了,只能修改优先级比根桥小才能让其重新加入这个网络

TC-BPDU泛洪保护:

        限制拓扑变化消息的发送次数,防止不断地恶意TC-BPDU消息,当TC-BPDU消息在两秒内(默认)的次数达到我们设置的上限时就会拒绝此类BPDU

stp tc-protection threshold 

相关文章:

1、HCIP之RSTP协议与STP相关安全配置

目录 RSTP—快速生成树协议 STP STP的缺点: STP的选举(Listening状态中): RSTP P/A(提议/同意)机制 同步机制: 边缘端口的配置: RSTP的端口角色划分: ensp模拟…...

Linux云服务器docker使用教程

诸神缄默不语-个人CSDN博文目录 我用的是腾讯云服务器,操作系统是OpenCloudOS 9,基本上可以当特色版CentOS用。 docker安装跟各个系统关系太大了,我就不写了。OpenCloudOS 9安装docker见这篇博文:腾讯云服务器使用教程 文章目录 …...

如何从android的webview 取得页面上的数据

要从Android的WebView中获取页面上的数据,通常有几种常见的方法: JavaScript Interface:通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法,反之亦然。 Evaluate JavaScript&#xff…...

VTK知识学习(12)- 读取PNG图像

1、代码 private void ShowPngImage(){vtkPNGReader pngReader vtkPNGReader.New();pngReader.SetFileName("D:\\图像\\boxes\\cardboard_boxes_01.png");pngReader.Update();vtkImageActor imageActor vtkImageActor.New();imageActor.SetInputData(pngReader.Get…...

Springboot项目搭建(3)-更改用户信息与文件上传

1.概要 前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。 这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等... 而后接触到了本地上传和云上传,其二者区别: 选择本地上传还是云上…...

Docker1:认识docker、在Linux中安装docker

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析

目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …...

android 如何获取当前 Activity 的类名和包名

其一:getClass().getSimpleName() public static String getTopActivity(Context context){ ActivityManager am (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); ComponentName cn am.getRunningTasks(1).get(0).topAct…...

Spring Boot 项目 myblog 整理

myblog 项目是一个典型的 Spring Boot 项目,主要包括用户注册、登录、文章管理(创建、查询、更新、删除)等功能。 1. 项目结构与依赖设置 项目初始化与依赖 使用 Spring Initializr 创建项目。引入必要的依赖包: Spring Boot W…...

uniapp 城市选择插件

uniapp城市选择插件 如上图 地址 完整demo <template><view><city-selectcityClick"cityClick":formatName"formatName":activeCity"activeCity":hotCity"hotCity":obtainCitys"obtainCitys":isSearch&quo…...

测试工程师如何在面试中脱颖而出

目录 1.平时工作中是怎么去测的&#xff1f; 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测&#xff1f; 4.你为什么能够做测试这一行&#xff1f;&#xff08;根据个人情况分析理解&#xff09; 5.你认为测试的目的是什么&#xff1f; 6.软件测试的流程&#xff…...

Mesh路由组网

Mesh无线网格网络&#xff0c;多跳&#xff08;multi-hop&#xff09;网络&#xff0c;为解决全屋覆盖信号&#xff0c;一般用于家庭网络和小型企业 原理 网关路由器&#xff08;主路由&#xff0c;连接光猫&#xff09;&#xff0c;Mesh路由器&#xff08;子路由&#xff0c;…...

LeetCode131:分割回文串

题目链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 代码如下&#xff1a; class Solution { private:vector<vector<string>> result;vector<string> path; // 放已经回文的子串void backtracking (const string& s, int s…...

详细解析 devmem 命令:在 Linux 系统中直接访问内存的利器

目录 什么是 devmem&#xff1f;为什么需要 devmem&#xff1f;devmem 命令的基本语法devmem 在硬件调试中的应用安全性与风险devmem 的常见应用示例结论 在嵌入式系统开发和硬件调试中&#xff0c;开发者经常需要直接与硬件打交道&#xff0c;访问和修改内存中某些特定区域的内…...

[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法

本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时&#xff0c;突然发现它的一个接口&#xff0c;被另一个服务ip频繁的请求。 按理说&#xff0c;之前设置的是&#xff0c;每隔1分钟请求一次接口。但从日志来看&#xff0c;则是1秒钟请求一次&#xff…...

【前端知识】nodejs项目配置package.json深入解读

package.json详细解读 文件解读一、文件结构二、字段详解三、使用场景四、注意事项 组件版本匹配规则 文件解读 package.json 文件是 Node.js 项目中的一个核心配置文件&#xff0c;它位于项目的根目录下&#xff0c;并包含项目的基本信息、依赖关系、脚本、版本等内容。以下是…...

XGBOOST算法Python实现(保姆级)

摘要 XGBoost算法&#xff08;eXtreme Gradient Boosting&#xff09;在目前的Kaggle、数学建模和大数据应用等竞赛中非常流行。本文将会从XGBOOST算法原理、Python实现、敏感性分析和实际应用进行详细说明。 目录 0 绪论 一、材料准备 二、算法原理 三、算法Python实现 3…...

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境&#xff0c;使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载&#xff1a; MAVEN下载传送…...

输出比较简介

输出比较简介 主要是用来输出PWM波形&#xff0c;这个波形是驱动电机的&#xff08;智能车和机器人等&#xff09;必要条件 OC&#xff08;Output Compare&#xff09;输出比较&#xff0c;还有IC&#xff0c;全称是Input Capture&#xff0c;意为输入捕获&#xff0c;还有CC…...

什么是反向 DNS 查找以及它的作用是什么?

反向DNS查询&#xff08;rDNS&#xff09;是一种技术&#xff0c;用于确定与某个IP地址对应的域名。当我们对一个IP地址进行反向DNS查询时&#xff0c;实际上是向域名系统&#xff08;DNS&#xff09;的特殊部分请求信息&#xff0c;这部分被称为PTR记录。PTR记录会返回与这个I…...

Windows热键冲突终结者:Hotkey Detective一键定位占用程序

Windows热键冲突终结者&#xff1a;Hotkey Detective一键定位占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

从零构建企业级网络:Cisco 1841静态路由配置全攻略(附实验拓扑/排错指南/避坑手册)

&#x1f680; 从零构建企业级网络&#xff1a;Cisco 1841静态路由配置全攻略&#xff08;附实验拓扑/排错指南/避坑手册&#xff09; 摘要&#xff1a;本文基于《实验8 路由器的管理与配置》实战案例&#xff0c;深度剖析了从硬件选型、模块插拔、IP规划到静态路由配置的完整闭…...

校园便利|基于java+vue的校园便利平台(源码+数据库+文档)

校园便利平台 基于SprinBootvue的校园便利平台 一、前言 二、系统设计 三、系统功能设计 系统前台实现 系统首页功能 用户后台管理功能 管理员功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…...

Frida检测绕过本质:四大系统级锚点与工程化规避策略

1. 这不是“反检测”&#xff0c;而是对 Frida 运行机制的诚实理解很多人一看到“Frida 检测绕过”就本能地往“对抗”“隐藏”“伪装”上想&#xff0c;甚至直接去搜“frida hide”“frida stealth bypass”&#xff0c;结果踩进一堆过时、失效、逻辑错乱的 patch 坑里。我做过…...

BilibiliDown:3分钟掌握B站视频批量下载的终极解决方案

BilibiliDown&#xff1a;3分钟掌握B站视频批量下载的终极解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/…...

Android Debug Bridge (adb) 深度解析:从架构原理到自动化实战

1. 项目概述&#xff1a;从“黑盒”到“白盒”的调试桥梁如果你是一名移动应用开发者、测试工程师&#xff0c;或者是一名热衷于折腾手机、平板的极客&#xff0c;那么“adb”这个词对你来说一定不陌生。它就像一把万能钥匙&#xff0c;静静地躺在你的开发工具目录里&#xff0…...

Windows环境OpenCore引导盘制作:7步搞定Hackintosh安装

Windows环境OpenCore引导盘制作&#xff1a;7步搞定Hackintosh安装 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide 想在Windows电脑上安装macOS吗&#xff1f;别担…...

构造函数、this指向和原型链机制

今天在刷力扣 [146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) 的时候&#xff0c;遇到了原型链的写法&#xff0c;想想这个写法我正式开发中从来都没有用过&#xff0c;到底是个什么玩意&#xff1f;遂将各个节点和变量都定义在外面&#xff0c;但是代码居然报错啦…...

如何快速一键获取Steam游戏清单?Onekey工具完整使用指南

如何快速一键获取Steam游戏清单&#xff1f;Onekey工具完整使用指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 你是否曾经为了获取Steam游戏的清单文件而花费大量时间查找App ID、配置解锁…...

Agent Skills 万千应用 · 第04篇 Excel 分析 Skill:让 Agent 会整理表格、建公式、画图表

Agent Skills 万千应用 第04篇 Excel 分析 Skill&#xff1a;让 Agent 会整理表格、建公式、画图表01&#xff5c;场景痛点开场&#x1f4ca; 周一早上&#xff0c;老板丢过来一份 Excel&#xff1a;销售流水 8000 行、客户名称有重复、日期格式不统一、金额里还混着“元”和空…...