加载中...

RSTP协议

一、RSTP(快速生成树协议)简介

1.1 RSTP(快速生成树协议)使用场景

RSTP(rapid spanning Tree Protocol IEEE 802.1W),它STP多了一种端口类型:备份端口(backup port)类型,用来做指定端口的备份。删除了3种端口状态

二、RSTP(快速生成树协议)结构

2.1 RSTP帧格式

二层通过802.3帧进行封装的关于目的组播01:80:c2:00:00:00,配置了生成树协议的交换机都会接受并处理。

2.1.1 RST BPDU 帧格式

RSTP有专用的BPDU :RSTP/MSTP BPDU ,没有Config BPDU ,每个交换机都可以产生RSTP/MSTP bpdu

image-20250304050249936

字段 长度 说明
Protocol Identifier 2字节 协议ID=“0”。
Protocol Version Identifier 1字节 协议版本标识符,STP为0x00,RSTP为0x02,MSTP为0x03。
BPDU Type 1字节 BPDU类型:
0x00:STP的Configuration BPDU
0x80:STP的TCN BPDU(Topology Change Notification BPDU)
0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)
Flags 1字节 标记域。对于STP:第一个bit(左边、高位bit)表示“TCA(拓扑改变响应)”,最后一个bit(右边、低位bit)表示“TC(拓扑改变)”,其他字段预留。
对于RSTP和MSTP:Bit7:TCA (Topology Change Acknowledgement)
Bit6:Agreement
Bit5:Forwarding
Bit4:Learning
Bit3和Bit2:端口角色00:未知01(低位为1高位为0):Alternate / Backup10(低位为0高位为1):根端口11:指定端口
Bit1:Proposal
Bit0:TC (Topology Change)
选路原则
Root Identifier(RID) 8字节 网桥ID都是8个字节
Priority 2字节 默认32768
Mac地址 6字节
Root Path Cost(RPC) 4字节 根路径开销,本端口累计到根桥的开销。
Bridge Identifier (BID) 8字节 发送者BID,本交换机的Bridge ID。
Port Identifier(PID) 2字节 发送端口PID,发送该BPDU的端口ID。
时间参数
Message Age 2字节 该BPDU的消息年龄,以秒为单位。
Max Age 2字节 消息老化年龄,以秒为单位,超时则认为到根交换机的链路故障。
Hello Time 2字节 发送两个相邻BPDU间的时间间隔,以秒为单位。
Forward Delay 2字节 控制Listening和Learning状态的持续时间,以秒为单位。

image-20250304064212616

2.1.2 报文格式下的Flags

image-20250304064217910

二进制编码 端口角色 简称 描述
00 Unknown - 初始状态或未知角色(通常短暂存在)
01 Alternate Port / Backup Port AP/BP - AP:根端口的备份路径
- BP:同一交换机上的冗余端口(防本地环路)
10 Root Port RP 非根交换机上到根桥的最优路径端口
11 Designated Port DP 网段中负责转发流量的主端口
Forwarding位 (高位) Learning位 (低位) 状态 行为描述
1 1 Forwarding 转发数据帧并学习MAC地址
0 1 Learning 不转发数据帧但学习MAC地址(过渡状态)
0 0 Discarding 既不转发数据帧也不学习MAC地址(阻塞状态)

三、RSTP(快速生成树协议)机制

3.1 STP/RSTP的端口角色

端口角色 协议类型 数据转发 BPDU处理 描述 典型应用场景
指定端口 (DP) STP / RSTP ✅ 转发 主动发送 BPDU 每个网段中到根桥路径最优的端口,负责转发本网段流量 根桥的出口端口、连接下级交换机
根端口 (RP) STP / RSTP ✅ 转发 接收 BPDU 非根交换机上到根桥的最优路径端口 非根交换机的上行端口
交替端口 (AP) 仅 RSTP ❌ 阻塞 接收 BPDU RP端口的备份
备份端口 (BP) 仅 RSTP ❌ 阻塞 接收 BPDU DP端口的备份
边缘端口 (EP) 仅 RSTP ✅ 转发 不处理 BPDU 直接连接终端设备,绕过STP状态机,立即进入转发状态 连接PC、服务器等终端设备
阻塞端口 仅 STP ❌ 阻塞 仅接收 BPDU 传统STP中所有非DP/RP的端口(RSTP中细分AP/BP) STP环境下的冗余链路

