当前位置: 首页 > news >正文

HCIP【STP、RSTP、MSTP协议(详解)】

目录

1 STP协议(Spanning Tree Protocol,生成树协议)

1.1 技术背景

(1)广播风暴

(2)MAC地址表漂移

1.2 定义

1.3 STP的基本概念

1.3.1 桥ID(Bridge ID,BID)

1.3.2 根桥

1.3.3 开销值(cost)

1.3.4 根路径开销值(RPC)

1.3.5 接口ID(PID)

1.3.6 网桥协议数据单元(BPDU)

1.4 STP计算过程

1.5 STP接口状态

 1.6 STP收敛时间

1.7 STP拓扑变更机制

2 RSTP(Rapid Spanning-Tree Protocol,快速生成树协议)

2.1 技术背景

2.2 定义

2.3 RSTP与STP的不同之处

2.3.1 端口角色的不同

2.3.2 端口状态不同

3 MSTP(Multiple Spanning Tree Instance,多生成树协议)

3.1 技术背景

3.2 定义

3.3 MSTP的基本概念


1 STP协议Spanning Tree Protocol,生成树协议

1.1 技术背景

  二层交换机网络的冗余性与环路问题:如果是一条链路的情况,上联链路中的交换机发生故障就会导致下联链路所有的终端都会断网;为了解决交换机在互连的时候出现这种情况的发生我们一般都会使用冗余链路来实现备份,但是冗余链路最容易出现环路的,对于我们的网络质量和网络业务也是会带来很大的影响的

  人工配置错误导致的问题:有时候一个局域网中的的链路增多配置的复杂度增加难免会导致环路的出现

  二层环路中的常见的问题:

(1)广播风暴

  根据交换机的转发原理,可知如果交换机从一个端口上接收的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则就会将这个数据帧向除了源端口之外的所有端口转发。但是喃倘若这个网段或者是交换网络中有环路,则这个数据帧就会被不停地转发,此时就会形成广播风暴,消耗交换机CPU算力,占用网络资源,导致网络业务被中断。

(2)MAC地址表漂移

  交换机是根据所接收的数据帧的源地址和接收端口生成MAC地址表的;但是假使一个交换机接收同一个数据帧先后不同时间的从两个不同的接口都接收了这个数据帧的MAC地址,但是我们知道一个MAC地址只能对应一个端口,但是一个端口可以对应多个不同的MAC地址,所以就会导致这个MAC地址与接口的对应关系是不断切换的,举个例子:接口A先接收到这个数据帧,MAC先与接口A对应,然后接口B也接收到了这个数据帧,MAC地址就会消除与接口A的对应关系,转而与接口B对应,就在接口A、B之间不停地切换.....这种情况称之为MAC地址表的漂移

总的来说就是在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP

1.2 定义

STP是通过构建一颗树来消除交换网络中的环路问题,运行STP算法,判断网络中存在环路的地方,并通过阻断冗余链路,将环路修剪成无环的树型网络,来避免数据帧在环状网络中的增生和无限循环。生成树主要用于园区网的二层网络中。

1.3 STP的基本概念

1.3.1 桥ID(Bridge ID,BID)

每一台运行STP的交换机都拥有唯一的BID,BID是由16位的桥优先级和桥MAC地址构成的,在STP网络中BID最小的设备会被选举成根桥,会先比较桥优先级,优先级大为BID(数值越小越优先),如果优先级相同,那么比较MAC地址,MAC地址越小越优先。

1.3.2 根桥

根桥就是整个无环树的树根,在整个STP网络中BID最小的设备会被选举为根桥。

网络收敛完成之后,根桥会按照一定的时间间隔产生并向外发送BPDU报文,起到传达拓扑变化报文的作用,从而保证整个网络拓扑的稳定性。

1.3.3 开销值(cost)

在STP网络中,每一个激活了STP的接口都会维护着一个cost值,用于计算到达根的开销大小,一般来说接口的带宽越大其cost值越小

cost值的计算方法:

1.3.4 根路径开销值(RPC)

在STP的拓扑计算过程中,RPC就是去计算接口到达根桥的成本。

从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是
该路径上所有接收 BPDU 端口的端口开销总和(即 BPDU 的入方向端口),称为路径开销。
非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开
销被称为 RPC ,并生成无环树状网络。根桥的根路径开销是 0

1.3.5 接口ID(PID)

使用接口ID来标识每一个接口,接口ID主要用于在某些特定的场景下选举指定接口,缺省情况下接口的优先级是128

