Loading...

Bài 30b: Thực hành STP & Rapid PVST+ — Chọn Root Bridge, PortFast và BPDU Guard

⏱️ Thời lượng: 60 phút · 📶 Độ khó: Trung bình · 🧰 Công cụ: Cisco Packet Tracer 8.x · 📌 Cần học trước: Bài 29, Bài 30

Sơ đồ lab Bài 30b

Sơ đồ lab Bài 30b · ⬇️ Tải sơ đồ (SVG) · 🔍 Mở cỡ lớn

💡 Liên hệ thực tế

Công ty ABC muốn mạng có dự phòng: nối thêm một sợi cáp trực tiếp giữa SW2 và SW3, để lỡ dây lên SW1 bị đứt thì vẫn còn đường đi. Ba switch nối thành tam giác tức là có vòng lặp Layer 2 — STP sẽ tự chặn một cổng để mạng không bị bão broadcast.

Vấn đề là nếu để mặc định, switch có địa chỉ MAC nhỏ nhất (thường là switch cũ nhất) sẽ được bầu làm root — rất có thể là một switch truy cập yếu ớt ở góc phòng. Anh Nam (VNExperts) không bao giờ để chuyện đó xảy ra: anh luôn chỉ định root bằng tay. Và vì từng có nhân viên mang switch mini từ nhà lên cắm vào ổ mạng, anh bật thêm BPDU Guard trên mọi cổng nối máy tính.

Quy tắc ghi nhớ: đừng để STP tự bầu root — hãy chọn root cho từng VLAN bằng priority, và bật PortFast + BPDU Guard trên mọi cổng nối máy tính.

🎯 Mục tiêu bài lab

  • Quan sát kết quả bầu root bridge mặc định và hiểu vì sao không nên để mặc định.
  • Chuyển sang Rapid PVST+ và chọn root primary/secondary cho từng VLAN.
  • Đọc show spanning-tree để xác định cổng Root, Designated, Alternate.
  • Cấu hình PortFast, BPDU Guard và phục hồi cổng bị err-disabled.
  • Quan sát RSTP hội tụ nhanh khi một đường uplink bị đứt.

📋 Bảng VLAN, địa chỉ IP và đấu nối

Thiết bịCổng switchVLANĐịa chỉ IP / Prefix
PC1 SW2 Fa0/1 10 (KinhDoanh) 192.168.10.11/24
PC3 SW2 Fa0/2 30 (KyThuat) 192.168.30.11/24
PC2 SW3 Fa0/1 10 (KinhDoanh) 192.168.10.12/24
PC4 SW3 Fa0/2 30 (KyThuat) 192.168.30.12/24
TừCổngĐếnCổngGhi chú
SW1 Gi0/1 SW2 Gi0/1 Trunk, Copper Cross-Over
SW1 Gi0/2 SW3 Gi0/1 Trunk, Copper Cross-Over
SW2 Gi0/2 SW3 Gi0/2 Trunk, Copper Cross-Over — đường dự phòng tạo vòng lặp
SW-LAB Fa0/1 SW2 Fa0/24 Chỉ nối ở Bước 7

🗺️ Kế hoạch root bridge (đây là thiết kế bạn sẽ áp dụng):

VLANRoot primaryRoot secondary
10, 20 SW1 SW2
30 SW2 SW1

⚙️ Các bước thực hiện

⚙️ Bước 1 — Dựng sơ đồ

Kéo ra 3 switch 2960-24TT và 4 PC, nối cáp theo bảng (chưa nối SW-LAB). Đặt IP tĩnh cho 4 PC.

⚙️ Bước 2 — Dán cấu hình nền

Phần VLAN và trunk bạn đã luyện ở Bài 24b, nên bài này cho sẵn để tập trung vào STP. Trên mỗi switch, vào enable → configure terminal rồi dán:

SW1

hostname SW1
vlan 10
 name KinhDoanh
vlan 20
 name KeToan
vlan 30
 name KyThuat
interface range gigabitEthernet 0/1 - 2
 switchport mode trunk
end

SW2 (SW3 dán y hệt, chỉ đổi hostname SW3)

hostname SW2
vlan 10
 name KinhDoanh
vlan 20
 name KeToan
vlan 30
 name KyThuat
interface range gigabitEthernet 0/1 - 2
 switchport mode trunk
interface fastEthernet 0/1
 switchport mode access
 switchport access vlan 10