[!IMPORTANT]

但我觉的还是下面这句话说的好

如果来源于对方最优的BPDU,此端口为AP

如果来源于自身最优的BPDU,此端口为BP

通过AP,BP端口 来快速计算端口角色,完成快速收敛

3.1.1 边缘端口

​ 在 RSTP 里面,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口叫做边缘端口。

  1. EP跳过listening和learning,直接进入forwarding状态,down--up,秒切

  2. EP收到对方的bpdu,丧失边缘端口的功能,变成正常STP端口,discarding-learning-forwarding,30秒

  3. EP端口不会被SYNC

  4. EP端口不会触发TC

  5. EP端口不会转发TC

  6. EP端口不会受TC的影响

[Huawei-GigabitEthernet0/0/3]stp edged-port 

3.2 RSTP的端口状态

生成树协议的端口之间最本质的区别在于端口的角色,而不在于端口状态。因此,

不同于STP的5种端口状态,RSTP将端口状态缩减为3种。根据端口是否转发用户流量和学习MAC地址,端口状态可分为:

RSTP端口状态 转发用户流量 学习MAC地址 对应STP状态 说明
Discarding ❌ 不转发 ❌ 不学习 Disabled / Blocking / Listening 初始状态或拓扑变化时的临时状态,不参与数据转发,仅处理BPDU
Learning ❌ 不转发 ✅ 学习 Learning 过渡状态,开始构建MAC表但暂不转发数据,避免临时环路
Forwarding ✅ 转发 ✅ 学习 Forwarding 稳定工作状态,正常处理数据帧并更新MAC表

3.3 RSTP的选举流程

见STP选举流程,不作多举例

3.4 Proposal/Agreement机制

# 当发生下述情况下 
交换机检测到拓扑变化(如新链路连接)。

当一个非边缘端口迁移到Forwarding状态

img

3.4.1 Proposal 阶段

P置位的前提是链路类型是P2P,如果非P2P则无法进行P/A协商,为STP正常协商30s

p0和p1两个端口马上都先成为DP端口,互相发送RST BPDU { P置位 1,A置位1 } ,S2收到更好的BPDU,停止发送。

3.4.2 Sync 阶段

各个设备进行进行Sync变量置位(临时阻塞非边缘端口),进入Discarding状态。

# SYNC 的作用
同步网络状态:确保下游交换机阻塞冗余路径后,上游端口才转发数据。
避免临时环路:通过阻塞-恢复的严格顺序保障无环网络。

3.4.3 Forwarding 阶段

S2设备进行Sync后返回RST BPDU { P置位 0,A置位1 } 的回应RST BPDU,S1设备收到后直接进入Forwarding状态。

[!IMPORTANT]

被动设备进行收到后进行SYNC同步和端口变动,而主动设备是收到被动设备后进行变化。

3.5 RSTP-TCM

只有当一个非边缘端口迁移到Forwarding状态时候,就是RSTP的拓扑发生变化,触发快速切换。

3.5.1 TC While Timer 计时器

​ 在拓扑发生改变时,为本交换设备的所有非边缘指定端口(Non-Edge Designated Port )和根端口启动一个TC While Timer,计时器值是Hello Time的两倍。同时这些端口发送RST BPDU。

​ 收到RST BFDU的设备,清空所有端口学习的MAC地址,后也为自己所有的非边缘指定端口和根端口启动TC While Timer。

export_054huw

协议 TC处理机制 TC While Timer角色
STP 依赖TCN逐级上报至根桥,再由根桥泛洪TC 控制根桥发送TC BPDU的持续时间
RSTP 本地直接泛洪TC BPDU,无需根桥参与 控制本地交换机泛洪TC BPDU的时间窗口

3.6 RSTP保护机制

3.6.1 边缘端口保护

