网络知识点之-STP协议

news2024/11/25 11:34:50

STP(Spanning Tree Protocol)是生成树协议的英文缩写,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。

  • 中文名:生成树协议
  • 外文名:Spanning Tree Protocol
  • 简写:STP
  • 适合对象:适合所有厂商的网络设备
  • 类型:链路管理协议

技术原理

STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用于计算无环的生成树的,后者则是用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)。

Spanning Tree Protocol(STP)是在IEEE 802.1D 文档中定义,该协议的原理是按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。

Spanning Tree Protocol(STP)的基本思想就是按照"树"的结构构造网络的拓扑结构,树的根是一个称为根桥的桥设备,根桥的确立是由交换机或网桥的BID(Bridge ID)确定的,BID最小的设备成为二层网络中的根桥。BID又是由网桥优先级和MAC地址构成,不同厂商的设备的网桥优先级的字节个数可能不同。由根桥开始,逐级形成一棵树,根桥定时发送配置BPDU,非根桥接收配置BPDU,刷新最佳BPDU并转发。这里的最佳BPDU指的是当前根桥所发送的BPDU。如果接收到了下级BPDU(新接入的设备会发送BPDU,但该设备的BID比当前根桥大),接收到该下级BPDU的设备将会向新接入的设备发送自己存储的最佳BPDU,以告知其当前网络中根桥;如果接收到的BPDU更优,将会重新计算生成树拓扑。当非根桥在离上一次接收到最佳BPDU最长寿命(Max Age,默认20s)后还没有接收到最佳BPDU的时候,该端口将进入监听状态,该设备将产生TCN BPDU,并从根端口转发出去,从指定端口接收到TCN BPDU的上级设备将发送确认,然后再向上级设备发送TCN BPDU,此过程持续到根桥为止,然后根桥在其后发送的配置BPDU中将携带标记表明拓扑已发生变化,网络中的所有设备接收到后将MAC表项的刷新时间从300s缩短为15s。整个收敛的时间为50s左右。

功能介绍

生成树协议是IEEE 802.1D中定议的数据链路层协议,用于解决在网络的核心层构建冗余链路里产生的网络环路问题,通过在交换机之间传递网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),通过采用STA生成树算法选举根桥、根端口和指定端口的方式,最终将网络形成一个树形结构的网络,其中,根端口、指定端口都处于转发状态,其他端口处于禁用状态。如果网络拓扑发生改变,将重新计算生成树拓扑。生成树协议的存在,既解决了核心层网络需要冗余链路的网络健壮性要求,又解决了因为冗余链路形成的物理环路导致“广播风暴”问题。

但是,由于协议机制本身的局限,STP保护速度慢(即使是1s的收敛速度也无法满足电信级的要求),如果在城域网内部运用STP技术,用户网络的动荡会引起运营商网络的动荡。在MSTP 组成环网中,由于SDH保护倒换时间比STP协议收敛时间快的多,系统采用依然是SDH MS-SPRING或SNCP,一般倒换时间在50ms以内。但测试时部分以太网业务的倒换时间为0或小于几个毫秒,原因是内部具有较大缓存。SDH保护倒换动作对MAC层是不可见的。这两个层次的保护可以协调工作,设置一定的“拖延时间”(hold-off),一般不会出现多次倒换问题。

VLAN影响

L2,L3交换已经非常成熟。Internet中也越来越广泛地应用了交换技术,全交换网络已经非常普遍。在这些网络中,VLAN的使用是必不可少的。

VLAN是一个根据作用、计划组、应用等进行逻辑划分的交换式网络。与用户的物理位置没有关系。举个例子来说,几个终端可能被组成一个部分,可能包括工程师或财务人员。当终端的实际物理位置比较相近,可以组成一个局域网(LAN)。如果他们在不同的建筑物中,就可以通过VLAN将他们聚合在一起。同一个VLAN中的端口可以接受VLAN中的广播包。但别的VLAN中的端口却接受不到。

1、网络容错能力不强;

2、报文在环路网络中容易增生和无限循环;

3、不利在VLAN中实现流量负载均衡

生成树协议运行生成树算法(STA).生成树算法很复杂,但是其过程可以归纳为以下3个步骤:

(1)选择根网桥

(2)选择根端口

(3)选择指定端口

