生成树协议(STP,MSTP,RSTP)详解

目录

STP生成树协议

二层环路出现的原因:

二层环路引发的危害:

stp生成树防环的基本思路:

802.1D生成树协议:

配置BPDU的报文结构:

配置BPDU中某些字段的解析:

TCN BPDU报文格式:

stp中的角色选举:

生成树中接口的几种状态:

802.1D生成树的收敛时间

802.1D生成树的配置:

基本配置:

根网桥的备份问题:

STP生成树的缺点

802.1w生成树协议

在802.1w中基于802.1D上进行了改进。

          (1)更改了部分的端口角色:

(2)更改了接口的状态类型。

(3)更改了配置BPDU的内容。

(4)更改了对配置BPDU的处理

(5)快速收敛机制

(6)对拓扑变更机制进行修改。

802.1S生成树协议

802.1S生成树的配置:


STP生成树协议

路由器的转发依靠路由表,交换机的转发依靠mac地址表。

当路由器出现环路的时候有ttl值来进行防环。

二层环路出现的原因:

在实际中因为要实现备份,通常要将几台设备相互连接防止当一条线路出现问题时不会影响整个网络。但就在这个过程中往往就会出现几台交换机连成环的情况,此时就会造成环路。

二层环路引发的危害:

1.广播风暴:当交换机出现环路的时候就会一直进行下去,消耗链路资源。并且交换机存在泛洪机制,会出现两条环路(顺时针环路与逆时针环路)。危害极大,可能会使设备宕机。

2.mac地址表的翻转:

因为环路的存在会导致mac地址表的翻转,消耗设备的资源。假设pc1连接交换机的1口,因为存在环路该帧会从交换机的2口重新回到交换机。此时交换机会根据该帧原mac地址学习生成一条mac地址条目:pc1mac地址----2口 ,但之前存在pc1mac----1口。所以会覆盖原先的mac条目。因为存在两个循环所以就会导致mac地址表的翻转。

ps--------在实际中可以通过日志信息查看mac地址表的变化判断是否出环。

3.多帧复制

在环路的过程中会导致各种设备重复接收到该帧。

stp生成树防环的基本思路:

既然造成环路的原因时因为设备相互连接成环,那么我们可以将该环破掉就行了。所以stp生成树协议是在逻辑上将该环的某条线路切断(不是物理真实的切断,阻塞端口),此时就不会环路了。

stp生成树协议就是将该网络中的所有交换机生成一个树形结构,树形结构就不会出现环路。

在生成树之前首先要选取一台设备当树根。 实现从根交换机到所有节点的路径为最短且最优的没有一个环路的树形结构。当个别链路出现故障时,可以开启其他的阻塞端口形成备份链路。

802.1D生成树协议:

由此发明了一个协议:802.1D---STP----生成树(最原始的生成树协议,现在所有的生成树协议都是在该基础上进行改进的)

路由器之间会发送数据包进行沟通,同样在运行生成树时交换机之间也会也会进行沟通,交换机之间会发送:BPDU进行沟通。

BPDU分为两种:配置BPDU,TCN BPDU(该数据包是当交换机的top结构发生变化时才发送)。

配置BPDU的报文结构:

配置BPDU中某些字段的解析:

协议版本id:几种不同生成树协议的版本id

802.1D----0

802.1W-----2

802.1S-----3

FLAG---1字节--8位:在802.1D中只启用两位,最高位(TCA位)和最低位(TC位)。

------------该报文中最重要的4个参数:-------------

(1)根桥ID:在802.1D中,一个交换网络只生成一颗树,只有一个根,根网桥ID就是根的网桥的ID。

(2)根路径开销:RPC---表明的是发送配置BPDU的接口到根网桥的开销值。

(3)网桥ID:每一台交换机的标识。

共8个字节----前2个字节内容:优先级

优先级-----范围0-65535,初始默认值为32768

