STP生成树基础,一个难点

news2024/12/23 10:24:56

技术背景:二层交换机网络的冗余性与环路
二层环路带来的问题(三层环路,ttl跳数达到一定次数会丢弃)
典型问题
1:广播风暴不停的在接口内复制转发广播
在这里插入图片描述
2:MAC地址漂移
sw1接口1与2,对sw3的接收mac会根据环路状态不断调整,是从接口1来的mac或者是从接口2来的mac
在这里插入图片描述
解决环路问题
初识生成树协议
在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路
在这里插入图片描述
交换机上运行的生成树协议会持续监控网络的拓扑接口,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。
因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

三层环路(Layer 3 Loop)

在这里插入图片描述
常见原因:路由环路;
动态路由协议有一定的防环能力;
IP报文头部中的TTL字段可用于防止报文被无止尽地转发。

二层环路(Layer 2 Loop)

在这里插入图片描述
常见原因:网络中部署了二层冗余环境,或人为的误接线缆导致;
需借助特定的协议或机制实现二层防环;
二层帧头中并没有任何信息可用于防止数据帧被无止尽地转发。

生成树协议在园区网络中的应用位置
在这里插入图片描述
STP的基本概念:桥ID
桥ID(Bridge ID,BID)
IEEE 802.1D标准中规定BID由16位桥优先级(Bridge Priority)与桥MAC地址构成
每一台运行STP的交换机都有一个唯一的BID。
BID桥优先级占据高16bit,其余的低48bit是桥的MAC地址。
在STP网络中,BID最小的设备会被选举为根桥。
Bridge (网桥),最早网桥是起着交换机功能,现在网桥功能被交换机整合,Bridge延申下来,代指交换机。

步骤:
1、选出根桥,每个交换机运行了STP,有一个桥ID,最小的ID为根桥
2、选出根端口,每个非根桥上选取一个根端口,收到bpdu最优的端口
3、选出指定端口,一个接口,发的bpdu,比收到的bpdu,更优,是指定端口(DP)
4、阻塞其它端口
,非指定端口就会被阻塞

esnp实验
在这里插入图片描述

进入lsw1
[Huawei]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-ccbf-60d7
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-cc2c-33c5 / 20000
CIST RegRoot/IRPC   :32768.4c1f-ccbf-60d7 / 0
CIST RootPortId     :128.2
BPDU-Protection     :Disabled

简单的看一下前几行信息
CIST Bridge :桥ID 32768.4c1f-ccbf-60d7
可以通过display interface vlan 1命令验证MAC信息对不对

[Huawei]dis inter vlan 1
Vlanif1 current state : UP
Line protocol current state : DOWN
Description:
Route Port,The Maximum Transmit Unit is 1500
Internet protocol processing : disabled
IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 4c1f-ccbf-60d7
Current system time: 2023-01-08 16:44:38-08:00
    Input bandwidth utilization  : --
    Output bandwidth utilization : --

CIST Root/ERPC :根桥信息 32768.4c1f-cc2c-33c5 / 20000
32768这个数字是选取要求:4096的倍数,桥优先级
后面是根桥的mac地址,桥id(BID)最小的选举为根桥
可以通过设置前面的桥优先级数字项小来设置根桥
设置桥优先级命令:(待补充)

华为交换机默认是开启STP功能的

开销(Cost)
(这里的cost与其他表的cost单独,计算方式与路由下一条cost无关,与vlan的cost也不一样,STP独立的cost)

  • 每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。
  • 接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
  • 接口带宽越大,则Cost值越小。
  • 用户也可以根据需要通过命令调整接口的Cost。

对应关系表
在这里插入图片描述
接口Cost是已经激活了STP的接口所维护的一个开销值,与接口的速率有关联,并且设备使用不同的算法时,相同的接口速率对应不同的Cost值

思科老设备用IEEE 802.1d-1998标准
锐捷用IEEE 802.1t标准
可以通过设备设置项设置同一个标准,同步不同厂家的设备,使其通信正常。

根路径开销(Root Path Cost)(有点绕口)

  • 在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
  • 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。

接口ID(Port ID,PID)

  • 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。
  • 接口ID由两部分构成的,高4bit是接口优先级,低12bit是接口编号。
  • 激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128.用户可以根据实际需要,通过命令修改该优先级。(16的倍数)

BPDU(Bridge Protocol Data Unit,网桥协议数据单元)

  • BPDU是STP能够正常工作的根本。BPDU是STP的协议报文
  • STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。
  • BPDU分为两种类型:
    • 配置BPDU(Configuration BPDU),桥主动发送
    • TCN BPDU(Topology Change Notification BPDU),非根桥有故障触发
  • 配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在 网络拓扑发生变更时才会被触发。

配置BPDU的报文格式

PIDPVIBPDU TypeFlagsRoot IDRPCBridge IDPort IDMessage AgeMax AgeHello TimeForward Delay
211184822222

