HCIP之STP

news2024/11/13 11:01:27

企业网三层架构

线路冗余—二层网络桥接环路

        因为路由器的路由表是由相对完善的计算所得,且存在防环规则;故路由器物理链路上实施备份时,一般不会出现环路;但交换转发数据依赖MAC表(CAM表),该表的生成规则非常简单(记录产生),没有防环设计,故只要交换机使用链路备份,就将出现二层环路

        CAM --- 将MAC地址+接口编号+VLAN ID进行哈希运算后,存储的哈希值,二进制格式保存;

设备冗余

网关冗余

UPS冗余

二层环路导致的问题:

        1,广播风暴 --- 广播帧在二层环路中会形成顺时针逆时针转动的两层环路,并且无限循环,最终导致设备宕机网络瘫痪

        2,MAC地址表的翻摆(MAC地址表的漂移) --- 同一个数据帧,顺时针接收后将记录MAC地址及接口在对应信息,之后,逆时针还会再更改一遍,如此循环,导致MAC地址表内容一直再翻滚。

        3,同一数据帧的重复拷贝

STP

        STP --- 生成树协议 --- 是一种工作在OSI网络模型中第二层(数据链路层)通信协议,是一种由交换机运行的,基本应用是防止交换机冗余链路产生的环路,用于确保以太网中无环路的逻辑拓扑结构,从而避免广播风暴,大量占用交换机的资源

生成树

        生成树 --- 在二层交换网络中,编辑上阻塞部分的接口,实现从根交换机所有节点位移的且最短的路径,生成一个没有环路的树形拓扑,当最佳路径出现故障时,则可以打开个别阻塞的端口,形成备份路径

最短生成树协议

        802.1D --- 由IEEE组织颁布的共有协议 -- 标准的STP协议

        PVST/PVST+(CISCO) --- 思科根据标准的STP研发的私有的生成树协议

        RSTP --- 快速生成树 --- 802.1W

        MSTP --- 多生成树协议 --- 802.1S

802.1D生成树协议

        STP使用的数据包 --- BPDU --- B --- Bridge

        PDU --- 协议数据单元 --- 交换机间沟通互动收发的数据

配置BPDU的工作过程

        所有交换机刚启动,所有接口都激活STP,一开始,并不知道谁是根,则所有设备将判定自己为根网桥,从字节的所有激活了STP的接口发送配置BPDU,则其中将包含本机参数。之后,所有设备都交换参数后,将根据参数数值进行选举,之后,将选举出一个真正的根网桥。之后,只有根网桥将周期的发送配置 BPDU,而其他非根网桥只能在接受到根网桥发送的BPDU后进行转发。(转发时可以修改其中的参数。) --- 发送周期为2S,MAX AGE --- 20S。

BPDU的数据包

        协议版本ID ---- 标准的802.1D生成树协议 --- 0

                                802.1W(RSTP) ---- 2

                                802.1S(MSTP) ---- 3

        标记 --- 8位 --- 在802.1D当中,只应用了最高位(TCA --- 拓扑变更确认标记)和最低位(TC --- 拓扑变更标记),中间6位为保留。

        网桥ID --- BID --- 网桥指交换机,因为最终需要整个交换网络生成一个树形拓扑,所以,需要对每一个交换设备进行身份标识,则使用BID来完成区分标定。 ---- (一个交换网络生成一棵树是802.1D的做法)

        根网桥ID --- RID --- 为根网桥的BID。

                8个字节 --- 优先级(2个字节) + MAC地址(6个字节)

                如果一台交换机存在多个MAC地址时,则将选择所有MAC地址中数值最小作为桥ID中的MAC地址

                根路径开销 --- RPC --- 表示的是发送BPDU的交换设备到达根网桥的开销大小。

        接口ID --- PID --- 发送该BPDU接口的身份标识

                2个字节 --- 优先级(4位) + 接口的标识(12位)

注意:

        以上四个参数都将参与STP生成树的结构选举

        消息寿命 --- 它存在一个最大跳数(MAX-HOP),这个值默认位20,即如果一个BPDU他的消息寿命超过20时,则接受的设备将不再处理该BPD

