局域网交换 : 生成树协议

了解和配置 Catalyst 交换机上的生成树协议 (STP)

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

生成树协议 (STP) 是在网桥和交换机上运行的第二层协议。STP 的规范是 IEEE 802.1D。STP 的主要目的是确保当网络中有冗余路径时,不用创建环路。环路对网络有致命影响。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

尽管本文档使用 Cisco Catalyst 5500/5000 交换机,但文档中介绍的生成树原理几乎适用于支持 STP 的所有设备。

例如,本文档使用:

  • 适用于交换机中的 Supervisor 引擎的控制台电缆

  • 6 个 Catalyst 5509 交换机

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

背景理论

本文档中所涉及的配置适用于运行 Catalyst OS (CatOS) 的 Catalyst 2926G、2948G、2980G、4500/4000、5500/5000 和 6500/6000 交换机。有关在其他交换机平台上配置 STP 的信息,请参阅以下文档:

网络图

本文档使用以下网络设置:

/image/gif/paws/5234/5-a.gif

概念

STP 在与 802.1D 兼容的网桥和交换机上运行。STP 还有其他一些形式,但 802.1D 却是最受用户欢迎并被广泛采用的一种形式。在网桥和交换机上实施 STP 是为了防止网络中出现环路。在需要冗余链路而不是环路的情况下使用 STP。冗余链路与网络出现故障切换时进行的备份同等重要。主链路出现故障时会激活备份链路,以便用户能够继续使用网络。如果网桥和交换机上没有 STP,这样的故障可能会导致出现环路。如果两台连接的交换机运行不同形式的 STP,它们需要不同的计时进行收敛。在交换机中使用不同形式的 STP 时,会在阻塞和转发状态之间出现计时问题。因此,建议使用同一种形式的 STP。请考虑使用下面的网络:

5-b.gif

在此网络中,计划在交换机 A 和交换机 B 之间设置冗余链路。但是,此设置可能会产生桥接环路。例如,从基站 M 传送来且传输至基站 N 的广播或多播数据包只继续在两台交换机之间传播。

然而,当两台交换机上均运行 STP 时,网络的逻辑结构如下图所示:

/image/gif/paws/5234/5-c.gif

此信息适用于网络图中的方案:

  • 交换机 15 是骨干交换机。

  • 交换机 12、13、14、16 和 17 是附加到工作站和 PC 的交换机。

  • 网络定义了以下 VLAN:

    • 1

    • 200

    • 201

    • 202

    • 203

    • 204

  • VLAN 中继协议 (VTP) 域名为 STD-Doc。

为了提供此所需的路径冗余以及避免出现环路情况,STP 定义了跨越扩展网络中所有交换机的树。STP 强制某些冗余数据路径处于备用(阻塞)状态,而使其他路径处于转发状态。如果处于转发状态的链路不可用,则 STP 会通过激活相应的备用路径来重新配置网络及重新路由数据路径。

技术说明

通过 STP,网络中所有交换机的重点工作是选择作为网络焦点的根网桥。网络中的所有其他决策(例如,要阻塞哪个端口以及要使哪个端口处于转发模式)都是从此根网桥的角度做出的。交换环境与网桥环境不同,前者很可能处理多个 VLAN。当您在交换网络中实施根网桥时,通常将根网桥称为根交换机。由于每个 VLAN 都是独立的广播域,因此每个 VLAN 必须有其自己的根网桥。不同 VLAN 的所有根网桥可以位于一个交换机中,也可以位于多个交换机中。

注意: 为特定 VLAN 选择根交换机这一步骤非常重要。您可以亲自选择根交换机,也可以让交换机来决定选择哪个根交换机,但后者存在一定的风险。如果您不控制根交换机的选择进程,则网络中可能存在次优路径。

所有交换机都将交换用于根交换机选择和网络后续配置的信息。网桥协议数据单元 (BPDU) 传播此信息。每台交换机都会将它发送给相邻交换机的 BPDU 中的参数与它从相邻交换机接收的 BPDU 中的参数进行比较。

在 STP 根交换机选择进程中,数量越少效果越好。如果交换机 A 通告的根 ID 数字比交换机 B 通告的根 ID 数字少,则交换机 A 中的信息较好。交换机 B 将停止通告其根 ID,并接受交换机 A 的根 ID。

有关某些可选 STP 功能(列举如下)的详细信息,请参阅配置可选的 STP 功能

  • Portfast

  • 根防护

  • 环路防护

  • BPDU 防护

STP 操作