关于选择根网桥:选择根网桥的依据是网桥ID,网桥ID由网桥优先级和网桥MAC地址组成。网桥的默认优先级是32768.使用show mac-address-table时,显示在最前面的MAC地址就是计算时所使用的MAC地址。网桥ID值小的为根网桥,当优先级相同时,MAC地址小的为根网桥。

关于选择根端口:每个非根交换机选择一个根端口。选择顺序为:到根网桥最低的根路径成本→发送BPDU的网桥ID较小→端口ID较小的。端口ID由端口优先级与端口编号组成。默认的端口优先级为128。

关于选择指定端口:每个网段上选择一个指定端口。选择顺序为:根路径成本较低→发送BPDU的交换机的网桥ID值较小→本端口的ID值较小。另外,根网桥的接口皆为指定端口,因为根网桥上端口的根路径成本为0。

协议不足

1、拓扑收敛慢,当网络拓扑发生改变的时候,生成树协议需要50-52秒的时间才能完成拓扑收敛。

2、不能提供负载均衡的功能。当网络中出现环路的时候,生成树协议简单的将环路进行Block,这样该链路就不能进行数据包的转发,浪费网络资源。

运行过程

生成树协议运行生成树算法(STP)。生成树算法很复杂,但是其过程可以归纳为以下三个部分。

(1)选择根网桥

(2)选择根端口

(3)选择指定端口(也有书籍称为转发端口)

选择根网桥的依据是交换机的网桥优先级,网桥优先级是用来衡量网桥在生成树算法中优先级的十进制数,取值范围是0~65535.默认值是32768,网桥ID=网桥优先级+网桥MAC地址组成的,共有8个字节。由于交换机的网桥优先级都是默认,所以在根网桥的选举中比较的一般是网卡MAC地址的大小,选取MAC地址小的为根网桥。

根端口依据

(1)到根网桥路径开销最低。

根路径开销是两个网桥间的路径上所有链路的开销之和,也就是某个桥网到达根网桥的中间所有链路的路径开销之和。

IEEE标准路径开销表:5090a14396804c0b9e7307c5c2d6fdd8.jpg

 (2)最低的发送方网桥ID。

(3)最低的端口ID。

由于端口的ID是由优先级和端口号组成,保证了根端口的唯一性。

指定端口依据

(1)根路径开销较低

(2)所在的交换机网桥ID值最小

(3)端口号最小

注:根桥上的所有端口都是指定端口

端口状态

Blocking(阻塞状态):此时,二层端口为非指定端口,也不会参与数据帧的转发。该端口通过接收BPDU来判断根交换机的位置和根ID,以及在STP拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情况下,端口会在这种状态下停留20秒钟时间。

Listening(侦听状态):生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,并以此通告邻接的交换机该端口会在活动拓扑中参与转发数据帧的工作。在默认情况下,该端口会在这种状态下停留15秒钟的时间。

Learning(学习状态):这个二层端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种状态下停留15秒钟时间。

Forwarding(转发状态):这个二层端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发BPDU。

Disabled(禁用状态):这个二层端口不会参与生成树,也不会转发数据帧。

STP潜在故障

1、生成树算法不稳定

STP协议工作在第二层,在交换机端口之间传递网络协议单元获取网络拓扑,并通过STA算法阻断环路形成树形逻辑网络拓扑。但如果网络拓扑过于复杂,STA算法有时会存在失效的情况,这时根桥、根端口和指定端口的选举失败,导致环路的产生,使网络瘫痪。这一问题的根本原因理论上还无定论,多数人认为是STP协议本身不稳定的问题,比如STP生成树收敛过慢,导致网络协议单元数据包丢失过多,STA误以为网络中出现了单点故障,从而使处于阻塞状态的端口变为转发状态,网络出现环路导致网络瘫痪。此种故障出现的概率很低,但出现了很难排除。

2、端口工作方式导致端口工作模式不匹配

交换机的端口工作模式有单工(Simplex)、半双工(half-duplex)和全双工(full-duplex)三种模式,一般在配置时都采用自动协商的方式。在配置时如果将交换机一端人工设置为全双工,另一端仍然采用自动协商方式,在有些品牌的交换机中,将使通信链路在半双工模式下工作;更有一种极端的方式,将一端交换机的端口工作方式设置为全双工模式,而将链路对端交换机的端口设置为半双工模式,这都会导致双工不匹配的问题。其结果是工作在全双工模式下的端口在发送数据前不载波侦听链路是否处于空闲状态,直接发送数据,而工作在半双工模式下的端口在发送数据前先执行载波侦听且当链路处于空闲状态时才发送数据,此时,如果全双工端口持续性的有大量数据需要发送,那么半双工状态的端口将不会有数据传送给对端。STA在计算的时候,由于半双工状态的端口发送不了网络协议单元,STA会将处于阻塞状态的端口打开,从而形成环路。