PID:协议ID,对于STP而言,该字段的值总为0
PVI:协议版本ID,对于STP而言,该字段的值总为0
BPDU Type:指示BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU
Flags:标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志
Root ID:根网桥的桥ID
RPC:根路径开销,到达根桥的STP Cost
Bridege ID:BPDU发送桥的ID
Port ID:BPDU发送网桥的接口ID(优先级+接口号)
Message Age:消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,所以它本质是到达根桥的跳数
Max Age:最大寿命,每一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为为该接口连接的链路发生故障。默认20s
Hello Time:根网桥连续发送的BPDU之间的时间间隔,默认2s
Forward Delay:抓发延迟,在侦听和学习状态所停留的时间间隔,默认15s,阻塞到转发需要30s转发延迟

配置BPDU的比较原则
STP按照如下顺序选择最优的配置BPDU:

  1. 最小的根桥ID
  2. 最小的RPC(根路径费用)
  3. 最小的网桥ID(会发送路径网桥id到根桥)
  4. 最小的接口ID

查看交换机STP摘要信息
display stp brief

[Huawei]dis stp brief
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        ALTE  DISCARDING      NONE
   0    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE

STP的接口状态

状态名称状态描述
禁用(Disable)该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down
阻塞(Blocking)该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
侦听(Listening)当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习,15s
学习(Learning)当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习,15s
转发(Forwarding)处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的角色需要是根接口或指定接口才能进入转发状态

MAC地址表的老化时间是300s

STP的基础配置命令
1、配置生成树工作模式
stp mode{stp|rstp|mstp}
交换机支持STP、RSTP、MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。
2、(可选)配置根桥
stp root primary
配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
3、(可选)备份根桥
stp root secondary
配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备的优先级。
4、配置交换机的STP优先级
stp priority priority
缺省情况下,交换机的优先级取值是32768
5、配置接口路径开销
stp pathcost-standard{dot1d-1998|dot1t|legacy}
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
6、stp cost cost
设置当前接口的路径开销值。
7、配置接口优先级
stp priority priority
配置接口的优先级。缺省情况下,交换机接口的优先级取值是128.
8、启用STP/RSTP/MSTP
stp enable
是能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。

RSTP对STP的改进
RSTP的接口角色共有4种:根接口、指定接口、预备接口和备份接口
端口状态不同

  • RSTP的状态规范把原来的5种状态缩减为3中。
    • 如果不转发用户流量也不学习MAC地址,那么接口状态就是Discarding状态。
    • 如果不转发用户流量但是学习MAC地址,那么接口状态就是Learning状态。
    • 如果既能转发用户流量又学习MAC地址,那么接口状态就是Forwarding状态。
STP接口状态RSTP接口状态接口在拓扑中的角色
ForwardingForwarding包括根接口、指定接口
LearningLearning包括根接口、指定接口
ListeningDiscarding包括根接口、指定接口
BlockingDiscarding包括根接口、指定接口
DisabledDiscarding包括根接口、指定接口

进阶课程以后会学前情预告
STP/RSTP的缺陷:所有的VLAN共享一颗生成树

  • RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。
  • 但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一颗生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发
    解决方式
    VBST:基于VLAN的生成树
    华为提出VBST(VLAN-Based Spanning Tree)生成树解决方案。该解决方案中,生成树的形成是基于VLAN的,不同VLAN间可形成相互独立的生成树,不同VLAN内的流量沿着各自的生成树转发,进而可实现流量的负载分担。
    MSTP:多生成树
    为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。
    MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中,实现VLAN数据的负载均衡。批量配置VLAN 效率高

堆叠与园区网络树形结构组网形态
Smart Link

感叹,刚看了一个高中生的学习成果,竟然开始分析其中的问题点,感觉好卷好卷,摸摸头发,没掉完继续把,无语泪两行啊

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

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

相关文章

CentOS7.x下部署oracle19c环境

CentOS7.x下部署oracle19c环境 文章目录CentOS7.x下部署oracle19c环境前言一、环境准备工作1.1、虚拟机搭建及关闭防火墙和selinux1.2、RPM包预安装1.3、检查安装情况用户组已创建完成1.4、创建目录1.5、修改/etc/hosts 文件1.6、设置oracle口令1.7、设置环境变量1.8、将oracle…

[LeetCode周赛复盘] 第 327 场周赛20230108

[LeetCode周赛复盘] 第 327 场周赛20230108 一、本周周赛总结二、 [Easy] 6283. 正整数和负整数的最大计数1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6285. 执行 K 次操作后的最大分数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6284. 使字符串总不同字符的数目相等…

10、ThingsBoard-租户

1、租户的概念 目前,有很多的系统都是以多租户的形式来设计的,目的是为了实现数据隔离,thingsboard中也是如此。但是thingsboard把租户在抽象成了一种实体,后续还会讲解其它的实体;用官方的语言解释租户:您可以将租户视为一个单独的业务实体:它是拥有或生产设备和资产的…

Java中ThreadLocal说明

1、ThreadLocal是什么 ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。 这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。 ——《Java并发编程艺术》如…

GrapeCity Documents Data Viewer[GcDataViewer] Crack