interface fastEthernet 0/2
 switchport mode access
 switchport access vlan 30
end

🔍 Bước 3 — Quan sát STP mặc định (chưa can thiệp)

Trên cả 3 switch, chạy:

SW1# show spanning-tree vlan 10

Ghi lại vào bảng nháp: switch nào là root (dòng This bridge is the root), mỗi switch có root port là cổng nào, cổng nào đang Altn BLK.

📎 Mặc định switch 2960 chạy PVST+ (dòng Spanning tree enabled protocol ieee). Cả 3 switch có cùng priority 32768, nên root được quyết định bởi MAC nhỏ nhất — tức là "ngẫu nhiên" theo thiết bị. File Packet Tracer của bạn và của bạn bè có thể ra root khác nhau.

⚙️ Bước 4 — Chuyển sang Rapid PVST+ (cả 3 switch)

SW1(config)# spanning-tree mode rapid-pvst

Kiểm tra: show spanning-tree vlan 10 phải hiện Spanning tree enabled protocol rstp.

⚙️ Bước 5 — Chỉ định root bridge theo từng VLAN

Trên SW1:

SW1(config)# spanning-tree vlan 10,20 root primary
SW1(config)# spanning-tree vlan 30 root secondary

Trên SW2:

SW2(config)# spanning-tree vlan 30 root primary
SW2(config)# spanning-tree vlan 10,20 root secondary

SW3 giữ nguyên mặc định.

📎 root primary đặt priority về 24576 (hoặc thấp hơn root hiện tại 4096 nếu cần). root secondary đặt 28672. Bạn cũng có thể đặt trực tiếp, ví dụ spanning-tree vlan 10 priority 4096 — giá trị phải là bội số của 4096.

Bây giờ chạy lại show spanning-tree vlan 10 và show spanning-tree vlan 30 trên cả 3 switch. Tự dự đoán trước cổng nào sẽ bị chặn ở mỗi VLAN, rồi đối chiếu với phần Kiểm tra kết quả.

⚙️ Bước 6 — PortFast và BPDU Guard trên cổng truy cập (SW2, SW3)

SW2(config)# interface range fastEthernet 0/1 - 24
SW2(config-if-range)# switchport mode access
SW2(config-if-range)# spanning-tree portfast
SW2(config-if-range)# spanning-tree bpduguard enable
SW2(config-if-range)# exit

Làm tương tự trên SW3. IOS sẽ in một cảnh báo dài rằng PortFast chỉ nên bật trên cổng nối một máy trạm — đó là bình thường.

🎯 Cách viết gọn ngoài thực tế: spanning-tree portfast default (bật PortFast cho mọi cổng access) và spanning-tree portfast bpduguard default (bật BPDU Guard cho mọi cổng đang chạy PortFast) — gõ ở chế độ global, không cần vào từng cổng.

⚙️ Bước 7 — Thử "cắm switch lạ" để kích hoạt BPDU Guard

  1. Kéo thêm 1 switch 2960, đổi tên SW-LAB.
  2. Nối SW-LAB Fa0/1 ↔ SW2 Fa0/24 bằng Copper Cross-Over.
  3. Quan sát console SW2:
%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/24 with BPDU Guard enabled. Disabling port.
%PM-4-ERR_DISABLE: bpduguard error detected on Fa0/24, putting Fa0/24 in err-disable state

Kiểm tra trạng thái cổng:

SW2# show interfaces fastEthernet 0/24
FastEthernet0/24 is down, line protocol is down (err-disabled)

Phục hồi cổng: xoá dây nối SW-LAB, rồi:

SW2(config)# interface fastEthernet 0/24
SW2(config-if)# shutdown
SW2(config-if)# no shutdown
⚠️ Nếu chưa gỡ switch lạ mà đã no shutdown, cổng sẽ lại bị err-disable ngay lập tức. Trên thiết bị thật có thể bật tự phục hồi bằng errdisable recovery cause bpduguard (Packet Tracer có thể không hỗ trợ lệnh này).

⚙️ Bước 8 — Quan sát RSTP hội tụ khi đứt link

  1. Từ PC1, ping liên tục tới PC2: ping -t 192.168.10.12. Với VLAN 10, gói đang đi PC1 → SW2 → SW1 → SW3 → PC2.
  2. Trên SW1, cắt đường xuống SW3 bằng các lệnh bên dưới.