任务

先决条件

配置 STP 之前,请先选择一台交换机作为生成树的根网桥。这台交换机并不一定是功能最强大的交换机,但应选择网络上位置最集中的交换机。通过该网络的所有数据流都需要经过这台交换机。此外,请选择网络中受干扰程度最小的交换机。骨干交换机通常充当生成树根网桥,因为这些交换机通常不会连接到终端站。此外,网络内部的移动和更改操作影响这些交换机的可能性不大。

在您决定根交换机之后,请设置适当的变量以指定相应交换机作为根交换机。您必须设置的唯一变量是 bridge priority。如果某个交换机的网桥优先级低于所有其他交换机的网桥优先级,则其他交换机会自动选择该交换机作为根交换机。

交换机端口上的客户端(终端站)

您也可以针对每个端口发出 set spantree portfast 命令。如果对某个端口启用 Portfast 变量,该端口会立即从阻塞模式切换到转发模式。启用 portfast 有助于防止使用 Novell NetWare 或 DHCP 获得 IP 地址的客户端上出现超时。但是,当您具有交换机到交换机的连接时,请 使用此命令。在这种情况下,该命令可能会导致出现环路。从阻塞模式转换到转发模式时会出现 30 到 60 秒的延迟,这可避免在连接两台交换机时网络中出现临时环路情况。

保留多数其他 STP 变量为其默认值。

操作规则

此部分列出有关 STP 如何工作的规则。当交换机首次出现时,它们用于启动根交换机的选择进程。每台交换机会将每个 VLAN 的 BPDU 传输给直接连接的交换机。

当 BPDU 通过网络传出时,每台交换机都会将它发送的 BPDU 与它从相邻交换机接收的 BPDU 进行比较。随后,这些交换机将通过协商确定将哪台交换机作为根交换机。网络中网桥 ID 最小的交换机将在此选举过程中获胜。

注意: 请记住,在每个 VLAN 中标识一台根交换机。在标识出根交换机后,这些交换机将遵守下列规则:

  • STP 规则 1 - 根交换机的所有端口必须处于转发模式。

    注意: 在一些涉及自循环端口的个别情况下,此规则存在例外。

    其次,每台交换机都确定到达根交换机的最近路径。交换机通过比较它们在所有端口上接收的所有 BPDU 中的信息来确定此路径。交换机使用 BPDU 中信息量最少的端口来到达根交换机;BPDU 中信息量最少的端口是根端口。交换机在确定根端口之后,会变为受规则 2 的约束。

  • STP 规则 2 - 必须将根端口设置为转发模式。

    此外,每个 LAN 分段上的交换机都彼此通信,以确定哪台交换机最适宜用来将该分段中的数据移动至根网桥。此交换机称为指定的交换机。

  • STP 规则 3 - 在一个 LAN 分段中,连接到该 LAN 分段的指定交换机的端口必须处于转发模式。

  • STP 规则 4 - 所有交换机(特定于 VLAN)中的所有其他端口必须处于阻塞模式。该规则只适用于连接到其他网桥或交换机的端口。STP 不会对连接到工作站或 PC 的端口产生影响。这些端口保持转发状态。

    注意: 如果当 STP 在每 VLAN 生成树 (PVST/PVST+) 模式下运行时添加或移除 VLAN,则会触发重新计算该 VLAN 实例的生成树并仅中断该 VLAN 的流量。中继链路的其他 VLAN 部分通常可以转发流量。如果添加或移除存在的多生成树 (MST) 实例的 VLAN,则会触发重新计算该实例的生成树并且会中断该 MST 实例的所有 VLAN 部分的流量。

注意: 默认情况下,生成树在每个端口上运行。无法在每个端口中禁用交换机的生成树功能。尽管您可以在每个 VLAN 中禁用 STP,或者在交换机中全局禁用 STP,但不建议您这样做。无论何时禁用生成树都应格外小心,因为这会在网络内创建第二层环路。

逐步指导

