1. BPDU Guard
Tính năng BPDUGuard cũng tương tự như RootGuard. Tính năng BPDUGuard được khuyến cáo sử dụng ở cổng có tính năng portfast. Tính năng portfast cho phép cổng của switch có thể vào trạng thái Forwarding ngay lập tức khi link kết nối với cổng đó up lên. Tính năng portfast được sử dụng khi kết nối với PC tại access-layer. Portfast được bật lên chỉ khi ta chắc chắn rằng trên cổng đó không thể xảy ra lặp vòng. Ta bật portfast lên không có nghĩa là đã tắt STP trên cổng đó. Nếu có một switch mới bị cắm nhầm vào cổng có tính năng portfast thì loop có thể xảy ra vì portfast cho phép chuyển cổng sang trạng thái forwarding ngay lập tức. Trong khi đó để phát hiện ra vòng lặp thì phải trải qua một khoảng thời gian và các trạng thái khác nhau thì cổng mới đưa vào sử dụng bình thường được. BPDUGuard sẽ cấm không cho switch lạ trao đổi BPDU với mạng. Khi switch nhận được BPDU trên portfast với tính năng BPDUGuard thì cổng sẽ bị đưa vào trạng thái errdisable. Muốn sử dụng lại cổng này thì phải cho phép cổng một cách thủ công hoặc đợi khoảng thời gian errdisable hết hạn.
Mặc định, tính năng BPDU guard bị khóa trên tất cả các Port của switch. Ta có thể cấu hình BPDU ở mode Global của switch, sẽ tác động lên tất cả các Port của switch chỉ bằng 1 câu lệnh.
Switch (config)#spanning-tree portfast bpduguard default
Ngoài ra, ta cũng có thể tắt hoặc mở tính năng BPDU guard trên từng Port:
Switch (config_if)#[no] spanning-tree bpduguard enable
Ta không nên cấu hình BPDU guard cho Uplink port vì gói BPDU sẽ được nhận và lập tức Port sẽ chuyển sang chế độ errdisable.Điều này sẽ làm cho Port đó không thể sử dụng trong mạng.
2. Chống lại việc mất đột ngột những gói BPDU
Gói tin BPDU được sử dụng như thăm dò để tìm hiểu về một cấu trúc liên kết mạng. Khi các switch tham gia trong một cây STP hội tụ BPDUs vẫn phải được gửi bằng Root Switch và phải được chuyển tiếp của mỗi switch khác trong STP. Các cấu trúc liên kết của STP toàn vẹn sau đó phụ thuộc vào một dòng chảy liên tục và thường xuyên của BPDUs từ gốc. Điều gì xảy ra nếu một switch không nhận được BPDUs một cách kịp thời hoặc khi nó không nhận nào? Việc chuyển đổi có thể xem là tình trạng như là chấp nhận được, có lẽ là một chuyển đổi ngược dòng hoặc một liên kết đến RootSwitch chết. Trong trường hợp đó, hệ thống mạng phải có đường khác dự phòng, do đó bị chặn cổng cuối cùng có thể được bỏ chặn lại.
Tuy nhiên, nếu sự vắng mặt của BPDUs thực sự là một sai lầm và BPDUs không được nhận ngay cả mặc dù không có thay đổi mô hình mạng, vòng lặp (loop) có thể dễ dàng hình thành. Cisco đã bổ sung thêm hai tính năng giúp STP phát hiện và ngăn chặn sự mất mát bất ngờ của BPDU: Loop Guard và UDLD
3. LoopGuard
Giả sử rằng một cổng Switch đang nhận được BPDUs và các cổng switch là ở trạng thái Blocking. Các cổng đến đường dự phòng – nó sẽ bị ngăn chặn bởi vì nó không phải là một cổng gốc cũng không phải là một cổng chỉ định. Nó sẽ vẫn ở trạng thái Blocking miễn là một dòng chảy ổn định của BPDUs nhận được.
Nếu BPDUs đang được gửi qua một liên kết nhưng các dòng chảy của BPDUs dừng lại vì lý do nào đó, người cuối cùng được biết đến BPDU được giữ cho đến khi Max Age timer hết hạn. Sau đó là BPDU bị xóa, và Switch hiểu rằng ở đó không còn là cổng cần phải chặn . Sau cùng, nếu không có BPDUs được nhận nên không cần khóa cổng đang có thiết bị kết nối nữa.
Switch sau đó đưa các cổng sang trạng thái chuyển tiếp dữ liệu mạng và bắt đầu xảy ra hiện tượng loop. Trong trạng thái cuối cùng Port,nó sẽ trở thành một cổng Designated và bắt đầu chuyển tiếp hoặc gửi BPDUs xuống hạ lưu, khi nó thực sự cần phải nhận được BPDUs từ thượng nguồn.
Để ngăn chặn tình trạng này, ta có thể sử dụng tính năng bảo vệ vòng STP. Khi được kích hoạt, bảo vệ vòng lặp theo dõi những hoạt động BPDU trên cổng nondesignated. Trong khi BPDUs được nhận, cổng cho phép cư xử bình thường. Khi BPDUs đi mất tích, loop-guard di chuyển các cổng vào trạng thái loop-inconsistent . Các cổng được chặn ở thời điểm này để ngăn ngừa một vòng từ từ hình thành và để giữ nó trong vai trò nondesignated.
Khi thực hiện LoopGuard trên IOS Cisco ta sẽ thấy thông báo sau:
Theo mặc định, tính năng LoopGuard tắt trên tất cả các cổng. Ta có thể mở tính năng này trên mode Global cho tất cả các cổng hoặc trên từng cổng:
Switch(config)#spanning-tree loopguard default
Switch(config_if)# [No] spanning-tree guard loop
Mặc dù loop guard được cấu hình trên từng Port nhưng nó lại hoạt động theo từng Vlan hay nói cách khác, khi 1 Port bị khóa, không có nghĩa là nó bị khóa hoàn toàn mà nó chỉ bị khóa trên Vlan tương ứng.
So sánh mô hình 3 Switch khi chưa chạy LoopGuard và khi đã chạy LoopGuard
Lê Đức Thịnh – VnPro
Tính năng BPDUGuard cũng tương tự như RootGuard. Tính năng BPDUGuard được khuyến cáo sử dụng ở cổng có tính năng portfast. Tính năng portfast cho phép cổng của switch có thể vào trạng thái Forwarding ngay lập tức khi link kết nối với cổng đó up lên. Tính năng portfast được sử dụng khi kết nối với PC tại access-layer. Portfast được bật lên chỉ khi ta chắc chắn rằng trên cổng đó không thể xảy ra lặp vòng. Ta bật portfast lên không có nghĩa là đã tắt STP trên cổng đó. Nếu có một switch mới bị cắm nhầm vào cổng có tính năng portfast thì loop có thể xảy ra vì portfast cho phép chuyển cổng sang trạng thái forwarding ngay lập tức. Trong khi đó để phát hiện ra vòng lặp thì phải trải qua một khoảng thời gian và các trạng thái khác nhau thì cổng mới đưa vào sử dụng bình thường được. BPDUGuard sẽ cấm không cho switch lạ trao đổi BPDU với mạng. Khi switch nhận được BPDU trên portfast với tính năng BPDUGuard thì cổng sẽ bị đưa vào trạng thái errdisable. Muốn sử dụng lại cổng này thì phải cho phép cổng một cách thủ công hoặc đợi khoảng thời gian errdisable hết hạn.
Mặc định, tính năng BPDU guard bị khóa trên tất cả các Port của switch. Ta có thể cấu hình BPDU ở mode Global của switch, sẽ tác động lên tất cả các Port của switch chỉ bằng 1 câu lệnh.
Switch (config)#spanning-tree portfast bpduguard default
Ngoài ra, ta cũng có thể tắt hoặc mở tính năng BPDU guard trên từng Port:
Switch (config_if)#[no] spanning-tree bpduguard enable
Ta không nên cấu hình BPDU guard cho Uplink port vì gói BPDU sẽ được nhận và lập tức Port sẽ chuyển sang chế độ errdisable.Điều này sẽ làm cho Port đó không thể sử dụng trong mạng.
2. Chống lại việc mất đột ngột những gói BPDU
Gói tin BPDU được sử dụng như thăm dò để tìm hiểu về một cấu trúc liên kết mạng. Khi các switch tham gia trong một cây STP hội tụ BPDUs vẫn phải được gửi bằng Root Switch và phải được chuyển tiếp của mỗi switch khác trong STP. Các cấu trúc liên kết của STP toàn vẹn sau đó phụ thuộc vào một dòng chảy liên tục và thường xuyên của BPDUs từ gốc. Điều gì xảy ra nếu một switch không nhận được BPDUs một cách kịp thời hoặc khi nó không nhận nào? Việc chuyển đổi có thể xem là tình trạng như là chấp nhận được, có lẽ là một chuyển đổi ngược dòng hoặc một liên kết đến RootSwitch chết. Trong trường hợp đó, hệ thống mạng phải có đường khác dự phòng, do đó bị chặn cổng cuối cùng có thể được bỏ chặn lại.
Tuy nhiên, nếu sự vắng mặt của BPDUs thực sự là một sai lầm và BPDUs không được nhận ngay cả mặc dù không có thay đổi mô hình mạng, vòng lặp (loop) có thể dễ dàng hình thành. Cisco đã bổ sung thêm hai tính năng giúp STP phát hiện và ngăn chặn sự mất mát bất ngờ của BPDU: Loop Guard và UDLD
3. LoopGuard
Giả sử rằng một cổng Switch đang nhận được BPDUs và các cổng switch là ở trạng thái Blocking. Các cổng đến đường dự phòng – nó sẽ bị ngăn chặn bởi vì nó không phải là một cổng gốc cũng không phải là một cổng chỉ định. Nó sẽ vẫn ở trạng thái Blocking miễn là một dòng chảy ổn định của BPDUs nhận được.
Nếu BPDUs đang được gửi qua một liên kết nhưng các dòng chảy của BPDUs dừng lại vì lý do nào đó, người cuối cùng được biết đến BPDU được giữ cho đến khi Max Age timer hết hạn. Sau đó là BPDU bị xóa, và Switch hiểu rằng ở đó không còn là cổng cần phải chặn . Sau cùng, nếu không có BPDUs được nhận nên không cần khóa cổng đang có thiết bị kết nối nữa.
Switch sau đó đưa các cổng sang trạng thái chuyển tiếp dữ liệu mạng và bắt đầu xảy ra hiện tượng loop. Trong trạng thái cuối cùng Port,nó sẽ trở thành một cổng Designated và bắt đầu chuyển tiếp hoặc gửi BPDUs xuống hạ lưu, khi nó thực sự cần phải nhận được BPDUs từ thượng nguồn.
Để ngăn chặn tình trạng này, ta có thể sử dụng tính năng bảo vệ vòng STP. Khi được kích hoạt, bảo vệ vòng lặp theo dõi những hoạt động BPDU trên cổng nondesignated. Trong khi BPDUs được nhận, cổng cho phép cư xử bình thường. Khi BPDUs đi mất tích, loop-guard di chuyển các cổng vào trạng thái loop-inconsistent . Các cổng được chặn ở thời điểm này để ngăn ngừa một vòng từ từ hình thành và để giữ nó trong vai trò nondesignated.
Khi thực hiện LoopGuard trên IOS Cisco ta sẽ thấy thông báo sau:
Theo mặc định, tính năng LoopGuard tắt trên tất cả các cổng. Ta có thể mở tính năng này trên mode Global cho tất cả các cổng hoặc trên từng cổng:
Switch(config)#spanning-tree loopguard default
Switch(config_if)# [No] spanning-tree guard loop
Mặc dù loop guard được cấu hình trên từng Port nhưng nó lại hoạt động theo từng Vlan hay nói cách khác, khi 1 Port bị khóa, không có nghĩa là nó bị khóa hoàn toàn mà nó chỉ bị khóa trên Vlan tương ứng.
So sánh mô hình 3 Switch khi chưa chạy LoopGuard và khi đã chạy LoopGuard
STP không có LoopGuard
STP chạy LoopGuard
Lê Đức Thịnh – VnPro