3、单向链路故障

在采用光纤为通信介质的网络中,往往采用两组光纤收发链路来保证网络的可靠性和稳定性(一组通信,一组冗余),由于光纤收发器的故障、任意一组收发对中的某一条链路故障或者两组链路中的某一条链路出现了交叉连接,都会导致本端收发器能收到对端收发器发送的报文,但对端收发器收不到本端收发器发送的报文,这种故障称为单链路现象,隐蔽性高,不易排错。由于单链路故障影响了STP的网桥协议单元的发送,致使STA计算出现错误码,将本应处于阻断状态的端口转变为转发状态,从而导致环路的产生。

4、数据帧被损坏

交换机是二层通信,如果物理链路的通信质量不高(通信介质质量问题或干扰问题等),将导致数据帧在传输时被损坏,从而被丢弃。网桥协议单元在传输时因信道质量不高而损坏达到一定量后,会使STA误认为出现单点故障而将已阻断的端口打开通信。一般对于STP协议来讲,如果阻塞端口丢失网桥协议单元的状态超过50秒,就会出现故障。

5、网络设备资源不足引起故障

STP协议的执行及其网桥协议单元的处理都由网络设备(主要是交换机)的CPU来进行,如果交换机的CPU本身处理能力不强或被其他问题过渡占用,使交换机无法及时发出或接收网桥协议单元,引起STP无法正常工作的故障。

6、配置Por tFast快速端口引起的故障

在运行STP的网络中,如果将交换机上直接连接主机的端口配置为Port Fast,可以使端口直接从阻断状态转变为转发状态,从而使STP网络快速收敛。如果网络管理员在配置交换机是,将用于连接其他交换机的某个端口也设置为Port Fast,那么当该端口被启用时会直接进入转发状态,从而导致网络中短时存在环路,当环路中的数据流量相当大时,网络会瘫痪。

以上便是本期全部内容,希望看到这里的小伙伴们点个赞加关注,谢谢!🙏🙏🙏

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

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

相关文章

❤ VUE3 项目具体配置(二)

❤ VUE3 项目具体配置(二) 一、create-vue快速生成项目原理 介绍: 前段时间我们有去探索了一下vue-cli、cra的原理,生成项目的过程,他是基于webpack的,但是今天我们的主角是create-vue,他是基…

用final修饰java方法的参数

当Java方法的参数用final修饰: 如果输入参数是简单类型,那么在被调用函数内部不能修改参数的值。如果输入参数是对象的引用,那么在被调用函数内部不能改变对象的引用,即必须引用同一个对象,但可以修改对象的属性。 代…

数据预处理之数据规约

目录 一、前言 二、PCA的主要参数: 三、数据归约任务1 四、数据规约任务2 一、前言 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新…

第三十九章Java成员方法的声明和调用

声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据。一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型,其结构…

9、动手学深度学习——使用块的网络(VGG)

1、VGG块 虽然AlexNet证明深层神经网络卓有成效,但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。 在下面的几个章节中,我们将介绍一些常用于设计深层神经网络的启发式概念。 与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程…

element input,一个中文占3个字符

思路&#xff1a;标记字符的下标&#xff0c;截取&#xff0c;重新赋值 代码如下&#xff0c;可直接复制预览 <template><div class"form-item"><el-inputv-model"testValue":maxlength"maxlength"input"handleInput"…

Kafka入门, 消费者组案例(十九)

pom 文件 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.0.0</version></dependency></dependencies>独立消费者案例&#xff08;订阅主语&a…

简单认识LVS-DR负载群集和部署实例

文章目录 一、LVS-DR负载群集简介1、DR模式数据包流向分析2、DR 模式的特点 二、DR模式 LVS负载均衡群集部署 一、LVS-DR负载群集简介 1、DR模式数据包流向分析 1、客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff0…

放大器的基本知识

