生成树技术华为ICT网络赛道

news/2024/4/19 13:42:34/文章来源:https://blog.csdn.net/Williamtym/article/details/136059011

9.生成树

目录

9.生成树

9.1.生成树技术概述

9.2.STP的基本概念及工作原理

9.3.STP的基础配置

9.4.RSTP对STP的改进

9.5.生成树技术进阶


9.1.生成树技术概述

技术背景:二层交换机网络的冗余性与环路

1699459448217

典型问题1:广播风暴

典型问题2:MAC地址漂移

初识生成树协议

1699459831024

在网络中部署生成树,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路。

生成树能够动态响应网络拓扑变化调整阻塞接口

1699460224579

交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。

因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

二层及三层环路

1699460531489

生成树协议在园区网络中的应用位置

1699460608614

STP概述

STP是一个用于局域网中消除环路的协议。

运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。

STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。

由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

9.2.STP的基本概念及工作原理

STP的基本概念:桥ID

1699515760484

STP的基板概念:根桥

1699515855747

STP的基本概念:Cost

1699516014426

根路径开销

1699516038340

STP的基本概念:Port ID

1699516155292

STP的基本概念:BPDU

1699516417337

1699519252894

配置BPDU的比较原则

对于STP而言,最重要的工作就是在交换网络中计算出一个无环拓扑。在拓扑计算的过程中,一个非常重要的内容就是配置BPDU的比较。在配置BPDU中,有四个字段非常关键,它们是“根桥1D”、“根路径开销”、“网桥ID”以及“接口ID”,这四个字段便是交换机进行配置BPDU比较的关键内容。

STP按照如下顶序选择最优的配置BPDU:

  1. 最小的根桥ID

  2. 最小的RPC

  3. 最小的网桥ID

  4. 最小的接口ID

在这四条原则中(每条原则都对应配置BPDU中的相应字段),第一条原则主要用于在网络中选举根桥,后面的原则主要用于选举根接口及指定接口。

配置BPDU的转发过程

1699519708159

STP的计算过程

1699519935348

1699519991005

1699520077931

STP的接口状态

1699520444259

STP的接口状态迁移

1699520557098

拓扑变化 - 根桥故障

1699520679687

拓扑变化 - 直连链路故障

1699520764721

拓扑变化 - 非直连链路故障

非直连链路故障后,SW3的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。

1699520870524

9.3.STP的基础配置

交换机支持STP、RSTP和MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。

  • 开启STP生成树。

[LSW1] stp enable
  • 使用STP模式。

[LSW1] stp mode stp
  • 配置设备优先级。

[LSW1] stp priority 0~61440
  • 强制设置成为根桥。

[LSW1] stp root primary
  • 强制设置成为备用根桥。

[LSW1] stp root secondary

9.4.RSTP对STP的改进

STP的不足之处

STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网终中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。

STP没有细致区分接口状态和接口角色,不利于初学者学习及部署。

网络协议的优劣往往取决于协议是否对各种情况加以细致区分。

  1. 从用户角度来讲,Listening、disable和B1 ocking状态并没有区别,都同样不转发用户流量。

  2. 从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而是在于接口扮演的角色。

  3. 根接口和指定接口可以都处于Listening状态,也可能都处于Forwarding状态

STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。

STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP网络。这也是导致拓扑收敛慢的主要原因之一。

RSTP概述

IEEE 802.1w中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。

STP引入了新的接角色,其中替代接口的引入使得交换机在根接口失效时,能够立即获得新的路径到达根桥。备份端口作为指定端口的备份,帮助链路上的网桥快速获得到根桥的备份路径。RSTP的状态规范根据端口是否转发用户流量和学习MAC地址把原来的5种状态缩减为3种。另外,RSTP还引入了边缘接口的概念,这使得交换机连接终端设备的接口在初始化之后能够立即进入转发状态,提高了工作效率。

RSTP对STP的其它改进

配置BPDU的处理发生变化:

  1. 拓扑稳定后,配置BPD报文的发送方式进行了优化

  2. 使用更短的BPDU超时计时

  3. 对处理次等BPDU的方式进行了优化

配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色

RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。

边缘端口

如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。

1699522361782

端口状态不同

RSTP的状态规范把原来的5种状态缩减为3种。

  1. 如果不转发用户流量也不学习MAC地址,那么接口状态就是Discarding状态

  2. 如果不转发用户流量但是学习MAC地址,那么接口状态就是Learning状态。

  3. 如果既转发用户流量又学习MAC地址,那么接口状态就是Forwarding状态。

1699522525333

9.5.生成树技术进阶

RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。

但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发。

1699522638603

MSTP:多生成树

1699522891752

MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。

每棵生成树叫做一个多生成树实例MSTI(Multiple Spannin品Tree Instance)。

所谓生成树实例就是多个VLAN的集合所对应的生成树。

通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。

MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。

可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在接口上的转发状态取决于接口在对应实例的状态。

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

1699522975661

Smart Link

1699523031597

Smart Link是一种为双上行组网量身定做的解决方案:

  1. 在双向行的设备上部署,当网络正常时,两条上行链路中,一条处于活跃状章而另一条则处于备份状态(不承载业务流量)。如此一来二层环路就此打破。

  2. 当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,保证了数据的正常转发。

  3. Smart Link配置简单,便于用户操作。

  4. 无需协议报文交互,收敛速度及可靠性大大提升。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《UE5_C++多人TPS完整教程》学习笔记10 ——《P11 设置加入游戏会话(Setup for Joining Sessions)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P11 设置加入游戏会话(Setup for Joining Sessions)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&…

Linux开发:PAM1 介绍