TCN BPDU

        TCN BPDU --- 只包含配置BPDU中前三个参数

        TCN BPDU --- 本地交换链路故障后,STP将重新收敛,为了加快刷新交互机的MAC地址表,将向本地所有STP接口发送那个TCN BPDU,邻居交换机收到TCN BPDU后将回复 一个TCA位置1的配置BPDU,用于可靠性传出,之后将TCN BPDU逐级转发到根网桥处,由根网桥下发TC标记位置1的配置BPDU,逐级下发给所有的交换机,所有交换机在收到后将临时的将300S的MAC地址老化时间改为15S

根网桥 --- RB

根端口 --- RP

指定端口 --- DP

非指定端口 --- NDP

1,选举根网桥 --- 802.1D当中,一个交换网络有且仅有一台根网桥

        选举方法 --- 比较配置BPDU中的BID

                8个字节 --- 优先级(2个字节) + MAC地址(6个字节)

                先比较优先级,优先级越小越优 ---- 0 - 65535,实际取值范围为0 - 61440,默认取值为32768。

                这个优先级,实际只使用了前4位。后面12位被称为扩展系统ID。因为只使用了四位,每一位代表4096。在修改优先级时,也必须按照4096的倍数来进行修改。

                如果优先级相同,则将比较MAC地址,取MAC地址数值最小的当根网桥

2,选举根端口 --- 每一台非根网桥上,有且仅有一个,离根网桥最近的接口,用来接受来自根网桥发送的配置BPDU,不能被阻塞。

注意: 

        华为设备支持以上三种RPC的评判标准,默认选择的是802.1t中定义的标准。

[Huawei]stp pathcost-standard ? --- 修改接口开销值遵循的标准 

 dot1d-1998 IEEE 802.1D-1998 

 dot1t IEEE 802.1T 

 legacy Legacy 

[Huawei-GigabitEthernet0/0/1]stp cost ? --- 自定义接口开销值 

 INTEGER<1-200000000> Port path cost

1,比较入向的配置BPDU的开销值,选择最小的接口作为根端口

2,如果存在多个接口入向开销相同时,则将会对比对端设备的BID,选择BID小的设备所对应的接口作为根端口

3,如果存在对端设备的BID也相同的情况时,则将比较对端的PID,PID小的端口所对应的端口为根端口

        2个字节 --- 优先级(4位) + 接口的标识(12位)

                优先级每一位代表16,则其取值范围 0 - 240,默认取值为128。所以,在修改优先级的时候,必须按照16的倍数来进行修改。优先级越小越优

                优先级相同,则比较接口编号,接口编号也是越小越优。

4,如果对端的PID也相同,则将比较本地的PID,取本地PID小的作为根端口

3,选举指定端口 --- 在每条链路上有且仅有一个端口作为指定端口,用于转发根网桥发送的配置BPDU,不能被阻塞

        首先,根网桥所有的端口都是指定端口

        其次,所有存在根端口的链路,则其对端端口必然指定接口

                1,比较端口发出根网桥的BPDU的RPC值

                2,比较本地的BID值,BID值小的所对应的端口为指定端口。

                3,当本地BID也相同时,则将比较本地PID,取本地PID小的作为指定端口。

                4,如果本地PID也相同,则将直接堵塞该接口

4,非指定端口 --- 剩余没有角色的端口均为非指定端口,则需要进行逻辑堵塞。

STP接口状态

        禁用 --- 1,接口关闭情况下;2,接口禁用生成树协议

        阻塞 --- 生成树协议激活接口后进入的第一个状态。该状态下,接口只能侦听BPDU不能转发BPDU和业务帧,也不能学习MAC地址

        一开始所有接口都进入阻塞状态,则都不发送配置BPDU,这样,所有接口都侦听不到BPDU,则20S老化时间后将进入下一个阶段。

        侦听 --- STP角色选举阶段,这个状态下可以收发BPDU,但是不能转发业务数据,也不能学习MAC地址

                这个状态下不允许转发业务数据,主要是因为为了防止在角色没有完全选出来时,可能出现临时环路,导致业务流量入环。

                侦听状态需要停留一个转发延迟时间,默认为15S,这个时间就是用来选举的时间。即使,角色选举提前结束,也需要等到时间到达再进入下一个状态。

                角色选举完成后,不是所有的接口都进入下一个学习状态,而是根端口指定端口可以继续进行,非指定端口则将退回到阻塞状态。

        学习 --- 该状态需要停留15S,只学习业务数据帧中的MAC地址,但是不进行转发

                其目的在于减少在MAC地址没有记录时未知单播泛洪操作

        转发 --- 可以正常的接受发送BPDU及业务数据