在前两个字节中前4位是优先级,后12位是扩展系统ID(802.1S),在前4位优先级中每一位值为4096。

所以在修改优先级时必须按照4096的倍数来进行修改。

后6个字节内容:mac地址----如果一台交换机只有一个mac地址那么就直接使用该mac地址作为网桥ID中的mac地址,但是如果一台设备存在多个mac地址则将选择数值最小的mac地址作为网桥ID中的mac地址。

(4)接口ID:---区分一台交换机的不同接口。

2个字节---前4位---代表优先级

每一位代表16,优先级的范围为0-240,修改优先级只能以16为单位进行修改。

后12位----厂商定义的接口表识。

消息寿命:每经过一次交换机的转发,数值加1,该数值存在最大值----20

配置BPDU的用法:

刚开始并不知道谁是根网桥,认为自己就是根网桥,所有的交换机都会互相发送配置BPDU。当比较后确定谁是根网桥时,此时只有根交换机会发送配置BPDU。根交换机会周期性的发送配置BPDU。其他的交换机只转发根交换机发送的配置BPDU。不过在发送的过程中配置BPDU中的个别内容会变化。

配置BPDU-----

只有根网桥可以发送,在交换网络初始状态,所有的交换机都认为自己时根网桥,之后相互发送配置BPDU,通过里面的参数进行角色选举。当选出根网桥后,所有的非根网桥将不再发送配置BPDU,仅仅接收并发送根网桥发送的配置BPDU,周期2s,max age20s。

TCN BPDU报文格式:

TCN BPDU----

本地链路发生故障时,stp重新收敛,为了加快刷新整个网络交换设备的mac地址表,将向stp接口发送TCN BPDU,邻居设备收到后将先回复TCA标记位置为1的配置BPDU进行确认,之后,将该 TCN BPDU逐级上报到根网桥处。根网桥收到后,再逐级下发TC位为1的配置BPDU。当交换设备收到TC位置为1的配置BPDU后,会临时将MAC地址表300s的老化时间修改为15s。加速mac地址表的老化,使交换设备重新学习正确的mac地址。

如下图所示:

stp中的角色选举:

1.根网桥(RB):

在一个交换网络中只生成一颗树,仅仅选择一个网桥。选举的方法是:比较配置BPDU中的BID。

BID----前2字节:优先级-----范围0-65535,初始默认值为32768

在前两个字节中前4位是优先级,后12位是扩展系统ID(802.1S),在前4位优先级中每一位值为4096。----所以在修改优先级时必须按照4096的倍数来进行修改。

后6字节:mac地址

在比较时先比较BID中优先级,优先级越小越好,如果优先级相同则比较mac地址,mac地址越小越好。

2.根端口(RP) :

每一台非根网桥上面都要选举一个离根网桥最近的接口作为根端口。其作用是用来接收根网桥发送的配置BPDU。

选举方法:

(1):比较接口接收到根网桥发出的BPDU的开销值。

(2):当开销值相同时比较对端设备的BID,选择BID更小的设备所对应的端口为根端口。

(3):当BID相同时比较对端的PID,选择PID更小的接口对应的端口为根端口。

(4):当对端的PID也相同时,比较本端的PID,选择PID小的接口为根端口。

PID----- 2个字节---前4位---优先级

每一位代表16,优先级的范围为0-240,修改优先级只能以16为单位进行修改。

后12位----厂商定义的接口表识。

3.指定端口(DP):每一条链路有且仅有一个端口,用来转发来自根网桥的BPDU。

根网桥的所有端口都是指定端口。

选举规则:

(1):比较接口发出时的PRC,选择小的作为指定接口

(2):如果开销值相同,则比较所在设备的BID,选择BID小的设备的接口为指定端口。

(3):如果所在设备的BID也相同,则比较端口的PID,选择小的作为指定端口。

(4):如果本端的PID也相同,则该接口直接阻塞。

4.非指定端口(NDP):所有没有角色的端口都是非指定端口,非指定端口需要被阻塞。

