Danh mục sản phẩm
Tìm hiểu về STP và cách triển khai trong thực tế trên switch Cisco
STP (Spanning Tree Protocol, IEEE 802.1D) là giao thức quản lý liên kết Layer 2, cho phép mạng switch có đường dự phòng mà không bị vòng lặp: STP giữ một đường hoạt động và đưa các đường dư thừa vào trạng thái chặn (Blocking), sẵn sàng mở lại khi đường chính gặp sự cố.
Bài viết này tập trung vào cách lên kế hoạch, cấu hình và kiểm tra STP trên switch Cisco trong mạng thực tế. Nếu bạn muốn học bản chất từ đầu, hãy đọc theo lộ trình khóa CCNA: Bài 28: STP, vì sao cần và vòng lặp Layer 2 là gì, Bài 29: Root Bridge, Port Role, Port State và Bài 30: RSTP, PVST+ và Rapid PVST+.
I. Những điều cần nhớ về STP trước khi cấu hình
Khung Ethernet không có trường TTL như gói tin IP, nên một frame broadcast có thể quay vòng vô hạn giữa các switch nối vòng, gây Broadcast Storm và làm bảng MAC bất ổn. Cơ chế hình thành loop được giải thích kèm sơ đồ tại Bài 28. Ở đây chỉ tóm tắt cách STP chọn đường để bạn cấu hình đúng.
Cách STP chọn đường
Các switch trao đổi gói tin BPDU (Bridge Protocol Data Unit) để bầu chọn và tính toán topology:
| Thành phần | Tiêu chí chọn | Trạng thái |
|---|---|---|
| Root Bridge | Switch có Bridge ID thấp nhất: priority thấp nhất, nếu bằng nhau thì MAC thấp nhất | Các cổng ở vai trò Designated |
| Root Port | Trên mỗi switch không phải Root, cổng có path cost thấp nhất về Root Bridge | Forwarding |
| Designated Port | Trên mỗi segment, cổng cung cấp đường tốt nhất về Root Bridge | Forwarding |
| Alternate / Backup | Các cổng còn lại | Blocking |
Chi tiết từng vai trò và trạng thái cổng nằm ở Bài 29.
Có hai điểm dễ gây nhầm lẫn khi đọc kết quả lệnh show:
- Priority phải là bội số của 4096 (4096, 8192, 12288, ... 61440), mặc định là 32768. Với PVST+ và Rapid PVST+, Bridge ID mỗi VLAN còn chứa thêm VLAN ID (extended system ID), nên priority hiển thị trong
show spanning-treebằng priority đã cấu hình cộng VLAN ID. Ví dụ VLAN 10 đặt priority 4096 sẽ hiển thị là 4106. - Path cost mặc định phụ thuộc tốc độ cổng. Theo tài liệu Catalyst 9300 (IOS XE 17.14), cổng 100 Mbps có cost 200000, 1 Gbps là 20000 và 10 Gbps là 2000. Giá trị này có thể khác giữa các dòng switch và phiên bản phần mềm, nên hãy xác nhận bằng
show spanning-treetrên thiết bị thật.
Các chế độ STP trên switch Cisco
| Chế độ | Chuẩn | Đặc điểm | Nên dùng khi |
|---|---|---|---|
| PVST+ | 802.1D + mở rộng Cisco | Mỗi VLAN một instance STP. Hội tụ chậm, có thể mất 30 đến 50 giây | Cần tương thích với thiết bị cũ |
| Rapid PVST+ | 802.1w | Cấu hình giống PVST+ nhưng hội tụ nhanh. Là chế độ mặc định trên Catalyst 9300 (IOS XE 17.14) | Mạng nhỏ và vừa, cần cân bằng tải theo VLAN |
| MST | 802.1s | Gộp nhiều VLAN vào cùng một instance. Catalyst 9300 hỗ trợ tối đa 65 MST instance, so với 300 instance của PVST+/Rapid PVST+ | Mạng lớn, nhiều VLAN |
Cách các chế độ hoạt động và tương tác với nhau được trình bày trong Bài 30.
II. Lên kế hoạch và cấu hình STP cơ bản
1. Xác định Root Bridge và Root dự phòng
- Root Bridge nên là switch lõi hoặc switch phân phối, tức switch mà phần lớn lưu lượng đi qua. Không cấu hình switch access làm Root.
- Root dự phòng là switch lõi còn lại, để mạng có Root ổn định khi switch chính hỏng.
- Các switch còn lại giữ priority mặc định.
2. Chọn chế độ STP
Switch(config)# spanning-tree mode rapid-pvst
spanning-tree mode rapid-pvstchuyển switch sang Rapid PVST+. Các giá trị khác của lệnh làpvstvàmst.- Chế độ mặc định khác nhau tùy dòng switch và phiên bản phần mềm, nên hãy kiểm tra bằng
show spanning-tree summary. Tất cả switch trong cùng một miền STP nên chạy cùng chế độ.
Với cổng nối switch-switch bằng đường point-to-point, có thể khai báo thêm để chuyển Forwarding nhanh trong Rapid PVST+:
Switch(config)# interface gigabitethernet 1/0/1 Switch(config-if)# spanning-tree link-type point-to-point
spanning-tree link-type point-to-pointkhai báo liên kết này là point-to-point. Nếu cổng này trở thành Designated, switch sẽ thương lượng với cổng đầu kia để chuyển sang Forwarding nhanh.
3. Cấu hình Root Bridge
Cisco khuyến nghị dùng lệnh root primary và root secondary trong hầu hết trường hợp:
Core-1(config)# spanning-tree vlan 1-100 root primary Core-2(config)# spanning-tree vlan 1-100 root secondary
root primarytrên switch lõi chính: switch tự đặt priority của VLAN thành 24576 nếu giá trị đó đủ để trở thành Root. Nếu đã có switch khác với priority thấp hơn 24576, switch sẽ đặt priority thấp hơn switch đó 4096. Lệnh sẽ báo lỗi nếu giá trị cần thiết nhỏ hơn 1.root secondarytrên switch lõi dự phòng: priority được đặt thành 28672. Nếu các switch còn lại để mặc định 32768, switch này nhiều khả năng sẽ thành Root khi Root chính hỏng.- Dùng cùng giá trị
diameter(tùy chọn) trên cả hai lệnh nếu bạn khai báo đường kính mạng.
Nếu cần cố định priority cụ thể thay vì để switch tự tính, đặt thủ công theo bội số của 4096:
Core-1(config)# spanning-tree vlan 1-100 priority 4096 Core-2(config)# spanning-tree vlan 1-100 priority 8192
spanning-tree vlan 1-100 priority 4096đặt priority 4096 cho các VLAN từ 1 đến 100 trên switch lõi chính, thấp hơn priority 8192 của switch dự phòng nên switch chính luôn thắng cuộc bầu chọn.- Chọn một trong hai cách trên cho cùng một nhóm VLAN, không trộn lẫn.
Cân bằng tải theo VLAN: Với PVST+ và Rapid PVST+, mỗi VLAN có một Root riêng. Bạn có thể cho Core-1 làm Root chính của một nhóm VLAN và Core-2 làm Root chính của nhóm VLAN còn lại, để cả hai đường uplink đều được dùng:
Core-1(config)# spanning-tree vlan 10,20 root primary Core-1(config)# spanning-tree vlan 30,40 root secondary Core-2(config)# spanning-tree vlan 30,40 root primary Core-2(config)# spanning-tree vlan 10,20 root secondary
III. Tối ưu và bảo vệ STP
Sau khi có topology ổn định, các tính năng dưới đây giúp mạng hội tụ nhanh hơn và chống cấu hình sai hoặc thiết bị lạ làm hỏng cây STP:
| Tính năng | Mục đích | Lệnh cấu hình |
|---|---|---|
| PortFast | Đưa cổng nối máy trạm hoặc server vào Forwarding ngay, bỏ qua Listening và Learning | Từng cổng: spanning-tree portfast. Toàn cục cho mọi cổng không phải trunk: spanning-tree portfast default |
| BPDU Guard | Đưa cổng vào trạng thái err-disabled khi nhận BPDU, ví dụ có người cắm nhầm switch vào cổng access | Toàn cục (cho cổng PortFast): spanning-tree portfast bpduguard default. Từng cổng: spanning-tree bpduguard enable |
| Root Guard | Ngăn switch bên dưới trở thành Root hoặc nằm trên đường về Root | Từng cổng: spanning-tree guard root |
| Loop Guard | Ngăn cổng Root hoặc Alternate chuyển thành Designated khi lỗi liên kết một chiều | Toàn cục: spanning-tree loopguard default |
Cấu hình trên switch access
Access-SW(config)# spanning-tree portfast default Access-SW(config)# spanning-tree portfast bpduguard default
spanning-tree portfast defaultbật PortFast trên mọi cổng không phải trunk.spanning-tree portfast bpduguard defaultbật BPDU Guard trên các cổng đang ở trạng thái PortFast: nhận BPDU là switch tắt cổng (err-disabled).
Hoặc cấu hình riêng từng cổng:
Access-SW(config)# interface gigabitethernet 1/0/10 Access-SW(config-if)# spanning-tree portfast Access-SW(config-if)# spanning-tree bpduguard enable
spanning-tree portfastbật PortFast cho cổng này.spanning-tree bpduguard enablebật BPDU Guard cho cổng, kể cả khi cổng chưa bật PortFast. Cổng nhận BPDU sẽ vào trạng thái err-disabled và phải được đưa lại vào hoạt động thủ công (sau khi xử lý nguyên nhân, dùngshutdownrồino shutdowntrên cổng).
Ở các phiên bản phần mềm mới hơn, lệnh spanning-tree portfast có thể được lưu và hiển thị trong cấu hình dưới dạng spanning-tree portfast edge.
Cấu hình Root Guard trên switch lõi hoặc phân phối
Core-1(config)# interface gigabitethernet 1/0/48 Core-1(config-if)# spanning-tree guard root
spanning-tree guard rootbật Root Guard trên cổng nối xuống switch cấp thấp hơn. Nếu cổng nhận BPDU khiến nó có thể trở thành Root Port, switch đưa cổng vào trạng thái root-inconsistent (bị chặn) thay vì chấp nhận Root mới. Root Guard áp dụng cho tất cả VLAN trên cổng đó.
Những lưu ý quan trọng khi bật các tính năng trên
- Chỉ bật PortFast trên cổng nối máy trạm hoặc server đơn lẻ. Nếu bật trên cổng nối switch hoặc hub, STP có thể không phát hiện kịp vòng lặp, dẫn tới broadcast storm. Đây là lý do nên đi kèm BPDU Guard.
- Không bật đồng thời Root Guard và Loop Guard trên cùng một cổng. Cisco ghi rõ hai tính năng này không dùng chung được.
- Không dùng Root Guard trên cổng backup của UplinkFast, vì các cổng này sẽ bị đưa vào trạng thái root-inconsistent và không thể chuyển sang Forwarding.
- Thận trọng với BPDU Filter (
spanning-tree bpdufilter enable): bật trên một cổng tương đương tắt STP trên cổng đó và có thể gây loop. - Chỉ tắt STP khi chắc chắn mạng không có vòng lặp. Khi đã tắt mà vẫn có loop, lưu lượng tăng đột biến và gói tin bị nhân bản vô hạn.
Với sự cố mà STP và các guard trên chưa bao quát, như liên kết một chiều hoặc switch ngừng gửi BPDU nhưng vẫn forward, xem thêm Spanning Tree Bridge Assurance là gì và mô hình phòng thủ đa lớp chống Network Loop.
IV. Kiểm tra STP sau khi cấu hình
| Lệnh | Cho biết |
|---|---|
show spanning-tree summary |
Chế độ STP đang chạy và tóm tắt trạng thái các cổng |
show spanning-tree vlan <vlan-id> |
Root Bridge của VLAN, vai trò và trạng thái từng cổng |
show spanning-tree interface <interface-id> |
Thông tin STP của một cổng đang link-up |
show spanning-tree interface <interface-id> portfast |
Cổng có đang chạy PortFast hay không |
show spanning-tree active |
Thông tin STP của các cổng đang hoạt động |
show spanning-tree detail |
Thông tin chi tiết, bao gồm số lần thay đổi topology |
show interfaces status err-disabled |
Các cổng đang bị err-disabled, ví dụ do BPDU Guard |
Khi đọc kết quả show spanning-tree vlan, hãy xác nhận ba điều: switch lõi chính hiển thị dòng "This bridge is the root", các cổng uplink ở vai trò Root hoặc Designated với trạng thái Forwarding, và cổng dự phòng ở vai trò Altn với trạng thái Blocking.
V. Câu hỏi thường gặp
Nên dùng Rapid PVST+ hay MST? Rapid PVST+ dùng cấu hình giống PVST+ và hội tụ nhanh, phù hợp mạng nhỏ và vừa. MST gộp nhiều VLAN vào cùng một instance để giảm số instance STP, phù hợp mạng có rất nhiều VLAN. Trong một mạng pha trộn Rapid PVST+ và MST, thiết bị sẽ quay về PVST+ khi làm việc với nhau, vì vậy nên chọn một chế độ chung cho cả miền STP.
root primary khác gì đặt priority thủ công? root primary để switch tự tính priority (24576, hoặc thấp hơn Root hiện tại 4096 nếu cần) và Cisco khuyến nghị dùng trong hầu hết trường hợp. Đặt priority thủ công cho bạn giá trị cố định, ví dụ 4096 cho Root chính và 8192 cho Root dự phòng, nhưng cần thận trọng khi dùng lệnh này.
PortFast có thể gây loop không? Có, nếu bật trên cổng nối với switch hoặc hub. Hãy chỉ bật PortFast trên cổng nối máy trạm hoặc server, và dùng BPDU Guard để cổng tự tắt khi nhận BPDU từ thiết bị lạ.
BPDU Guard khác Root Guard thế nào? BPDU Guard đưa cổng vào err-disabled khi nhận bất kỳ BPDU nào, dùng cho cổng access. Root Guard dùng cho cổng nối xuống switch cấp thấp hơn: cổng vẫn tham gia STP, nhưng nếu nhận BPDU khiến nó có thể thành Root Port thì bị đưa vào trạng thái root-inconsistent (chặn).
Thông tin liên quan
- Bài 28: STP, vì sao cần và vòng lặp Layer 2 là gì (khóa CCNA)
- Bài 29: Root Bridge, Port Role, Port State (khóa CCNA)
- Bài 30: RSTP, PVST+ và Rapid PVST+ (khóa CCNA)
- Spanning Tree Bridge Assurance là gì
- Phòng thủ đa lớp chống Network Loop: UDLD, Storm Control, REP
- Ngăn chặn vòng lặp mạng với Loop Detection Guard
- Switch Cisco Catalyst 9300 Series
