华为交换机:STP的详解和试验

news2024/10/7 10:20:52

前言

为了解决网络冗余链路所产生的问题,IEEE定义了802.1D协议,即生成树协议STP,利用生成树协议可以避免帧在环路中的增生和无限循环,生成树的主要思想是,当两个交换机之间存在多条链路时,通过一定的算法只激活其中最主要的一条链路,而将其他冗余链路阻塞掉变为备用链路,当主链路出现问题时,生成树协议将自动启用备用链路,整个过程不需要认为干预.

STP协议中定义了,根桥(RootBridge),根端口(Root Port),指定端口(Designated Port),路径开销(Path Cost)等概念,目的在于通过构建一棵自然树的方法阻塞冗余链路,同时实现链路备份和链路最优化.

STP协议的通信,是通过桥协议数据单元(BPDU)进行通信的,它是运行STP的交换机之间交流消息帧,所有的支持STP协议的交换机都能接收并处理BPDU报文.

STP工作过程

选举根桥->选举根端口->选举指定端口->STP阻塞非根

  • 1.选举根桥:交换机假定自己是根,然后发送BPDU报文给其他交换机,最终选出ID号最小的交换机作为根桥.
  • 2.选举根端口:每台非根交换机都会选举出一个根端口,并且仅有一个根端口,并按照优先级选择一个根端口.
  • 3.选举指定端口:选择一条网桥到根桥的路径成本最小的路径,或者发送方的网桥ID最大的作为指定端口.
  • 4.选择阻塞端口:至此,就会根据STP算法,从多个链路中选择性的阻塞掉一些端口的数据通信.

STP端口状态:

1.阻塞(Blocking):端口只接受BPDU,不能接收或发送数据,也不能把学习到的MAC地址天机到MAC地址表中.
2.转发(Forwarding):端口能够接收并转发数据,也能够学习MAC地址,并添加到MAC地址表中.
3.侦听(Listening):该状态是从阻塞到转发状态过程中的临时状态,该状态只能发送和接受BPDU数据.
4.学习(Learning):该状态是从阻塞到转发状态过程中的临时状态,该状态不能够发送或接收数据.
5.关闭(Disable):该状态端口只提供网络管理服务,不能接受发送任何数据,也就是停止服务的状态.

RSTP快速生成树

TP协议虽然解决了链路闭合引起的死循环问题,但是在端口从阻塞状态到转发状态间经过了一个只学习MAC地址但不参与转发的过程,产生了转发延时(默认15秒),从而使得生成树的收敛过程需要较长的时间,一般是转发延时的两倍.

为了解决STP收敛时间过长的缺点,IEEE又推出了802.1w标准,定义了RSTP(快速生成树)协议.RSTP协议在网络配置参数发生变化时,能够显著的减少网络的收敛时间,由于RSTP是从STP发展而来的,其与STP协议保持高度的兼容性,RSTP协议规定,在某些情况下,处于阻塞状态的端口不必经历阻塞->侦听->学习->转发这一个过程,就可以直接进入转发状态.

RSTP协议只有以下三种:
1.丢弃(Discarding):RSTP将STP中的阻塞,禁用,和侦听统称为丢弃模式.
2.学习(Learning):拓扑有所变动情况下,端口处于学习状态并学习MAC地址,将其添加到MAC地址表.
3.转发(Forwarding):在网络拓扑稳定后,端口处于转发状态,并开始转发数据包.

以上就是生成树协议的常用内容,对比后会发现,RSTP的收敛时间明显低于STP,解决了数据同步过慢的问题所在.

生成树的配置

在华为设备中STP默认是开启的,如下拓扑当设备启动之后,就已经开始选举根桥了。三台设备仅改了名字,其他什么都没有配置。我们来查看一下哪个是根桥。
在这里插入图片描述

判断根桥

首先我们需要判断当前的根桥是哪一个设备,我们分别在四台交换机上执行.
我们分别在3台交换机上执行display stp命令或者执行display stp brief,来查询默认那一台是根桥设备

SW1

<sw1>dis stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc84-251c        // 本机优先级
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20   // 数据包发送时间
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc07-29f3 / 20000      // 根桥MAC地址
CIST RegRoot/IRPC   :32768.4c1f-cc84-251c / 0		// 备份根桥MAC地址
CIST RootPortId     :128.1     //根端口ID
...

<sw1>dis stp brief 
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
   0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE

知识点:

  • 优先级(CIST Bridge)的组成:默认是32768.+本地MAC
  • 根端口ID(CIST RootPortId)的组成:默认128.+端口号的总和

判断技巧:根据上面的注释,以及知识点第一条,我们可以发现一个规律,本地优先级CIST Bridge 中MAC部分如果和CIST Root/ERPC,即根桥MAC地址相同,则就是根桥。显然SW1不是根桥。

SW2
根据上面的知识点,发现SW2就是根桥

<sw2>dis stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc07-29f3
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc07-29f3 / 0
CIST RegRoot/IRPC   :32768.4c1f-cc07-29f3 / 0
CIST RootPortId     :0.0