完成这些步骤:

  1. 发出 show version 命令以显示交换机运行的软件版本。

    注意: 所有交换机都运行相同的软件版本。

    Switch-15> (enable)show version
    WS-C5505 Software, Version McpSW: 4.2(1) NmpSW: 4.2(1)
    Copyright (c) 1995-1998 by Cisco Systems
    NMP S/W compiled on Sep  8 1998, 10:30:21
    MCP S/W compiled on Sep 08 1998, 10:26:29
    
    System Bootstrap Version: 5.1(2)
    
    Hardware Version: 1.0  Model: WS-C5505  Serial #: 066509927
    
    Mod Port Model      Serial #  Versions
    --- ---- ---------- --------- ----------------------------------------
    1   0    WS-X5530   008676033 Hw : 2.3
    Fw : 5.1(2)
    Fw1: 4.4(1)
    Sw : 4.2(1)

    在此方案中,交换机 15 最适合作为所有 VLAN 的网络的根交换机,因为它是骨干交换机。

  2. 发出 set spantree root vlan_id 命令,以便将 vlan_id 指定的一个或多个 VLAN 的交换机的优先级设置为 8192。

    注意: 交换机的默认优先级是 32768。当您使用此命令设置优先级时,请强制选择交换机 15 作为根交换机,因为交换机 15 的优先级最低。

    Switch-15> (enable)set spantree root 1
    VLAN 1 bridge priority set to 8192.
    VLAN 1 bridge max aging time set to 20.
    VLAN 1 bridge hello time set to 2.
    VLAN 1 bridge forward delay set to 15.
    Switch is now the root switch for active VLAN 1.
    Switch-15> (enable) 
    
    Switch-15> (enable)set spantree root 200
    VLAN 200 bridge priority set to 8192.
    VLAN 200 bridge max aging time set to 20.
    VLAN 200 bridge hello time set to 2.
    VLAN 200 bridge forward delay set to 15.
    Switch is now the root switch for active VLAN 200.
    Switch-15> (enable) 
    
    Switch-15> (enable)set spantree root 201
    VLAN 201 bridge priority set to 8192.
    VLAN 201 bridge max aging time set to 20.
    VLAN 201 bridge hello time set to 2.
    VLAN 201 bridge forward delay set to 15.
    Switch is now the root switch for active VLAN 201.
    Switch-15> (enable)
    
    Switch-15> (enable)set spantree root 202
    VLAN 202 bridge priority set to 8192.
    VLAN 202 bridge max aging time set to 20.
    VLAN 202 bridge hello time set to 2.
    VLAN 202 bridge forward delay set to 15.
    Switch is now the root switch for active VLAN 202.
    Switch-15> 
    
    Switch-15> (enable)set spantree root 203
    VLAN 203 bridge priority set to 8192.
    VLAN 203 bridge max aging time set to 20.
    VLAN 203 bridge hello time set to 2.
    VLAN 203 bridge forward delay set to 15.
    Switch is now the root switch for active VLAN 203.
    Switch-15> 
    
    Switch-15> (enable)set spantree root 204
    VLAN 204 bridge priority set to 8192.
    VLAN 204 bridge max aging time set to 20.
    VLAN 204 bridge hello time set to 2.
    VLAN 204 bridge forward delay set to 15.
    Switch is now the root switch for active VLAN 204.
    Switch-15> (enable)

    此命令的简短版本具有相同效果,如以下示例所示:

    Switch-15> (enable)set spantree root 1,200-204 
    VLANs 1,200-204 bridge priority set to 8189.
    VLANs 1,200-204 bridge max aging time set to 20.
    VLANs 1,200-204 bridge hello time set to 2.
    VLANs 1,200-204 bridge forward delay set to 15.
    Switch is now the root switch for active VLANs 1,200-204.
    Switch-15> (enable)

    set spantree priority 命令提供用于指定根交换机的第三种方法:

    Switch-15> (enable)set spantree priority 8192 1
    Spantree 1 bridge priority set to 8192.
    Switch-15> (enable)

    注意: 在此方案中,所有交换机最初采用干净的配置。因此,所有交换机的网桥优先级最初均为 32768。如果您不确定网络中的所有交换机的优先级是否大于 8192,请将所需根网桥的优先级设置为 1。

  3. 发出 set spantree portfast mod_num/port_num enable 命令,以在交换机 12、13、14、16 和 17 上配置 PortFast 设置。

    注意: 请只在连接到工作站或 PC 的端口上配置此设置。请勿在连接到其他交换机的任何端口上启用 Portfast。

    此示例仅配置交换机 12。您可以按相同的方式配置其他交换机。交换机 12 具有以下端口连接:

    • 端口 2/1 连接到交换机 13。

    • 端口 2/2 连接到交换机 15。

    • 端口 2/3 连接到交换机 16。

    • 端口 3/1 至 3/24 连接到 PC。

    • 端口 4/1 至 4/24 连接到 UNIX 工作站。

    根据此信息,在端口 3/1 至 3/24 和端口 4/1 至 4/24 上发出 set spantree portfast 命令:

    Switch-12> (enable)set spantree portfast 3/1-24 enable
    
    Warning: Spantree port fast start should only be enabled on ports connected
    to a single host.  Connecting hubs, concentrators, switches, bridges, etc. to
    a fast start port can cause temporary spanning-tree loops.  Use with caution.
    
    Spantree ports 3/1-24 fast start enabled.
    Switch-12> (enable) 
    
    Switch-12> (enable)set spantree portfast 4/1-24 enable
    
    Warning: Spantree port fast start should only be enabled on ports connected
    to a single host.  Connecting hubs, concentrators, switches, bridges, etc. to
    a fast start port can cause temporary spanning-tree loops.  Use with caution.
    
    Spantree ports 4/1-24 fast start enabled.
    Switch-12> (enable)
  4. 发出 show spantree vlan_id 命令,以验证交换机 15 是否是所有相应 VLAN 的根交换机。

    根据该命令的输出,将根交换机的 MAC 地址与从中发出该命令的交换机的 MAC 地址进行比较。如果二者的地址相符,则您所在的交换机就是 VLAN 的根交换机。1/0 根端口也表明您位于根交换机。下面是命令输出示例:

    Switch-15> (enable)show spantree 1
    VLAN 1
    spanning-tree enabled
    spanning-tree type          ieee
    
    Designated Root             00-10-0d-b1-78-00
    
    !--- This is the MAC address of the root switch for VLAN 1.
    
    Designated Root Priority    8192
    Designated Root Cost        0
    Designated Root Port        1/0
    Root Max Age   20 sec    Hello Time 2  sec   Forward Delay 15 sec
    
    Bridge ID MAC ADDR          00-10-0d-b1-78-00
    Bridge ID Priority          8192
    Bridge Max Age 20 sec    Hello Time 2  sec   Forward Delay 15 sec

    此输出显示交换机 15 是 VLAN 1 的生成树上的指定根交换机。指定根交换机的 MAC 地址 (00-10-0d-b1-78-00) 与交换机 15 的网桥 ID MAC 地址 (00-10-0d-b1-78-00) 相同。另一种指示此交换机是指定根交换机的判定方法是指定根端口为 1/0。

    在交换机 12 的此输出中,该交换机将交换机 15 识别为 VLAN 1 的指定根交换机

    Switch-12> (enable)show spantree 1
    VLAN 1
    spanning-tree enabled
    spanning-tree type          IEEEDesignated Root             00-10-0d-b1-78-00
    
    !--- This is the MAC address of the root switch for VLAN 1.
    
    Designated Root Priority    8192
    Designated Root Cost        19
    Designated Root Port        2/3
    Root Max Age   20 sec    Hello Time 2  sec   Forward Delay 15 sec
    
    Bridge ID MAC ADDR          00-10-0d-b2-8c-00
    Bridge ID Priority          32768
    Bridge Max Age 20 sec    Hello Time 2  sec   Forward Delay 15 sec

    注意: 其他交换机和 VLAN 的 show spantree vlan_id 命令的输出也可指示交换机 15 是所有 VLAN 的指定根交换机。