GrapeCity Documents Data Viewer,简称GcDataViewer,是一个统一的基于 JavaScript 的客户端查看器,旨在加载和预览与数据相关的所有流行文档格式。目前,查看器支持 XLSX、SSJSON 和 CSV 格式。除了仅加载数据文件外,数…

卷径计算(厚度累计法/膜厚积分法)

卷径计算的截面积法请参看下面的文章链接: 卷径计算详解(通过卷绕的膜长和膜厚进行计算)_RXXW_Dor的博客-CSDN博客有关卷绕+张力控制可以参看专栏的系列文章,文章链接如下:变频器简单张力控制(线缆收放卷应用)_RXXW_Dor的博客-CSDN博客_收放卷应用张力控制的开闭环算法,…

“/ArcGIS/services”应用程序中的服务器错误

本文迁移自本人网易博客,写于2013年1月5日No Content说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: No Content源错误…

第三章 图形初阶

我曾经多次向客户展示以数字和文字表示的、精心整理的统计分析结果,得到的只是客户呆滞的眼神,尴尬得房间里只能听到鸟语虫鸣。然而,当我使用图形向相同的用户展示相同的信息时,他们往往会兴致盎然,甚至豁然开朗。我经…

jQuery控制元素的显示与隐藏(三种方式对比)

hide和show hide:是$(“.类名”)或$(“#标签名”)或$(“标签名”).hide() show:是$(“.类名”)或$(“#标签名”)或$(“标签名”).show() 元素直接消失,没有任何动态效果 slideToggle 通过控制元素的高度来显示与隐藏,因此会有动画效果。slideToggle如果…

RHCE ansible 作业

1、jinjia2模板 hosts.j2,内容如下(主机名和ip地址使用变量): Welcome to 主机名 !(比如servera.lab.example.com) My ip is ip地址. 要求在所有受管主机生成文件:/etc/welcome.txt。 2、角色部分 根据下列…

【Java】生产者消费者模型

【Java】生产者消费者模型 0x1 前言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者…

设计模式的简单整理

单例的几种方式。 public class Single{private static volatile Single single;private single(){}public static Single getSingle(){if(single null){synchronized(Single.class){if(single null){single new Single();}}}return single;} } 在dcl中volatile为了防止指…

你问我答|为什么说数据中心散热迎来拐点?

喜报!      “绿色领跑企业”      近期,戴尔荣获由中环联合认证中心(CEC)颁发的“绿色领跑企业”奖项,这是继“环保产品领跑者”之后的又一殊荣,恭喜戴尔!    作为全球领先的数字化解决方案供应商,戴尔将可持续发展置于一切工作的核心,以智能、高效的解决方案帮助…

scikit-learn 线性回归 LinearRegression 参数详解

scikit-learn 线性回归 LinearRegression 参数详解LinearRegression 参数详解参考文献LinearRegression 参数详解 # 从 sklearn 中引入线性模型模块 from sklearn import linear_model # 建立线性回归对象 reg reg linear_model.LinearRegression(fit_interceptTrue,copy_XTr…

Stack 155.最小栈

力扣155. 最小栈 【解法一】俩个栈实现 【解法二】一个栈实现 155. 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推…

【C++】通过栈/队列/优先级队列/反向迭代器了解适配器及仿函数

目录 一、stack 实现一个stack 二、queue 实现一个queue 三、deque(双端对列)了解 1、deque的概念 2、为什么采用deque作为stack和queue的底层容器? 3、deque的缺点 3.1随机访问速度不如vector 3.2中间插入、删除速度不如list 3.3…

node.js——http模块

文章目录什么是 http 模块创建最基本的 Web 服务器request 请求对象response 响应对象解决中文乱码问题根据不同的 url 响应不同的 html 内容文件上传实战什么是 http 模块 http 模块是 Node.js 官方提供的、用来创建 Web 服务器的模块。 node.js提供了http模块,其…

【VCS Verdi】VCS Verdi 联合仿真总结

1. VCS 介绍VCS是编译型 Verilog 模拟器,它完全支持 OVI 标准的 Verilog HDL 语言、PLI 和 SDF。VCS 具有行业中较高的模拟性能,其出色的内存管理能力足以支持千万门级的 ASIC 设计,而其模拟精度也完全满足深亚微米 ASIC Sign-Off 的要求。VC…

C++模拟实现优先级队列(priority_queue)

目录 一、 仿函数 1.1仿函数的概念使用 1.2模拟实现仿函数 二、优先级队列(priority_queue) 2.1 优先级队列概念 2.2 优先级队列使用 2.3 模拟实现优先级队列 2.3.1 优先级队列类框架 2.3.2 模板参数 2.3.3 构造函数 2.3.4 仿函数 2.3.5 adjust_up (堆向…

linux系统中QT里面信号与槽的实现方法

大家好,今天主要来聊一聊,QT中信号与槽的使用方法。 目录 第一:QT中信号与槽简介 第二:如何在项目里创建信号 第三:如何在项目中创建槽 第四:项目中连接信号与槽 第一:QT中信号与槽简介 在学…