生成树协议

news2024/9/23 1:33:46

文章目录

  • STP
    • 冗余交换网络为什么存在广播风暴?
      • 广播的危害?
      • 交换环路的危害?
    • 工作机制
      • BPDU
        • 什么是最好的bpdu
        • BPDU触发机制
    • STP选举步骤
    • 配置
      • 协议分析
      • 字段分析
      • 开销模式
      • 端口状态
    • 故障类型
      • 根桥故障
      • 直连故障
      • 间接故障 (链路中间可能有HUB,光路等情况)
    • 如何控制端口的选举
    • stp协议收敛为什么慢?

STP

注意:华为交换机默认开启MSTP

STP PVID 0 802.1D RSTP PVID 2 802.1W MSTP PVID 3
802.1S VBSTP 华为私有,用于和思科交换机做兼容(老版本交换机并不支持)

冗余交换网络为什么存在广播风暴?

1、交换机转发广播报文的机制是泛洪;
2、以太网帧中没有防环字段,帧在转发时没有TTL-1机制,所以会持续的存在广播环路问题。

广播的危害?

1、消耗交换机性能
2、消耗链路带宽
3、主机收到广播要交给CPU处理,影响主机性能

交换环路的危害?

1、广播风暴
2、MAC地址表震荡
3、重复数据帧的接收

工作机制

1、运行STP协议时,每台交换机认为自己时根桥,发送以自己为根的BPDU
2、交换BPDU后,进行根桥的选举,根桥确定后由根桥周期性(2s)发送以自身为根的BPDU,非根桥不在发送以自己为根的BPDU

BPDU

Bridge Protocol Data Unit:桥接协议数据单元

什么是最好的bpdu

1、ROOT ID最小的BPDU最好;
2、累计RPC之和最小;
3、BID最小;
4、PORT ID 最小
5、自身PORT ID小的

运行STP协议的交换机,出厂携带一个BID,桥标识符,用于标识自身; BID由桥优先级+MAC地址组成
桥优先级的取值范围,华为设备的取值范围为0-61440,取4096的倍数,默认为32768; 根桥ID:描述根桥的BID;
桥ID:描述自身的BID; 根桥ID=桥ID 则认为自身是根桥,根桥ID!=桥ID 则认为交换机不是根桥; PORT
ID:由端口优先级.port号组成; 端口优先级,取值范围0-240,默认值128,取16的倍数

STP协议一共2种BPDU
1、配置BPDU
2、TCN BPDU(拓扑改变通知BPDU)

BPDU触发机制

华为:
STP协议当接口UP/down并过渡到forwarding状态,会发生TCN BPDU

逐跳传给根桥,上游向下游发送TCA=1,TC=1的配置BPDU,用于确认TCN,并将TCN逐跳传给根桥,根桥在接收到TCN的端口上回送一个TCA=1,TC=1的配置BPDU,用于确认TCN,并通知网络拓扑发送变化,配置BPDU,在其它端口上则发送TCA=0,TC=1的配置BPDU

TCN从RP发向根桥

stp协议最早认为任何端口进入到forwarding状态或者进入disable状态时,认为stp拓扑发送变化,后来stp对拓扑发生变化的定义作出了优化:
1、当DP端口进入到forwarding状态认为拓扑发生了变化;
2、RP失效或者RP进入forwarding状态;
3、非根桥DP端口失效不认为拓扑发生变化;
4、根桥的DP失效直接发送TC BPDU。

STP选举步骤

1、选举根桥,根桥不存在根端口(两者互斥)
2、其他交换机为非根桥,在非根桥上选举根端口(RP),非根桥上有且只有一个根端口。
3、在每条链路上选举出一个指定端口(DP),每条链路有且只有一个指定端口(根端口和指定端口不能时同一个端口)
4、即不是根端口,也不是指定端口的端口,就成为阻塞端口。

发送时不累加开销,接收时累加开销
根桥:BID最小的交换机成为根桥。
先比较桥优先级,越小越优,桥优先级相同,则比较MAC地址,越小越优, 根桥可以被抢夺
STP通过交换BPDU(帧),来完成选举以及树的维护
根端口:交换机上接收最好的BPDU,可以假想为在交换机上有一台主机,看其去根交换机最近链路
指定端口:链路上发送最好BPDU的端口,可以假想为在链路上有一台主机,看其去根交换机最近链路

配置

协议分析

在这里插入图片描述

stp协议计时器的配置,仅在根桥配置即可。

【SW1】stp timer hello 300
[SW1]stp  timer forward-delay 2000 #1、决定了在监听状态和学习状态维持的时间,2、收到TC BPDU后MAC地址的老化时间
[SW1]stp timer max-age 3000

字段分析

在这里插入图片描述

