当前位置: 首页 > 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…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...