【實驗假設】
-
我們使用 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)并觀察收斂情況。
-