1.3.6 网桥协议数据单元(BPDU)

BPDU是STP能够正常工作的根本,STP交换机之间会交互BPDU报文,BPDU报文会携带相关的信息和参数。

BPDU 分为两种类型:
配置 BPDU Configuration BPDU);
配置 BPDU 包含了桥 ID 、路径开销和端口 ID 等参数。 STP 协议通过在交换机之间传递配置
BPDU 来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥
都主动发送配置 BPDU 。在网络拓扑稳定以后,只有根桥主动发送配置 BPDU ,其他交换机
在收到上游传来的配置 BPDU 后,才会发送自己的配置 BPDU
TCN BPDU Topology Change Notification BPDU): 是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
配置 BPDU STP 进行拓扑计算的关键; TCN BPDU 只在网络
拓扑发生变更时才会被触发。

STP中的一系列步骤操作:

(1)选举一个根网桥

(2)每一个非根网桥选举一个根端口

(3)每一个网段选举一个指定端口

(4)阻塞非根端口、非指定端口

STP中的三种端口角色:

指定端口:

  交换机向所连网段转发配置 BPDU 的端口,每个网段有且只能有一个指定
端口。一般情况下,根桥的每个端口总是指定端口。
根端口:
  非根交换机去往根桥路径最优的端口。在一个运行 STP 协议的交换机上最多
只有一个根端口,但根桥上没有根端口。

 

阻塞端口:

如果一个端口既不是指定端口也不是根端口,则此端口为阻塞端口。阻塞端口将被阻
塞。

1.4 STP计算过程

(1)选举根桥:STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID。当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID。交换机会不断地交互BPDU报文,同时会对BID进行比较,最终选举出一台BID最小的交换机作为根桥,其他为非根桥。由于根桥的角色是可以抢占的,所以我们在规划网络的时候提前将根桥的优先级设置为最小值0.

(2)在每一台非根网桥上选举根端口:非根网桥会在自己的接口中选举出一个根接口(非根网桥上有且仅有一个根端口);

首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。

当RPC相同时,比较对端交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。

当对端交换机BID相同时,比较对端交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选对端设备PID最小的端口作为根端口。

当对端交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。

(3)在每一条链路中选举指定端口:指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BIDPID

首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口。

当RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。

当BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。

一般情况下,根桥的所有接口都为指定端口。

(4)选举阻塞端口:除了根端口和指定端口之外的接口都是指定端口

1.5 STP接口状态

▫ Forwarding :转发状态。端口既可转发用户流量也可转发 BPDU 报文,只有根端口或
指定端口才能进入 Forwarding 状态。
▫ Learning :学习状态。端口可根据收到的用户流量构建 MAC 地址表,但不转发用户流
量。增加 Learning 状态是为了防止临时环路。
▫ Listening :侦听状态。端口可以转发 BPDU 报文,但不能转发用户流量。
▫ Blocking :阻塞状态。端口仅仅能接收并处理 BPDU ,不能转发 BPDU ,也不能转发用
户流量。此状态是预备端口的最终状态。
▫ Disabled :禁用状态。端口既不处理和转发 BPDU 报文,也不转发用户流量。

 1.6 STP收敛时间

(1)初次收敛时间:30秒(15s侦听+15s学习):存在直连检测,本地仅存在一个阻塞端口,此时可以收到来自根桥的BPDU报文

(2)拓扑故障再收敛时间:某个端口断开,将发送次优的BPDU报文给其他交换机,其他交换机若是不接收该BPDU,那么则会进行20s的max age计时,同时阻塞接口会进行15s侦听,15s学习,总共会花费50s

1.7 STP拓扑变更机制

工作原理:

1.交换机检测到拓扑变更,交换机向根网桥发起TCN BPDU;

max age超时/有接口变更为转发状态,判断为拓扑发生变更

交换机上有端口从forwarding或learning状态转变为blocking;

2.沿途的非根桥收到TCN BPDU后,会继续向根桥转发,并在根桥的下一轮配置BPDU中,把TCA(TC acknowledge)位 置位为1

3.根桥收到TCN BPDU后,在下一轮配置BPDU中,把其TC位 置位为1;

4.所有交换机收到TC置位的BPDU后,MAC地址表老化时间由300秒缩短到15秒

2 RSTP(Rapid Spanning-Tree Protocol,快速生成树协议)

2.1 技术背景

由于STP协议网络拓扑收敛速度慢。由此诞生了RSTP协议,可以快速收敛网络拓扑,并且可以兼容STP协议。