在交换网络中根交换机的选择是非常重要的,通常根交换机在网络的汇聚层或者核心层。根网桥的选择会影响整个网络的性能。

生成树中接口的几种状态:

1,禁用状态(Disable)---该接口被关闭,或者该接口被禁用生成树

2,阻塞状态(Blocking)---运行生成树后的所有接口的第一个状态,在该状态下只能侦听别人发送的BPDU。因为配置BPDU的最大寿命为20s,所有的接口在20s内都不发送任何数据,当接口超过20s的时间没有接收到数据时,就可以认为该网络存在问题,需要重新收敛,进入下一个状态。

3,侦听状态(listening)---该状态就是角色选举的状态,在该状态下接口会收发BPDU,但不会收发业务流量,也不会学习mac地址。----停留一个转发延迟的时间15s,进入下一个状态,也是为了保证所有角色的选举完成,避免出现临时环路。

当角色选举完成后,只有根端口和指定端口会进入下一个状态,非指定端口会退回阻塞状态。

4,学习状态(Learning)----会在该状态停留一个转发延迟时间15s, 在该状态下接口可以收发BPDU,接收但不能转发业务流量同时还会根据业务流量学习mac地址。

这样做的目的是为了减少未知单播的泛洪。

5,转发状态()----可以收发和侦听BPDU,可以收发业务数据帧,可以学习mac地址。

802.1D生成树的收敛时间

首次收敛时间----50s

结构突变:

---------根桥故障--50s

---------直连链路故障---30s

---------非直连链路故障---50s

802.1D生成树的配置:

基本配置:
1,选择生成树模式:
[sw1]stp mode ?mstp Multiple Spanning Tree Protocol (MSTP) mode ---- ------------------华为设备默认使用MSTPrstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode2,开启生成树
[sw1]stp enable --- 华为设备默认开启[sw1]display stp --- 查看生成树的信息

3,修改BID中的优先级,干涉选举-------在通常情况下我们只需要干涉根的选举就可以了。在实际环境中根的位置通常在汇聚层或者核心层。

[sw5]stp priority 28672

[sw1]display stp brief -- 查看生成树接口信息

DESI--------表示该端口是指定端口。

修改端口的优先级:

修改端口的cost值:

根网桥的备份问题:

通常在汇聚层中设置一台交换机为根,另一台交换机为备份

[sw1]stp root primary -------将一台设备设置为主根---相当于将BID中的优先级修改为0

[sw2]stp root secondary ----将一台设备设置成为备份根---相当于将BID中的优先级修改为4096

STP生成树的缺点


1.收敛是基于计时器来完成的,速度比较慢。(一般来说收敛时间为50s或者30s)

2.链路利用率低。(被阻塞的链路无法被利用,导致链路的利用率低)

802.1w生成树协议

802.1w-------RSTP--------快速生成树协议--------在802.1w中依旧时一个交换网络一颗树,并且向下兼容STP生成树协议。

在802.1w中基于802.1D上进行了改进。

(1)更改了部分的端口角色:

802.1D中端口角色: 根端口-------指定端口------非指定端口

802.1w中端口角色:根端口,指定端口,替代(ALternate)端口,备份端口

  • 替代(ALternate)端口:该端口是根端口的备份,该端口因为学习到其他网桥发送的配置BPDU而被阻塞。但他提供了指定网桥到达根网桥的一条新的路线。所以当根端口发生故障时则会选择最优的替代端口为根端口,在经历阻塞状态(20s)后直接跳过侦听和学习状态直接进入转发状态。

  • 备份端口:其实就是指定端口的备份-----------是由于学习到自己网桥发送的配置BPDU而被阻塞的端口,如果指定端口故障,则将第一时间成为新的指定端口,并且直接进入到转发状态,加速收敛。

备份端口出现的情况非常少,只有在特殊的情况下才会出现,如下1端口为指定端口,2端口被阻塞(即为备份端口)。当1端口发生故障时,2端口会被迅速变成指定端口。

