生成树协议(STP:802.1D、RSTP:802.1w、MSTP:802.1s)

news2024/9/20 16:45:27

在二层网络中,如果没有生成树协议,会带来哪些问题:
1、广播风暴
2、MAC地址表飘移
3、重复数据帧接收

回顾生成树有哪些术语:
1、根桥 为了破除环路,生成树网络首先要选举出一个首脑,头脑,首领。叫做根桥,也叫作根交换机
2、桥ID bridge-id:由桥优先级(默认取值为32768,必须为4096的倍数)和桥MAC地址组成
3、root ID 根桥的桥ID(经常在BPDU报文中看到)
4、非根桥 除了根桥以外的交换机都叫做非根桥或非根交换机,一个生成树网络中有且只有一个根桥
5、端口ID 也叫作PID:Port ID:由端口优先级(默认取值128,必须是16的倍数)和端口号构成
6、RPC root path cost 根路径开销,即到达根桥的开销值 交换机计算生成树开销值根据dot1t协议计算,千兆接口全双工为20000
7、根端口 又叫做RP,root port:非根桥上去往根桥最近的端口(非根交换机接收最优BPDU的端口成为根端口)
8、指定端口 又叫做DP,会在每一条链路上的两个端口之间选取出一个指定端口用于转发BPDU
9、BPDU 桥协议单元,是生成树协议唯一的报文,分为配置BPDU和TCN-BPDU,只有根桥可以发出配置BPDU,其他非根桥转发根桥的配置BPDU,非根桥可以发出TCN-BPDU

在这里插入图片描述
在这里插入图片描述
根桥ID:0741,开销值20000

指定端口帮助根桥转发BPDU,BPDU只能从指定端口发送,根端口是不发送BPDU的,只接收BPDU
总结:发送的为指定端口;接收的为根端口

一、STP:

在这里插入图片描述