验证

本部分提供可用于确认您的配置是否正常运行的信息。

命令输出解释程序仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。

故障排除

本部分提供的信息可用于对配置进行故障排除。

当端口速度/双工更改时,STP 路径成本会自动更改

STP 基于交换机之间链路的介质速度(带宽)计算路径成本,并计算每个端口转发帧的端口成本。生成树将根据路径成本选择根端口。到根网桥的路径成本最低的端口将成为根端口。根端口始终处于转发状态。

如果更改端口的速度/双工,则生成树将自动重新计算路径成本。路径成本更改的同时会更改生成树拓扑。

有关如何计算端口成本的详细信息,请参阅配置生成树计算和分配端口成本部分。

故障排除命令

命令输出解释程序仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。

注意: 使用 debug 命令之前,请参阅有关 Debug 命令的重要信息

命令汇总

语法: show version
如本文档中所引用部分: show version
语法: set spantree root [vlan_id]
如本文档中所引用部分: set spantree root 1
set spantree root 1,200-204
语法: set spantree priority [vlan_id]
如本文档中所引用部分: set spantree priority 8192 1
语法: set spantree portfast mod_num/port_num {enable|禁用}
如本文档中所引用部分: set spantree portfast 3/1-24 enable
语法: show spantree [vlan_id]
如本文档中所引用部分: show spantree 1

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 5234