flags:
TC bit:拓扑改变
TCA bit:拓扑改变确认
message age :BPDU存活时间,根桥发送时为0.每经过一台交换机+1
max age :BPDU最大存活时间,默认是20s,当message age等于max age,则认为该BPDU失效
hello timer :BPDU发送间隔,默认是2s
forway delay :端口在监听状态和学习状态分别等待的时间,默认是15s

开销模式

stp pathcost-standard 命令修改路径开销标准
            dot1d-1998     IEEE 802.1D-1998    #IEEE标准,比较老,一般不建议使用
            dot1t          IEEE 802.1T         #IEEE标准,新标准,华为默认
            legacy         Legacy              #华为私有标准

端口状态

1、禁用状态(disabled):接口被shutdown,端口即不处理和转发BPDU报文,也不转发用户流量
2、阻塞(blocking):接口使能/RP或者DP不在是RP或DP的时候,端口仅仅能接收并处理BPDU报文,但不能转发用户流量;
3、监听(listening):当block成为RP或者DP时,监听时间15s,即转发延时时间,默认15s,端口可以转发BPDU报文,但不转发用户流量;
4、学习(learning):listening经历转发延时后进入learning状态,端口可以根据收到的用户流量构建MAC地址表,但不转发用户流量,增加learning状态时为了防止临时环路
5、转发(forwarding):在learning经历转发延时后进入forwarding,端口即可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入forwarding状态
端口状态转化
在这里插入图片描述

故障类型

根桥故障

需要50s时间进入转发状态

直连故障

1、存在AP端口的交换机出现RP的直连故障,AP成为新的RP,在经历2倍的转发延(30s)时后进入转发状态,故障恢复。
2、不存在AP端口的交换机出现RP的直连故障后,该交换机会以自己为根发送BPDU,下游交换机等待20s老化,才处理该BPDU,当下游端口确定时DP时,经历2倍的转发延时进入转发状态,总计50s恢复故障。

间接故障 (链路中间可能有HUB,光路等情况)

1、存在AP端口的交换机出现RP的直连故障,RP的BPDU老化后(20s),AP成为新的RP,在经历2倍的转发延(30s)时后进入转发状态,50s故障恢复。
2、不存在AP端口的交换机出现RP的直连故障后,该交换机会以自己为根发送BPDU,下游交换机等待20s老化,才处理该BPDU,当下游端口确定时DP时,经历2倍的转发延时进入转发状态,总计50s恢复故障。
故障将导致MAC地址表学习到的MAC地址表项错误,由于MAC地址需要300S的老化时间,所以在300s内,无法学习到正确的转发mac地址以及端口,所以有了TC BPDU ,接收到TC BPDU后,交换机会将mac地址表对应端口的老化时间更改为15s(可能时因为端口需要经历listening和learning状态,当15s老化以后,端口状态已经到达listening向learning转变状态,可以更好的让端口在达到forwarding状态后学习到正确的mac地址),到时间后从新开始学习正确的mac地址表项。

mac地址更改为15s的老化时间有效期为35,即在35s内会持续发送TC=1的报文,当35s以后,端口老化时间会恢复为300s
定义为35s时因为交换机可能会学习到新根桥,而老根桥老化时间为20s,另外15s时学习的时间,学习15s时考虑到网络中最好最多有7层拓扑,BPDU的转发时间为2s,所以当有7层网络时,大约15s可以传遍所有拓扑

如何控制端口的选举

1、更改接口的cost值(如果想控制某端口的角色,需要更改本端端口cost值);
2、更改接口的port id值(如果想控制某端口的角色,需要更改对端端口port id值);

stp协议收敛为什么慢?

端口角色的计算实际上非常快,比如当AP被计算为RP或者DP时,这个选举过程时非常快的,但为什么要等待30s?
监听状态15s,为了防止临时环路,让BPDU有足够的时间传递到全网,防止STP收敛过程中新的AP端口还没被计算出来,而其他端口都处于转发状态导致的临时环路;
学习状态15s,在stp收敛过程中存在MAC地址提前老化,为了避免大量未知MAC地址地址的单播帧被泛洪转发,设计一段MAC地址学习时间,避免泛洪过多。
所以stp协议为了避免临时环路和泛洪,被动等待计时器超时机制收敛,收敛慢。

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

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

相关文章

vuejs 设计与实现 - 渲染器的设计

渲染器与响应式系统的结合 本节,我们暂时将渲染器限定在 DOM 平台。既然渲染器用来渲染真实 DOM 元素,那么严格来说,下面的函数就是一个合格的渲染器: // 渲染器: function renderer(domString, container) {container.innerHTM…

中级课程-SSRF(CSRF进阶)

文章目录 成因危害挖掘 成因 危害 挖掘

JUC并发编程之线程锁(一)

目录 1.ReentrantLock(互斥锁) 2.ReentRantReaderWriterLock(互斥读写锁) 3.StampedLock(无障碍锁) 4.Condition(自定义锁) 5.LockSupport 问题引出: 由于传统的线程控制需要用到同步机制Sy…

LeetCode--HOT100题(23)