1、选举根桥
所有交换机在初始状态下都会认为自己是根桥,发送以自己为根的BPDU(报文中的root id字段为自己的BID
所有的交换机都会使用BPDU中的root id来进行PK,比较桥ID,谁的BID更优秀谁将成为根桥。
BID的比较原则:首先比较桥优先级,数值默认为32768,越小越优。如果优先级比较不出来,则继续比较桥MAC地址,越小越优先。
2、在每一台非根交换机上选举一个根端口
选举原则:非根交换机接收到最优BPDU的接口为根端口(RP)
最优BPDU的标准:
	2.1 root id小的				根桥的桥ID
	2.2 RPC小的(报文中携带的RPC+该接口的RPC)
	2.3 sender bid小的		由桥优先级(默认取值为32768,4096倍数)和桥MAC地址组成
	2.4 sender pid小的		由端口优先级(默认取值128,16的倍数)和端口号构成
	2.5 本地pid小的			即 接口id更小的
3、在每一条链路上选择一个指定端口
当非根交换机选举出根端口以后,将会默认其他端口为指定端口。那么就会将根端口接收到的BPDU进行一个加工,将自己的一些参数加工后,生成新的BPDU由这些指定端口向外发送
这个指定端口在向外发送加工后的BPDU时,同时也会受到对向发来的BPDU。这时就要进行PK:
	3.1	收到对端发来的BPDU后,如果认为自己的BPD更优秀,那么DP端口不会改变,继续保持为DP角色收到
	3.2	对端发来的BPDU后,如果认为对方的BPDU更优秀,那么DP端口将会被阻塞。
	注意:**根桥的所有端口默认为指定端口**

STP小总结:

1、STP的端口角色:
	RP:根端口
	DP:指定端口
	AP:预备端口(阻塞端口)(不属于STP的端口角色)		属于根端口(RP)的备份
	BP:备份端口(不属于STP的端口角色)		属于指定端口(DP)的备份
	所有:STP的端口角色只有两种
2、STP的端口状态:
	2.1 disable				端口down或者没有开启STP协议,这时该接口不处理任何BPDU
	2.2 listening				接收BPDU,发送BPDU,不学习MAC地址,不转发数据
	2.3 learning				接收BPDU,发送BPDU,学习MAC地址,不转发数据
	2.4 forwarding			接收、发送BPDU,学习MAC地址,转发数据
	2.5 blocking				接收、不发送BPDU,不学习MAC地址,不转发数据

{
1:disable:端口禁用或者链路失效
2:blocking:端口初始化或使能、或者为阻塞状态(1->2或3->2)
3:listening:端口被选为根端口或者指定端口
4:learning:计时15s
5:forwarding:计时15s 历经30s
}

3、拓扑改变(TC和TCA置位)
	在STP协议中,BPDU有两种类型,分别为配置BPDU和TCN-BPDU
	当非根交换机网络拓扑发生改变时,会发送TCN-BPDU给根桥,沿路交换机会给原始交换机回复TCA,同时继续向根桥转发该TCN-BPDU
	当根桥收到TCN-BPDU后,将会沿原路回复TC和TCA置位的配置BPDU,沿路收到TC置位的BPDU时将会把自己的MAC地址表老化时间强制修改为15s。

(mac地址默认的老化时间是5min)
在这里插入图片描述
TC和TCA都置位为1代表要快速收敛了

4、STP的几个计时器
	4.1  hello time:2s一次
	4.2 老化时间max age:20s
	4.3 message age:每转发一次会+1,默认最大不超过20跳
	4.4 forwarding delay:15s

在这里插入图片描述
blocking->Listening很短暂就选出好了,其他两个就很久各自要15s才能到达

由于STP一收敛就断30s,所以当网络拓扑频繁发生变化时,网络也会随之失去连通性。所以2001发布了802.1w标准定义的RSTP(STP:802.1d,MSTP:802.1s)

二、RSTP:

1、端口角色的扩充

RP:根端口
DP:指定端口
AP:预备端口(阻塞端口),给RP做备份的
BP:备份端口(backup port),给DP做备份的

2、端口状态的优化

对于disable listening blocking状态来说结果都是不转发流量,不学习MAC,RSTP将这3个状态合并为一个:discarding状态(3合1状态)

3、P/A机制

4、根端口快速切换机制

5、次优BPDU立即处理,配合P/A机制

6、EP(边缘端口)

RSTP中一旦端口变为RP,先进入到侦听,再学习,再转发
RSTP中有PA协商,从discarding直接到达Forwarding状态

在华为设备中:A一直都是1,不会变成0

3:P/A机制:

P/A机制原理:两个交换机(1、2)都发送P置位的BPDU,比较两个桥ID哪个更优,更优的就继续发送以P置位的BPDU,2则发送A置位的BPDU,端口角色也从DP更换成RP。端口状态也直接变成Forwarding,这时候1收到2的A置位的BPDU,那么1的端口角色保持DP,端口状态会变成Forwarding状态,此时,交换机1发送的BPDU不再需要P置位,因为它已经是根桥。A置位用于确认收到的BPDU信息。
在这里插入图片描述
解析:即代表上述中的2发送A置位的BPDU,端口角色也变成了RP,端口状态变成Forwarding
在这里插入图片描述
解析:代表上述中的1收到2的A置位的BPDU,端口角色仍为DP,端口状态为forwarding。因为这时候它已经是根桥ID了,所以不用把P置位了

RSTP报文解析:

RSTP协议
RSTP版本
BPDU的类型(RSTP中只有这一种)
BPDU flag:
TC和TCA为1的时候要快速收敛
Proposal和agreement(统称PA协商)P置位、A置位
如果forwarding和learning都为1就代表Forwarding(转发)状态,
如果forwarding为0和learning为1就代表learning状态
如果forwarding和learning都为0就代表discarding状态
Port Role:Designated(DP)指定端口角色 若是为Root则是RP根端口
Root ID:根桥ID
Root Path Cost:到达根桥的开销值
Bridge Identifier:发出该报文的桥ID
PID:0x8001端口ID(端口优先级(默认为128)+端口号)(8等于1000,1等于0001,合成等于128)

4:根端口快速切换机制

AP直接变成RP,并进入forwarding状态(不需要像STP等30s才能进入)
在这里插入图片描述

5:次优BPDU立即处理,配合P/A机制

AP会收到SWB发送的P置位的BPDU,同时也发送SWA发送给SWC的BPDU,两者进行PA协商,最后SWC的AP阻塞端口变更为DP,SWB的DP端口变更为RP。

如果在STP中,SWC就要等SWA给SWC的BDPU老化时间(20s),然后再等SWB与SWC的STP收敛,然后AP会变成DP(30s)

在这里插入图片描述

6:EP边缘端口

为了不让PC与交换机的收敛还要照着STP收敛速度等30s 而设计的

6.1:当配置边缘端口,那么该端口默认不会进行STP收敛工作,而是直接进入forwarding(转发)状态
6.2:当边缘端口收到BPDU后,该接口变成普通端口,进行生成树收敛工作。
6.3:边缘端口每2s会发送一个BPDU,用于判断是否自环
6.4:当检测到自己发出的BPDU从其他边缘端口收进来时,会判断为**自环**,然后2个边缘端口都会变成普通端口,进行生成树收敛工作。
交换机上的
stp mode rstp						//配置rstp
stp priority 0						//配置stp优先级
interface GigabitEthernet0/0/3
stp edged-port enable				//将端口配置为边缘端口

[ISW8]stp edged-port default		//全局边缘端口
		
stp disable							//关闭stp
stp enable							//开启stp
display bridge mac-address			//比较桥MAC地址
eg:System bridge MAc address:4c1f-cc47-332e

在这里插入图片描述
LSW5配置了边缘端口,每2s发送BPDU,
解析:发送一个组播地址,(只有加入这个组播,才能处理这个BPDU),但是又因为它不支持生成树,即不在这个组里,所以无法处理。所以LSW5两个接口都收不到对方接口的BPDU,所以无法进行生成树的收敛了,所以就导致环路。
如果LSW6是一个物理层设备就可以直接作为转发设备。(交换机至少是2层设备,不能直接透传组播流量)所以会把BPDU转发给LSW5的另一个接口,所以会进行生成树的收敛,LSW5的g0/0/1接口就会进入Forwarding状态,g0/0/2接口就会进入discarding状态。

组播:以 01 开头的MAC地址是组播地址

关于STP和RSTP的问题:

5.1 端口状态优化
原本STP公有协议中具有5种端口状态,但是华为在实现STP协议时,参考了RSTP的相关特性,因此华为设备中的STP协议只具有三种状态,和RSTP一致
5.2 端口角色的优化
原本STP只有2个端口角色,华为在实现STP时借用了RSTP的端口角色,因此在STP中,可以看到RP DP AP BP等4个端口角色,和RSTP一致5.3 STP对于AP接口的优化
原本STP协议中AP接口对于次优BPDU不会立即处理,需要等待20s的老化时间华为在实现STP协议时参考了RSTP的特性,AP接口可以立即处理次优BPDU了,但是时间上仅仅从50s缩短至30s。(因为没有P/A机制)
5.4 STP也可以支持EP端口角色

BPDU保护

1、针对对象:边缘端口

由于边缘端口存在一定风险,当外接支持生成树功能的交换机时会触发BPDU收敛,如果新接的交换机BID更优秀,那么可能会造成根桥易主,直接造成网络重新收敛,导致断网。

保护方法:针对边缘端口配置BPDU保护。

作用原理:当边缘端口配置了BPDU保护以后,边缘端口在收到BPDU以后,该接口会进入error-down状态。

在这里插入图片描述
如果直接连接会导致:断开30s
在这里插入图片描述

[LSW1]stp mode rstp
[LSW1]stp priority 4096

[LSW2]stp mode rstp
[LSW2]stp priority 32768
[LSW2-GigabitEthernet0/0/2]stp edged-port enable 	//让2接口变成边缘端口就行
[LSW2]stp bpdu-protection			//全局下配置BPDU保护功能,那么只要是边缘端口就会默认将开启BPDU保护功能

[LSW3]stp mode rstp
[LSW3]stp priority 0

开启完后,就算手动把LSW2与LSW3的接口进行undo shutdown,则先变成up状态,接着又收到了对方的BPDU报文,所以又变成down状态(Administratively down)了
在这里插入图片描述

配置边缘端口的两种方法(全局配置和上述演示的单个接口配置)

 stp edged-port default //全局配置该命令后,交换机的所有接口全部配置为边缘端口
 如果需要改成普通端口stp edge-port disable

恢复措施:
手动恢复:关掉LSW3的stp,在接口下undo shutdown
自动恢复:[S8]error-down auto-recovery cause bpdu-protection interval 30//配置由于bpdu保护被shutdown的接口在30秒后自动恢复
记得先配置这个,如果目前LSW3是开启的,就先把LSW3的stp取消,再开启,再取消,就可以等到他30s自动回复了

根保护

针对对象:普通端口
作用原理:
如果一个接口没有开启边缘端口,那么这个接口就无法使用BPDU保护,
那么就只能使用根保护功能。根保护功能可以将一个端口强制为DP接口,防止周围交换机成为根桥。当一个接口开启根保护后,一旦收到了更优的BPDU时,那么接口角色不变,接口状态变为discarding
注意:根保护只能保护DP接口,不能保护RP接口:

解析:
配置完后,他的接口会被成阻塞状态,虽然能收到另一个交换机的BPDU,但是不理他

恢复:当接口不再收到更优的BPDU之后,将会进入正常的STP收敛过程。理论上这个恢复时间为2个转发时延

保护的目的都是为了不让根桥变动,从而发生网络动荡

环路保护

现象:
在已经形成环路的交换网络中,由于光纤链路出现单通故障,导致RP接口无法收到根桥发来的BPDU,那么老化时间超时后,RP接口将变成DP接口,AP接口变成RP接口并且快速进入转发状态。此时DP接口将会由discarding状态经过2个转发时延后进入到forwarding状态,此时将会导致一个方向的环路问题。
作用:为了防止出现这种环路,对根端口开启环路保护后,在无法收到上游发来的BPDU后,根端口会变为DP角色并且保持discarding状态不会在变化。
环路保护可以在RP和AP接口上开启
命令:
stp loop-protection//在该接口开启环路保护功能,一旦链路恢复通畅,将立刻恢复正常的STP收敛结果。恢复。

TC-BPDU保护(限制):
现象:运营STP的交换机,在默认接收到TC-BPDU后会删除MAC地址表项和ARP表项作用:防止TC-BPDU泛洪。命令:
//接口下开启TC-BPDU限制功能[HUAWEI-GigabitEthernet0/0/1l stp tc-restriction enable//全局开启TC-BPDU保护单位时间[HUAWEI] stp tc-protection interval 10HUAWEI ]//全局开启Tc-BPD单位时间内的接收报文数量值stp tc-protectionthreshold 5综上:以上三条命令配合使用,实现该接口在10秒钟内最多只能接收5个TC-BPDU,超限接收则丢弃

MSTP

在这里插入图片描述

由于生成树会进行破环,将一条链路进行阻塞(备份)
因此会产生一些问题:
问题1:次优路径
问 题2:链路不能负载分担
问题3:部分VLAN链路不同

华为中,STP和RSTP都跑在一颗生成树上(另外一颗会被阻塞掉),所以MSTP生成树随之诞生

[LSW3]stp mode mstp						//stp调整为MSTP
[SW1]stp region-configuration			//进入MSTP域配置视图
[SW1-mst-region]region-name HUAWEI		//配置MST的域名,如果没有配置,缺省会使用桥MAc地址代替
[LSW1-mst-region]revision-level 12		 //配置修订级别 如果没有配置,缺省为0
[SW1-mst-region]instance 10 vlan 10		//将vlan10加入实例10
[SW1-mst-regionlinstance 20 vlan 20		//将v1an20加入实例20
[LSW1-mst-region]active region-configuration//激活以上配置(必须激活才会生效,每增加新配置,都要重新激活)

交换机都要加上以上配置

[SW1]stp instance 10 root primary	//将交换机1配置为实例10的主根(作用就是实例10的优先级配置为0)
[SW2]stp instance 20 root primary	//将交换机2配置为实例20的主根(作用就是实例20的优先级配置为0)
[SW2]stp instance 10 secondary 		//将交换机2配置为实例10的备份根桥,一旦sw1挂了,sw2将成为实例10的根桥 
[SW1lstp instance 20 secondary		//将交换机1配置为实例20的备份根桥,一旦sw2挂了,sw1将成为实例20的根桥


常用查看命令:
1[SW1]display stp instance xx 			//查看当前实例详细信息
2[SW1ldisplay stp region-configuration 	//查看当前MST域内的详细配置

这时候就可以解决阻塞问题,实现负载均衡
但是如果一个交换机挂了的话,就不行了(因为vlanif三层挂了,vlan10无法通信),所以需要VRRP协议(虚拟路由器冗余协议(共有协议))

VRRPv2仅适用于IPv4网络,VRRPV3适用于IPv4和IPv6两种网络.
VRRP协议报文:
只有一种报文:Advertisement报文;其目的IP地址是224.0.0.18,目的MAC地址是01-00-5e-00-01-12,协议号是112。

在这里插入图片描述
第一个:密码
第二个:抢占(自动开启)
第三个:优先级(默认100,1-254,越大越优)
第四个:控制报文的发送间隔(1s一次)
第五个:做联动的
第六个:版本(-3对应IPV6)
第七个:VRRP的ip号

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

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

相关文章

信号有效带宽

根据傅里叶变换可以知道信号带宽是无穷大的,这对实际应用是帮助不大的,所以有了有效带宽的概念,可能大家知道常用的经验公式:O.35/Tr或者0.5/Tr等,那这个公式是怎么来的呢?有效带宽又是什么含义呢&#xff…

C++入门(01)VisualStudio2022社区版HelloWorld

文章目录 1. 下载社区版2. 安装3. 启动4. 创建新项目5. C空项目6. 项目名称和位置7. 创建后,出现“新增功能”,关闭即可8. 解决方案和项目9. 新建源文件10. 编辑第一个C程序11. 运行该程序12. Debug文件夹13. 用好Microsoft Learn 1. 下载社区版 访问&a…

C语言字面量和常量

目录 引言 1. 字面量 1.1 字符字面量 1.2 整型字面量 1.3 浮点字面量 2. 常量 2.1 使用预处理器指令 #define 定义常量 2.1.1 语法格式 2.1.2 使用举例 2.2 使用 const 关键字定义常量 2.3 使用 #define 和 const 定义常量的区别 引言 看了一些博文,有的文…

HarmonyOS(55) error: install releaseType target not same 解决方案

releaseType not same 问题现象解决方法参考资料 问题现象 在DevEco Studio 链接真机运行时发现如下错误: 09/06 08:40:45:905: Install Failed: error: failed to install bundle. code:9568258 error: install releaseType not same. 09/06 08:40:45:966: View …

集成电路学习:什么是SDK软件开发工具包

SDK:软件开发工具包 SDK,即Software Development Kit(软件开发工具包),是一套由软件提供商或其他组织提供的开发工具集合。这些工具旨在帮助开发者更快速、更便捷地创建、测试和部署软件应用程序。以下是对SDK的详细解…

全国计算机二级考试C语言篇3——选择题

C语言部分——C语言概述 1.程序模块化的优点 程序模块化的优点在于它可以使程序的开发、维护和复用变得更简单。下面是一些主要的优点: 降低复杂度:模块化可以将复杂的问题分解成更小的、更易管理的部分。 可维护性:模块化使得代码更易于维护…

前缀列表(ip-prefix)配置

一. 实验简介 本来前缀列表是要和访问控制列表放在一起讲的,但是这里单拎出来是为了更详细的讲解两者的区别 1.前缀列表针对IP比访问控制更加灵活。 2.前缀列表在后面被引用时是无法对数据包进行过滤的 实验拓扑 二. 实验目的 R4路由器中只引入子网LoopBack的…

DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】

目录 1、DFS算法简介 2、算法实战应用【leetcode】 2.1 计算布尔二叉树的值 2.1.1 算法原理 2.1.2 算法代码 2.2 求根节点到叶节点数字之和 2.2.1 算法原理 ​2.2.2 算法代码 2.3 二叉树剪枝 2.3.1 算法原理 2.3.2 算法代码 2.4 验证二叉搜索树 2.4.1 算法原理 …

紫微斗数算法的实现流程

题外话 我想了又想大凡能够修炼成绝世高手的都是“魔鬼”。只有魔鬼才会纯粹的“敢贪,敢嗔,敢痴”。 你我都困在了敢字。程序猿拿起拿锋利的刀,解构世间的一切吧!最近看西游有感而发。 “联系是普遍存在的,规律是客观…

我开源了我的新闻网站项目

🎉 前言 暑假时写了一个Web项目,感觉做的还是有模有样的,不仅做了前端,还加了后端并连了数据库。最近也是将它开源了,一来是为了熟悉一下Github流程和Git使用命令,二来也是想和大家分享一下自己的成果&…

[阅读笔记]《解读基金—我的投资观与实践》— 季凯帆

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

java环境变量怎么调

java 环境变量配置是设置系统查找和使用 java 工具的路径。通过以下步骤配置:安装 java jdk。设置 path 变量,添加 java 可执行文件目录路径。设置 java_home 变量,指定 jdk 安装目录路径。验证配置,运行 "java -version&quo…

io本质+io效率本质,5种io模型(介绍,异步/同步区别,阻塞/非阻塞区别)

目录 5种io模型 io引入 io的本质 io效率的本质 模型引入 以钓鱼为例 效率最高的方式 异步io和同步io的区别 阻塞式和非阻塞式io的区别 介绍 阻塞式io ​编辑 非阻塞式io ​编辑 信号驱动式io ​编辑 多路转接/复用 ​编辑 异步io 5种io模型 io引入 io的本质…

【鸿蒙HarmonyOS NEXT】页面和自定义组件生命周期

【鸿蒙HarmonyOS NEXT】页面和自定义组件生命周期 一、环境说明二、页面和自定义组件生命周期三、示例代码加以说明四、小结 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、页面和自定义组件生命周期 需要明确几个概念: 页面…

0to1使用Redis实现“登录验证”次数限制

1 引言 系统为了避免密码遭到暴力破解,通常情况下需要在登录时,限制用户验证账号密码的次数,当达到一定的验证次数后,在一段时间内锁定该账号,不再验证。本章将用几行代码实现该功能,完整代码链接在文章最…

Markdown全兼容,MarkText打造专业文档新体验

前言 在科技的洪流中,我们不仅是见证者,更是创造者。它赋予我们力量,将遥不可及的梦想拉近至指尖,让生活的每一刻都充满无限可能。随着数字化内容的爆炸性增长,Markdown作为一种轻量级标记语言,凭借其简洁…

tekton构建标准ci(clone repo, test, build push img)

场景介绍 我们在上一篇文章中构建了一个最简单的ci,接下来我们对我们的github的项目构建一个较标准的ci。 Tekton简介,安装和构建最简单ci/cd-CSDN博客文章浏览阅读239次,点赞2次,收藏2次。本文介绍了tekton是什么,如…

vsftpd配置用户和密码让其他客户端连接

一、第一个主机:vsftpd下载及配置 前置准备: #卸载防火墙 yum -y remove firewalld #为了不让防火墙有影响,iptables配置也清空 iptables -F vim /etc/selinux/conf SELINUXdisabled #主要是把它改为disabled或者permissive SELINUXTYPEtargeted #重启linux让seli…

[Web安全 网络安全]-安全法规 网络基础 信息收集

文章目录: 一:网络安全法规 二:计算机网络 1.计算机网络的组成 2.网络分层模型(OSI七层 TCP/IP四层) 3.通信协议 IP协议 UDP协议/TCP协议 TCP协议 UDP协议 区别 HTTP协议/HTTPS协议 HTTP协议 HTTPS协议…

RedissonClient 分布式队列工具类

注意:轻量级队列可以使用工具类,重量级数据量 请使用 MQ 本文章基于redis使用redisson客户端实现轻量级队列,以及代码、执行结果演示 一、常见队列了解 普通队列:先进先出(FIFO),只能在一端添…