802.1D收敛时间

        收敛时间 --- 50S

        结构突变 ---

                        1,根网桥故障:50S

                        2,直连链路故障:30S

                        3,非直连发生故障:50S

802.1D生成树协议的缺陷:

        1,收敛速度慢

        2,链路利用率低

PVST 基于VLAN的生成树协议

        PVST --- 基于VLAN的生成树协议 --- 一个VLAN一棵树 --- PVST的问题是如果交换网络中存在大量VLAN时,则需要大量树,每棵树都需要通过配置BPDU来来维护树形结构,则造成资源占用过大

STP的配置

[sw1]stp mode ? --- 修改STP选择的协议版本 --- 华为设备默认选择的是MSTP协议 

 mstp Multiple Spanning Tree Protocol (MSTP) mode 

 rstp Rapid Spanning Tree Protocol (RSTP) mode 

 stp Spanning Tree Protocol (STP) mode 

[sw1]stp mode stp  
[sw1]stp enable --- 华为设备默认激活了STP,所以,这一步可以不用写
[sw6]display stp --- 查看STP信息
[sw3]display stp brief --- 查看STP接口的角色和状态信息
[sw5]stp priority 28672 --- 修改优先级的命令,必须按照4096的倍数来修改
注意:
        STP根网桥的选举是抢占模式的
[sw6-GigabitEthernet0/0/1]stp port priority ? --- 修改接口优先级的命令,必须按照16的倍数来进行修改 

 INTEGER<0-240> Port priority, in steps of 16 
[sw1]stp root primary --- 将一台交换机设置成为根网桥 ---- 实质上是将该设备的BID中的优先级修改为0。 

[sw2]stp root secondary --- 将一台交换机设置成为备份根网桥 ---- 实质上是将该设备的BID中的优先级修改为4096。

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

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

相关文章

【模式识别4】YOLO目标检测数据集xml格式转txt格式

YOLO目标检测数据集xml格式转txt格式 1. 转换前的xml格式2. xml格式转txt格式代码2.1 源代码2.2 需要修改的地方 3. 转换后的txt格式 代码资源&#xff1a;voc2txt.py 1. 转换前的xml格式 如果我们使用LabelImg工具标注数据集&#xff0c;生成的xml文件如下&#xff1a; xml…

Linux运维:推荐八款Linux远程连接工具

目录 2、XShell 3、SecureCRT 4、PuTTY 5、WindTerm 6、iTerm2 7、MobaXterm 8、Termius 今天给大家推荐八款Linux远程连接工具&#xff0c;非常实用&#xff0c;希望对大家能有所帮助&#xff01; 1、NxShell NxShell是一款开源的Linux远程管理工具&#xff0c;是我日…

Spring Boot 接口加解密

1. 介绍 在我们日常的Java开发中&#xff0c;免不了和其他系统的业务交互&#xff0c;或者微服务之间的接口调用 如果我们想保证数据传输的安全&#xff0c;对接口出参加密&#xff0c;入参解密。 但是不想写重复代码&#xff0c;我们可以提供一个通用starter&#xff0c;提…

【python数据可视化】基于networkx的10个绘图技巧

一、说明 networkx在02年5月产生&#xff0c;是用python语言编写的软件包&#xff0c;便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络…

解决java.lang.IllegalStateException: Failed to load ApplicationContext错误~

错误描述&#xff1a; Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\SSM\SSM_3.22\spring_transaction\target\classes\spring_txAnnotation\Controller\BookController.class]; nested …

装饰器模式C++用法示例

六.装饰器模式 一.装饰器模式1.原理2.适用场景 二.C程序示例1.语法组成2.C示例 一.装饰器模式 1.原理 装饰器模式是一种结构性设计模式&#xff0c;其目的是通过包装对象来扩展其行为而不改变其接口。该模式可以动态地将责任附加到对象上&#xff0c;从而提供一种灵活的替代方…

SQL Server基础 第三章 数据表基本操作(增删改查,不允许保存更改异常!)

往表里插数据我们现在有两种方式第一种是编辑直接修改&#xff0c;第二种是通过查询来修改数据 两种方法的区别 第一种更直接&#xff0c;如果数据量小那么直接改就好了&#xff0c;那如果数据量稍微庞大我们就需要用新建查询来进行表内容的修改了&#xff01;&#xff01;&a…

【Linux】进程信号 --- 信号的产生 保存 捕捉递达

