简介
本文档介绍多生成树协议(802.1s)的功能和配置。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
多生成树 (MST) 是从 Cisco 专用多实例生成树协议 (MISTP) 实施得到的 IEEE 标准。下表显示了各种 Catalyst 交换机中对 MST 的支持:
Catalyst 平台 |
支持 RSTP 的 MST |
Catalyst 2900 XL 和 3500 XL |
不可用 |
Catalyst 2950 和 3550 |
Cisco IOS® 12.1(9)EA1 |
Catalyst 2955 |
所有 Cisco IOS 版本 |
Catalyst 2948G-L3 和 4908G-L3 |
不可用 |
Catalyst 4000 和 4500 (Cisco IOS) |
12.1(12c)EW |
Catalyst 5000 和 5500 |
不可用 |
Catalyst 6000 和 6500 (Cisco IOS) |
12.1(11b)EX、12.1(13)E 和 12.2(14)SX |
Catalyst 8500 |
不可用 |
有关RSTP (802.1w)的详细信息,请参阅了解快速生成树协议(802.1w)。
使用 MST 的位置
下图显示了一种常用设计,其特征是接入交换机 A 带 1000 个 VLAN,这些 VLAN 冗余连接到两台分布式交换机 D1 和 D2。
在此设置中,用户连接到交换机 A,而网络管理员通常根据偶数或奇数 VLAN 或认为适当的任何其他方案,寻求实现接入交换机上行链路的负载均衡。
具有1000个VLAN的接入交换机A与交换机D1和D2冗余连接
以下部分是对此设置使用各种类型的 STP 的案例示例:
PVST+ 案例
在 Cisco 每 VLAN 生成树 (PVST+) 环境中,可以调整生成树参数,以便在每个上行链路中继上转发半数 VLAN。
为轻松实现此目的,请选择网桥 D1 作为 VLAN 501 至 1000 的根网桥,选择网桥 D2 作为 VLAN 1 至 500 的根网桥。以下描述对于此配置是正确的:
这严重浪费了网络中所有交换机的 CPU 周期(除了每个实例发送各自的网桥协议数据单元 (BPDU) 所用的带宽以外)。
标准 802.1q 案例
原始 IEEE 802.1q 标准不仅仅定义了中继,还定义了许多其他内容。此标准定义了通用生成树 (CST),后者仅假定整个桥接网络运行一个生成树实例,而不考虑 VLAN 的数量。
如果CST应用于下图中的拓扑,则结果将与下图类似:
应用于网络的通用生成树(CST)
在运行CST的网络中,以下陈述是正确的:
注意:Cisco实施增强了802.1q以支持一个PVST。此功能完全按照本示例中 PVST 的方式运行。Cisco 每 VLAN BPDU 通过纯 802.1q 网桥建立隧道。
MST 案例
MST (IEEE 802.1s) 组合了 PVST+ 和 802.1q 的最佳优势。
其观点在于,可以将若干个 VLAN 映射到数量减少的生成树实例,因为大多数网络不需要太多逻辑拓扑。
在第一个图描述的拓扑中,只有两种不同的最终逻辑拓扑,因此实际上只需要两个生成树实例。
不需要运行 1000 个实例。如此图所示,如果将 1000 个 VLAN 中的一半映射到不同的生成树实例,则以下描述是正确的:
将1000个VLAN的一半映射到不同的生成树实例
从技术观点来看,MST 是最佳解决方案。从最终用户的角度看,与迁移到MST相关的主要缺点是:
MST 区域
如前所述,MST 引入的主要增强功能是可以将若干个 VLAN 映射到单个生成树实例。
这会引发以下问题:如何确定哪个VLAN与哪个实例相关联;更准确地说,如何标记BPDU,以便接收设备可以识别实例以及每个设备应用的VLAN。
该问题在 802.1q 标准案例中是不相关的,在这一标准中,所有实例都映射到唯一的实例。在PVST+实施中,关联是:
为了解决此问题,Cisco MISTP为每个实例发送了一个BPDU,其中包含BPDU负责的VLAN列表。
如果由于错误,两台交换机的配置不正确,并且与同一实例关联的VLAN范围也不同,则协议很难从这种情况下正确恢复。
IEEE 802.1s 委员会采用了更容易且更简单的方法,该方法引入了 MST 区域。请设想某个区域相当于边界网关协议 (BGP) 自治系统,即接受常规管理的一组交换机。
MST 配置和 MST 区域
网络中运行MST的每个交换机都有一个MST配置,该配置由以下三个属性组成:
-
一个字母数字配置名称(32 个字节)
-
配置修订版号(两个字节)
-
一个由 4096 个元素组成的表,用于将机箱上支持的每个潜在的 VLAN(4096 个)关联到给定实例
若要成为通用 MST 区域的组成部分,交换机组必须共享相同的配置属性。网络管理员需要在整个区域中正确传播配置。
当前,此步骤只能通过命令行界面 (CLI) 或简单网络管理协议 (SNMP) 来完成。
由于 IEEE 规范没有明确指出如何完成此步骤,因此可以考虑采用其他方法。
注意:如果出于任何原因,两个交换机在一项或多项配置属性上有所不同,则这两个交换机是不同区域的一部分。有关详细信息,请参阅下一部分区域边界。
区域边界
为确保实现 VLAN 到实例的一致映射,协议必须能够准确识别区域的边界。
为此,在 BPDU 中包括了区域的特征。准确的 VLAN 到实例映射不会在 BPDU 中传播,因为交换机只需知道它们是否与邻居位于同一区域中。
因此,只会发送 VLAN 到实例的映射表的摘要,以及修订版号和名称。
交换机收到 BPDU 后,它将提取该摘要(通过数学函数从 VLAN 到实例映射表派生的数值),并将该摘要与自己的计算摘要进行比较。
如果两个摘要不相同,则接收到 BPDU 的端口位于某个区域的边界。
通常而言,如果端口网段上的指定网桥位于不同区域,或者如果端口接收传统 802.1d BPDU,则该端口位于某个区域的边界。在下图中,B1 上的端口位于区域 A 的边界,而 B2 和 B3 上的端口位于区域 B 的内部:
MST 实例
根据IEEE 802.1s规范,MST网桥必须至少能够处理以下两个实例:
-
一个内部生成树 (IST)
-
一个或多个多生成树实例 (MSTI)
由于 802.1s 实际上处于准标准阶段,因此术语将继续不断发展。这些名称在802.1s的最终版本中可能会更改。思科实施支持16个实例:一个IST(实例0)和15个MSTI。
IST 实例
为清楚地了解 IST 实例的角色,请记住 MST 源自 IEEE。因此,MST 必须能够与基于 802.1q 的网络交互,这是因为 802.1q 是另一个 IEEE 标准。对于 802.1q,桥接网络仅实施单个生成树 (CST)。IST 实例只是一个在 MST 区域内扩展 CST 的 RSTP 实例。
IST 实例接收 BPDU 并将其发送到 CST。IST 可将整个 MST 区域表示为通向外界的 CST 虚拟网桥。
以下两个图的功能相当。注意各个阻塞端口的位置。在典型的桥接网络中,您预计交换机M和B之间会看到阻塞端口。
与D上的阻塞不同,您预计在MST区域中间的某个位置有一个阻塞的端口断开第二个环路。
但是由于 IST,整个区域显示为一个运行单个生成树 (CST) 的虚拟网桥。这样,就可以了解虚拟网桥阻塞 B 上的替代端口。
而且,该虚拟网桥位于 C 到 D 网段,将会导致交换机 D 阻塞其端口。
使区域显示为一个虚拟CST网桥的确切机制不在本文档的讨论范围之内,但IEEE 802.1s规范中对其进行了详细说明。
然而,如果牢记 MST 区域的此虚拟网桥属性,将更容易理解与外界的交互作用。
MSTI
MSTI 是只位于区域内的简单 RSTP 实例。默认情况下,这些实例会自动运行 RSTP,而无需执行任何额外配置工作。
与 IST 不同,MSTI 从不与区域外部进行交互。请记住,MST 只在区域外运行一个生成树,因此除 IST 实例以外,区域内部的常规实例都没有外部对等实例。
另外,MSTI 不会在区域外部发送 BPDU,只有 IST 才会在区域外部发送 BPDU。
MSTI 不发送独立的单个 BPDU。在MST区域内,网桥交换的MST BPDU可视为该IST的正常RSTP BPDU,并且还包含每个MSTI的附加信息。
下图显示了 MST 区域内部的交换机 A 和 B 之间的 BPDU 交换。每台交换机只发送一个 BPDU,但包括位于端口上的每个 MSTI 的一个 Mrecord。
注意:在此图中,请注意MST BPDU携带的第一个信息字段包含有关IST的数据。这意味着 IST(实例 0)总是位于 MST 区域内的各个位置。然而,由于网络管理员不必将 VLAN 映射到实例 0 上,因此不用担心此问题。
与常规的收敛生成树拓扑不同的是,链路的两端可以同时发送和接收 BPDU。
如下图所示,这是因为每个网桥可以指定给一个或多个实例,并需要传输 BPDU。
一旦在端口上指定单个 MST 实例,将立即发送包含所有实例 (IST + MSTI) 信息的 BPDU。
下图演示了在 MST 区域内部和外部发送的 MST BDPU。
在MST区域内部和外部发送的MST BDPU
MRecord 包含足够的信息(主要是根网桥和发送者网桥优先级参数),可供对应的实例计算其最终拓扑。
MRecord 不需要与计时器相关的任何参数(如 hello 时间、转发延迟和最大时限),这些参数通常位于常规的 IEEE 802.1d 或 802.1q CST BPDU 中。
MST区域中唯一使用这些参数的实例是IST;Hello时间确定BPDU的发送频率,转发延迟参数主要在无法快速转换时使用(请记住,快速转换不会发生在共享链路上)。
由于 MSTI 依靠 IST 传输其信息,因此 MSTI 不需要那些计时器。
常见配置错误
实例和 VLAN 之间保持独立是一个新概念,这意味着您必须仔细规划配置。所有端口(中继或接入)上的 IST 实例都是活动的部分说明了一些常见的缺陷以及如何避免它们。
所有端口(中继或接入)上的 IST 实例都是活动的
此图显示交换机A和B与位于不同VLAN中的接入端口相连。VLAN 10 和 VLAN 20 映射到不同的实例。VLAN 10 映射到实例 0,而 VLAN 20 映射到实例 1。
此配置将导致 pcA 无法向 pcB 发送帧。show命令表明交换机B要阻塞VLAN 10中指向交换机A的链路,如下图所示:
在此类没有明显循环的简单拓扑中,这怎么可能?
此问题通过以下事实进行解释:无论内部实例的数量是多少,仅使用 1 个 BPDU (IST BPDU) 传送 MST 信息。单个实例不发送单个 BPDU。
当交换机 A 和交换机 B 交换 VLAN 20 的 STP 信息时,这两台交换机将为实例 1(因为这是映射 VLAN 20 的位置)发送包含 MRecord 的 IST BPDU。
不过,由于它是 IST BPDU,因此该 BPDU 还包含实例 0 的信息。这意味着,无论 MST 区域内的所有端口是否传输映射到 IST 实例的 VLAN,IST 实例在这些端口上都是活动的。
下图显示了 IST 实例的逻辑拓扑:
交换机 B 从交换机 A 接收实例 0 的两个 BPDU(每个端口一个 BPDU)。很明显,交换机 B 必须阻塞其中一个端口,以避免循环。
首选解决方案是对 VLAN 10 使用一个实例,对 VLAN 20 使用另一个实例,从而避免将 VLAN 映射到 IST 实例。
另一种方法是在所有链路上传输映射到IST的VLAN(在两个端口上允许VLAN 10,如下图所示)。
两个 VLAN 映射到同一实例将阻塞相同端口
请记住,VLAN 不再意味着生成树实例。拓扑取决于实例,而不管映射到该实例的 VLAN 如何。
下图显示了一个问题,该问题是在所有端口(中继或接入)上的 IST 实例都是活动的部分中讨论的问题的另一种形式:
拓扑由实例确定,而不管映射到它的VLAN是什么
假定 VLAN 10 和 20 都映射到同一实例(实例 1)。
网络管理员希望以手动方式在一条上行链路上修剪 VLAN 10,在另一条上行链路上修剪 VLAN 20,以便限制上行链路中继上从交换机 A 到分布式交换机 D1 和 D2 的流量(尝试实现上图所述的拓扑)。
在完成此操作后,网络管理员会立即注意到 VLAN 20 中的用户已经与网络断开连接。
这是一个典型的配置错误问题。VLAN 10 和 20 都映射到实例 1,这意味着两个 VLAN 只有一个逻辑拓扑。无法实现负载共享,如此处所示:
典型配置错误问题
由于手动修剪,因此在阻塞端口上只允许使用 VLAN 20,这就是连接断开的原因。为了实现负载均衡,网络管理员必须将 VLAN 10 和 20 映射到两个不同的实例。
要避免此问题,一个简单的规则是切勿手动修剪TRUNK上的VLAN。如果您决定从中继中删除某些 VLAN,请同时删除映射到给定实例的所有 VLAN。
请勿从中继中删除单个 VLAN,也不要删除映射到同一实例的所有 VLAN。
MST 区域和外界之间的交互作用
迁移到 MST 网络后,管理员可能必须处理 MST 和传统协议之间的互操作性问题。
MST可与标准802.1q CST网络无缝运行;但是,由于存在单个生成树限制,因此只有少数网络基于802.1q标准。
Cisco 在宣布支持 802.1q 的同时发布了 PVST+。Cisco 还提供了 MST 和 PVST+ 之间的一种高效而简单的兼容性机制。此机制将在本文档后面进行介绍。
MST 区域的第一个属性是在边界端口不发送任何 MSTI BPDU,而只发送 IST BPDU。内部实例(MSTI)始终自动匹配边界端口的IST拓扑,如下图所示:
内部实例(MSTI)始终自动匹配边界端口的IST拓扑
在上图中,假定 VLAN 10 至 50 映射到绿色实例,该实例只是一个内部实例 (MSTI)。
红色链路表示 IST,因此也表示 CST。拓扑中的各个位置都允许使用 VLAN 10 至 50。
不会在 MST 区域外部发送绿色实例的 BPDU。
这并不意味着 VLAN 10 至 50 中存在环路。MSTI在边界端口跟踪IST,交换机B上的边界端口还会阻止绿色实例的流量。
运行 MST 的交换机能够自动在边界检测到 PVST+ 邻居。这些交换机能够检测到在中继端口的不同 VLAN 上接收到实例的多个 BPDU。
下图显示了一个互操作性问题。MST 区域仅与区域外的一个生成树 (CST) 进行交互。
然而,PVST+ 网桥对每个 VLAN 运行一个生成树算法 (STA),因此每两秒钟在每个 VLAN 上发送一个 BPDU。
边界 MST 网桥不应接收太多 BPDU。MST网桥期望接收一个或发送一个,这取决于网桥是否是CST的根。
MST网桥期望接收或发送一个
Cisco 建立了一种机制来处理上图中显示的问题。通过隧道传输 PVST+ 网桥在 MST 区域中发送的其他 BPDU 时,可能会产生这种可能性。
但是,在MISTP中首次实施时,提供的解决方案过于复杂且可能存在危险。因此,创建了一种更简单的方法。
MST 区域复制所有 VLAN 上的 IST BPDU 来模拟 PVST+ 邻居。此解决方案包含在本文档中讨论的一些限制条件。
推荐 的 配置
由于 MST 区域现在复制边界的每个 VLAN 上的 IST BPDU,因此每个 PVST+ 实例都能从 IST 根获得 BPDU(这意味着根位于 MST 区域内部)。
建议 IST 根的优先级高于网络中的其他任何网桥,以便 IST 根成为所有不同 PVST+ 实例的根,如下图所示:
在此图中,交换机 C 是冗余连接到 MST 区域的 PVST+。IST根是交换机C上存在的所有PVST+实例的根。
因此,交换机C会阻塞其中一个上行链路,以防止出现环路。在此特定情况下,PVST+ 和 MST 区域之间的交互是最佳的,这是因为:
备选配置(不推荐)
另一种可能性是让 IST 区域成为实例(绝不能是 PVST+)的根。这意味着所有 PVST+ 实例都拥有比 IST 实例更好的根,如下图所示:
所有PVST+实例具有比IST实例更好的根
此案例对应 PVST+ 核心和 MST 接入或分布层,这是一种很少见的情况。如果在区域外部建立根网桥,则与之前推荐的配置相比,存在以下缺点:
-
MST 区域只运行一个与外界交互的生成树实例。这基本上意味着边界端口只能阻塞或转发所有VLAN。换句话说,通向交换机C的区域中的两个上行链路之间不可能实现负载均衡。对于所有VLAN,交换机B上的上行链路可以阻塞,而交换机A可以转发所有VLAN。
-
此配置仍允许在区域内进行快速收敛。如果交换机 A 的上行链路发生故障,则需要快速切换到其他交换机的上行链路。尽管 IST 在区域内部运行以便使整个 MST 区域类似于 CST 网桥的方式不在本文详细讨论范围内,但您可以想象跨区域的切换绝不会像单个网桥上的切换那样高效。
无效配置
尽管 MST+ 仿真机制可在 MST 和 PVST+ 之间提供轻松的无缝互操作性,但这种机制意味着除前面提及的两种配置外的其他所有配置都是无效的。以下是成功进行MST和PVST+交互必须遵循的基本规则:
-
如果 MST 网桥是根网桥,该网桥必须是所有 VLAN 的根网桥。
-
如果PVST+网桥是根网桥,则该网桥必须是所有VLAN的根网桥(包括CST,在CST运行PVST+时,CST始终在VLAN 1上运行,而不考虑本地VLAN)。
-
如果 MST 网桥是 CST 的根网桥,而 PVST+ 网桥是一个或多个其他 VLAN 的根网桥,则模拟将失败并生成错误消息。失败的模拟会将边界端口置于根不一致模式。
失败的模拟将边界端口置于根不一致模式
在上图中,MST 区域中的网桥 A 是全部三个 PVST+ 实例(红色 VLAN 的实例除外)的根网桥。网桥 C 是红色 VLAN 的根网桥。
假定在红色 VLAN 上创建的环路(网桥 C 是根网桥)被网桥 B 阻塞。这意味着,为红色 VLAN 之外的所有 VLAN 指定了网桥 B。
MST 区域无法执行该操作。边界端口只能阻塞或转发所有VLAN,因为MST区域只运行一个与外界的生成树。
这样,当网桥 B 在其边界端口上检测到更好的 BPDU 时,它将调用 BPDU 防护以阻塞此端口。此端口将置于根不一致模式。
这一完全相同的机制还会导致网桥 A 阻塞其边界端口。连接会丢失;但是,即使存在此类错误配置,无环路拓扑也会保留。
注意:一旦边界端口产生根不一致错误,请调查PVST+网桥是否尝试成为某些VLAN的根。
迁移策略
迁移到 802.1s/w 的第一步是正确识别点对点端口和边缘端口。确保需要进行快速转换的所有交换机对交换机链路都是全双工的。
边缘端口可通过 Portfast 功能进行定义。请仔细决定交换网络中需要的实例数目,并牢记实例将转换为逻辑拓扑。
决定哪些 VLAN 要映射到这些实例上,并为每个实例仔细选择根和备份根。
选择对网络中的所有交换机通用的配置名称和修订版号。
Cisco建议您将尽可能多的交换机放置在单个区域中;将网络划分为多个单独的区域没有任何好处。
避免将任何 VLAN 映射到实例 0 上。首先迁移核心。将STP类型更改为MST,然后按自己的方式向下应用到接入交换机。
MST 可以在每个端口上与运行 PVST+ 的传统网桥交互,因此如果清楚了解交互作用,混合两种类型的网桥就不是什么问题。
始终尝试将 CST 和 IST 的根保持在区域内部。如果通过中继与 PVST+ 网桥进行交互,请确保 MST 网桥是该中继上允许的所有 VLAN 的根网桥。
有关示例配置,请参阅:
结论
交换网络必须满足严格的稳健性、弹性和高可用性要求。
随着IP语音(VoIP)和IP视频等新技术的出现,围绕链路或组件故障的快速融合不再是理想特征:必须实现快速融合。
然而直到最近,冗余交换网络还必须依赖相对缓慢的 802.1d STP 才能实现这些目标。这往往成为挑战网络管理员的任务。
调整协议计时器是使协议暂停几秒的唯一方法,但通常是以损害网络健康为代价。
思科已发布许多802.1d STP增强功能,如UplinkFast、BackboneFast和PortFast。这些功能为更快的生成树融合铺平了道路。
Cisco 还回答了与开发 MISTP 有关的、基于大型第二层 (L2) 的网络的可扩展性问题。IEEE最近决定将这些概念的大部分整合到两个标准中:802.1w (RSTP)和802.1s (MST)。
通过实施这些新协议,您可在几百毫秒内完成收敛,同时扩展到数千个VLAN。
Cisco 一直保持着业界领先地位,并提供了这两个协议以及专有新增功能,以便促进传统网桥的迁移以及与传统网桥的互操作性。
相关信息