本地网络设计/快速生成树协议
快速生成树协议 (RSTP),标准化作为IEEE 802.1w (2001),其特点是与STP相比,在以下方面具有更快的收敛速度
RSTP定义了新的端口角色和状态
- 丢弃状态: 端口不转发帧,并且丢弃收到的帧(配置BPDU除外),统一了禁用、阻塞和监听状态;
- 备用角色: 端口处于丢弃状态,连接到与另一个桥的指定端口相同的链路,代表根端口的快速替代;
- 备份角色: 端口处于丢弃状态,连接到与相同桥的指定端口相同的链路,代表指定端口的快速替代;
- 边缘角色: 只有主机可以连接到端口,旨在减少与传统STP相比,用户连接主机到网络时遇到的服务中断。
端口状态 | 端口角色 | 接收帧? | 接收并处理CBPDU? | 生成和传播CBPDU? | 更新过滤数据库? | 转发帧? |
---|---|---|---|---|---|---|
丢弃 | 备用 | 是 | 是 | 否 | 否 | 否 |
备份 | 是 | 是 | 否 | 否 | 否 | |
指定[1] | 是 | 是 | 是 | 否 | 否 | |
学习 | 指定 | 是 | 是 | 是 | 是 | 否 |
根 | 是 | 是 | 否 | 是 | 否 | |
转发 | 指定 | 是 | 是 | 是 | 是 | 是 |
根 | 是 | 是 | 否 | 是 | 是 | |
边缘 | 是 | 是 | 否 | 是 | 是 |
配置BPDU具有以下格式
1 | 2 | 4 | 6 | 7 | 8 | 12 | 16 | 24 | 32 |
协议ID(0) | 版本(2) | BPDU类型(2) | |||||||
TC | P | R | S | A | TCA | 根优先级 | STP实例 | ||
根MAC地址 | |||||||||
根路径成本 | |||||||||
桥优先级 | STP实例 | ||||||||
桥MAC地址 | |||||||||
端口优先级 | 端口号 | 消息年龄 | |||||||
最大年龄 | Hello时间 | ||||||||
转发延迟 |
其中与传统STP中的BPDU相比存在一些变化
- 版本字段(1字节):它将RSTP识别为版本号2(在STP中为0);
- BPDU类型字段(1字节):它始终将配置BPDU识别为类型2(在STP中为0),因为拓扑更改通知BPDU不再存在;[2]
- 6个新标志:它们处理提案/协议机制
- 提案 (P) 和 协议 (A) 标志 (每个标志 1 位):它们指定端口角色是由桥 (P = 1) 提出还是已被另一个桥 (A = 1) 接受;
- 角色字段 (R) 中的2个标志 (2位):它们编码建议或接受的端口角色 (00 = 未知,01 = 备用/备份,10 = 根,11 = 指定);
- 状态字段 (S) 中的2个标志 (2位):它们指定建议或接受角色的端口处于学习 (10) 或转发 (01) 状态;
- 根标识符和桥标识符字段 (每个字段 8 字节):RSTP 包括来自IEEE 802.1t (2001) 的技术规范,这些规范更改了桥标识符的格式
- 桥优先级字段 (4 位,默认值 = 8);
- STP实例字段 (12 位,默认值 = 0):用于虚拟局域网,以在相同物理网络内启用多个协议实例: 本地网络设计/虚拟局域网#PVST;
- 桥MAC地址字段 (6 字节):与 IEEE 802.1D-1998 相同;
- 根路径成本字段 (4 字节):RSTP 包括来自 IEEE 802.1t (2001) 的技术规范,这些规范更改了端口路径成本的推荐值,包括新的端口速度 (高达 10 Tb/s);
- 最大年龄和转发延迟字段 (每个字段 2 字节):它们在 RSTP 中完全未使用,但出于兼容性原因而保留。
RSTP 的特点是与传统 STP 相比具有更快的拓扑收敛速度:实际上,如果如 RSTP 标准化时当时的规范,只有全双工点对点链路(因此没有集线器),它将在 50 秒内切换到不到 1 秒(约 10 毫秒的顺序)。
当发生链路故障时,RSTP 对其的检测速度比传统 STP 更快,这得益于更有效的 BPDU 处理。
非根桥不仅传播由根桥生成的 BPDU:每个桥每隔 Hello 时间 (默认值:2 秒) 生成一个 BPDU,其中包含当前根桥作为根标识符,即使它没有从根桥收到 BPDU。如果在 3 个 Hello 时间段内没有收到 BPDU,则当前 BPDU 被宣布为已过期,并假设在根端口连接的链路上发生了故障。
这种更快的信息老化在现代网络中是无用的
- 在使用集线器的旧网络中,桥无法在物理层检测集线器和另一个桥之间的故障→唯一检测它的方法是意识到“保持活动”BPDU 消息停止接收;
- 在纯交换的新网络中,桥可以在物理层立即检测到链路故障,而无需等待 3 个 Hello 时间段。
一旦桥检测到链路故障,它就开始生成自己的 BPDU→每个邻居桥,只要它在其根端口上接收到声称自己是根桥的桥的 BPDU,就会接受新的 BPDU,忘记之前存储的 BPDU,因为它意味着在其通往根桥的路径上发生了某些错误。此时
- 如果其桥标识符比 BPDU 中的标识符差,则桥开始在其指定端口上生成 BPDU,其中包含新的根标识符;
- 如果其桥标识符比 BPDU 中的标识符好,则桥开始生成自己的 BPDU,声称自己是根桥。
一旦检测到故障,某些端口可以直接进入转发状态,而无需经过学习状态。
- 备用端口
如果根端口发生故障,备用端口将提供桥接设备和根桥接设备之间的备用路径。
- 备份端口
如果设计端口发生故障,备份端口将提供桥接设备和链路之间的备用路径。
建议/同意序列是一种在两个桥接设备之间快速同步端口角色的算法。
当在两个桥接设备之间插入新的链路时
- 两个桥接设备都会将连接到新链路的端口以及所有连接到其他链路的可能的其他根端口和指定端口置于丢弃状态,以防止在瞬态期间创建可能的环路;
- 两个桥接设备都会通过向新链路发送带有已设置建议标志的BPDU来建议其端口作为链路的指定端口;
- 较差的桥接设备通过发送带有已设置同意标志的BPDU来接受来自另一个桥接设备的建议,并将自己的端口置于根据生成树算法标准确定的适当角色(根、备用或备份);
- 较好的桥接设备接收同意BPDU并将自己的端口设置为链路的指定端口;
- 两个桥接设备都会对它们最初置于丢弃状态的其他端口重复此序列。
两个桥接设备之间通过BPDU发送进行的协作比经典STP中基于计时器的机制更快,并且更有效率,因为它不会长时间停止整个网络,而只是偶尔停止一个桥接设备邻域。新的链路必须是全双工的,以便BPDU可以在两个方向上交换:建议BPDU沿一个方向,同意BPDU沿另一个方向。
RSTP旨在对经典STP侵入性更低,因为它避免了在拓扑变化后从过滤数据库中清理旧条目:实际上它避免了从旧条目中清理过滤数据库,从而导致在不需要时泛洪发送的流量大幅增加。
- 移动到丢弃状态
当端口移动到丢弃状态时,它不会触发过滤数据库更新
- 如果已删除的链路不属于环路,也就是说不存在备用路径,那么其他网络段中的站点将不再可达,与它们关联的条目将不再有效,但这不被视为必须立即解决的问题:如果帧被发送到其中一个站点,它将到达连接到已删除链路的桥接设备,并将被丢弃,直到条目自然过期,并被桥接设备清理而无需触碰其他条目;
- 如果已删除的链路属于环路,也就是说通过处于丢弃状态的端口存在备用路径,那么当按照RSTP机制移动到转发状态时,将是后一个端口触发过滤数据库更新。
- 移动到转发状态
只有当非边缘端口移动到转发状态时,它才会触发过滤数据库更新
- 如果新的链路不会创建环路,那么不应触发过滤数据库更新,因为没有站点变得不可达,但请记住,桥接设备不知道全局网络拓扑;
- 如果新的链路创建了环路,那么端口移动到转发状态会导致沿环路的另一个端口按照RSTP机制移动到丢弃状态→通过该端口可达的站点现在可以通过另一个路径可达,因此与它们关联的条目应更新。
当桥接设备检测到需要过滤数据库更新的拓扑变化时
- 检测到拓扑变化的桥接设备在其所有根端口和指定端口上生成一个带有已设置拓扑变化标志的BPDU;[3]
- 每个桥接设备在接收到BPDU时
- 它会丢弃其过滤数据库中与所有根端口和指定端口关联的所有条目,但它接收到BPDU的端口除外;
- 它会在所有根端口和指定端口上传播BPDU,但它接收到BPDU的端口除外。[3]
当主机连接到边缘端口时,端口会立即成为指定端口并转向转发状态,而无需经过学习状态→不再需要等待30秒(转发延迟的两倍)才能使端口完全运行。
此外,边缘端口永远不会在移动到转发状态(主机连接)或移动到丢弃状态(主机断开连接)时触发过滤数据库更新→用户不再会因为泛洪发送的流量增加而遇到网络速度变慢的情况,主机将发送的第一个广播帧将根据桥接设备的常用学习算法更新过滤数据库。
边缘端口仍然会继续监听来自可能错误连接到它的桥接设备的BPDU,以便能够立即退出边缘角色并承担其他角色之一,以保护网络免受可能的环路影响。
如果将不支持RSTP的桥接设备引入到网络中,它在接收到类型等于0的配置BPDU时能够自动切换到STP模式,但这会产生一些副作用
- 由于单个桥接设备不支持RSTP,整个网络将进入STP模式,从而导致快速收敛时间丢失;
- 如果单个不支持RSTP的桥接设备发生故障或从网络断开连接,其他桥接设备将继续以STP模式工作,并且需要对每个桥接设备进行显式的手动配置。
可以将桥接设备配置为在某些端口上以RSTP模式工作,而在其他端口上以STP模式工作→网络将被分成两个部分,以不同的生成树协议版本工作。但是,由于RSTP部分比STP部分更早地启用数据帧的转发,这可能会导致网络不稳定,因为会出现瞬态环路。
为了使RSTP和非RSTP桥接设备在同一个网络中无缝共存,应该使用多生成树协议,该协议已标准化为IEEE 802.1s(2002):使用RSTP工作的网络部分和使用STP工作的网络部分被分隔在不同的域中。
当物理层上的链路可靠时,RSTP工作完美。如果由于连接器脏污(光纤非常敏感)导致链路频繁地断开和连接,RSTP会在每次链路状态改变时重新配置网络→由于RSTP反应速度过快,网络将大部分时间处于瞬态不稳定状态。
思科的专有机制“防抖动”在检测到链路抖动时将端口置于“错误禁用”状态。