STP协议

news2024/11/29 2:50:41

目录

STP的基本概念:

桥ID(Bridge ID):

根桥:

开销(Cost):

RPC(根路径开销):

Port ID:

BPDU:(网桥协议数据单元)

配置BPDU:STP计算拓扑的关键

 配置BPDU的原则:

BPDU转发过程:

TCNBPDU:

STP的计算过程:

 STP的接口状态:

拖布变更  -  根桥故障

 拖布变更  -  直连链路故障

  拖布变更  -  非直连链路故障

 拓扑变化导致Mac地址错误

STP基本配置


 单设备”链路备份“方案 —— STP

STP生成树技术:避免二层网络链路中出现环路的问题。

环路问题:形成广播风暴,消耗交换的资源,导致网络瘫痪

STP协议:可以解决网络中环路问题,也可以做到网络中的链路冗余,当网络中的拓扑结构发生变化时,STP能够感知和自适应生成新的拓扑结构,保证网络的可靠性。

STP的基本概念:

桥ID(Bridge ID):

IEEE802.1D规定BID由高16位的桥优先级和低48位的桥MAC地址构成。,每一台运行STP的交换机都拥有一个唯一桥ID,在STP中,BID最小的设备会被选作位根桥。

根桥:

STP主要作用是在整个交换网络中计算出一个无环的树,根桥是这个树的树根,STP在工作时,会先计算出树根,在从树根计算出一个无环的网络拓扑,在STP中,BID最小的会被选举为根桥。BID比较过程中,会先比较高16位的优先级,优先级相同则会比较低48位的Mac地址,拥有最下mac地址的位根桥。

开销(Cost):

每一个激活STP的接口,都会维护该接口到根交换机的路径开销。开销的大小与带宽,工作模式和STP Cost计算方法有关,用户也可以通过命令调整接口的COst值。

RPC(根路径开销):

交换机的某接口到根桥的开销总和,即为RPC。一个设备从某一接口到达根桥的RPC等于从根桥到交换机所有入接口的Cost总和

Port ID:

运行STP的交换机使用接口ID来表示每个接口,每个接口ID主要用于特定场景下的接口选举。

接口ID由两部分组成,高4位的接口优先级和低12位的接口编号。

在激活STP的接口会维护一个缺省的STP优先级,华为的是128。

BPDU:(网桥协议数据单元)

BPDU是STP协议的报文,使用STP协议的交换机之间,使用BPDU交换信息。

BPDU有两种:

配置BPDU:STP计算拓扑的关键

TCNBPDU:网络发生变化时,出发TCNBPDU(比如根桥宕机,从新选举根桥)

 配置BPDU的原则:

STP按照如下顺序进行配置最优BPDU:

1,最小的根桥ID(选根桥)

2,最小的RPC(选根接口)

3,最小的网桥ID

4,最小的接口ID

这里每个原则都对应STP报文中的字段,第一条是用来选举根桥,后面用来选举根接口和指定接口。

BPDU转发过程:

TCNBPDU:

拓扑变化时,发现故障的交换机会发送TCNBPDU,用来更新网络拓扑、根端口,指定端口,和Mac地址表。

STP的计算过程:

选举根桥  ——>  选举跟接口 ——> 选举制定接口 ——> 选举非指定接口(阻塞那些端口)

1,选举根桥

STP在交换网上工作时,每个交换机都会发送BDPU,认为自己是根桥,最后在比较过程中,选举BID最小的交换机作为根桥。

一个连续的交换网络中,只有一个根桥。

根桥的角色可以抢占,为了保护网络稳定,可以将根桥的优先级设置为0。

2,选举根端口(在每一个非根桥上选举根端口)

每一个交换上,有且只有一个距离根桥开销最小的接口,这就是根端口 

3,选举制定接口(在非根桥上选举一个发送端口,这个端口到根桥的开销也是最小的)

 

 如:

SW3发来的BPDU:根桥:SW1,RPC:20000,BID:SW3,port ID:128.23

SW2发来的BPDU:根桥:SW1,RPC:20000,BID:SW2,port ID:128.23

此时要选举出SW3和SW2之间的指定端口,那么就要比较他们的字段,根桥和RPC相同,sw2的BID小于sw3的BID,那么最后选择sw2的23接口作为sw2和sw3之间的指定端口。

4,选举非指定端口:(如果既不是指定端口,也不是根端口,那么就是非指定端口,堵塞)

 STP的接口状态:

禁用:接口被关闭

阻塞:接口被STP阻塞,不能发送BPDU,但是会侦听BpDU,不能发送业务数据,也不会学习Mac地址

侦听:接口接受和转发BPDU,但是不能转发业务数据,用来选举根桥和根端口等

