简介
本文档介绍有关RSTP添加到之前802.1D标准的增强功能的信息。
背景
802.1D 生成树协议 (STP) 标准的设计初衷是,每次连接都在中断一分钟左右后恢复可视为性能良好。随着LAN环境中第3层交换的出现,网桥现在与路由解决方案展开竞争,在路由解决方案中,开放最短路径优先(OSPF)和增强型内部网关路由协议(EIGRP)等协议能够在更短的时间内提供备用路径。
思科通过Uplink Fast、Backbone Fast和Port Fast等功能增强了原始802.1D规范,以加快桥接网络的收敛时间。缺点是这些机制是专有的并且需要额外配置。
快速生成树协议(RSTP;IEEE 802.1w)可看作802.1D标准的演进,而不是一场革命。802.1D 中的术语基本上保持不变。而且大部分参数也没有变化,因此熟悉 802.1D 的用户可以轻松地快速配置新协议。在大多数情况下,RSTP 的性能比 Cisco 专有扩展的性能要好,而且不需要进行任何额外的配置。802.1w也可以恢复为802.1D,以便与旧网桥进行互操作(基于每个端口)。但这恰恰抛弃了它带来的好处。
新版 802.1D 标准 (IEEE 802.1D-2004) 收敛了 IEEE 802.1t-2001 和 IEEE 802.1w 标准。
Catalyst 交换机对 RSTP 的支持
下表显示了一些Catalyst交换机系列中对RSTP的支持,以及支持该支持所需的最低软件。
Catalyst 平台 |
带RSTP的MST |
RPVST+(亦称 PVRST+) |
Catalyst 2900 XL / 3500 XL |
不可用。 |
不可用。 |
Catalyst 2940 |
12.1(20)EA2 |
12.1(20)EA2 |
Catalyst 2950/2955/3550 |
12.1(9) |
12.1(13)EA1 |
Catalyst 2970/3750 |
12.1(14)EA1 |
12.1(14)EA1 |
Catalyst 3560 |
12.1(19)EA1 |
12.1(19)EA1 |
Catalyst 3750 Metro |
12.1(14)AX |
12.1(14)AX |
Catalyst 2948G-L3/4908G-L3 |
不可用。 |
不可用。 |
Cisco IOS®) |
12.1(12c)EW |
12.1(19)EW |
Catalyst 6000/6500(Cisco IOS) |
12.1(11b)EX、12.1(13)E 和 12.2(14)SX |
12.1(13)E |
Catalyst 8500 |
不可用。 |
不可用。 |
新的端口状态和端口角色
802.1D在以下五种不同的端口状态下定义:
有关端口状态的详细信息,请参阅本文档端口状态部分中的表。
端口的状态为混合状态(无论是阻塞还是转发流量),它在活动拓扑中的作用也是如此(根端口、指定端口等等)。例如,从运行角度看,阻塞状态的端口和监听状态的端口没有任何差异。这两种状态都丢弃帧,并且不能学习 MAC 地址。真正的区别在于生成树为端口分配的角色。可以安全地假设:监听端口为指定端口或根端口,并且正在进入转发状态。然而,在处于转发状态后,无法根据端口状态推断端口是根端口还是指定端口。这显示了该基于状态的术语的失败之处。RSTP 将端口的角色和状态分离,从而解决了此问题。
端口状态
RSTP 中仅保留了三种端口状态,分别对应于三种可能的运行状态。802.1D 中的禁用、阻塞和监听状态在 802.1w 中合并为唯一的丢弃状态。
STP (802.1D) 端口状态 |
RSTP (802.1w) 端口状态 |
端口是否包括在活动拓扑中? |
端口是否可获知 MAC 地址? |
禁用 |
丢弃 |
无 |
无 |
阻塞 |
丢弃 |
无 |
无 |
侦听 |
丢弃 |
Yes |
无 |
学习 |
学习 |
Yes |
Yes |
转发 |
转发 |
Yes |
Yes |
端口角色
端口角色现在是分配给给定端口的变量。根端口和指定端口的角色仍然保留,而阻塞端口的角色拆分为备份端口和替代端口角色。生成树算法(STA)根据网桥协议数据单元(BPDU)确定端口的角色。为了简化问题,关于BPDU,需要记住的一点是,总是有一种方法可以比较其中的任意两个,然后确定其中哪一个比另一个更有用。这是依据 BPDU 中存储的值,而有时依据接收它们的端口。因此,本部分中的信息阐述了确定端口角色的实用方法。
根端口角色
指定端口角色
替代端口和备份端口角色
-
这两个端口角色对应于 802.1D 的阻塞状态。阻塞的端口既不是指定端口也不是根端口。阻塞的端口收到的 BPDU 比其在网段上发送的 BPDU 更有用。请记住,端口需要接收BPDU才能保持阻塞状态。为此,RSTP 引入了这两个角色。
-
替代端口从其他网桥接收更有用的 BPDU,并且它是阻塞的端口。如下图所示:
-
备份端口从其所在的网桥接收更有用的 BPDU,并且它是阻塞的端口。如下图所示:
802.1D 内部已对此进行区分。这实质上是 Cisco UplinkFast 的工作原理。基本原理是替代端口提供通往根网桥的替代路径,因此可以在根端口出现故障时替换它。当然,备份端口可提供到同一网段的冗余连接,但不能保证到根网桥的替代连接。因此,上行链路组将其排除在外。
由此,RSTP 针对与 802.1D 使用相同标准的生成树计算最终拓扑。使用不同网桥和端口优先级的方式没有变化。“阻塞”这一名称用于描述 Cisco 实施中的丢弃状态。CatOS 版本 7.1 及更高版本仍会显示监听和学习状态。这提供的端口信息比IEEE标准要求的多。但是,新功能体现在,协议确定的端口角色与其当前状态之间存在差异。例如,它现在对于同时指定和阻塞的端口有效。虽然这种情况通常发生很短一段时间,但这意味着该端口处于面向指定转发状态的过渡状态。
新的 BPDU 格式
RSTP 引入了少量对 BPDU 格式的更改。802.1D 中仅定义了两个标志,即拓扑变化 (TC) 和 TC 确认 (TCA)。但是,RSTP会使用剩余的六个标志字节位来执行:
-
对产生 BPDU 的端口的角色和状态进行编码
-
处理建议/协议机制
思科BPDU、IEEE BPDU和BPDU图的完整视图
有关更高分辨率的图像,请参阅Cisco BPDU、IEEE BPDU和BPDU图。
注:位0(拓扑更改)是最低有效位。
另一项重要更改是 RSTP BPDU 现在为类型 2,版本 2。这表示传统网桥必须丢弃此新的 BPDU。此属性使802.1w网桥可以轻松检测与其连接的旧网桥。
新的BPDU 处理
每次Hello时发送BPDU
BPDU每次hello时发送一次,不再简单地中继。使用 802.1D 时,仅当非根网桥在根端口上收到 BPDU 时,才会生成 BPDU。网桥对BPDU的中继比它实际生成的更多。802.1w 并非如此。网桥每<hello-time>秒(默认为2秒)发送一次包含其当前信息的BPDU,即使它没有从根网桥收到任何信息。
信息更快过期
在给定端口上,如果连续三次没有收到 Hello(或如果 max_age 过期),则协议信息会立即过期。由于前面所述的协议修改,BPDU 现在可用作网桥之间的保持活动机制。如果网桥连续错过三个 BPDU,则它会认为与其直接相邻根网桥或指定网桥断开连接。这种信息快速过期使得可以进行快速故障检测。如果网桥无法从相邻网桥接收 BPDU,可以肯定与该相邻网桥的连接已断开。这与802.1D相反,后者的问题可能发生在通往根桥的路径上的任何地方。
注意:在物理链路发生故障时,故障检测速度更快。
接受次要 BPDU
此概念是 BackboneFast 引擎的核心部分。IEEE 802.1w委员会在RSTP中引入了类似的机制。当网桥从其指定网桥或根网桥接收次要信息时,它会立即接收并替换以前存储的信息。
由于网桥 C 仍然识别出根网桥处于活动状态并且运行良好,因此立即发送 BPDU 到网桥 B,该 BPDU 中包含有关根网桥的信息。因此,网桥 B 不会发送其自己的 BPDU 并且接受导向网桥 C 的端口作为新的根端口。
快速转换到转发状态
快速转换是 802.1w 中引入的最重要功能。传统 STA 在将端口变成转发状态之前,会被动地等待网络收敛。实现更快的收敛是对保守默认参数(转发延迟和max_age计时器)进行更改的问题,通常会使网络的稳定性受到威胁。新的快速STP能够主动确认端口可以安全转换到转发状态,而无需依赖任何计时器配置。现在,符合 RSTP 的网桥之间存在真正的反馈机制。为了在端口上实现快速收敛,协议依赖于两个新变量:边缘端口和链路类型。
边缘端口
Cisco生成树用户已经知道边缘端口概念,因为它基本上对应于PortFast功能。直接连接到终端站的所有端口无法在网络中形成网桥环路。因此,边缘端口直接转换到转发状态,并且跳过监听和学习阶段。当链路切换时,边缘端口和启用了 Portfast 的端口都不会生成拓扑更改。接收 BPDU 的边缘端口会立即失去边缘端口状态并成为正常的生成树端口。此时,边缘端口状态有一个用户配置的值和一个运行值。Cisco 实施仍保留 PortFast 关键字用于边缘端口配置。这使转换为 RSTP 变得更简单。
链路类型
只有在边缘端口和点对点链路上,RSTP 才能快速转换到转发状态。链路类型会从端口的双工模式自动派生。以全双工模式运行的端口视为点对点端口,而半双工端口默认视为共享端口。此自动链路类型值可由显式配置覆盖。在当今的交换网络中,大多数链路都在全双工模式下运行,RSTP 将这些链路视为点对点链路。这使它们能够快速转换到转发状态。
与802.1D的融合
下图说明了 802.1D 处理添加到桥接网络的新链路的方式:
在此方案中,根网桥和网桥 A 之间添加了一个链路。假设网桥A和根网桥之间已经有间接连接(图中的C - D)。STA阻塞端口并禁用网桥环路。首先,当根网桥和网桥 A 启动时,它们之间的链路上的两个端口会处于监听状态。网桥 A 现在能直接监听根网桥。它会立即在指定端口上向树的分支传播其 BPDU。一旦网桥B和C收到来自网桥A的这个新的上级信息,它们立即将该信息转发到枝叶。几秒钟后,网桥 D 便收到来自根网桥的 BPDU,并立刻阻塞端口 P1。
生成树可以非常高效地计算网络的新拓扑。现在唯一的问题是,只有经过两倍的转发中继时间之后,根网桥和网桥 A 之间的链路才能最终进入转发状态。这意味着流量将中断 30 秒(网络的整个 A、B 和 C 部分被隔离),原因是 8021.D 算法缺乏反馈机制,无法清晰地通告网络将在几秒钟后收敛。
与 802.1w 的收敛
现在,您可以看到 RSTP 处理类似情况的方式。请记住,最终拓扑与 802.1D 计算的拓扑完全一样(即,与以前相同的位置上有一个阻塞的端口)。只是实现此拓扑的步骤发生了变化。
交换机A和根之间的链路上的两个端口一进入就被置于指定阻塞状态。至此,一切情况与纯 802.1D 环境中完全一样。但是,在此阶段,交换机 A 和根网桥之间会发生协商。交换机A收到根的BPDU后,便会阻塞非边缘指定端口。此操作称为同步。完成此操作后,网桥 A 会明确授权根网桥将其端口置于转发状态。下图说明了网络上该过程的结果。交换机 A 和根网桥之间的链路被阻塞,两个网桥可交换 BPDU。
交换机 A 阻塞其非边缘指定端口后,交换机 A 和根网桥之间的链路便进入转发状态,您将遇到以下情况:
仍然不能有环路。现在,网络在交换机A之后阻塞,而不是在交换机A之前阻塞。但是,潜在网桥环路是在不同的位置被切割的。这种切断与根网桥产生的新 BPDU 一起通过交换机 A 沿树向下传递。在此阶段,交换机 A 上新阻塞的端口还会与都启动同步操作的交换机 B 和交换机 C 上与其相邻的端口进行协商,从而快速转换到转发状态。除了指向A的根端口之外,交换机B只有边缘指定端口。因此,它没有要阻塞的端口来授权交换机 A 进入转发状态。同样地,交换机 C 只需阻塞其通向 D 的指定端口。现在可进入下图中显示的状态:
请记住,最终拓扑与 802.1D 示例完全相同,这表示 D 上的端口 P1 最终会进入阻塞状态。这表示在新的 BPDU 沿树向下传递所需的必要时间后,将实现最终网络拓扑。在这种快速收敛中没有涉及计时器。RSTP 唯一引入的新机制是确认交换机可以在其新的根端口上进行发送,以便授权立即转换到转发状态,从而绕过长达两倍转发延迟时间的监听和学习阶段。管理员只需要记住以下几点就可以受益于快速收敛:
建议/协议顺序
当STA选择某个端口作为指定端口时,802.1D仍会等待两次<forward delay>秒(默认情况下为2 x 15),然后才能将其转换为转发状态。在 RSTP 中,此情况与具有指定角色但处于阻塞状态的端口相对应。下图说明了如何逐步实现快速转换。假设在根网桥和交换机 A 之间创建了一条新链路。此链路上的两个端口都置于指定的阻塞状态,直到它们从对等的端口收到 BPDU 为止。
当指定端口处于丢弃或学习状态时(并且只有在这种情况下),它才会在其发送的 BPDU 中设置建议位。这是根网桥的端口 p0 所发生的情况,如上图的步骤 1 所示。由于交换机 A 收到高级信息,它会立即识别出 p1 是新的根端口。然后,交换机 A 开始同步,以确保其所有端口均与此新信息同步。如果端口满足以下标准之一,则端口是同步的:
-
端口处于阻塞状态,意味着稳定拓扑中的丢弃状态。
-
端口是边缘端口。
为了说明同步机制对不同类型端口的影响,假设交换机A上存在替代端口p2、指定转发端口p3和边缘端口p4。请注意p2和p4已经满足其中一个条件。为了保持同步(参见上图的步骤2),交换机A只需阻塞端口p3,并为其分配丢弃状态。既然其所有的端口都保持同步,交换机 A 就可以取消阻塞其新选择的根端口 p1 并发送协议信息以回复根网桥。(请参阅步骤 3。)此消息是建议 BPDU 的副本,其中设置了协议位而非建议位。这可确保端口 p0 确切地知道它接收的协议与哪个建议对应。
p0 收到该协议后,它可立即转换到转发状态。这是上图的步骤4。请注意,同步之后,端口 p3 将继续保持指定的丢弃状态。在步骤 4 中,该端口所处的情况与步骤 1 中端口 p0 所处的情况完全相同。然后,它会开始向其相邻端口提出建议,并且尝试快速转换到转发状态。
-
由于建议协议机制不依赖任何计时器,因此其速度非常快。此握手浪潮会快速传播到网络边缘,并在拓扑发生变化后快速恢复连接。
-
如果指定的丢弃端口在发送建议之后未收到协议,它将缓慢转换到转发状态,并退回到传统的 802.1D 监听学习顺序。如果远程网桥不了解 RSTP BPDU,或者如果远程网桥的端口处于阻塞状态,可能会发生这种情况。
-
Cisco 在同步机制中引入了增强功能,允许网桥在进行同步时只将其以前的根端口置于丢弃状态。有关该机制的工作原理的详细信息不属于本文档的讨论范畴。但是,可以安全地假设,该机制在大多数常见再收敛案例中调用。本文档的与 802.1w 的收敛部分中描述的方案非常有效,这是因为只会暂时混淆位于最终阻塞端口的路径上的端口。
UplinkFast
RSTP 中包含的快速转换到转发状态的另一种形式类似于 Cisco 的 UplinkFast 专有生成树扩展。基本上,当网桥丢失其根端口时,它可以将其最佳备用端口直接置于转发模式(新根端口的外观也由RSTP处理)。选择替代端口作为新的根端口会产生拓扑更改。802.1w 拓扑更改机制会清除上游网桥的内容可寻址存储器 (CAM) 表中的相应条目。这就消除了对 UplinkFast 的虚拟多播生成进程的需要。
因为 RSTP 中自带 UplinkFast 机制并会自动启用,因此无需对该机制进行进一步配置。
新的拓扑结构更改机制
当 802.1D 网桥检测到拓扑更改时,它会使用可靠的机制首先通知根网桥。如下图所示:
一旦根网桥知道网络拓扑发生了变化,它就会在其发出的BPDU上设置TC标志,然后中继到网络中的所有网桥。当网桥收到设置了TC标志位的BPDU时,它会将其网桥表老化时间缩短到转发延迟秒数。这可确保相对快速地刷新过期信息。此拓扑更改机制在 RSTP 中进行了很深层次的再造。拓扑更改的检测及其通过网络的传播都在不断演变。
拓扑更改检测
在 RSTP 中,只有进入转发状态的非边缘端口会导致拓扑更改。这意味着连接断开将不再视为拓扑更改,这与 802.1D 正好相反(即,进入阻塞状态的端口不再生成 TC)。当 RSTP 网桥检测到拓扑更改时,会发生以下操作:
注:只要TC While计时器在端口上运行,从该端口发送的BPDU就会设置TC位。当计时器处于活动状态时,根端口上也会发送 BPDU。
拓扑更改传播
当网桥从相邻网桥收到设置了 TC 位的 BPDU 时,会发生以下操作:
这样,TCN 会快速传播到整个网络。TC传播现在是一个单步过程。事实上,拓扑更改的发起方会将此信息泛洪到整个网络,而802.1D则只有根网桥会泛洪此信息。此机制比 802.1D 等效机制更快。无需等待通知根网桥,然后针对整个网络保持拓扑更改状态长达 <max age plus forward delay> 秒钟。
仅在几秒钟或者几倍 hello-time 后,整个网络 (VLAN) 的 CAM 表中的大部分条目都将刷新。此方法会导致更多潜在的临时泛洪,但另一方面它清除了阻止快速恢复连接的潜在过期信息。
与802.1D兼容
RSTP 可以与传统 STP 协议交互操作。但是,务必注意,与传统网桥交互时,802.1w 固有的快速收敛优点将会丧失。
每个端口都维护一个变量,该变量定义可在对应网段上运行的协议。当端口启动时,值为三秒的迁移延迟计时器也将启动。当此计时器运行时,会锁定与端口关联的当前 STP 或 RSTP 模式。迁移延迟过期后,端口会适应与其接收的下一个 BPDU 对应的模式。如果端口由于收到的 BPDU 而更改其运行模式,则迁移延迟会重新启动。这会限制可能的模式更改频率。
例如,假设上图中的网桥A和B都运行RSTP,并且交换机A被指定用于网段。此链路上引入了传统 STP 网桥 C。由于 802.1D 网桥会忽略 RSTP BPDU 并丢弃它们,因此 C 认为网段中没有其他网桥,并开始发送其次要 802.1D 格式的 BPDU。交换机 A 将收到这些 BPDU,并在最多两倍于 hello-time 的秒数之后,只在该端口上将其模式更改为 802.1D。结果,C 现在识别出交换机 A 的 BPDU 并且接受 A 作为该网段的指定网桥。
请注意在这个特殊情况下,如果移除网桥 C,则网桥 A 会在该端口上以 STP 模式运行,即使它可以在 RSTP 模式下更有效地与其唯一的相邻网桥 B 一起工作。这是因为 A 无法识别出网桥 C 已从网段移除。对于这种特殊(少见)情况,需要用户介入,以便手动重新启动端口的协议检测。
当端口处于802.1D兼容模式时,它还可以处理拓扑更改通知(TCN)BPDU以及设置了TC或TCA位的BPDU。
结论
RSTP (IEEE 802.1w) 本身包括大多数针对 802.1D 生成树的 Cisco 专有增强功能,例如 BackboneFast、UplinkFast 和 PortFast。RSTP 可以在正确配置的网络中实现更快的收敛,有时只需几百毫秒。传统802.1D计时器(例如转发延迟和max_age)仅用作备份,如果管理员正确识别并设置了点对点链路和边缘端口,则不需要这些计时器。此外,如果没有与旧网桥的交互,则不需要计时器。
相关信息