SW1(config)# interface gigabitEthernet 0/2
SW1(config-if)# shutdown
  1. Quan sát cửa sổ ping: chỉ mất rất ít gói. Trên SW3, show spanning-tree vlan 10 → Gi0/2 đã chuyển từ Altn BLK thành Root FWD, cost lên 8.
  2. Trả lại: no shutdown trên SW1 Gi0/2, dừng ping bằng Ctrl+C.
📎 Với STP 802.1D cổ điển, cổng bị chặn phải đi qua Listening → Learning, mất khoảng 30–50 giây. RSTP có sẵn cổng Alternate làm "phương án B", nên chuyển sang Forwarding gần như tức thì.

💾 Bước 9 — Lưu cấu hình

SW1# copy running-config startup-config

🔍 Kiểm tra kết quả

Kết quả mong đợi: cổng Alternate (BLK) khác nhau theo từng VLAN

Kết quả mong đợi: cổng Alternate (BLK) khác nhau theo từng VLAN · ⬇️ Tải sơ đồ (SVG) · 🔍 Mở cỡ lớn

VLANRootSW1 Gi0/1SW1 Gi0/2SW2 Gi0/1SW2 Gi0/2SW3 Gi0/1SW3 Gi0/2
10, 20 SW1 Desg Desg Root Desg Root Altn BLK
30 SW2 Root Desg Desg Desg Altn BLK Root

Vì sao lại ra như vậy? (VLAN 10)

  1. SW1 có priority thấp nhất (24576) → root. Trên root, mọi cổng đều Designated.
  2. SW3 có 2 đường về root: đi thẳng Gi0/1 (cost 4) hoặc vòng qua SW2 (cost 4 + 4 = 8) → root port = Gi0/1. SW2 tương tự → root port = Gi0/1.
  3. Đoạn SW2–SW3: cả hai đều cách root cost 4 → hoà. So Bridge ID: SW2 (28682) nhỏ hơn SW3 (32778) → SW2 Gi0/2 là Designated, SW3 Gi0/2 là Alternate (bị chặn).

VLAN 30 lý luận tương tự nhưng root là SW2, nên cổng bị chặn chuyển sang SW3 Gi0/1. Kết quả: cả hai đường lên của SW3 đều được dùng — đường này cho VLAN 10/20, đường kia cho VLAN 30. Đây là ý nghĩa thực tế của "Per-VLAN" trong PVST+.

🔍 Output mẫu trên SW3 (sau Bước 6)

SW3# show spanning-tree vlan 10
VLAN0010
  Spanning tree enabled protocol rstp
  Root ID    Priority    24586
             Address     0002.4A1B.1111
             Cost        4
             Port        25(GigabitEthernet0/1)
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32778  (priority 32768 sys-id-ext 10)
             Address     0060.5C3D.3333
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 19        128.1    P2p Edge
Gi0/1            Root FWD 4         128.25   P2p
Gi0/2            Altn BLK 4         128.26   P2p
📎 Địa chỉ MAC trong file của bạn sẽ khác. Chú ý: priority hiển thị 24586 = 24576 + 10 (số VLAN, gọi là sys-id-ext). Chữ Edge ở cổng Fa0/1 xác nhận PortFast đã có hiệu lực.
#Kiểm traKết quả mong đợi
1 show spanning-tree vlan 10 trên SW1 Có dòng This bridge is the root
2 show spanning-tree vlan 30 trên SW2 Có dòng This bridge is the root
3 Cổng bị chặn trên SW3 VLAN 10: Gi0/2 · VLAN 30: Gi0/1
4 Cổng nối PC Loại P2p Edge, lên xanh ngay khi cắm
5 Cắm SW-LAB vào SW2 Fa0/24 Fa0/24 err-disabled
6 PC1 ↔ PC2, PC3 ↔ PC4 ✅ Ping thành công, kể cả khi tắt SW1 Gi0/2

🛠️ Lỗi thường gặp & cách xử lý

Triệu chứngNguyên nhân thường gặpCách kiểm tra & sửa
Root không phải switch mong muốn Gõ nhầm số VLAN, hoặc gõ lệnh trên nhầm switch show spanning-tree vlan X trên từng switch, đối chiếu kế hoạch root
Lệnh spanning-tree vlan 10 priority 1000 bị báo lỗi Priority phải là bội số của 4096 Dùng 0, 4096, 8192 … 61440
Cắm PC mất khoảng 30 giây mới có mạng Cổng chưa bật PortFast Kiểm tra cột Type có chữ Edge chưa
Cổng vẫn down sau khi đã gỡ switch lạ Cổng đang err-disabled, không tự lên shutdown rồi no shutdown
show spanning-tree vlan 30 báo instance không tồn tại Switch chưa tạo VLAN 30 show vlan brief → tạo VLAN 30
Cả 3 switch không có cổng nào bị chặn Link SW2–SW3 chưa lên hoặc không phải trunk show interfaces trunk trên SW2, SW3

