Với giao thức STP thì ta sẽ hay gặp 3 vấn đề sau: Vòng lặp chuyển tiếp, tắc nghẽn băng thông do thông báo TC (thay đổi cấu trúc liên kết) cao, các vấn đề liên quan đến thời gian hội tụ (convergence time).
Nguyên nhân gây ra lỗi là do các Bridge (bộ chuyển mạch) không thể biết một gói tin có chuyển tiếp nhiều lần hay không để tiến hành loại bỏ. Chỉ có thể dùng 1 đường dẫn giữa 2 thiết bị trong cùng một liền L2.
Mục đích việc sử dụng giao thức STP là chặn các cổng dự phòng và ngăn cản các cấu trúc liên kết cáp vật lý dư thừa. Các vòng lặp chuyển tiếp xảy ra khi cổng dự phòng không bị chặn. Các vòng lặp này làm tắc nghẽn liên kết trên đường dẫn của nó làm mất gói tin và gián đoạn mạng lớp 2.
Trong bài viết này, chúng ta sẽ đi vào các lỗi và cách khắc phục khi triển khai giao thức STP trên dòng sản phẩm Switch Cisco. Nhưng trước hết hãy đảm bảo rằng bạn đã có kiến thức về các loại giao thức STP, các tính năng STP và cách cấu hình cụ thể.
Nguyên nhân gây ra lỗi STP
Để STP hoạt động nó sẽ phải đáp ứng yêu cầu giả định sau:
- Liên kết giữa 2 Bridge là liên kết 2 chiều.
- Mỗi Bridge có thể nhận, xử lý và truyền gói tin BPDU.
Đa số các lỗi gây ra STP đều đến từ lỗi phần cứng hoặc cấu hình sai nhưng cũng có thể gây ra bởi lỗi phần mềm. Các tình huống này có thể dẫn đến việc mạng bị hỏng hoặc tạo ra các vòng lặp, tiêu tốn băng thông.
Các nguyên nhân cụ thể bao gồm lỗi phần cứng trên các cổng, sự cố về cáp, hoặc quá tải CPU. Khi các giả định của STP không được đáp ứng và các lỗi xảy ra, có thể tạo ra các vòng lặp hoặc mất gói tin.
Khắc phục sự cố vòng lặp chuyển tiếp trong STP
Để đảm bảo ta sẽ cần chuẩn bị sơ đồ cấu trúc liên kết thực tế gồm tất cả Switch và Bridge, sơ đồ cổng kết nối tương tứng và các cấu hình STP chi tiết.
Dưới đây là một hướng dẫn chung để xử lý vòng lặp trong STP:
1. Xác định vòng lặp
Nếu bạn thấy các biểu hiện sau thì mạng của bạn đang có vòng lặp:
- Mất kết nối giữa các vùng mạng.
- Chi phí CPU tăng cao trên các Router được kết nối với phân đoạn mạng hoặc VLAN bị ảnh hưởng.
- Sử dụng liên kết cao ở mức 100%.
- Mức Backplane của Switch cao so với mức dựng cơ sở.
- Các thông báo Syslog cho thấy việc học lại địa chỉ hoặc thông báo địa chỉ MAC bị lặp.
- Số gói ra trên các cổng giảm.
2. Tìm cấu trúc liên kết của vòng lặp
Khi biết mạng có vòng lặp, điều đầu tiên ta phải làm là dừng vòng lặp để mạng hoạt động bình thường. Do đó, ta sẽ cần biết các cổng nào đang tham gia vào vòng lặp bằng cách sử dụng lệnh show interface để kiểm tra xem cổng nào đang sử dụng mức liên kết cao nhất.
Để dễ quan sát, ta sẽ sử dụng lệnh lọc kết quả đầu ra bằng lệnh show interface | include line|\/sec để chỉ hiện thị thống kê gói tin trên giây và tên cổng. Kết quả đầu ra của lệnh như sau:
GigabitEthernet2/1 is up, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
GigabitEthernet2/2 is up, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
GigabitEthernet2/3 is up, line protocol is up
5 minute input rate 99765230 bits/sec, 24912 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
GigabitEthernet2/4 is up, line protocol is up
5 minute input rate 1000 bits/sec, 27 packets/sec
5 minute output rate 101002134 bits/sec, 25043 packets/sec
GigabitEthernet2/5 is administratively down, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
GigabitEthernet2/6 is administratively down, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
GigabitEthernet2/7 is up, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
GigabitEthernet2/8 is up, line protocol is up
5 minute input rate 2000 bits/sec, 41 packets/sec
5 minute output rate 99552940 bits/sec, 24892 packets/sec
Quan sát thấy gói nào có mức sử dụng nhiều nhất thì là nó. Như trong ví dụ trên sẽ là các cổng g2/3, g2/4 và g2/8.
3. Tắt vòng lặp
Để tắt vòng lặp ta sẽ cần phải tắt hoặc ngắt kết nối các cổng liên quan. Điều này rất dễ nhưng quan trọng là ta còn phải tìm nguyên nhân để khắc phục vòng lặp. Do đó, hãy lưu ý 3 vấn đề sau:
- Không cần thiết tắt tất cả các cổng cùng lúc. Ta nên tắt từng cái một theo thứ tự từ các Switch tầng trên như lớp phân phối hoặc lõi.
- Cần phải thu thập thông tin trước khi khởi động lại Switch. Nếu không sẽ rất khó tìm nguyên nhận. Nếu ngắt kết nối từng cổng, ta cần phải kiểm tra xem việc tiêu thụ backplane của Switch có trở lại bình thường không.
- Nên nhớ rằng các cổng không duy trì vòng lặp nhưng làm nghẽn lưu lượng đi kèm vòng lặp. Nếu tắt thì ta chỉ giảm mức tiêu thụ backplane đi một lượng nhỏ mà không dừng vòng lặp.
Hãy quan sát sơ đồ sau:
Vòng lặp xảy ra giữa các Switch A, B và D. Do đó, nếu ta tắt bất kỳ liên kết nào trong các liên kết AD, AD và BD thì vòng lặp sẽ dừng lại. Các liên kết như AC, AE, BC và BE chỉ làm tràn lưu lương truy cập kèm vòng lặp.
4. Tìm nguyên nhân và khắc phục
Tìm nguyên nhân và khắc phục là phần khó nhất trong việc khắc phục lỗi STP. Rất khó để có một quy trình chung cho việc áp dụng xác định nguyên nhân. Về cơ bản ta sẽ cần làm những việc sau:
- Xác định Root STP chính xác: Tất cả các thiết bị chuyển mạch trong mạng L2 phải đồng ý về một Root STP chung. Kiểm tra xem switch có biết Root STP chính xác hay không.
- Kiểm tra cổng gốc và cổng dự phòng: Cổng gốc phải có chi phí thấp nhất đối với cầu nối gốc. Kiểm tra xem BPDU được nhận thường xuyên trên cổng gốc và trên các cổng được cho là bị chặn.
- Kiểm tra việc nhận và gửi BPDU: Kiểm tra xem BPDU có được gửi và nhận đúng cách trên các cổng liên quan không phải là root.
Dưới đây là các lệnh để xác định nguyên nhân lỗi:
- Dùng lệnh show spaning-tree vlan vlan-id để hiển thị ID bridge gốc cho một VLAN nhất định.
- show interfaces | include L2|line|broadcast để hiển thị thông tin giao diện VLAN trên các bộ lọc.
- show spans-tree vlan để xác định cổng gốc cho 1 VLAN.
- show spanning-tree interface interface detail để xem liệu BPDU có được nhận hay không trên một cổng cụ thể.
- show interface interface counters để kiểm tra cổng có đếm lỗi hay không khi không nhận được BPDU.
- remote command switch test spanning-tree process-stats để kiểm tra BPDU có bị loại bỏ ở cấp độ quy trình STP.
- remote command switch show ibc | i rx_input để kiểm tra xem các giao điện có gửi BPDU.
Xem thêm: VLAN là gì?
5. Khôi phục dự phòng
Sau khi tìm thấy, và khắc phục nguyên nhân vòng lặp. Hãy phục hồi lại các liên kết dự phòng đã ngắn kết nối ở bước 3.
Khắc phục lỗi do các tin nhắn TC
Chức năng của tin nhắn TC là để sửa các bảng chuyển tiếp L2 sau khi có cấu trúc liên kết đã thay đổi. Nó giúp các thiết bị cập nhật lại bảng địa chỉ MAC đúng. Khi địa chỉ MAC không được học lại nó sẽ xảy ra tình trạng tràn ngập gói tin đến địa chỉ MAC đích.
TC được kích hoạt khi cổng chuyển đổi trạng thái cổng. Sau khi kích hoạt, địa chỉ MAC đích cũ bị lỗi thời và loại bỏ khiến tràn gói tin không kéo dài lâu. Địa chỉ sẽ được học lại bởi gói đầu tiên đến từ máy chủ có địa chỉ MAC đã bị lỗi. Tuy nhiên, vấn đề có thể phát sinh khi TC xảy ra liên tục, với khoảng thời gian ngắn.
Đặc biệt với RSTP hoặc MST, TC sẽ được kích hoạt bởi cổng chuyển thành trạng thái Forwarding hoặc thay đổi vai trò thành Root. Với RSTP, các bảng chuyển tiếp L2 sẽ bị xóa ngay lập tức để kết nối khôi phục nhanh hơn nhưng dễ dàng gây ra tràn ngập gói tin.
Nếu cấu hình tốt thì TC rất khó để gây ra lỗi trong STP. Các cổng bật tính năng PortFast sẽ không thể gây ra TC khi chuyển trạng thái. Nếu có các TC lặp lại trên mạng ta cần phải xác định nguồn gốc và thực hiện biện pháp giảm thiểu chúng.
1. Xác định nguyên nhân gây ra bão nghẽn mạng
Ta có thể nhận biết có bão gói tin trong mạng bằng các dấu hiệu sau:
- Hiệu suất mạng bị chậm.
- Các gói tin trên đường liên kết không nghẽn bị mất.
- Nhìn vào bộ phân tích gói dữ liệu thấy có nhiều gói Unicast đến cùng 1 đích không nằm trên 1 phân đoạn mạng.
Với dòng Switch Catalyst 6500/6000 chạy phần mềm IOS, ta có thể sử dụng lệnh “remote command switch show earl statistics | i MISS_DA|ST_FR” để kiểm tra mức độ bão tin trong mạng lớp 2.
Lưu ý: Thường thấy 1 số lượng bão gói tin nhỏ. Vì switch luôn có thể thả lũ tràn nếu địa chỉ MAC đích không có trong bảng chuyển tiếp. Điều này có thể xảy ra khi switch nhận một gói dữ liệu với địa chỉ đích chưa được học.
2. Tìm nguồn TC
Để xác định xem số lượng TC có tăng cao hay không? Ta có thể tiến hành quan sát trong 1 VLAN cụ thể. Hoặc kiểm tra trên tất cả VLAN bằng lệnh: “show spanning-tree vlan vlan-id detail“. Kết quả của lệnh này sẽ như sau:
cat#show spanning-tree vlan 1 detail
VLAN0001 is executing the ieee compatible Spanning Tree protocol
Bridge Identifier has priority 32768, sysid 1, address 0007.0e8f.04c0
Configured hello time 2, max age 20, forward delay 15
Current root has priority 0, address 0007.4f1c.e847
Root port is 65 (GigabitEthernet2/1), cost of root path is 119
Topology change flag not set, detected flag not set
Number of topology changes 1 last change occurred 00:00:35 ago
from GigabitEthernet1/1
Times: hold 1, topology change 35, notification 2
hello 2, max age 20, forward delay 15
Timers: hello 0, topology change 0, notification 0, aging 300
3. Chặn TC cao quá mức
Theo dõi số lần thay đổi cấu trúc xem nó có tăng đều không? Nếu thấy tăng liên tục ta sẽ tiến hành như sau:
- Tìm nguồn gốc của TC: tại bridge kết nối với cổng nhận TC cuối (trong ví dụ là cổng G1/1). Xem TC đó đến từ thiết bị mạng nào? Hãy lặp lại bước này cho đến khi tìm thấy cổng kết nối đến thiết bị cuối. Lưu ý là không có tính năng Portfast kích hoạt. Nếu liên kết thuộc 1 thiết bị cuối, ta có thể cấu hình cổng đó với PortFast để chặn tạo TC.
Lưu ý rằng: STP trên Cisco IOS software, bộ đếm cho TC chỉ tăng khi một BPDU TCN được nhận bởi một cổng trong một VLAN. Nếu nhận một BPDU cấu hình bình thường với Flag TC được đặt, thì bộ đếm TC không tăng. Điều này có nghĩa là nếu bạn nghi ngờ rằng một TC là nguyên nhân gây ra bão tin, ta cần theo dõi các nguồn gốc của TC từ Root trong VLAN đó.
Khắc phục sụ cố liên quan về thời gian hội tụ
Trong STP có 2 lỗi hay gặp nhất về thời gian hội tụ:
- Quá trình hội tụ hoặc tái hội tụ mất nhiều thời gian hơn.
- Kết quả cấu trúc khác mong đợi.
Thông thường lỗi trên là do các nguyên nhân:
- Cấu trúc liên kết không chính xác.
- Cấu hình sai bộ định thời gian STP nhất quán, đường kính STP tăng, hoặc cấu hình PortFast sai.
- CPU trong Switch bị quá tải.
- Lỗi phần mềm.
Mong rằng qua bài viết này, bạn có cái nhìn khách quan chung về lỗi trong STP và cách để xử lý nó!
Thông Tin Về Tác Giả
Nguyễn Thành Hợp là một chuyên gia về lĩnh vực thiết bị mạng, viễn thông gần 10 năm kinh nghiệm với nhiều chứng chỉ chất lượng như CCNA 200-301, CCNP, CCDA, CCDP,... do Cisco cung cấp. Sở thích cá nhân là khám phá những kiến thức mới mẻ về công nghệ nói chung và đặc biệt là liên quan đến lĩnh vực mạng!