被爱情困住的是傻子 文章目录 一、信号的预备知识1.通过生活例子来理解信号2.迁移到进程上来理解信号 二、信号的发送&#xff08;修改PCB的信号位图&#xff09;1.通过键盘发送信号&#xff08;kill指令 和 热键&#xff09;2.通过系统调用发送信号&#xff08;kill系统调用 和…

前端技术的miniui 和bootstartp

前端技术的miniui 和bootstartp 目录概述需求&#xff1a; 设计思路实现思路分析1.前端技术boostatrp2.miniui: 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better re…

1686_MATLAB处理Excel文件

全部学习汇总&#xff1a; GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

opencv交叉编译,支持ffmpeg、libjpeg,实现取流及写入jpeg文件

一、准备工作 1、虚拟机交叉编译连 2、在虚拟机目录下创建工作目录&#xff0c;注意不要选择windows共享目录&#xff0c;比如这里选择&#xff1a; /home/cxyazhou/work 3、虚拟机安装cmake cmake-gui pkg-config&#xff0c;直接apt install即可 4、源码下载&#xff0c;需要…

Mongodb的部署

MongoDB下载包获取 https://www.mongodb.com/try/download/community 安装配置 第一步&#xff1a;在服务器 /usr/local 下创建 MongoDB 文件夹&#xff0c;用来存放安装包、服务以及之后 MongoDB 的数据库和日志文件。 cd /usr/local // 进入安装目录 mkdir MongoDB // 创…

【LeetCode: 2369. 检查数组是否存在有效划分 | 暴力递归=>记忆化搜索=>动态规划 | 线性dp】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

OpenCV(14)-OpenCV4.0中文文档学习2(补充)

相机校准和3D重建 相机校准 标定 findChessboardCorners() 它返回角点和阈值&#xff0c;如果成功找到所有角点&#xff0c;则返回 True。这些角落将按顺序放置&#xff08;从左到右&#xff0c;从上到下&#xff09;cornerSubPix()用以寻找图案&#xff0c;找到角点后也可以…

PHREEQC实践建模技术方法

PHREEQC软件为美国地质调查局基于C和C语言开发&#xff0c;面向一般地球化学、水文地球化学模拟的专业软件。该软件历经近30年迭代&#xff0c;功能不断完善&#xff0c;目前已发展成为-以PHREEQC为计算核心&#xff08;更新至3.7版本&#xff09;&#xff0c;辅以具备二次开发…

【无标题】docker安装jenkins安装流程(二)

配置Publish Over SSH JENKINS_URL/job/goods/build?tokenTOKEN_NAME http://xxxxx:8001/job/goods/job/goods/build?tokenxql1232.提交合并代码触发自动构建 http://xxxxx:8001/buildByToken/build?jobgoods&tokenxql123http://xxxxx:8001/buildByToken/build?jobgood…

Javaee 基于注解的AOP开发

基于注解的 aop 开发步骤&#xff1a; 1. 创建目标接口和目标类&#xff08;内部有切点&#xff09; 2. 创建切面类&#xff08;内部有增强方法&#xff09; 3. 将目标类和切面类的对象创建权交给 spring 4. 在切面类中使用注解配置织入关系 5. 在配置文件中开启组件…

gpt写文章批量写文章-gpt3中文生成教程

怎么用gpt写文章批量写文章 批量写作文章是很多网站、营销人员、编辑等需要的重要任务&#xff0c;GPT可以帮助您快速生成大量自然、通顺的文章。下面是一个简单的步骤介绍&#xff0c;告诉您如何使用GPT批量写作文章。 步骤1&#xff1a;选择好训练模型 首先&#xff0c;选…

14、RPC与gRPC

目录 一、rpc基础1 - rpc入门2 - 基础的rpc通信3 - 基于接口的RPC服务 二、rpc编码1 - gob编码2 - json on tcp3 - json on http&#xff08;待补充&#xff09; 三、prtotobuf编码1 - prtotobuf概述2 - protobuf编译器3 - 序列化和反序列化4 - 基于protobuf的RPC&#xff08;待…

TiDB实战篇-TiCDC

目录 简介 原理 使用场景 使用限制 硬件配置 部署 在安装TiDB的时候部署 扩容部署 操作 管理CDC 管理工具 查看状态 创建同步任务 公共参数 CDC任务同步到MySQL实战 同步命令 查看所有的同步任务 同步任务的状态 管理同步任务 查看一个同步信息的具体情况 …