Ở phần trước mình đã trình bày các lý thuyết cơ bản của giao thức Spanning Tree, các bạn có thể xem lại bài viết Giao thức Spanning Tree (STP - Spanning Tree Protocol).
Trong phần 2 này mình sẽ trình bày một số khái niệm, và tính năng mà giao thức Spanning Tree có hỗ trợ.
I. Các loại Spanning Tree
Hiện tại có nhiều loại Spanning Tree được sử dụng, có thể chia thành các loại sau:
- CST
- PVST
- PVST+
- MST ( IEEE 802.1s)
- IST
- STP ( dạng truyền thống 802.1d )
- RSTP ( IEEE 802.1w)
Sau đây mình sẽ điểm qua 1 số loại STP phổ biến:
1. CST (Commnad Spanning Tree)
Theo 802.1q định nghĩa là chỉ có 1 cây Spanning Tree duy nhất được sử dụng cho tất cả các Vlan. Nghĩa là trường hợp nếu có 500 Vlan thì 500 Vlan này chỉ có 1 Root Bridge, hoạt động và di chuyển lưu lượng frame là như nhau tại các Port. Đây được gọi lại Common Spanning Tree.
Tuy nhiên chuẩn CST không phải lúc nào cũng tốt vì có thể xuất hiện tình huống như một đường dẫn được tối ưu hóa để tiếp cận một Vlan khác với đường dẫn đã bầu chọn. Bên cạnh đó CST cũng rất chậm do thời gian hội tụ cần khoảng 32 giây.
- Không hỗ trợ cân bằng tải.
2. PVST + (Per VLAN Spanning Tree Plus)
Đây là tiêu chuẩn STP được phải triển bởi Cisco cung cấp việc tìm được Root Bridge trên mỗi Vlan, được cài đặt sử dụng mặc định trên các thiết bị của Cisco.
Chuẩn PVST+ được tối ưu hóa đơn cho IEEE vì nó cung cấp lựa chọn đường dẫn cho từng Vlan một cách hiệu quả, tuy nhiên thời gian hội tụ cũng chậm như CST.
- Tiêu thụ băng thông ít hơn CST.
- Cần bằng tải được tối ưu
- Cần nhiều tài nguyên CPU và bộ nhớ.
3. MST (Multiple Spanning Tree)
Được phát triển bởi IEEE, ta có thể nhận thấy PVST+ giúp giải quyết được bài toán tối ưu hóa đường dẫn, tuy nhiên trong nhiều trường hợp nếu trong mạng có 1 số lượng Vlan cùng sử dụng 1 đường dẫn, nhưng lại được thiết lập theo cơ chế PVST+ sẽ làm tiêu tốn tài nguyên khi xuất hiện quá nhiều cấu trúc STP. MST giải quyết được vấn đề này bằng cách gom nhiều Vlan ánh xạ vào 1 cấu trúc STP. Như vậy trường hợp nếu có khoảng 300 Vlan, chỉ cần chia ra và ánh xạ vào 2-3 cấu trúc STP thì hệ thống sẽ xử lý nhanh hơn, đồng thời cũng giải quyết được bài toán cân bằng tải trong nhiều trường hợp.
Có thể sử dụng kết hợp với RSTP để thời gian hội tụ mạng nhanh hơn.
- Đạt được trạng thái cân bằng tải.
- Yêu cầu sử dụng ít CPU và bộ nhớ hơn.
4. RSTP (Rapid Spanning Tree Protocol)
Đây là một tiêu chuẩn được phát triển bởi IEEE, giải quyết được nhược điểm hội tụ mạng chậm tuy nhiên vẫn sử dụng cơ chế tìm 1 Root Bridge cho toàn bộ mạng và áp dụng cho các Vlan. tài nguyên tiêu hao cao hơn CST nhưng ít hơn PVST+.
Cụ thể việc hội tụ nhanh này nhờ vào việc thay đổi thông tin trong cấu trúc gói BPDU, ví dụ như nếu trước đây cần chờ MaxAge khi xảy ra thay đổi thì hiện tại với RSTP chỉ cần chờ tối đa 3 lần Hello trước khi phản ứng với sự thay đổi. Các tiến trình mới cho phép chuyển đổi từ trạng thái Disable (thay thế cho trạng thái Block trong STP) sang trạng thái Learning (bỏ qua trạng thái Listening).
- Thời gian hội tụ mạng nhanh hơn.
- Tương thích ngược vói STP
Còn các cơ chế khác các bạn có thể tìm hiểu thêm :">
II. Bảo mật cho Spanning Tree
Ngoài việc lựa chọn được cơ chế STP phù hợp với mạng, người quản trị cũng cần quan tâm đến vấn đề bảo mật cho thiết bị được cài đặt giao thức STP này. Kẻ tấn công có thể tấn công vào hệ thống nhằm chiếm quyền kiểm soát bằng cách đóng giả làm Switch, kết nối với thiệt bị trong mạng và gửi các gói BPDU giả mạo nhằm làm hệ thống hiểu nhầm và bầu chọn máy của kẻ tấn công là Root Bridge. Khi đó cấu trúc loop-free bị thay đổi, một số đường link có thể bị block và toàn bộ dữ liệu mạng sẽ được đổ về Switch giả của kẻ tấn công.
Trong trường hợp này, ta có 2 định nghĩa về cơ chế giúp bảo vệ giao thức này:
1. Root Guard
Trong giao thức STP thì vị trí Root Bridge đóng vai trò quan trọng trong việc là Bridge duy nhất có thể gửi các gói BPDU định kỳ và mọi dữ liệu đều phải đi qua RB. Root Bridge được bầu chọn thông qua BID, trường hợp nếu kẻ tấn công đưa 1 Switch giả vào hệ thống và chỉnh cho Priority (có thể cả địa chỉ MAC) nhỏ nhất thì khi đó hệ thống sẽ phải tính toán và bầu chọn lại Root Bridge cùng đường đi mới đến RB.
Tính năng Root Guard ra đời cho phép người quản trị luôn giữ được vị trí Root Bridge theo ý đã chọn mà không cần lo lắng khi có Switch lạ gắn thêm làm thay đổi cấu trúc STP. Với tính năng này, nếu có Switch lạ quảng bá một Superior BPDU cho Root Bridge, RB sẽ không cho phép Switch lạ này trở thành New RB. Nó sẽ đưa cổng nhận được Superior BPDU trước đó về trạng thái Root-Inconsistent. Data sẽ không được gửi hay nhận trên cổng này cho đến khi cổng này không nhận được các gói Superior BPDU và chuyển sang trạng thái hoạt động bình thường.
Việc cấu hình tính năng Root Guard nên được thực hiện trên Root Bridge hoặc các Switch nào mà ta không muốn nhận BPDU từ một Switch lạ, không cấu hình trên Switch có tính năng Uplinkfast.
[Lưu ý là việc cấu hình này sẽ được thực hiện trên từng cổng của thiết bị]
2. BPDU Guard
Điểm đang chú ý của các cuộc tấn công STP đó là kẻ tấn công sẽ giả mạo các gói BPDU và gửi thông tin này vào hệ thống, bởi vì các Switch được đồng bộ với nhau về cấu trúc mạng thông qua các thông tin nhận được từ gói BPDU. Vậy nói một cách dễ hiểu thì để thay đổi cấu trúc của mạng, kẻ tấn công chỉ việc thay đổi các thông tin trong gói BPDU và gửi đến các Switch khác trọng mạng để làm thay đổi thông tin và quan điểm của những Switch này về hệ thống mà nó đang hoạt động và có thể dẫn đến việc xuất hiện loop cũng như làm hiệu suất của mạng bị giảm.
Tính năng BPDU Guard cũng giống như cơ chế Root Guard trên nhưng BPDU Guard được khuyến cáo được cấu hình trên các cổng có tính năng Portfast. (Tính năng Portfast là tính năng được sử dụng trên cổng có kết nối với end user giúp cổng này chuyển sang trạng thái Forwarding ngay lập tức khi kết nối được up lên)
BPDU Guard ngăn chặn các Switch lạ khi kết nối vào sẽ không được trao đổi BPDU với mạng, nếu Switch nhận được BPDU trên cổng được cấu hình BPDU Guard thì sẽ chuyển trạng thái của port này sang chế độ Errdisable. Muốn sử dụng lại cổng này thì phải cấu hình bật lại một cách thủ công hoặc chờ khoảng thời gian Errdisable kết thúc.
IV. Cơ chế Uplinkfast và Backbonefast
1. Uplinkfast
Đây là tính năng được Cisco phát triển, Uplinkfast giúp tối ưu hóa sự hội tụ khi một đường uplink bị lỗi trên Switch. Khi tính năng Uplinkfast được bật thì Switch sẽ thực hiện:
- Tăng Root Priority lên 49152
- Thay đổi Path cost thành 3000
- Theo dõi các Alternate Root Port (cổng có tính năng dự phòng - tương tự như Block Port, port này sẽ được thay thể cho Root Port ngay sau khi RP bị hỏng).
Cơ chế Uplinkfast được khuyến nghị bật trên các Switch có ít nhất 1 Alternate/ Backup port (ở trạng thái Block port).
2. Backbonefast
Tính năng Backbonefast cũng hỗ trợ tối ưu thời gian hội tụ khi xảy ra lỗi trong hệ thống mạng. Trong trường hợp bình thường thì khi một hay một vài kết nối bị lỗi, các Switch không nhận được gói BPDU Hello thì sẽ chờ khoảng thời gian MaxAge trôi qua thì mới bắt đầu tính toán và thay đổi cấu trúc mạng cho phù hợp.
Tuy nhiên khi được cấu hình Backbonefast thì Switch sẽ không cần chờ khoảng thời gian MaxAge nữa mà sẽ học sự cố gián tiếp trong STP và đi hỏi các Switch Upstream là các Switch này có biết về sự cố này hay không. Cụ thể thì khi gói Hello đầu tiên bị mất, Switch sẽ gửi ra frame truy vấn Root Link Query (RLQ) tren các cổng mà lẽ ra phải nhận được Hello. RLQ sẽ hỏi Switch láng giềng đó có còn nhận được BPDU Hello từ Root Bridge hay không. Nếu Switch láng giềng đó đang hợp sự cố trực tiếp thì nó sẽ trả lời là đường đi từ nó về RB đã mất. Khi biết được điều này, Switch ban đầu sẽ tính toán lại mà không chờ hết thời gian MaxAge.
Tính năng Backbonefast cần cấu hình trên tất cả các Switch trong sơ đồ mạng.
Bài viết này cung cấp một số thông tin liên quan đến giao thức Spanning-Tree. Chúc mọi người thành công :">
Trong phần 2 này mình sẽ trình bày một số khái niệm, và tính năng mà giao thức Spanning Tree có hỗ trợ.
I. Các loại Spanning Tree
Hiện tại có nhiều loại Spanning Tree được sử dụng, có thể chia thành các loại sau:
- CST
- PVST
- PVST+
- MST ( IEEE 802.1s)
- IST
- STP ( dạng truyền thống 802.1d )
- RSTP ( IEEE 802.1w)
Sau đây mình sẽ điểm qua 1 số loại STP phổ biến:
1. CST (Commnad Spanning Tree)
Theo 802.1q định nghĩa là chỉ có 1 cây Spanning Tree duy nhất được sử dụng cho tất cả các Vlan. Nghĩa là trường hợp nếu có 500 Vlan thì 500 Vlan này chỉ có 1 Root Bridge, hoạt động và di chuyển lưu lượng frame là như nhau tại các Port. Đây được gọi lại Common Spanning Tree.
Tuy nhiên chuẩn CST không phải lúc nào cũng tốt vì có thể xuất hiện tình huống như một đường dẫn được tối ưu hóa để tiếp cận một Vlan khác với đường dẫn đã bầu chọn. Bên cạnh đó CST cũng rất chậm do thời gian hội tụ cần khoảng 32 giây.
- Thuận lợi:
- Nhược điểm:
- Không hỗ trợ cân bằng tải.
2. PVST + (Per VLAN Spanning Tree Plus)
Đây là tiêu chuẩn STP được phải triển bởi Cisco cung cấp việc tìm được Root Bridge trên mỗi Vlan, được cài đặt sử dụng mặc định trên các thiết bị của Cisco.
Chuẩn PVST+ được tối ưu hóa đơn cho IEEE vì nó cung cấp lựa chọn đường dẫn cho từng Vlan một cách hiệu quả, tuy nhiên thời gian hội tụ cũng chậm như CST.
- Thuận lợi:
- Tiêu thụ băng thông ít hơn CST.
- Cần bằng tải được tối ưu
- Nhược điểm:
- Cần nhiều tài nguyên CPU và bộ nhớ.
3. MST (Multiple Spanning Tree)
Được phát triển bởi IEEE, ta có thể nhận thấy PVST+ giúp giải quyết được bài toán tối ưu hóa đường dẫn, tuy nhiên trong nhiều trường hợp nếu trong mạng có 1 số lượng Vlan cùng sử dụng 1 đường dẫn, nhưng lại được thiết lập theo cơ chế PVST+ sẽ làm tiêu tốn tài nguyên khi xuất hiện quá nhiều cấu trúc STP. MST giải quyết được vấn đề này bằng cách gom nhiều Vlan ánh xạ vào 1 cấu trúc STP. Như vậy trường hợp nếu có khoảng 300 Vlan, chỉ cần chia ra và ánh xạ vào 2-3 cấu trúc STP thì hệ thống sẽ xử lý nhanh hơn, đồng thời cũng giải quyết được bài toán cân bằng tải trong nhiều trường hợp.
Có thể sử dụng kết hợp với RSTP để thời gian hội tụ mạng nhanh hơn.
- Thuận lợi:
- Đạt được trạng thái cân bằng tải.
- Yêu cầu sử dụng ít CPU và bộ nhớ hơn.
- Nhược điểm:
4. RSTP (Rapid Spanning Tree Protocol)
Đây là một tiêu chuẩn được phát triển bởi IEEE, giải quyết được nhược điểm hội tụ mạng chậm tuy nhiên vẫn sử dụng cơ chế tìm 1 Root Bridge cho toàn bộ mạng và áp dụng cho các Vlan. tài nguyên tiêu hao cao hơn CST nhưng ít hơn PVST+.
Cụ thể việc hội tụ nhanh này nhờ vào việc thay đổi thông tin trong cấu trúc gói BPDU, ví dụ như nếu trước đây cần chờ MaxAge khi xảy ra thay đổi thì hiện tại với RSTP chỉ cần chờ tối đa 3 lần Hello trước khi phản ứng với sự thay đổi. Các tiến trình mới cho phép chuyển đổi từ trạng thái Disable (thay thế cho trạng thái Block trong STP) sang trạng thái Learning (bỏ qua trạng thái Listening).
- Thuận lợi:
- Thời gian hội tụ mạng nhanh hơn.
- Tương thích ngược vói STP
Còn các cơ chế khác các bạn có thể tìm hiểu thêm :">
II. Bảo mật cho Spanning Tree
Ngoài việc lựa chọn được cơ chế STP phù hợp với mạng, người quản trị cũng cần quan tâm đến vấn đề bảo mật cho thiết bị được cài đặt giao thức STP này. Kẻ tấn công có thể tấn công vào hệ thống nhằm chiếm quyền kiểm soát bằng cách đóng giả làm Switch, kết nối với thiệt bị trong mạng và gửi các gói BPDU giả mạo nhằm làm hệ thống hiểu nhầm và bầu chọn máy của kẻ tấn công là Root Bridge. Khi đó cấu trúc loop-free bị thay đổi, một số đường link có thể bị block và toàn bộ dữ liệu mạng sẽ được đổ về Switch giả của kẻ tấn công.
Trong trường hợp này, ta có 2 định nghĩa về cơ chế giúp bảo vệ giao thức này:
1. Root Guard
Trong giao thức STP thì vị trí Root Bridge đóng vai trò quan trọng trong việc là Bridge duy nhất có thể gửi các gói BPDU định kỳ và mọi dữ liệu đều phải đi qua RB. Root Bridge được bầu chọn thông qua BID, trường hợp nếu kẻ tấn công đưa 1 Switch giả vào hệ thống và chỉnh cho Priority (có thể cả địa chỉ MAC) nhỏ nhất thì khi đó hệ thống sẽ phải tính toán và bầu chọn lại Root Bridge cùng đường đi mới đến RB.
Tính năng Root Guard ra đời cho phép người quản trị luôn giữ được vị trí Root Bridge theo ý đã chọn mà không cần lo lắng khi có Switch lạ gắn thêm làm thay đổi cấu trúc STP. Với tính năng này, nếu có Switch lạ quảng bá một Superior BPDU cho Root Bridge, RB sẽ không cho phép Switch lạ này trở thành New RB. Nó sẽ đưa cổng nhận được Superior BPDU trước đó về trạng thái Root-Inconsistent. Data sẽ không được gửi hay nhận trên cổng này cho đến khi cổng này không nhận được các gói Superior BPDU và chuyển sang trạng thái hoạt động bình thường.
Việc cấu hình tính năng Root Guard nên được thực hiện trên Root Bridge hoặc các Switch nào mà ta không muốn nhận BPDU từ một Switch lạ, không cấu hình trên Switch có tính năng Uplinkfast.
[Lưu ý là việc cấu hình này sẽ được thực hiện trên từng cổng của thiết bị]
2. BPDU Guard
Điểm đang chú ý của các cuộc tấn công STP đó là kẻ tấn công sẽ giả mạo các gói BPDU và gửi thông tin này vào hệ thống, bởi vì các Switch được đồng bộ với nhau về cấu trúc mạng thông qua các thông tin nhận được từ gói BPDU. Vậy nói một cách dễ hiểu thì để thay đổi cấu trúc của mạng, kẻ tấn công chỉ việc thay đổi các thông tin trong gói BPDU và gửi đến các Switch khác trọng mạng để làm thay đổi thông tin và quan điểm của những Switch này về hệ thống mà nó đang hoạt động và có thể dẫn đến việc xuất hiện loop cũng như làm hiệu suất của mạng bị giảm.
Tính năng BPDU Guard cũng giống như cơ chế Root Guard trên nhưng BPDU Guard được khuyến cáo được cấu hình trên các cổng có tính năng Portfast. (Tính năng Portfast là tính năng được sử dụng trên cổng có kết nối với end user giúp cổng này chuyển sang trạng thái Forwarding ngay lập tức khi kết nối được up lên)
BPDU Guard ngăn chặn các Switch lạ khi kết nối vào sẽ không được trao đổi BPDU với mạng, nếu Switch nhận được BPDU trên cổng được cấu hình BPDU Guard thì sẽ chuyển trạng thái của port này sang chế độ Errdisable. Muốn sử dụng lại cổng này thì phải cấu hình bật lại một cách thủ công hoặc chờ khoảng thời gian Errdisable kết thúc.
IV. Cơ chế Uplinkfast và Backbonefast
1. Uplinkfast
Đây là tính năng được Cisco phát triển, Uplinkfast giúp tối ưu hóa sự hội tụ khi một đường uplink bị lỗi trên Switch. Khi tính năng Uplinkfast được bật thì Switch sẽ thực hiện:
- Tăng Root Priority lên 49152
- Thay đổi Path cost thành 3000
- Theo dõi các Alternate Root Port (cổng có tính năng dự phòng - tương tự như Block Port, port này sẽ được thay thể cho Root Port ngay sau khi RP bị hỏng).
Cơ chế Uplinkfast được khuyến nghị bật trên các Switch có ít nhất 1 Alternate/ Backup port (ở trạng thái Block port).
2. Backbonefast
Tính năng Backbonefast cũng hỗ trợ tối ưu thời gian hội tụ khi xảy ra lỗi trong hệ thống mạng. Trong trường hợp bình thường thì khi một hay một vài kết nối bị lỗi, các Switch không nhận được gói BPDU Hello thì sẽ chờ khoảng thời gian MaxAge trôi qua thì mới bắt đầu tính toán và thay đổi cấu trúc mạng cho phù hợp.
Tuy nhiên khi được cấu hình Backbonefast thì Switch sẽ không cần chờ khoảng thời gian MaxAge nữa mà sẽ học sự cố gián tiếp trong STP và đi hỏi các Switch Upstream là các Switch này có biết về sự cố này hay không. Cụ thể thì khi gói Hello đầu tiên bị mất, Switch sẽ gửi ra frame truy vấn Root Link Query (RLQ) tren các cổng mà lẽ ra phải nhận được Hello. RLQ sẽ hỏi Switch láng giềng đó có còn nhận được BPDU Hello từ Root Bridge hay không. Nếu Switch láng giềng đó đang hợp sự cố trực tiếp thì nó sẽ trả lời là đường đi từ nó về RB đã mất. Khi biết được điều này, Switch ban đầu sẽ tính toán lại mà không chờ hết thời gian MaxAge.
Tính năng Backbonefast cần cấu hình trên tất cả các Switch trong sơ đồ mạng.
Bài viết này cung cấp một số thông tin liên quan đến giao thức Spanning-Tree. Chúc mọi người thành công :">
Last edited by a moderator: