计算机网络 - stp生成树实验
【实验假设】
-
我们使用 Cisco Packet Tracer 或类似的模拟软件,或物理的 Cisco 交换机。
-
交换机初始为默认配置(或已通过 write erase 和 reload 清除配置)。
-
PC 已配置 IP 地址如下(示例):
-
PC0: 192.168.1.11 / 255.255.255.0
-
PC1: 192.168.1.22 / 255.255.255.0
-
PC2: 192.168.1.33 / 255.255.255.0
-
PC3: 192.168.1.44 / 255.255.255.0
-
【实验步骤】
第一部分:观察无生成树协议时的问题
-
目标:理解在没有 STP 的冗余拓扑中出现的广播风暴、MAC 地址漂移和网络不稳定现象。
-
构建拓扑:
-
在工作区放置四台 2960 交换机(或类似型号)。标记为 SW0, SW1, SW2, SW3。
-
放置四台 PC。标记为 PC0, PC1, PC2, PC3。
-
使用直通双绞线按照 OCR 第 1 页的图示连接设备:
-
PC0 -> SW0 (Fa0/1)
-
PC1 -> SW1 (Fa0/1)
-
PC2 -> SW2 (Fa0/1)
-
PC3 -> SW3 (Fa0/1)
-
SW0 (Fa0/24) <-> SW1 (Fa0/24)
-
SW0 (Fa0/22) <-> SW1 (Fa0/22)
-
SW0 (Fa0/23) <-> SW2 (Fa0/22)
-
SW1 (Fa0/23) <-> SW3 (Fa0/22)
-
SW2 (Fa0/24) <-> SW3 (Fa0/24)
-
SW2 (Fa0/23) <-> SW3 (Fa0/23)
-
-
(注意:请仔细检查您的连接是否与您使用的拓扑图完全一致,特别是 SW2 和 SW3 之间的连接。)
-
-
配置 PC IP 地址:
-
点击 PC0 -> 桌面 (Desktop) 选项卡 -> IP 配置 (IP Configuration)。
-
输入 IP 地址:192.168.1.11,子网掩码:255.255.255.0。
-
对 PC1 (192.168.1.22), PC2 (192.168.1.33), PC3 (192.168.1.44) 重复此操作。
-
-
禁用生成树协议:
-
点击 SW0 -> CLI 选项卡。
-
输入以下命令:
enable configure terminal no spanning-tree vlan 1 # 在 VLAN 1 上禁用 STP end
-
在 SW1, SW2, 和 SW3 上重复这些命令。
-
(注意:STP 在 Cisco 交换机上通常默认启用。此步骤是为了观察目的确保它已关闭)。
-
-
测试连通性并观察问题:
-
在 PC0 上,打开命令提示符 (Command Prompt)。
-
启动到 PC2 的持续 ping:
ping -t 192.168.1.33
-
观察现象: 查看 ping 的结果。您很可能会看到:
-
频繁或完全出现 Request timed out.(请求超时)。
-
可能偶尔有零星的回复。
-
(在模拟器或物理设备上)观察交换机上的链路指示灯过度闪烁,表明存在广播风暴。如果可以检查交换机 CPU 利用率,会发现非常高。检查 MAC 地址表 (show mac address-table) - 你可能会看到同一个 MAC 地址在不同端口之间快速切换(MAC 地址漂移)。这证明了二层环路导致的不稳定性。
-
-
观察到现象后,在 PC0 上按 Ctrl+C 停止 ping。
-
第二部分:配置和验证 STP (802.1D)
-
目标:实施标准 STP 以防止环路,并观察其收敛过程。
-
启用 STP (802.1D 模式):
-
在 SW0 -> CLI 选项卡:
enable configure terminal spanning-tree mode pvst spanning-tree vlan 1 # 为 VLAN 1 启用/确保启用 STP end
-
在 SW1, SW2, 和 SW3 上重复这些命令。
-
-
等待收敛: STP (802.1D) 需要时间(30-50秒)使端口经历 阻塞 -> 侦听 -> 学习 -> 转发 状态转换。等待大约 1 分钟。
-
验证 STP 状态:
-
在每台交换机 (SW0, SW1, SW2, SW3) 上运行命令:
show spanning-tree vlan 1
-
观察现象:
-
识别根桥 (Root Bridge): 查找显示 “This bridge is the root” 的交换机。根据最低的 MAC 地址(来自 OCR 第 1 页:SW3 的 MAC 为 ...01E1),如果优先级都是默认值 (32768),SW3 应该是根桥。
-
识别端口角色/状态: 在非根桥 (SW0, SW1, SW2) 上,识别 根端口 (Root Port - Root) - 到根桥路径开销最低的端口。识别 指定端口 (Designated Port - Desg) - 将流量转发到某个网段的端口。识别 阻塞端口 (Blocked Port - BLK) - 被 STP 逻辑关闭以防止环路的端口。注意 Cost(开销)和 Sts(状态:FWD, LIS, LRN, BLK)。每个环路中至少应有一个端口处于 BLK 状态。
-
例如: 在 SW0 上,检查输出。将其与 OCR 第 1 页的输出进行比较(尽管那个显示的是 RSTP,但结构类似)。识别哪个端口是根端口、指定端口或阻塞端口。
-
-
-
测试连通性:
-
在 PC0 上,打开命令提示符。
-
启动到 PC2 的持续 ping:
ping -t 192.168.1.33
-
观察现象: Ping 现在应该是稳定的,有持续的回复。STP 已经创建了一个无环路的拓扑。
-
按 Ctrl+C 停止 ping。
-
-
(可选) 影响根桥选举:
-
在 SW0 -> CLI 选项卡:
configure terminal spanning-tree vlan 1 priority 4096 # 设置一个较低的优先级使 SW0 成为根桥 end
-
等待约 1 分钟收敛。
-
在所有交换机上再次运行 show spanning-tree vlan 1。
-
观察现象: SW0 现在应该报告 “This bridge is the root”。观察 SW1, SW2, SW3 上的根端口和阻塞端口是如何变化的。
-
如果需要,重置 SW0 上的优先级:
configure terminal no spanning-tree vlan 1 priority end
-
第三部分:配置和验证 RSTP (802.1W)
-
目标:实施 RSTP 并观察其比 STP 更快的收敛速度。
-
启用 RSTP 模式:
-
在 SW0 -> CLI 选项卡:
enable configure terminal spanning-tree mode rapid-pvst # 设置模式为 RSTP (Cisco 常用 rapid-pvst) end
(注意:rapid-pvst 是 Cisco 针对每个 VLAN 的快速 STP 实现。根据您的设备或实验指导,也可能使用 spanning-tree mode rstp 命令。)
-
在 SW1, SW2, 和 SW3 上重复这些命令。
-
-
验证 RSTP 状态:
-
RSTP 收敛速度快得多(几秒钟内)。
-
在每台交换机上运行:
show spanning-tree vlan 1
-
观察现象:
-
根桥应该和之前一样(除非更改了优先级,否则可能是 SW3)。
-
注意端口角色:根端口 (Root Port - Root), 指定端口 (Designated Port - Desg), 替代端口 (Alternate Port - Altn), 备份端口 (Backup Port - Back)。替代端口提供了一条朝向根桥的备用路径(但不是根端口),是阻塞状态的一种。
-
注意端口状态:FWD (转发), LRN (学习), DISC (丢弃)。阻塞/侦听状态合并为丢弃状态。
-
-
-
测试 RSTP 收敛(故障模拟):
-
识别活动路径: 根据 show spanning-tree 输出(特别是 SW0 上的根端口),确定从 PC0 到 PC3 的当前活动路径。例如,如果 SW0 的 Fa0/22 是根端口,路径可能是 PC0 -> SW0 -> SW1 -> SW3 -> PC3 (需要检查 SW1 和 SW3 上的端口状态确认)。
-
启动 Ping: 在 PC0 上,启动到 PC3 的持续 ping:
ping -t 192.168.1.44
等待稳定的回复。
-
模拟链路故障: 在 SW0 -> CLI 选项卡 (假设 Fa0/22 是当前活动路径上的根端口):
configure terminal interface FastEthernet0/22 shutdown # 关闭端口模拟链路故障 end
-
观察收敛: 密切关注 PC0 上的 ping 输出。在回复恢复之前,你应该只看到很少(可能是 0-2 个)Request timed out. 消息。这证明了 RSTP 的快速收敛。
-
验证新路径: 在 SW0 上再次运行 show spanning-tree vlan 1。Fa0/22 应该处于 DOWN(关闭)或 DISCARDING(丢弃)状态。另一个端口(例如 Fa0/23 或 Fa0/24)现在应该成为了根端口(状态变为 FWD)。检查其他交换机,看看角色可能发生了什么变化。
-
恢复链路: 在 SW0 -> CLI 选项卡:
configure terminal interface FastEthernet0/22 no shutdown # 重新启用端口 end
-
观察恢复: 观察 ping 输出。当原始路径被 RSTP 快速恢复时,回复应保持稳定或几乎立即恢复。使用 show spanning-tree vlan 1 验证 Fa0/22 是否回到了其原始角色(很可能是根端口,FWD 状态)。
-
(可选) 重复: 尝试关闭其他活动或备用链路(例如,如 OCR 第 3 页建议的在 SW0 上关闭 interface FastEthernet0/23 或 interface FastEthernet0/24)并观察收敛情况。
-