<sw2>dis stp brief 
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
   0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE

SW3

[sw3]dis stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-ccea-78bd
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc07-29f3 / 20000
CIST RegRoot/IRPC   :32768.4c1f-ccea-78bd / 0
CIST RootPortId     :128.2


<sw3>dis stp brief 
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        ALTE  DISCARDING      NONE
   0    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE

判断根桥总结
在这里插入图片描述

指定根桥

我们在设计这个拓扑时,想让SW1作为根桥,此时可在三层交换机上,直接通过以下命令,更换根桥设备.

[sw1]stp root ?
  primary    Primary root switch    //根桥
  secondary  Secondary root switch   //备份根桥,本次试验不涉及备份根桥
[sw1]stp root primary 

[sw1]dis stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :0    .4c1f-cc84-251c
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :0    .4c1f-cc84-251c / 0
CIST RegRoot/IRPC   :0    .4c1f-cc84-251c / 0
CIST RootPortId     :0.0

配置边缘端口

对于运行生成树协议的二层网络,与终端相连的端口不用参与生成树计算,这些端口参与计算会影响网络拓扑的收敛速度,而且这些端口的状态改变也可能会引起网络震荡,导致用户流最中断.此时,可以通过执行命令stp edged-port enable将当前端口配置成边缘端口,该端口便不再参与生成树计算,从而帮助加快网络拓扑的收敛时间以及加强网络的稳定性.

需要注意:当前端口配置成边缘端口后,如果收到BPDU报文,那么交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,接下来将通过一个实验来演示边缘端口的配置,其配置拓扑图如下所示:

在这里插入图片描述

给指定端口配置

这里我们指定配置两台交换机的边缘端口,将Ge0/0/2配置为边缘端口.

#----在LSW1上操作-------------------------
<Huawei> system-view
[LSW1] stp mode rstp                                   // 设置成快速生成树
[LSW1] interface GigabitEthernet 0/0/2                 // 选择要配置的接口
[LSW1-GigabitEthernet0/0/2] stp edged-port enable      // 配置成边缘接口

#----在LSW2上操作-------------------------
<Huawei> system-view
[LSW2] stp mode rstp                                   // 设置成快速生成树
[LSW2] interface GigabitEthernet 0/0/2                 // 选择要配置的接口
[LSW2-GigabitEthernet0/0/2] stp edged-port enable      // 配置成边缘接口

给全局端口配置

也可以给将边缘端口配置为全局模式,以下案例将配置全局端口.
其实就是指定把参与stp的端口配置成非边缘端口

[LSW1] stp mode rstp                  // 配置成快速生成树
[LSW1] stp edged-port default         // 配置边缘端口为全局模式

[LSW1] interface GigabitEthernet 0/0/1              // 选择接口
[LSW1-GigabitEthernet0/0/1] stp edged-port disable  // 配置为非边缘端口

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

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

相关文章

Electron和vue3集成(可用于生产打包)

注意&#xff1a;我使用的是node版本16.20.1&#xff0c;因为electron-builder插件仅支持到node17、不支持node18&#xff0c;而node16是LTS版本&#xff0c;所以我选择16 1、初始化vue项目 npm install -g vue vue create 项目名称cd 项目目录 我尝试了用脚手架初始化方式&…

LVS负载均衡群集 1:NAT地址转换模式

文章目录 1. 群集概述1.1 什么是群集1.2 群集的分类1.2.1 负载均衡集群&#xff08;Load Balance Cluster&#xff09;1.2.2 高可用群集 (High Availbility Cluster)1.2.3 高性能运输群集 (High Performance Computer Cluster) 1.3 群集的目的 2. 负载均衡集群2.1 集群架构2.1.…

iOS pod repo push 报错 ld: file not found: libarclite_iphoneos.a 问题解决方案

背景 Xcode 升级 14.3 之后&#xff0c;在Xcode 运行项目会收到以下错误 File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a 项目中可以通过以下方法解决编译错误&#xff0c;就是在 …

【论文精读】Hierarchical Text-Conditional Image Generation with CLIP Latents

Hierarchical Text-Conditional Image Generation with CLIP Latents 前言Abstract1 Introduction2 Method2.1 Decoder2.2 Prior 3 Image Manipulations3.1 Variations3.2 Interpolations3.3 Text Diffs 4 Probing the CLIP Latent Space5 Text-to-Image Generation6 Related W…

论文阅读-A General Language for Modeling Social Media Account Behavior

论文链接&#xff1a;https://arxiv.org/pdf/2211.00639v1.pdf 目录 摘要 1 Introduction 2 Related work 2.1 Automation 2.2 Coordination 3 Behavioral Language for Online Classification 3.1 BLOC alphabets 3.1.1 Action alphabet 3.1.2 Content alphabets 3.…

【C++】源文件.cpp和头文件.h分离编程

优势介绍 将C代码分为头文件&#xff08;.h&#xff09;和源文件&#xff08;.cpp&#xff09;的做法有以下几个好处&#xff1a; 模块化和代码组织&#xff1a;将函数和类的声明&#xff08;包括函数原型、类的成员和属性等&#xff09;放在头文件中&#xff0c;将函数和类的…