PAM(Pluggable Authentication Modules )是Linux提供的一种通用的认证方式,他可以根据需要动态的加载认证模块,从而减少认证开发的工作量以及提供认证的灵活度。 1.PAM的框架 PAM的框架由一下几个部分构成 1)应用程序,即需要使用认证服务的程序,这些应用程序是使用抽象…

单例模式 C++

6 种 单例 的手写,都是懒汉(饿汉代码在 “懒汉 / 饿汉的区别”) 目录 ✊前言 🌼GPT解析 🌼概念解析 RAII 懒汉 / 饿汉的区别 特点 举例 单例 -- 伪代码 适用场景 单例 -- 实现方式 优缺点 🎂手…

【Iceberg学习二】Branch和Tag在Iceberg中的应用

Iceberg 表元数据保持一个快照日志,记录了对表所做的更改。快照在 Iceberg 中至关重要,因为它们是读者隔离和时间旅行查询的基础。为了控制元数据大小和存储成本,Iceberg 提供了快照生命周期管理程序,如 expire_snapshots&#xf…

《Linux 简易速速上手小册》第9章: 备份与恢复策略(2024 最新版)

文章目录 9.1 理解备份的重要性9.1.1 重点基础知识9.1.2 重点案例:数据中心遭受火灾9.1.3 拓展案例:个人电脑硬盘故障9.1.4 企业级数据库被恶意软件加密 9.2 实施备份策略9.2.1 重点基础知识9.2.2 重点案例:为中小企业实施备份策略9.2.3 拓展…

springboot165科研工作量管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

基于SpringBoot+Vue的服装销售商城系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

bert-vits2本地部署报错疑难问题汇总

环境: bert-vits2.3 win 和wsl 问题描述: bert-vits2本地部署报错疑难问题汇总 解决方案: 问题1: Conda安装requirements里面依赖出现ERROR: No matching distribution found for opencc1.1.6 解决方法 需要在 Python 3.11 上使用 Op…

linux服务器如何提高游戏帧率?

在Linux服务器上,由于硬件配置和系统的限制,提高游戏帧率变得更加困难。但是通过一些优化和调整,我们仍然可以提升Linux服务器上的游戏性能。 首先我们需要了解游戏帧率与服务器性能之间的关系。游戏帧率是指游戏每秒渲染的帧数,…

《统计学简易速速上手小册》第6章:多变量数据分析(2024 最新版)

文章目录 6.1 主成分分析(PCA)6.1.1 基础知识6.1.2 主要案例:客户细分6.1.3 拓展案例 1:面部识别6.1.4 拓展案例 2:基因数据分析 6.2 聚类分析6.2.1 基础知识6.2.2 主要案例:市场细分6.2.3 拓展案例 1&…

【XR806开发板试用】轻松连上华为云实现物联网

本文为极术社区XR806试用活动文章。 一.开始 偶然的机会在网上看到了鸿蒙开发板的试用,作为一个"老鸿蒙"岂能放弃这个机会,报名之后不出意料地得到了使用名额,在此感谢极术社区. 收到开发板之后其实还有点失望了,就那么一个小小的核心板,其他啥也没有,连一根数据线…

【精选】java进阶——包和final

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

【CC++】内存管理2:new + delete

前言 今天继续来学new和delete operator new 与operator delete函数 new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通…

Android Studio无法安装Git问题解决(折中方案)

安装配置好studio,往往会使用git克隆github上面的项目,但是却发现git无法正确安装,本文将介绍如何解决git无法安装这一问题。 对于git安装,实际比较复杂,可以参考这一篇博客。 Git 详细安装教程(详解 Gi…

13 年后,我如何用 Go 编写 HTTP 服务(译)

原文:Mat Ryer - 2024.02.09 大约六年前,我写了一篇博客文章,概述了我是如何用 Go 编写 HTTP 服务的,现在我再次告诉你,我是如何写 HTTP 服务的。 那篇原始的文章引发了一些热烈的讨论,这些讨论影响了我今…

JS高级(四)- 深浅拷贝、异常处理、处理this、防抖节流md

文章目录 1.深浅拷贝1.1浅拷贝1.2深拷贝1.2.1递归实现深拷贝1.2.2 js库lodash里面cloneDeep内部实现了深拷贝1.2.3 JSON序列化 2.异常处理2.1 throw2.2 try ... catch2.3 debugger 3.处理this(this小结)3.1普通函数3.2箭头函数3.3改变this指向3.3.1 call3.3.2 apply3.3.3 bind3…

rediss集群 三主三从集群模式

三主三从集群模式 1)、新建redis集群目录:7001~7006工作目录【/app/soft/redis-cluster/目下】 2)、在7001~7006 目录下创建bin和conf 目录,然后将/app/soft/redis/bin目录下的文件分别拷贝到7001~7006 目录,然后在7001~7006 目…

Transformers微调BERT模型实现文本分类任务(colab)

1. 数据准备 使用colab进行实验 左上角上传数据,到当前实验室 右上角设置GPU选择 查看GPU ! nvidia-sm安装需要的库 !pip install datasets !pip install transformers[torch] !pip install torchkeras1.1 读取数据 import pandas as pd data pd.read_csv(&…

Elasticsearch:使用查询规则(query rules)进行搜索

在之前的文章 “Elasticsearch 8.10 中引入查询规则 - query rules”,我们详述了如何使用 query rules 来进行搜索。这个交互式笔记本将向你介绍如何使用官方 Elasticsearch Python 客户端来使用查询规则。 你将使用 query rules API 将查询规则存储在 Elasticsearc…

C#在窗体正中输出文字以及输出文字的画刷使用

为了在窗体正中输出文字,需要获得输出文字区域的宽和高,这使用MeasureString方法,方法返回值为Size类型; 然后计算输出的起点的x和y坐标,就可以输出了; using System; using System.Collections.Generic; …