总而言之第一个改进点就是将阻塞端口(非指定端口)划分为替代端口和备份端口。

(2)更改了接口的状态类型。

802.1D中的状态: 禁止,阻塞,侦听,学习,转发

802.1W中的状态:

)1:丢弃(Discarding)-----该状态不转发业务流量,也不学习mac地址。-------该状态就时以前禁用,阻塞,侦听状态

)2:学习(Learing)--------不转发业务流量,可以学习mac地址

)3:转发(Forwaring)-------最终状态,可以转发业务流量,也可以学习mac地址。

(3)更改了配置BPDU的内容。

在802.1D中的配置BPDU中,Flag字段只启用了最高为和最低为,而在802.1W中则全部启用。


0x02------代表RST BPDU---RSTP中的配置BPDU


Bit5(Forwaring),Bit4(Learning):这两位是状态位,表示该接口处于什么状态,处于什么状态就置该标记位为1。

Bit2和Bit3表示发送该RST BPDU的端口是什么角色。

-------00:未知

-------01:阻塞端口/备份端口

-------10:根端口

--------11:指定端口

由Bit2和Bit3位可知:在802.1W中根端口和阻塞端口都有可能主动发送配置BPDU,而在802.1D中只有指定端口会发送配置BPDU。

Bit1(Proposal) 和 Bit6(Agreement) 是形成加速收敛的核心机制该机制为:P/A机制。

P/A机制:当有了P/A机制后,角色的选举发生在两两之间,指定端口和根端口的链路上,指定端口确认角色后将发送P位置1的RST BPDU,之后,根端口会进入到同步的状态下,即会将所有其他接口状态置位丢弃,然后自身进入转发状态,并同时发送A位置为1的RST BPDU,收到后,指定端口也将进入到转发状态。


(4)更改了对配置BPDU的处理

802.1D-----收敛结束后,只有根网桥会周期性的发送配置BPDU,其他设备仅仅进行转发。

802.1W-----收敛结束后,所有的设备将主动发送根网桥的配置BPDU

802.1D------配置BPDU超时时需要等待MAX age----20s

802.1W------一个接口在一个超时时间(在802.1W中一个超时时间为3倍的周期时间,6s)内没有收到BPDU,则将重新选举。


(5)快速收敛机制

1.根端口和指定端口的快速切换------------利用替代端口和备份端口

2.P/A机制

3.设置边缘接口--------将连接电脑的接口设置为边缘接口,则这个接口将直接进入到转发状态。该设置需要人为设置,它不会自动开启。

当接口设置为边缘接口后仍会收发BPDU,但我们可以手动关闭,减少链路资源的浪费。

[Huawei-GigabitEthernet0/0/3]stp bpdu-filter enable --- 开启后,将不再发送配置BPDU,该条命令可以用于边缘接口,但不能用于普通接口,否则会造成生成树的重新收敛。

[Huawei]stp bpdu-protection --- 生成树的一个保护机制,开启后,如果边缘接口接收到BPDU,则将还原成为普通接口。(目的就是为了防止你误操作)

(6)对拓扑变更机制进行修改。

802.1S生成树协议

在华为设备中默认使用该协议。

802.1S------MSTP-----多生成树协议--------向下兼容RSTP,STP。该协议同时改进了链路利用率低的问题。

在MSTP中引入了一个实例的概念-----------instance----可以理解为一个或者多个VLAN的集合。

instance id-----------12位二进制(0-4094)

特殊实例:instance 0---------该实例是默认存在的,一开始所有的VLAN都属于instance 0

在MSTP中还引用了域(region)的概念。如果一个交换网络比较大,则可以划分出多个不同的MSTP域分别运行MSTP协议。如果交换网络规模不大,则可以仅仅在一个MSTP域中。

要保证以下参数相同,交换机才属于同一个域: (1):相同的域名----------region name