2.2 定义

RSTP (快速生成树)是从 STP 演化而来的,基本思想一样;当交换网络拓扑结构发生变化
时, RSTP 可以通过 Proposal/Agreement 机制更快地恢复网络的连通性。
根据 STP 的不足, RSTP 删除了 3 种端口状态,新增加了 2 种端口角色,并且把端口属性充分
的按照状态和角色解耦;此外, RSTP 还增加了相应的一些增强特性和保护措施,实现网络
的稳定和快速收敛。

2.3 RSTP与STP的不同之处

2.3.1 端口角色的不同

从配置 BPDU 报文发送角度来看:
        ▫ 预备(Alternate)接口就是由于学习到其它网桥发送的配置BPDU 报文而阻塞的接口。
        ▫ 备份( Backup )接口就是由于学习到自己发送的配置 BPDU 报文而阻塞的接口。
从用户流量角度来看:
        ▫ Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。
        ▫ Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。
还有一个新增的边缘端口:正常情况下边缘端口接收不到配置BPDU报文,不参与RSTP的运算,可以由disable状态直接转换为forwarding状态,一旦当边缘端口接收到BPDU报文,则其会成为普通STP端口,重新进行生成树计算,引起网络震荡。

2.3.2 端口状态不同

RSTP 把原来 STP 5 种端口状态简化成了 3 种。
▫ Discarding 状态,端口既不转发用户流量也不学习 MAC 地址。
▫ Learning 状态,端口不转发用户流量但是学习 MAC 地址。
▫ Forwarding 状态,端口既转发用户流量又学习 MAC 地址。

3 MSTP(Multiple Spanning Tree Instance,多生成树协议

3.1 技术背景

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

3.2 定义

MSTP将一个交换网络划分成了多个域,每个域形成多颗生成树,生成树之间彼此独立;每一颗生成树是一个生成树实例,节省了通信开销和降低了资源占用率

3.3 MSTP的基本概念

MST域:拥有相同MST配置标识的交换机构成的集合,划区域可加快收敛速度和方便管理。

IST:内部生成树,默认存在,每个MST域独立计算的内部生成树实例

CST:公共生成树,默认存在。用来互联MST域的单生成树(把每个MST域作为一台交换机,计算出生成树实例)

CIST:公共内部生成树,默认存在。CST+每个域内部IST。

实例0:默认所有VLAN都映射在实例0

MST:手动创建的生成树实例,只在一个区域内有效

CIST域根:每个IST的根网桥

CIST总根:整个的根网桥

MASTER端口:CST的根端口,单域MSTP中不可能存在Master端口,多域MSTP中,根域不可能存在Master端口,其他域只有一个;

MSTP 与RSTP的端口角色一样,新增了一个master端口,MSTP协议内容基本与RSTP协议内容差不多

http://www.xdnf.cn/news/313435.html

相关文章:

  • Linux中为某个进程临时指定tmp目录
  • Go语言——string、数组、切片以及map
  • 今年我国已发生三级以上地震318次
  • 从创业踩雷到依法解债:湖北理元理律师事务所的危机拆解逻辑
  • 继电器负载知识
  • 小刚说C语言刷题—1044 -找出最经济型的包装箱型号
  • win11 怎样把D盘空间分给C盘一点
  • day18-API(常见API,对象克隆)
  • 将nginx设置成自启动,防止每次开机后都要自己手动启动
  • nginx服务--基础
  • C语言数组和函数的实践———扫雷游戏
  • 调用DeepSeek的API
  • 文献综述怎么写?高效阅读、智能整理,告别文献焦虑!
  • 感知器准则感知器神经元模型——等价
  • 电动双向金属硬密封蝶阀:四大领域流体控制的终极解决方案 -耀圣
  • Vue 项目中使用 EJS 模板动态注入环境变量
  • Vue3.5 企业级管理系统实战(十七):角色管理
  • String、StringBuilder、StringBuffer的区别
  • 0506--01-DA
  • TDengine 车联网案例
  • 2025.5.6总结
  • python setup.py install --user和pip install -e .的区别
  • HHsuite3 的 HHblits 和 HHsearch比较
  • android设备运行bcc程序报错
  • 5.6刷题并查集
  • Python-map从基础到进阶
  • SpringBoot Starter简介-笔记
  • https://juejin.cn/editor/drafts/7262346366541070395
  • RNN 与 CNN:深度学习中的两大经典模型技术解析
  • [HOT 100] 2646. 最小化旅行的价格总和