目录 题目描述:206. 反转链表(简单)题目接口解题思路代码 PS: 题目描述:206. 反转链表(简单) 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 LeetCode做题链接&…

剑指offer56-II.数组中数字出现的次数II

第一种方法非常简单,就是用一个HashMap,key是数组中元素的值,value是出现的次数,所以遍历一遍数组,如果map中没有这个元素就把它put进去value设为1,否则value加1,然后遍历一遍map,如…

tensorflow 1.14 的 demo 02 —— tensorboard 远程访问

tensorflow 1.14.0, 提供远程访问 tensorboard 服务的方法 第一步生成 events 文件: 在上一篇demo的基础上加了一句,如下, tf.summary.FileWriter("./tmp/summary", graphsess1.graph) hello_tensorboard_remote.py …

Celery嵌入工程的使用

文章目录 1.config 1.1 通过app.conf进行配置1.2 通过app.conf.update进行配置1.3 通过配置文件进行配置1.4 通过配置类的方式进行配置2.任务相关 2.1 任务基类(base)2.2 任务名称(name)2.3 任务请求(request)2.4 任务重试(retry) 2.4.1 指定最大重试次数2.4.2 设置重试间隔时间…

基础排障实验

排障实验要求: 确保重启后服务能正常访问。确保在客户机上,应用能够使用http://www.jxjz.com:8081访问。确保DNS能够解析邮件服务器mail.jxjz.com。确保DHCP能够保留地址192.168.100.200/24给MAC为ff-0a-ac-44-33-22的主机。确保client客户机能正常的分…

【mars3d - 报错】使用mars3d加载时的一些报错和不生效问题

在使用过程中遇到过很多报错,不管大的还是小的,在这里总结下,应该会持续更新; 1、设置贴地之后报错 可能是因为 arcType:Cesium.arcType.NONE 与 clampToGround:true 是相互冲突的,两个都设置就…

Ubuntu常用压缩指令总结

一、tar tar是Linux系统中最常用的压缩工具之一,它的一个优点是它可以保留文件的权限和所有权信息。tar可以创建.tar文件(通常称为"tarball"),或者与gzip或bzip2等工具结合使用来创建.tar.gz或.tar.bz2文件。gzip工具的…

考研算法第40天:众数 【模拟,简单题】

题目 本题收获 又是一道比较简单的模拟题,就不说解题思路了,说一下中间遇到的问题吧,就是说cin输入它是碰到空格就停止输入的,详细的看下面这篇博客对于cin提取输入流遇到空格的问题_while(cin) 空格_就是那个党伟的博客-CSDN博…

【动态规划刷题 6】 删除并获得点数 粉刷房子

740. 删除并获得点数 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你拥有 0 个点数。…

JavaScript实践:用Canvas开发一个可配置的大转盘抽奖功能

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已…

基于Qlearning强化学习的路径规划算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Q值更新规则 4.2 基于Q-learning的路径规划算法设计 4.3 Q-learning路径规划流程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ..…

leetcode870. 优势洗牌(java)

优势洗牌 leetcode870. 优势洗牌题目描述双指针 排序代码 滑动窗口 leetcode870. 优势洗牌 难度 - 中等 leetcode870. 优势洗牌 题目描述 给定两个长度相等的数组 nums1 和 nums2,nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描…

SecOC基础原理详解1

1、SecOC是什么? SecOC官方说法叫安全通讯模块。通俗一点就是发送CAN原始数据的时候进行加密,解析CAN原始数据的时候进行解密。 车上实施SecOC机制数据的ECU(ECU是啥?可以百度一下),即使接收到了攻击性的…

如何将NAS空间变为本地磁盘,并拥有与实体硬盘所有常用功能

1.前言 作为一个垃圾佬,用自己的双路E5板子,加持PCIE拆分,4块PM983A齐上阵,气势可嘉。作为一个家庭NAS,如果仅仅用他当作一个普通的存储区存储数据那未免太过于浪费了;另一边,由于工作机硬盘太…

leetcode 子序列问题

718 最长重复子数组 此处求的是连续的子序列,使用动态规划进行求解。 使用dp[i][j]表示第1个序列前i个数字和第2个序列前j个数字的最大的重复子数组长度。 class Solution(object):def findLength(self, nums1, nums2):""":type nums1: List[int]:t…

Kotlin语法

整理关键语法列表如下: https://developer.android.com/kotlin/interop?hlzh-cn官方指导链接 语法形式 说明 println("count ${countnum}")字符串里取值运算 val count 2 var sum 0 类型自动推导 val 定义只读变量,优先 var定义可变变量…

Visual Studio在Release模式下设置代码的调试

Visual Studio在Release模式下设置代码的调试 Debug 模式下模型的加载速度、打开速度会降低很多,这里不推荐使用 Debug 模式进行调试。 Release 模式下可进行调试,使用 Release 模式调试,会提高模型打开速度、 加载速度、编译速度&#xff0c…