(2):相同的修订等级----revision level

(3):相同的实例(instance)和VLAN的映射关系

802.1S生成树的配置:
1.创建VLAN
[sw1]vlan batch 2 to 102.交换机之间配置trunk通道,放通VLAN流量。
[sw1-GigabitEthernet0/0/2]p t a v 2 to 103.选择生成树协议---华为设备默认的模式就是MSTP,可以不做更改。
[sw2]stp mode ?mstp  Multiple Spanning Tree Protocol (MSTP) moderstp  Rapid Spanning Tree Protocol (RSTP) modestp   Spanning Tree Protocol (STP) mode
[sw2]stp mode mstp------开启mstp生成树协议4.配置MSTP域
[sw2]display stp region-configuration  Oper configurationFormat selector    :0             Region name        :4c1fccb86056             Revision level     :0Instance   VLANs Mapped0       1 to 4094Region name -------域名
Revision level----修订等级
Instance-----实例,存在默认实例0,切默认情况下所有的VLAN都属于实例0[sw2]stp region-configuration 
[sw2-mst-region]region-name aa------设置sw2所在的域为aa
[sw2-mst-region]revision-level 1 -----修改修等等级为1[sw2-mst-region]instance 1 vlan 1 to 5	
[sw2-mst-region]instance 2 vlan 6 to 10---设置实例,并将VLAN划到实例中去。[sw2-mst-region]active region-configuration ---当域配置完成后必须要敲这条命令使配置生效,否则当退出后又要重新配置。当配置完后我们再次查看:
[sw2]display  stp region-configuration Oper configurationFormat selector    :0             Region name        :aa             Revision level     :1Instance   VLANs Mapped0       11 to 40941       1 to 52       6 to 105.干涉选举
当我们的基本配置做完后就可以来干涉不同实例中根的选择。根使一棵树流量汇聚的地方,通常将根放置在汇聚层。[sw2]stp instance 1 root primary  ---该条命令可以指定该交换机为某个实例的根。[sw2]stp instance 1 root secondary -----该条命令可以指定该交换机为某个实例的备份根。当该实例的根发生故障后可以迅速切换为该实例的根。

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

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

相关文章

Java中接口的默认方法

为什么要使用默认方法 当我们把一个程序的接口写完后 用其他的类去实现,此时如果程序需要再添加一个抽象方法的时候我们只有两种选择 将抽象方法写在原本的接口中 但是这样写会导致其他所有改接口的实现类都需要实现这个抽象方法比较麻烦 写另一个接口 让需要的实…

程序的机器级表示——Intel x86 汇编讲解

往期地址: 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 matlab2022a的测试结果如下: vivado2019.2的仿真结果如下: 将数据导入到matlab中, 系统的RTL结构图如下图所示…

多态的原理

前言:以下的内容均是在VS2019的环境中,32位平台下的 目录 1.多态的实现条件 虚函数重写的两个例外 一个题加深理解 总结 重载 重写 重定义区别 2.多态的实现原理 单继承 多继承 动态多态和静态多态 多态的好问题 1.多态的实现条件 虚函数:被…

使用Ruoyi的定时任务组件结合XxlCrawler进行数据增量同步实战-以中国地震台网为例

目录 前言 一、数据增量更新机制 1、全量更新机制 2、增量更新机制 二、功能时序图设计 1、原始请求分析 2、业务时序图 三、后台定时任务的设计与实现 四、Ruoyi自动任务配置 1、Ruoyi自动任务配置 2、任务调度 总结 前言 在之前的相关文章中,发表文章列…

2024年 Java 面试八股文——SpringBoot篇

目录 1. 什么是 Spring Boot? 2. 为什么要用SpringBoot 3. SpringBoot与SpringCloud 区别 4. Spring Boot 有哪些优点? 5. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 6. Spring Boot 支持哪些日志框架&#…

应用分层和企业规范

