「RSTP」- 快速生成树协议、Rapid Spanning Tree Protocol,IEEEE 802.1W

  CREATED BY JENKINSBOT

STP 协议虽然能够解决环路问题,但是具有如下问题:
1)依靠时间等待来进行收敛,所以收敛速度慢(30s-50s)影响用户通信质量 。
2)如果 STP 网络的拓扑结构频繁变化,网络也会频繁失去连通性,从而导致用户通信频繁中断(当拓扑变化时,连接主机的端口也会发生变化)。

IEEE 于 2001 年发布的 802.1W 标准定义快速生成树协议 RSTP(Rapid Spanning-Tree Protocol),RSTP 在 STP 基础上进行改进,实现了网络拓扑快速收敛。

原理简述

在 STP 中,当初始时所有交换机都会发送 BPDU 帧,当稳定后只有 Root Bridge 发送;

在 RSTP 中:当初始时,所有交换机都会发送 BPDU 帧;当稳定后,所有交换机都 独立 发送 BPDU 帧(按照 Hello Time 发送,以降低延时);

交换机,初时状态:DP=Discarding

在初始时,交换机认为自己所有的端口都是 DP 状态,出于 Discarding 状态:

交换机,相互协商:BPDU.Proposal=1

当初始时所有交换机都会 相互 发送 RST BPDU 帧,Proposal=1

如果 SW 收到的 BPUD 优先级(BID)较低,则会忽略该 BPDU 帧(在图示里,是 SWA 的 BID 更优,所以会忽略 SWB 的 BPDU 帧);

交换机,开始同步:Lower BID

如果SW 收到的 BPUD 优先级(BID)较高,将停止发送 BPDU 并开始进入同步状态(图示 SWB 将进入同步状态)。在 同步阶段 下:
1)所有 Non-edge Port 进入 Discarding 状态;
2)发送端口变为 RP 状态,并且 快速 进入 Forwarding 状态(其他端口已经进入 Discarding 状态,因此不会形成环路)

交换机,回复确认:BPDU,Agreement=1

SWB 发送 BPDU.Agreement=1 给 SWA 交换机。
SWA 收到 BPDU.Agreement=1 之后,此时 SWA 的 DP 将 立刻 进入 Forwarding 状态。

交换机,继续进行其他链路协商

然后 P/A 继续进行,SWB 与 SWC 开始进行协商,整个协商过程是分段进行的。

Proposal & Agremment

STP 依赖于时间进行收敛(等待),而 RSTP 使用 Proposal & Agremment 机制(P/A),将时间缩短到 1s~2s 时间。

端口种类:Backup Port;Edge Port;

在 STP 中,有 RP、DP、AP 三种端口。

在 RSTP 中,除了有 RP、DP、AP 三种端口,还增加两种:

1)备份端口,Backup Port:
作为 DP 的备份,提供 Root Bridge 与 Non-root Bridge 链路备份;
当然原来的 AP 也是 DP 的备份,提供 DP 到 Root Bridge 的 备份链路);

备份端口的选举:比较 Port ID 大小;
BD 与 AP:如果端口收到 BPDU.BID 与当前交换机 BID 不同,则端口成为 AP 状态;

2)边缘端口,Edge Port:
—- 不接收处理 CBPDU 帧;不参与 RSTP 运算;
—- 连接主机、终端设备(应该配置成为边缘端口,某些华为交换机会自动判断)
—- 当拓扑发生变化(故障)时,端口的状态不会发生改变(不会 Discarding 状态)
—- 链路 UP 时,该端口由 Disable 直接进入 Forwarding 状态,无时延;(如果没有配置边缘端口,由于端口状态转变需要时间,此时终端可能在某段时间内无法访问网络)

端口状态:Discarding;Learning;Forwarding;

Backup Port 出于 Discarding 状态;

Root Protection(根保护)

当新的交换机出现时,如果 BID 更小,则会抢夺成为根交换机,这可能会影响我们的网路规划。

Root Protection 功能,能确保 Root Bridege 的 DP 不会以为网络问题给改变角色。

Root Protection 需要在 DP 上设置:
1)该 DP 收到更优先的 BPUD 帧,网口进入 Discarding 状态,不会响应新交换机 BPDU.Agreement=1 帧;
2)某段时间之后,如果不再收到 BPDU.Agreement=1 帧,将回到 Forwarding 状态;

BPDU Protection(BPDU 保护)

当 Edge Port 收到 BPUD 后:
1)会变为普通端口,参与 STP 计算,触发 TC 处理;
2)如果连接交换机,能够会抢夺 Root Bridge 角色;
3)可能会临时环路;比如同个交换机的两个接口短接,立即进入 Forwarding(因为是 Edge Port 状态),然后成为普通端口,开始选举端口状态,最后环路消失;

在 Edge Port 上,配置 BPDU Protection 特性,如果接口收到 BPDU 帧,则端口会立即 Shutdown 状态。

Loop Protection(环路保护)

比如,在光纤通信中,某些是一发一收的双线,当其中一条出现问题时,可能会出现单向环路。

当 3 x Hello Time = 6s 后,没有收到 Root Bridge 的 BPDU 帧,交换机开始转化端口状态,最后变成单向环路。

配置 Loop Protection 特性,如果长时间未收到上有的 BPDU 帧,端口进入 Discarding 状态,避免形成环路。

报文格式:RST BPDU

Flags,原始 STP 的 BPDU Flags 仅使用第一位(TC)和第八位(TCA),但是在 RSTP 中得到扩充。
1)Agreement、Proposal
2)Forwarding / Learning:
3)Port Role:

链路故障

根桥失效

在 STP 中,需要等待 20s 没有收到 BPDU 报文,然后端口状态转化 30s 时间,累计 50s 时间。

在 RSTP 中,等待 3 x Hello Time = 6s 时间(注意,这不会影响 BPDU 的失效时间,依旧为 20s 时间,但是这不会参与链路故障检测),如果 Non-root Bridge 未收到 Root Bridge 的 BPDU 帧,则认为 Root Bridge 失效,开始 P/A 选举。

拓扑变化处理

在 STP 中,发送 TCN,TCA,TC 报文。

在 RSTP 中,直接由故障设备(拓扑发生变化的设备)直接向上游发送 TC 报文。当交换机收到 TC 报文之后,开始清空接口的 MAC 地址表(除了收到 TC 报文的接口、Edge Port 以外的端口)。

协议兼容

假如 SWC 不支持 RSTP:
1)当 SWA 收到 CBPDU 帧时,会等待 2 x Hello Time 时间,以等待 RST BPDU 出现;
2)在超时后,会自动将端口转化为 STP 模式。

同理 B C 也是如此。

相关链接

华为交换机配置:Huawei/VRP/STP, RSTP, MSTP

参考文献

Spanning Tree Protocol – Wikipedia