感知哈希-图片相似度分析

‍本文作者是360奇舞团开发工程师 引言 最近在做小程序换肤功能&#xff0c;因为不同主题色的小程序对应了不同图片库&#xff0c;项目内图片引用的方式又是线上URL地址配置形式&#xff0c;新加一套图片时&#xff0c;就要将图片和线上URL链接对比之后&#xff0c;配置到对应的…

linux日志轮转工具logrotate

目录 一、日志轮转工具的由来 二、如何去使用logrotate工具 2.1 使用cron驱动logrotate 2.2 使用systemd的timer驱动logrotate 三、logrotate命令的子命令解析 四、logrotate的配置 4.1 配置文件的位置 4.2 配置项的具体含义 一、日志轮转工具的由来 在Linux环境中能够…

代码随想录算法训练营第48天 | ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

文章目录 前言一、198.打家劫舍二、213.打家劫舍II三、337.打家劫舍III总结 前言 dp[]; 一、198.打家劫舍 仔细一想&#xff0c;当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下…

【Java|golang】210. 课程表 II---拓扑排序

一、拓扑排序的定义&#xff1a; 先引用一段百度百科上对于拓扑排序的定义&#xff1a; 对一个有向无环图 ( Directed Acyclic Graph 简称 DAG ) G 进行拓扑排序&#xff0c;是将 G 中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点 u 和 v &#xff0c;若边 <…

Mybatis-plus的QueryWrapper的函数,常见方法

获取id 有时候我们新建一条数据的时候要生成一个新的id&#xff0c;我们可以通过下面的类获取 IdWorker.getId()mybatis-plus同时存在and和or查询 LambdaQueryWrapper<House> queryWrapper new QueryWrapper<House>().lambda(); queryWrapper.eq(House::getTena…

安果相亲-找到心仪的另一半 一个安卓免费找对象软件推荐

安果相亲&#xff1a;全国范围内的真实恋爱相亲平台&#xff01; 致力于帮助用户寻找真实恋爱&#xff0c;我们的实名认证机制确 保用户信息的真实性。汇集了高学历、经济稳定、丰富生活经验的优质单身男女&#xff0c;都在这里真诚地等待那个对的人。每个手机只能注册一个账户…

数据结构:线性表(队列实现)

1. 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除操作的特殊线性表,队列具有先进先出(FIFO)的特性. 进行插入操作的一端称为队尾;进行删除操作的一端叫做队头 队列应用于 解决公平性排队(抽号机)广度优先遍历(BFS) 2. 队列的定义 和栈一样,队列也可…

【知网检索】第三届教育,语言与艺术国际学术会议(ICELA 2023)

第三届教育&#xff0c;语言与艺术国际学术会议(ICELA 2023) The 3rd International Conference on Education, Language and Art 第三届教育&#xff0c;语言与艺术国际学术会议&#xff08;ICELA 2023&#xff09;将于2023年11月17-19日在中国北京召开。会议主要围绕会议主…

电力系统知识预备及学习方向

由于电源点与负荷中心多数处于不同地区&#xff0c;也无法大量储存&#xff0c;故其生产、输送、分配和消费都在同一时间内完成&#xff0c;并在同一地域内有机地组成一个整体&#xff0c;电能生产必须时刻保持与消费平衡。因此&#xff0c;电能的集中开发与分散使用&#xff0…

explainerdashboard,一个神奇的 python 库

今天给大家分享一个神奇的 python 库&#xff0c;explainerdashboard。 https://github.com/oegedijk/explainerdashboard explainerdashboard 是一种用户友好的工具&#xff0c;可以简化复杂的机器学习模型&#xff0c;解释&#xff08;与 scikit-learn 兼容&#xff09;机器…

Bodhi Linux 7.0发布:全新亮点抢先看

导读我们非常高兴地宣布Bodhi Linux 7.0的发布&#xff0c;这是一个小型开发团队经过数月的专注开发所取得的成果。从性能增强到尖端更新&#xff0c;让我们深入了解这个版本&#xff0c;看看它为那些寻求轻量级Linux桌面体验的用户带来了什么新特性。 Bodhi Linux 7.0桌面 Bo…

12.(Python数模)(相关性分析一)相关系数矩阵

相关系数矩阵 相关系数矩阵是用于衡量多个变量之间关系强度和方向的统计工具。它是一个对称矩阵&#xff0c;其中每个元素表示对应变量之间的相关系数。 要计算相关系数矩阵&#xff0c;首先需要计算每对变量之间的相关系数。常用的相关系数包括皮尔逊相关系数和斯皮尔曼相关…

第32章 Linux内核打印实验

本手册的实验都是在buildroot系统上完成的&#xff0c;由于buildroot系统已经设置了相应的打印等级&#xff0c;所以驱动的相关打印都能正常显示在串口终端上&#xff0c;如果将实验系统换成了ubuntu&#xff0c;然后加载同样的驱动&#xff0c;会发现打印信息不见了&#xff0…