学习:接口侦听业务数据,但是不转发业务数据,在收到业务数据时学习Mac地址

转发:进行所有数据的转发,此时接口一定是跟接口或者是指定接口

 STP状态迁移场景:

拖布变更  -  根桥故障

 如果根桥故障:

等待20秒还没有收到根桥发来的BPDU,就会进行重新选举,在选举过程中,在侦听会由15秒的时间,用来选择根接口和指定接口、阻塞非指定端口,在学习状态会有15s的时间学习mac地址。

所以根桥故障会消耗50s的时间才能恢复链路运转。

 拖布变更  -  直连链路故障

如果直连出现问题,就会启动阻塞的端口,会由30s时间的侦听和学习。

  拖布变更  -  非直连链路故障

sw1和sw2之间出现故障,但是sw2可以通过sw3收到sw1的消息,就是非直连链路故障

sw2和sw1链路故障,此时sw2没有根接口,那么sw2就会发送BDPU宣称自己位根节点,此时sw3收到sw2的BPDU,也受到了sw1的BpDU,sw3会等待20s,如果20s内收到了sw1的BPDU,就会向sw2转发sw1的BPDU,此时sw2,就会进入侦听和学习状态,各是5秒,链路才能恢复。

所以工耗时50s。

 拓扑变化导致Mac地址错误

当链路发生拓扑变化,此时mac地址表会出现错误,那么就需要快速的老化mac地址表,从新学习

 所以在链路故障后,发现故障的交换机会发送TCNBPDU给相邻交换机,相邻交换机回复TCA,然后将TCN转发给根桥,根桥会恢复一个TC,告诉链路中所有的交换机,更新mac地址老化时间(300s -> 15s),重新学习mac地址

 

STP基本配置

配置STP协议

stp mode stp | rstp | mstp //配置stp或者rstp或者mstp

(可选)手动设置根交换机

stp root primary //设置根交换机,优先级0

(设置备份交换机)

stp root secondary //设置备份交换机,优先级4096

(可选)配置优先级

stp priority 值 //缺省情况下为32768

(可选)配置接口开销值

stp pathcost-standard  dotld-1998  | dotlt  | legacy //配置开算计算算法
stp cost 值 //设置接口开销值

(可选)配置接口优先级

stp priority 值//接口优先级默认128
stp enable  //启动stp

 

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

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

相关文章

ROS:ROS是什么

目录 一、ROS简介二、ROS可以做些什么三、ROS特征四、ROS特点4.1点对点设计4.2不依赖编程语言4.3精简与集成4.4便于测试4.5开源4.6强大的库与社区 五、ROS的发展六、ROS架构6.1OS层6.2中间层6.3应用层 七、通信机制八、计算图8.1节点(Node)8.2节点管理器…

当ChatGPT参加中国高考,把全国A卷B卷喂给它后,竟严重偏科

作者 |Python ChatGPT作为一个智能人机对话应用,在推出后迅速风靡全球。仅仅一个月的时间,其用户数量已经突破了一亿大关。人们也用ChatGPT测试了很多考试项目,例如SAT、AP、GRE等。然而,如果让ChatGPT来参加我们中国的高考&…

Jetson Orin Nano 快速安装 ROS2 Foxy详解

大家好,我是虎哥,入手一块Jeston Orin nano 8G模块,这个模块因为是英伟达未来5年左右主推的模块,所以我逐步会将之前所有的应用都在这个模块环境上做适配,本章内容,我将主要围绕安装ROS2 Foxy版本为主展开。…

探索Java面向对象编程的奇妙世界(四)

