Mình xin chia sẻ chút kinh nghiệm của mình trong việc phát hiện và xử lý Loop trong hệ thống chạy switch ICX của Ruckus. Đôi khi các bạn sẽ gặp phải tình trạng này trong quá trình vận hành hệ thống của mình. Loop thường xảy ra khi re-layout lại văn phòng thay đổi vị trí các máy tính, các bàn làm việc, các thiết bị được kết nối lại với nhau, sau đó mạng trở nên chậm hoặc thậm chí mất kết nối.
Broadcast storm có thể dễ dàng xảy ra, Ruckus có một tính năng trên switch ICX là “Loop Detection” có thể phát hiện và ngăn chặn broadcast storm.
Loop Detection là một tính năng hữu ích có thể dễ dàng ngăn chặn loop trong mạng khi chúng xảy ra. Tính năng này hoạt động hoàn toàn độc lập với Spanning Tree và có thể được sử dụng cùng hoặc thậm chí thay thế Spanning Tree để chủ động ngăn chặn loop trong mạng.
Loop Detection hoạt động như thế nào ?
Loop Detection hoạt động rất đơn giản: Switch sẽ gửi một gói tin broadcast trên mỗi interface (được cấu hình Loop Detection). Nếu switch phát hiện cùng một gói tin quay trở lại qua một interface khác, điều này có nghĩa là đã xảy ra loop trên hệ thống và switch sẽ tự động disable interface.
Có hai loại phát hiện vòng lặp: Strict (theo port) và Loose (theo VLAN).
Trong cấu hình Chế độ Strict, switch sẽ kiểm tra xem nó có thấy gói tin phát hiện vòng lặp đi ra được trả về trên cùng một interface hay không và vô hiệu hóa cổng đó nếu điều này xảy ra.
Trong cấu hình Chế độ Loose, switch sẽ kiểm tra xem có gói tin phát hiện vòng lặp nào được switch gửi đi và trả về trên một interface khác hay không và disable cả interface gửi và interface nhận.
Cấu hình chế độ Strict (cho mỗi interface)
Bật tính năng Loop Detection trên tất cả các interface có khả năng xảy ra vòng lặp
SSH@sw02(config)#interface ethernet 1/1/1
SSH@sw02(config-if-e1000-1/1/1)#loop-detection
Note ! Bạn cũng có thể sử dụng “Interface Range” để bật tính năng này trên nhiều cổng cùng một lúc:
SSH@sw02(config)#int eth 1/1/1 to 1/1/24
SSH@sw02(config-mif-1/1/1-1/1/24)#loop-detection
Chế độ Loose
Bật tính năng loop detection trên VLAN:
SSH@sw02(config)#vlan 500
SSH@sw02(config)# loop detection
Ví dụ, nếu 1 VLAN được cấu hình với tính năng loop detection và switch phát hiện ra vòng loop trong VLAN, toàn bộ interface trong VLAN sẽ bị disable, do đó phải cân nhắc việc cần thiết bật tính năng loop detection trên tất cả các VLAN. Theo kinh nghiệm của mình chỉ bật loop detection trên những vlan có khả năng bị loop cao.
Lưu ý ! bật tính năng này trên nhiều VLAN thì càng tốn nhiều tài nguyên.
Đôi khi có những interface mà bạn muốn loại trừ khỏi việc bị disable trong quá trình loop detection và bạn không muốn switch của mình disable các interface đó. Bạn có thể tắt tính năng này ở Chế độ loop detection Loose như sau:
SSH@sw02(config)#int eth 1/3/1
SSH@sw02(config-if-e10000-1/3/1)#loop-detection shutdown-disable
Làm thế nào để xem trạng thái của loop-detection ?
Với “show loop-detection status”, bạn có thể xem cổng nào đang gửi các gói loop-detection cùng với số liệu thống kê của interface và/hoặc VLAN:
SSH@sw02(config)#show loop-detection status loop detection packets interval: 10 (unit 0.1 sec)
index | port/vlan | status | # errdis | sent-pktt | recv-pkts | |
1 | 1/1/1 | tagged, | UP | 0 | 297 | 0 |
2 | 1/1/2 | tagged | DISABLED | 0 | 0 | 0 |
3 | 1/1/3 | tagged | DISABLED | 0 | 0 | 0 |
4 | 1/1/4 | tagged | DISABLED | 0 | 0 | 0 |
5 | 1/1/5 | untag | DISABLED | 0 | 0 | 0 |
6 | 1/1/6 | untag | DISABLED | 0 | 297 | 0 |
7 | 1/1/7 | tagged | DISABLED | 0 | 0 | 0 |
8 | 1/1/8 | untag | DISABLED | 0 | 961 | 0 |
9 | 1/1/9 | untag | DISABLED | 0 | 297 | 0 |
10 | 1/1/10 | untag | DISABLED | 0 | 0 | 0 |
11 | 1/1/11 | untag | DISABLED | 0 | 0 | 0 |
12 | 1/1/12 | untag | DISABLED | 0 | 0 | 0 |
13 | 1/1/13 | untag | DISABLED | 0 | 0 | 0 |
14 | 1/1/14 | untag | DISABLED | 0 | 297 | 0 |
15 | 1/1/15 | untag | DISABLED | 0 | 0 | 0 |
16 | 1/1/16 | untag | DISABLED | 0 | 0 | 0 |
17 | 1/1/17 | untag | DISABLED | 0 | 0 | 0 |
18 | 1/1/18 | untag | DISABLED | 0 | 0 | 0 |
19 | 1/1/19 | untag | DISABLED | 0 | 0 | 0 |
20 | 1/1/20 | untag | DISABLED | 0 | 296 | 0 |
21 | 1/1/21 | untag | DISABLED | 0 | 0 | 0 |
22 | 1/1/22 | untag | DISABLED | 0 | 0 | 0 |
23 | 1/1/23 | untag | DISABLED | 0 | 0 | 0 |
24 | 1/1/24 | untag | DISABLED | 0 | 296 | 0 |
25 | vlan500 | 0 errdis | port | 0 | 1749 | 0 |
26 | vlan510 | 0 errdis | port | 0 | 1771 | 0 |
Làm thế nào để biết interface nào được phát hiện Loop ?
Lệnh “show loop-detection disabled” cho phép bạn xem cổng nào bị Loop disabled.
SSH@sw02(config)# show loop-detection disabled
Number of err-disabled ports: 3
You can re-enable err-disable ports one by one by “disable” then “enable”
under interface config, re-enable all by “clear loop-detect”, or
configure “errdisable recovery cause loop-detection” for automatic recovery
index port caused-by disabled-time
1 1/1/18 itself 00:13:30
2 1/1/19 vlan 12 00:13:30
3 1/1/20 vlan 12 00:13:30
Làm thế nào để biết có loop trên interface đã cấu hình được “loop-detection shutdown-disable” ?
Lệnh “show loop-detection no-shutdown-status” sẽ hiển thị cho bạn tất cả các interface đã cấu hình “loop-detection shutdown-disable” và đánh giá xem nó có phải (hoặc đã từng) là một phần của loop gần đây hay không.
SSH@sw02(config)#show loop-detection no-shutdown-status
loop detection no shutdown syslog interval : 5 (unit 1 min /Default 5 min)
loop detection no shutdown port status :
Note: Port's loop status gets cleared if loop is not detected in a next interval window
Postage || Loop Status
==========||==========
ethernet 1/3/1 || (Not In Loop)
Làm thế nào để xóa loop ?
Khi bạn chắc chắn rằng loop đã được giải quyết, bạn có thể enable lại tất cả các cổng trên switch bằng lệnh “clear loop-detection”. Việc này cũng thiết lập lại số liệu thống kê về 0.
Làm thế nào để đảm bảo interface tự động enable sau khi phát hiện loop ?
Cấu hình “errdisable recovery interval” cho phép bạn cấu hình khoảng thời gian cần thiết để một interface tự động chuyển từ bị disable sang enable. Dưới đây là ví dụ về cách thiết lập thời gian này thành 2 phút.
errdisable recovery interval 120