🏆 Thử thách mở rộng

  1. Root Guard: bảo vệ để SW3 không bao giờ cướp được vai trò root. Bật Root Guard trên các cổng của SW1 và SW2 hướng về SW3, sau đó thử đặt spanning-tree vlan 10 priority 0 trên SW3 và quan sát.
  2. Đổi cost: trên SW3 gõ interface gigabitEthernet 0/1 → spanning-tree vlan 10 cost 10. Dự đoán trước: với VLAN 10, root port của SW3 sẽ là cổng nào, cổng nào bị chặn? Rồi kiểm chứng.

👉 Gợi ý đáp án
! Thử thách 1 — cổng hướng về SW3 là SW1 Gi0/2 và SW2 Gi0/2
SW1(config)# interface gigabitEthernet 0/2
SW1(config-if)# spanning-tree guard root
SW2(config)# interface gigabitEthernet 0/2
SW2(config-if)# spanning-tree guard root
! Khi SW3 gửi BPDU "tốt hơn", console báo dạng:
%SPANTREE-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet0/2 on VLAN0010.

Cổng chuyển sang trạng thái root-inconsistent (bị chặn) và tự phục hồi khi SW3 ngừng quảng bá BPDU tốt hơn. Đừng bật Root Guard trên SW1 Gi0/1: ở VLAN 30, SW2 là root hợp lệ nên SW1 Gi0/1 phải nhận BPDU tốt hơn từ SW2.

Thử thách 2: đường qua SW2 có cost 4 + 4 = 8 < 10, nên root port của SW3 chuyển sang Gi0/2, còn Gi0/1 trở thành Alternate (bị chặn).

💬 Hỏi & Đáp nhanh

❓ PVST+ và Rapid PVST+ khác nhau gì trong bài lab này?

✅ Cả hai đều chạy một tiến trình STP riêng cho mỗi VLAN. Rapid PVST+ dùng cơ chế proposal/agreement và có sẵn cổng Alternate, nên khi đường chính đứt, cổng dự phòng lên Forwarding gần như ngay lập tức thay vì chờ 30–50 giây.

❓ Vì sao priority hiển thị là 24586 chứ không phải 24576?

✅ Bridge Priority = priority cấu hình + số VLAN (sys-id-ext). Với VLAN 10: 24576 + 10 = 24586.

❓ BPDU Guard khác Root Guard thế nào?

✅ BPDU Guard: nhận bất kỳ BPDU nào là err-disable cổng — dùng cho cổng nối máy tính. Root Guard: chỉ chặn khi nhận BPDU "tốt hơn" muốn giành vai trò root, cổng tự phục hồi khi hết — dùng cho cổng nối xuống switch cấp dưới.

📝 Bài tập đánh giá

Câu 1: Một switch để priority mặc định 32768. Trong show spanning-tree vlan 30, Bridge Priority hiển thị là bao nhiêu?

  • A. 32768
  • B. 32798
  • C. 32769
  • D. 30

Câu 2: Cổng Fa0/5 đã bật PortFast và BPDU Guard. Một người dùng cắm switch nhỏ vào cổng này. Trạng thái của Fa0/5 là gì?

  • A. Blocking
  • B. Alternate
  • C. err-disabled
  • D. Forwarding nhưng gửi cảnh báo

👉 Đáp án

  • Câu 1: B — 32768 + 30 = 32798.
  • Câu 2: C — BPDU Guard tắt cổng ngay khi nhận BPDU; quản trị viên phải gỡ thiết bị lạ và bật lại cổng.

💡 Output trong bài là output mẫu trên Packet Tracer, trên máy bạn có thể khác một chút (ví dụ địa chỉ MAC).

📚 Bài thực hành thuộc Khóa học CCNA Online của VNExperts.

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
Bài 30: RSTP & các biến thể STP (PVST+, Rapid PVST+) Mục lục khóa học CCNA Bài 31: EtherChannel — gộp nhiều link vật lý thành 1 logic