边缘端口收到BPDU会丧失边缘端口属性,为了防止这种情况被恶意攻击

第一种.配置bpdu保护,配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被error-down,边缘端口属性不变。

#全局配置

sw1
  Stp bpdu-protection
恢复:
	1、接口手工undo shutdown
	2、自动恢复
# Error-down recovery cause bpdu-protection interval 30----30最低,30秒以后自动恢复

第二种.配置bpdu过滤,针对EP端口,一旦配置不收不发BPDU

#全局配置
Sw1:
Stp bpdu-filter default enable

# 接口:
	Interface g0/0/22
Stp bpdu-filter enable5 

3.6.2 根保护

​ 一旦使能根保护功能的指定端口收到优先级更高的BPDU时,端口状态将进入Discarding状态,不再转发报文。在经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的BPDU,端口会自动恢复到正常的Forwarding状态。只能DP端口配置

<HUAWEI> system-view
[HUAWEI] interface gigabitethernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] stp root-protection

3.6.3 环路保护

运行生成树协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游设备的BPDU报文维持。当由于链路拥塞或者单向链路故障(A可以通B,B不能通A)导致这些端口收不到来自上游设备的BPDU报文时,交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,可能导致网络中可能产生环路。配置在非DP端口,AP和BP配置环路防护。

  在根接口上开启环路保护功能后,如果根接口长时间没有收到 BPDU ,交换机会重新选举根接口,原来的根接口调整为指定接口,==且接口状态切换成丢弃状态,从而免出现环路==。在替代接口上开启环路保护功能后,如果替代接口长时间没有收到 BPDU ,交换机会把替代接口调整为指定接口,且接口状态保持在丢弃状态,从而避免出现环路。

3.6.4 拓扑变更保护

   一个稳定的网络是不会频繁出现拓扑变更的,一旦网络拓扑出现变更,TC BPDU( TC 置位的 BPDU )会泛洪到全网,而 TC BPDU 会让交换机执行 MAC 地址表删除的操作。如果网络环境很不稳定,导致 TC BPDU 频繁的泛洪,或者是网络中存在恶意用户,发送大量的 TC BPDU 对网络进行攻击,那么会极大消耗交换机的性能。
  	
  交换机开启拓扑变更保护功能后,默认将在 2 秒内只进行一次的 TC BPDU 处理,如果在 2 秒内收到了 2 个及以上的 TC BPDU ,那么交换机只会处理一次,对于超出的部分,必须等待 2 秒后才进行处理。
<HUAWEI> system-view
[HUAWEI]Stp tc-protection threshold

四、RSTP(快速生成树协议)经典故障

4.1 非直连故障

ScreenShot00017

当SW2的RP发生断开

  1. dp-> dp Discarding,发送次级bpdu (准备进行P/A协商)
  2. Sw3收到次级BPDU,AP转变为dp Discarding,因为保存了根桥的BPDU, 回复p = 1 ,a = 1
  3. Sw2收到后发现比自己的更优,DP端口变为RP端口,进行SYNC同步,同步结束后变为RP forwarding,回复 p= 0 a = 1
  4. Sw3收到后变为 DP forwarding

4.2 30S恢复场景

ScreenShot00018

实际上G0/0/2的线路的30s恢复并不影响网络转发

当sw2恢复 G0/0/1时

在 g 0/0/1 线路上PA 协商以SW1上线先的结果(后上线反驳p=1,a=1的报文)

  1. Sw1 dp discarding 发送 p = 1 , a = 1的报文,
  2. Sw2 收到后 sync同步,G 0/0/1 变为 RP forwarding 发送 p= 0 , a = 1 的报文
  3. Sw1 收到报文后变为 dp discarding

在G 0/0/2口下

  1. 因为sw2 变为 dp discarding 发送 p = 1, a = 1的报文
  2. Sw3收到报文后,发现确实优于自身的BPDU报文,但是也不能成为RP端口,成为AP discarding,(AP不能发送BPDU)不能发送bpdu,不回复A置位的报文,等待2个15S。
posted @ 2025-03-18 19:12  江寒雨  阅读(666)  评论(0)    收藏  举报