⭐ 变量的分类和作用域⭐ 包机制(package、import)⭐ 面向对象三大特征——继承⭐ 继承的作用⭐ 继承的实现⭐ instanceof 运算符⭐ 继承使用要点⭐ 方法重写 override⭐ final 关键字⭐ 继承和组合 ⭐ 变量的分类和作用域 变量有三种类型:局部变量、成员变量(也称为…

Diffusion Model 深入剖析

Diffusion Model 深入剖析 最近AI生成艺术领域非常火热,从 Midjourney 到 Stable Diffusion,不管你是绘画高手还是艺术小白,只要输入想要绘制内容的描述或者基础图像,就可以生成富有艺术感的画作! 这些风格各异、以假…

CodeForces..构建美丽数组.[简单].[情况判断].[特殊条件下的最小值奇偶问题]

题目描述&#xff1a; 题目解读&#xff1a; 给定数组a[n]&#xff0c;ai>0&#xff0c;问能否得到一个数组b[n]&#xff0c;数组b中的元素都大于0且全奇or全偶。 数组b中的元素biai or ai-aj&#xff08;1<j<n&#xff09;。 解题思路&#xff1a; 数组b中的元素都…

IDEA代码替换

IDEA代码替换 快捷键 当前文件内容 C t r l R CtrlR CtrlR 全局替换 C t r l S h i f t R CtrlShiftR CtrlShiftR 使用 第一行输入栏&#xff1a;输入被替换内容 第二行输入栏&#xff1a;输入替换内容 详细使用 第一行输入栏后第一个图标&#xff1a;换行 第一行输…

数论专题(3)逆元

目录 初步认识 逆元 定义 应用 费马小定理 好久没有更新我们的数论专题板块了&#xff0c;今天&#xff0c;我们就来探究一下新知——逆元。 初步认识 在数据非常大的情景下&#xff0c;我们通常会对数据先进行取模运算&#xff0c;来计算在一定的范围内进行处理。而运算…

SpringBoot启动扩展应用:干预优化+加快启动时间

目录 一、SpringBoot启动配置原理简述 二、SpringBoot启动过程干预 &#xff08;一&#xff09;ApplicationContextInitializer扩展 修改Spring Boot默认的environment属性 添加自定义的PropertySource 注册自定义bean &#xff08;二&#xff09;SpringApplicationRunL…

【计算思维题】少儿编程 蓝桥杯青少组计算思维真题及详细解析第6套

少儿编程 蓝桥杯青少组计算思维真题及详细解析第6套 1、兰兰有一些数字卡片,从 1 到 100 的数字都有,她拿出几张数字卡片按照一定顺序摆放。想一想,第 5 张卡片应该是 A、11 B、12 C、13 D、14 答案:C 考点分析:主要考查小朋友们的观察能力和数学推理能力,从给定的图…

[Nacos] Nacos Server处理心跳请求 (八)

文章目录 1.InstanceController#beat()1.1 serviceManager.registerInstance()1.2 serviceManager.getService()1.3 处理本次心跳 1.InstanceController#beat() CanDistroPutMapping("/beat")Secured(parser NamingResourceParser.class, action ActionTypes.WRITE…

面了个字节出来的00后,我见识到了什么叫“自动化测试+性能测试”

前两天看到字节一个老哥写的帖子&#xff0c;提到高阶测试工程师必须掌握的技能&#xff0c;其中他明确提出了“精通性能测试”。 为啥性能测试对测试工程师如此重要&#xff1f; 性能测试是指在特定的负载情况下&#xff0c;测试目标系统的响应时间、吞吐量、并发用户数、资源…

Eclipse 教程Ⅳ

Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源&#xff1a; 项目文件文件夹 项目启动时一般可以设置工作空间&#xff0c;你可以将其设置为默认工作空间&#xff0c;下次启动后无需再配置&#xff1a; 工作空间(Workspace)有明显的层次结构。 项目在最顶级&…

HTML 教程1

HTML文档的后缀名 .html.htm 以上两种后缀名没有区别&#xff0c;都可以使用。 HTML 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><h1&g…

QTableWidget加载大文件数据

由于最近在项目中需要加载几GB的文件&#xff0c;并且需要在QTableWidget中进行显示&#xff1b;粗略估计可能得有几千万行&#xff0c;如果使用常规的方法&#xff0c;直接在QTableWidget中进行全部显示&#xff0c;会比较卡。所以查找相关资料&#xff0c;最终想到了一个比较…

算法基础学习笔记——⑧堆\哈希表

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨堆 &#x1f353;堆模板&#xff1a; ✨哈希表 &#x1f353;一般哈希模板&#xff1a; &#x1f353;字符串哈希模板&#xff1a; 前言&#xff1a;算法学习笔记记录日常分享&#xff0c;需要的看哈O(…

【是C++,不是C艹】 类与对象 | 认识面向对象 | 访问限定符 | 封装 | this指针

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 在C入门之后&#xff0c;就要进入C的第一个核心&#xff1a;类与对象&#xff0c;这期带大家认识认识…

Multichain跨链无法到账,DApp真去中心化or伪去中心化?

团队出问题&#xff0c;DApp就用不了&#xff0c;multichain被不少人质疑伪去中心化&#xff0c;甚至更有人开始质疑web3&#xff0c;那么这到底是怎么回事呢&#xff1f; 跨链桥问题让DApp的去中心化引发质疑 事情是这样的&#xff0c;5月24下午0xscope发推称与multichain有关…

leetcode 11.盛最多水的容器

题目描述 跳转到leetocde题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff…

RabbitMQ手动ACK与死信队列

为了保证消息从队列可靠的达到消费者&#xff0c;RabbitMQ 提供了消息确认机制&#xff08;Message Acknowledgement&#xff09;。 默认情况下RabbitMQ在消息发出后就立即将这条消息删除,而不管消费端是否接收到,是否处理完,导致消费端消息丢失时RabbitMQ自己又没有这条消息了…