目录 一、应用分层 1、介绍 (1)为什么需要应用分层? (2)如何分层?(三层架构) MVC 和 三层架构的区别和联系 高内聚: 低耦合: 2、代码重构 controlle…

2024网络安全面试问题宝典(4万字)

2024网络安全厂商面试问题宝典(4万字) 目录 评分标准网络基础问题 TCP建立连接要进行3次握手(syn-syn,ack-ack),而断开连接要进行4次(fin-ack-fin-ack)TCP,UDP区别:安全常用的协议…

Cloudera最新认证体系-2024Hadoop认证

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

K8S哲学 - 资源调度 HPA (horizontal pod autoScaler-sync-period)

kubectl exec: kubectl exec -it pod-name -c container-name -- /bin/sh kubectl run 通过一个 deployment来 演示 apiVersion: apps/v1 kind: Deployment metadata:name: deploylabels: app: deploy spec: replicas: 1selector: matchLabels:app: deploy-podt…

Universal Thresholdizer:将多种密码学原语门限化

参考文献: [LS90] Lapidot D, Shamir A. Publicly verifiable non-interactive zero-knowledge proofs[C]//Advances in Cryptology-CRYPTO’90: Proceedings 10. Springer Berlin Heidelberg, 1991: 353-365.[Shoup00] Shoup V. Practical threshold signatures[C…

YUM源仓库部署

一、YUM仓库服务 1、概述 2、准备安装源 软件仓库的提供方式 YUM软件仓库类型 仓库类型安装路径本地源baseurlfile://…ftp源baseurlftp://…在线源baseurlhttp://… baseurlhttps://… RPM软件包的来源 CentOS发布的RPM包集合第三方组织发布的RPM包集合用户自定义的RPM包…

mac nvm install node<version> error 404

mac m2芯片遇到的问题,估计m系列的应该也有这个问题,在这里记录一下 解决方案: ## 需要先处理一下兼容就OK了arch -x86_64 zsh nvm install returns curl: (22) The requested URL returned error: 404 Issue #2667 nvm-sh/nvm GitHub

ue引擎游戏开发笔记(29)——实现第三人称角色随手柄力度进行移动

1.需求分析 角色可以随手柄力量大小进行走路和跑步,不动时保持角色停顿。 2.操作实现 1.思路:通过动画蓝图和动画混合实现角色移动和输入的联系。 2.建立动画蓝图和混合空间: 3.在混合空间中对角色移动进行编辑: 4.在蓝图中设定变…

Nginx(搭建高可用集群)

文章目录 1.基本介绍1.在微服务架构中的位置2.配置前提3.主从模式架构图 2.启动主Nginx和两个Tomcat1.启动linux的tomcat2.启动win的tomcat3.启动主Nginx,进入安装目录 ./sbin/nginx -c nginx.conf4.windows访问 http://look.sunxiansheng.cn:7777/search/cal.jsp 3…

python邮件发送

第一种方式 一:发送的邮件要设置授权码,通过邮箱邮箱授权码去验证,让邮件服务器帮我们去转发邮件到要接收的邮件,代码中的授权码,是需要登录126邮箱(我这里是以126邮件发送的,具体的以自己为准…

Mybatis入门2

本文章是下面文章的扩充 Mybatis入门-CSDN博客文章浏览阅读432次,点赞6次,收藏10次。Mapper接口创建在java代码块中//dao层/*** 功能:查询所有用户数据* return*/https://blog.csdn.net/luosuss/article/details/138420052 映射配置文件 i…

【Python可视化】pyecharts

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。 需要安…

使用PyTorch从头实现Transformer

前言 本文使用Pytorch从头实现Transformer,原论文Attention is all you need paper,最佳解读博客,学习视频GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文,并对其进行了…

node.js中path模块-路径处理,语法讲解

node中的path 模块是node.js的基础语法,实际开发中,我们通过使用 path 模块来得到绝对路径,避免因为相对路径带来的找不到资源的问题。 具体来说:Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相…