文章目录 1.反向输入&#xff08;引出&#xff1a;反向器&#xff09;1.反向输入例子 2.同向输入&#xff08;引出&#xff1a;电压跟随器&#xff09;2.同向输入例子 3.加法运算 1.反向输入&#xff08;引出&#xff1a;反向器&#xff09; 1.反向输入例子 —————————…

基于Java网上药品售卖系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

【MYSQL基础】基础命令介绍

基础命令 MYSQL注释方式 -- 单行注释/* 多行注释 哈哈哈哈哈 哈哈哈哈 */连接数据库 mysql -u root -p12345678退出数据库连接 使用exit;命令可以退出连接 查询MYSQL版本 mysql> select version(); ----------- | version() | ----------- | 8.0.27 | ----------- 1…

HA使用Node-RED推送消息到手机

目录 1.一个简单示例(1).注入使用个inject节点&#xff0c;用来触发(2).手机通知是call service节点(3).保存-部署&#xff0c;看效果 2.消息-添加变量 1.一个简单示例 (1).注入使用个inject节点&#xff0c;用来触发 (2).手机通知是call service节点 Node-RED需要提前和Home A…

spring boot + Apache tika 实现文档内容解析

Apache tika是Apache开源的一个文档解析工具。Apache Tika可以解析和提取一千多种不同的文件类型(如PPT、XLS和PDF)的内容和格式&#xff0c;并且Apache Tika提供了多种使用方式&#xff0c;既可以使用图形化操作页面&#xff08;tika-app&#xff09;&#xff0c;又可以独立部…

Dockerfile 基本命令

本文目录 1. 什么是 Dockerfile2. Dockerfile 基本命令2.1 FROM 指定基础镜像2.2 RUN 执行命令2.3 COPY 复制文件2.4 ADD 更高级的复制文件2.5 CMD2.6 ENTRYPOINT2.7 ENV 设置环境变量2.8 ARG2.9 VOLUME 定义匿名卷2.10 EXPOSE2.11 WORKDIR 指定工作目录2.12 USER 指定当前用户…

【洛谷】P1073 [NOIP2009 提高组] 最优贸易(dp+搜索)

接下来讲具体解法。第一、输入。存邻接表第二、我们需要做深搜。可以用递归来做&#xff0c;同时做动规&#xff1a;函数如下&#xff08;贴了注释&#xff09;.void dfs(int x,int minx,int pre) { //x表示当前访问的节点编号&#xff0c;minx表示目…

添加白名单 gcc/g++【Linux系统编程】

目录 一、添加白名单 二、gcc和g的使用 1、背景知识 一、添加白名单 如何让普通用户可以执行sudo&#xff08;以root的身份&#xff09;指令&#xff1f; 添加白名单 用root身份在/etc/sudoers目录添加 vim /etc/sudoers二、gcc和g的使用 1、背景知识 &#xff08;1&#…

【FFmpeg实战】ffplay整体框架

原文地址&#xff1a;https://segmentfault.com/a/1190000042611796 本文使用的ffplay.c的版本是搭配ffmpeg5.0的版本。 ffplay代码大致架构 关于fplay的架构很难三言两语说得清楚&#xff0c;而且本人对它的理解也不是很深&#xff0c;加上行笔比较啰嗦&#xff0c;可能就更…

springboot配置多个mongo数据源

yaml配置文件&#xff1a; spring:data:mongodb:uri: mongodb://admin:密码ip:27017/paasoo?authSourceadminother:uri: mongodb://admin:密码ip:27017/conversation?authSourceadmin java config文件&#xff1a; package com.paasoo.quartz.config.mongo;import org.spr…

VR数字乡村激活乡土文化生命力,助力乡村振兴

民俗节庆、传统技艺等蕴含着中华五千年以来的传统文化&#xff0c;乡村文化建设在为文化留住血脉的同时&#xff0c;也为高质量发展创造更多可能。找准乡村文化与产业的结合点&#xff0c;有利于激发产业发展的潜力&#xff0c;激活乡土文化的生命力&#xff0c;为乡村振兴注入…

baichuan-7B模型

文章目录 baichuan-7B介绍baichuan-7B 推理baichuan-7B 微调 baichuan-7B介绍 2023年6月15日&#xff0c;搜狗创始人王小川创立的百川智能公司&#xff0c;发布了70 亿参数量的中英文预训练大模型——baichuan-7B。 baichuan-7B 基于 Transformer 结构&#xff0c;在大约 1.2…