I. Giới thiệu
Trong một hệ thống mạng, việc cấu hình và thiết kế hệ thống không chỉ làm thế nào cho hệ thống chạy được mà còn tìm cách để hệ thống vận hành một cách hiệu quả, đặc biệt trong vấn đề khôi phục mạng sau sự cố. Vì vậy, việc một hệ thống mạng được thiết kế gồm nhiều thiết bị lớp 2 được kết nối với nhau nhằm tăng tính dự phòng đã không còn xa lạ, tuy nhiên bên cạnh đó cũng đặt ra một vấn đề liên quan. Giao thức Spanning Tree hoạt động trên mạng chuyển mạch lớp 2 nhằm hỗ trợ các kết nối giữa các thiết bị dự phòng không xảy ra các tình trạng lỗi không đáng có, hay nói một cách dễ hiểu thì giao thức Spanning Tree giúp ngăn chặn các vòng lặp gói tin trong mạng.
Ta xét một hệ thống được thiết kế như bên dưới:
Có nhiều nguyên nhân gây ra các vòng lặp không cần thiết trong mạng, điển hình thì như đề cập trên đó là do việc thiết kế thiết bị và kết nối mang tính dự phòng. Khi vòng lặp xảy ra sẽ xuất hiện các hiện tượng sau:
II. Các khái niệm
Trước khi tìm hiểu về cơ chế hoạt động của giao thức Spanning Tree, ta sẽ đi tìm hiểu một số khái niệm định nghĩa cơ bản.
1. Gói tin BPDU
Như đã nói trên thì giao thức Spanning Tree là một giao thức mặc định có sẵn trên các thiết bị Switch. Khi Switch khởi động sẽ liên tục gửi các gói BPDU cho nhau, gói BPDU này chứa các thông tin giúp các Switch tính toán và bầu chọn các cấu trúc trong một cây Spanning Tree. Vậy thì trong STP, các Switch giao tiếp với nhau thông qua gói BPDU, hình sau thể hiện cấu trúc BPDU Header:
Ta cần chú ý một số trường quan trọng trong cấu trúc BPDU Header:
[Trong TH sử dụng thiết bị của Cisco thì Priority phải là bộ số của 4096 do mặc định Switch Cisco chạy cơ chế Per Vlan Spanning Tree]
- Địa chỉ MAC: được gán cho thiết bị Switch, định dạng Hexa
- Path cost được sử dụng để đánh giá đường đi từ các Switch khác về Root Bridge và được gán cho từng port của Switch. 802.1q đã định nghĩa Path cost của một kết nối bằng cách chia 1000 Mbps cho băng thông của liên kết tuy nhiên với nhu cầu sử dụng kết nối Gigabit Ethernet và OC-48 ATM (2,4Gbps) mà việc tính toán trở nên khó khăn, vì vậy IEEE đã sửa đổi Path cost như thông tin của bảng trên.
Dựa vào các thông tin trong gói BPDU, các Switch sẽ tiến hành bầu chọn các bước nhằm tìm ra được Block port phù hợp cho hệ thống mạng.
III. Cơ chế hoạt động của giao thức Spanning Tree
Để tạo ra được cấu trúc mạng loop-free, Spanning Tree sử dụng trình tự 4 bước sau:
1. Bầu chọn Root Bridge (RB)
Dựa vào thông tin trong gói BPDU mà các Bridge trao đổi trong mạng, Root Bridge được bầu chọn do có Bridge ID nhỏ nhất (xét Priority trước sau đó là đến địa chỉ MAC - tính từ trái sang phải).
Quá trình diễn ra như sau:
- Ban đầu khi các Bridge mới khởi động (chưa có RB) thì các Switch sẽ gửi các gói BPDU lộn xộn cho nhau (mặc định 2 giây 1 lần).
- Trong gói tin BPDU này sẽ chứa thông tin của Root BID. Bridge luôn đặt BID của chính nó trong Sender BID.
- Giả sử trong trường hợp Switch1 khởi động trước, nó sẽ bắt đầu gửi các gói BPDU thông báo nó chính là Root Bridge. Một lúc sau thì Switch2 khởi động cũng sẽ gửi BPDU thông báo nó là Root Bridge.
- Khi gói BPDU của Switch2 đến Switch1, Switch1 ngay lập tức loại bỏ BPDU vì Switch1 có BID thấp hơn. Còn Switch2 sau khi nhận được BPDU từ Switch1 thì biết được giả định ban đầu của nó đã sai, khi đó nó sẽ sửa lại thông số Root BID là Switch1 và Sender BID là Switch2.
- Tương tự khi Switch3 khởi động. Bây giờ mạng sẽ chấp nhận Switch1 làm RB, và chỉ có RB mới được gửi gói BPDU.
2. Bầu chọn Root Port (RP)
Sau khi đã bầu chọn được RB thì các Bridge còn lại sẽ tiến hành bầu chọn Root Port.
[Mỗi Non-root Bridge chỉ có 1 Root Port]
RP là port cung cấp đường về RB có tổng Path cost nhỏ nhất. Path Cost được tính theo chiều từ RB đến Bridge đang xét theo nguyên tắc vào cộng, ra không cộng.
Quá trình diễn ra như sau:
- Xét Switch2: khi Switch1 gửi gói BPDU qua cổng F0/14 thì Path cost hiện tại là 0. Gói tin đi vào cổng F0/14 của Switch2 sẽ cộng Path cost = 19. Tương tự gói BPDU ra từ cổng F0/17 có Path cost là 0, đi vào cổng F0/14 của Switch3 sẽ cộng Path cost = 19, đi ra cổng F0/16 (không cộng) và đi vào cổng F0/16 sẽ cộng Path cost = 19 + 19 = 38. Vậy thì cổng F0/14 của Switch2 sẽ là RP do có Path cost nhỏ hơn F0/16.
- Tương tự với Switch3.
- Trong trường hợp nếu Path cost của các cổng là như nhau ra sẽ xét đến Sender BID (BID nhỏ hơn), rồi đến Sender Port ID (Port nhỏ hơn) và cuối cùng Port của chính nó. Ví dụ xét mạng sau:
- Xét SWC có 2 port 1 và 2 đều có Path cost đến RB bằng nhau, trường hợp này ta xét Port 2 nối với SWB có BID nhỏ hơn SWD được nối với Port 1, như vậy Port 2 của SWC sẽ trở thành RP.
- Trường hợp nếu SWB và SWD đều có BID bằng nhau thì xét đến Port ID, nghĩa là Port 1 của SWD nối với Port 1 của SWC sẽ nhỏ hơn Port 2 của SWB nối với Port 2 của SWC nên Port 1 của SWC sẽ là RP (port 1D < port 2B).
- Trường hợp nếu các port của SWC đều nối với Port 1 của SWB và SWD thì sao? Thì nguyên tắc xét đến Port ID của chính nó, khi đó Port 1 của SWC sẽ là RP (port 1 < port 2).
3. Bầu chọn Designated Port (DP)
Trên mỗi phân đoạn mạng sẽ có 1 port đóng vai trò là Designated Port có chức năng nhận và gửi lưu lượng đến đoạn mạng còn lại và RB.
Quá trình bầu chọn như sau:
- Tất cả các port của RB là DP.
- Đối diện với RP là DP.
- Trên phân đoạn mạng chưa có RP thì Designated Port được bầu chọn khi cung cấp đường về RB có tổng Path cost nhỏ nhất. Ví dụ:
- Trên phân đoạn Port 1 của SWC và Port 1 SWD chưa được bầu chọn RP, khi đó ta xét Port 1 của SWD có Path cost = 19 (cách tính như trên) còn Port 1 của SWC thì có Path cost = 19 + 19 = 38 nên Port 1 của SWD sẽ trở thành DP.
4. Block Port
Các Port còn lại sẽ đóng vai trò là Block Port (hay dễ hiểu hơn thì đối diện DP chính là BP).
[Trong trường hợp nếu port còn lại của Switch đang có BP bị down thì RB sẽ gửi tín hiệu để Switch đó mở lại BP đồng thời thông báo cho hệ thống sự thay đổi này]
Như vậy thông qua giao thức Spanning Tree mà hệ thống mạng vừa đảm bảo được việc dự phòng vừ
IV. Trạng thái của các Port
Sau khi đã phân chia và bầu chọn các cổng, thì theo nguyên tắc RP và DP được chỉ định chuyển tiếp lưu lượng, còn BP thì bị khóa lưu lượng. Việc chuyển tiếp trạng thái các port được diễn ra như sau:
Qua bài viết này mong sẽ cung cấp phần nhỏ kiến thức về STP cho mọi người. Chúc mọi người thành công :">
Trong một hệ thống mạng, việc cấu hình và thiết kế hệ thống không chỉ làm thế nào cho hệ thống chạy được mà còn tìm cách để hệ thống vận hành một cách hiệu quả, đặc biệt trong vấn đề khôi phục mạng sau sự cố. Vì vậy, việc một hệ thống mạng được thiết kế gồm nhiều thiết bị lớp 2 được kết nối với nhau nhằm tăng tính dự phòng đã không còn xa lạ, tuy nhiên bên cạnh đó cũng đặt ra một vấn đề liên quan. Giao thức Spanning Tree hoạt động trên mạng chuyển mạch lớp 2 nhằm hỗ trợ các kết nối giữa các thiết bị dự phòng không xảy ra các tình trạng lỗi không đáng có, hay nói một cách dễ hiểu thì giao thức Spanning Tree giúp ngăn chặn các vòng lặp gói tin trong mạng.
Ta xét một hệ thống được thiết kế như bên dưới:
Có nhiều nguyên nhân gây ra các vòng lặp không cần thiết trong mạng, điển hình thì như đề cập trên đó là do việc thiết kế thiết bị và kết nối mang tính dự phòng. Khi vòng lặp xảy ra sẽ xuất hiện các hiện tượng sau:
- Broadcast storm: việc này diễn ra khi một host trong mạng gửi một frame dưới dạng Broadcast (Destination MAC: FFFF.FFFF.FFFF) ví dụ như gói ARP.
- Thay đổi thông tin bảng MAC Address liên tục trên thiết bị chuyển mạch.
- Tạo ra nhiều bản sao của gói frame.
II. Các khái niệm
Trước khi tìm hiểu về cơ chế hoạt động của giao thức Spanning Tree, ta sẽ đi tìm hiểu một số khái niệm định nghĩa cơ bản.
1. Gói tin BPDU
Như đã nói trên thì giao thức Spanning Tree là một giao thức mặc định có sẵn trên các thiết bị Switch. Khi Switch khởi động sẽ liên tục gửi các gói BPDU cho nhau, gói BPDU này chứa các thông tin giúp các Switch tính toán và bầu chọn các cấu trúc trong một cây Spanning Tree. Vậy thì trong STP, các Switch giao tiếp với nhau thông qua gói BPDU, hình sau thể hiện cấu trúc BPDU Header:
Ta cần chú ý một số trường quan trọng trong cấu trúc BPDU Header:
- Bridge ID - BID (Bridge Priority + Bridge MAC): trường này gồm 8 byte, 2 byte cho Bridge Priority và 6 byte cho Bridge MAC:
[Trong TH sử dụng thiết bị của Cisco thì Priority phải là bộ số của 4096 do mặc định Switch Cisco chạy cơ chế Per Vlan Spanning Tree]
- Địa chỉ MAC: được gán cho thiết bị Switch, định dạng Hexa
- Hello Time: đây là thời gian để Switch gửi các gói BPDU ra hệ thống, mặc định là 2 giây sẽ gửi gói BPDU 1 lần.
- Root Path Cost: chi phí đường đi (path cost) đến Root Bridge. Ở đây Path Cost sẽ được tính dựa vào bảng thông số bên dưới:
- Path cost được sử dụng để đánh giá đường đi từ các Switch khác về Root Bridge và được gán cho từng port của Switch. 802.1q đã định nghĩa Path cost của một kết nối bằng cách chia 1000 Mbps cho băng thông của liên kết tuy nhiên với nhu cầu sử dụng kết nối Gigabit Ethernet và OC-48 ATM (2,4Gbps) mà việc tính toán trở nên khó khăn, vì vậy IEEE đã sửa đổi Path cost như thông tin của bảng trên.
Dựa vào các thông tin trong gói BPDU, các Switch sẽ tiến hành bầu chọn các bước nhằm tìm ra được Block port phù hợp cho hệ thống mạng.
III. Cơ chế hoạt động của giao thức Spanning Tree
Để tạo ra được cấu trúc mạng loop-free, Spanning Tree sử dụng trình tự 4 bước sau:
- Bầu chọn Root Bridge
- Bầu chọn Root Port
- Bầu chọn Designated Port
- Các port còn lại sẽ là Block Port
1. Bầu chọn Root Bridge (RB)
Dựa vào thông tin trong gói BPDU mà các Bridge trao đổi trong mạng, Root Bridge được bầu chọn do có Bridge ID nhỏ nhất (xét Priority trước sau đó là đến địa chỉ MAC - tính từ trái sang phải).
Quá trình diễn ra như sau:
- Ban đầu khi các Bridge mới khởi động (chưa có RB) thì các Switch sẽ gửi các gói BPDU lộn xộn cho nhau (mặc định 2 giây 1 lần).
- Trong gói tin BPDU này sẽ chứa thông tin của Root BID. Bridge luôn đặt BID của chính nó trong Sender BID.
- Giả sử trong trường hợp Switch1 khởi động trước, nó sẽ bắt đầu gửi các gói BPDU thông báo nó chính là Root Bridge. Một lúc sau thì Switch2 khởi động cũng sẽ gửi BPDU thông báo nó là Root Bridge.
- Khi gói BPDU của Switch2 đến Switch1, Switch1 ngay lập tức loại bỏ BPDU vì Switch1 có BID thấp hơn. Còn Switch2 sau khi nhận được BPDU từ Switch1 thì biết được giả định ban đầu của nó đã sai, khi đó nó sẽ sửa lại thông số Root BID là Switch1 và Sender BID là Switch2.
- Tương tự khi Switch3 khởi động. Bây giờ mạng sẽ chấp nhận Switch1 làm RB, và chỉ có RB mới được gửi gói BPDU.
2. Bầu chọn Root Port (RP)
Sau khi đã bầu chọn được RB thì các Bridge còn lại sẽ tiến hành bầu chọn Root Port.
[Mỗi Non-root Bridge chỉ có 1 Root Port]
RP là port cung cấp đường về RB có tổng Path cost nhỏ nhất. Path Cost được tính theo chiều từ RB đến Bridge đang xét theo nguyên tắc vào cộng, ra không cộng.
Quá trình diễn ra như sau:
- Xét Switch2: khi Switch1 gửi gói BPDU qua cổng F0/14 thì Path cost hiện tại là 0. Gói tin đi vào cổng F0/14 của Switch2 sẽ cộng Path cost = 19. Tương tự gói BPDU ra từ cổng F0/17 có Path cost là 0, đi vào cổng F0/14 của Switch3 sẽ cộng Path cost = 19, đi ra cổng F0/16 (không cộng) và đi vào cổng F0/16 sẽ cộng Path cost = 19 + 19 = 38. Vậy thì cổng F0/14 của Switch2 sẽ là RP do có Path cost nhỏ hơn F0/16.
- Tương tự với Switch3.
- Trong trường hợp nếu Path cost của các cổng là như nhau ra sẽ xét đến Sender BID (BID nhỏ hơn), rồi đến Sender Port ID (Port nhỏ hơn) và cuối cùng Port của chính nó. Ví dụ xét mạng sau:
- Xét SWC có 2 port 1 và 2 đều có Path cost đến RB bằng nhau, trường hợp này ta xét Port 2 nối với SWB có BID nhỏ hơn SWD được nối với Port 1, như vậy Port 2 của SWC sẽ trở thành RP.
- Trường hợp nếu SWB và SWD đều có BID bằng nhau thì xét đến Port ID, nghĩa là Port 1 của SWD nối với Port 1 của SWC sẽ nhỏ hơn Port 2 của SWB nối với Port 2 của SWC nên Port 1 của SWC sẽ là RP (port 1D < port 2B).
- Trường hợp nếu các port của SWC đều nối với Port 1 của SWB và SWD thì sao? Thì nguyên tắc xét đến Port ID của chính nó, khi đó Port 1 của SWC sẽ là RP (port 1 < port 2).
3. Bầu chọn Designated Port (DP)
Trên mỗi phân đoạn mạng sẽ có 1 port đóng vai trò là Designated Port có chức năng nhận và gửi lưu lượng đến đoạn mạng còn lại và RB.
Quá trình bầu chọn như sau:
- Tất cả các port của RB là DP.
- Đối diện với RP là DP.
- Trên phân đoạn mạng chưa có RP thì Designated Port được bầu chọn khi cung cấp đường về RB có tổng Path cost nhỏ nhất. Ví dụ:
- Trên phân đoạn Port 1 của SWC và Port 1 SWD chưa được bầu chọn RP, khi đó ta xét Port 1 của SWD có Path cost = 19 (cách tính như trên) còn Port 1 của SWC thì có Path cost = 19 + 19 = 38 nên Port 1 của SWD sẽ trở thành DP.
4. Block Port
Các Port còn lại sẽ đóng vai trò là Block Port (hay dễ hiểu hơn thì đối diện DP chính là BP).
[Trong trường hợp nếu port còn lại của Switch đang có BP bị down thì RB sẽ gửi tín hiệu để Switch đó mở lại BP đồng thời thông báo cho hệ thống sự thay đổi này]
Như vậy thông qua giao thức Spanning Tree mà hệ thống mạng vừa đảm bảo được việc dự phòng vừ
IV. Trạng thái của các Port
Sau khi đã phân chia và bầu chọn các cổng, thì theo nguyên tắc RP và DP được chỉ định chuyển tiếp lưu lượng, còn BP thì bị khóa lưu lượng. Việc chuyển tiếp trạng thái các port được diễn ra như sau:
- Từ trạng thái Blocking sang Listening mất 20 giây
- Từ trạng thái Listening sang Learning mất 15 giây
- Từ trạng thái Learning sang Fowarding mất 15 giây
Qua bài viết này mong sẽ cung cấp phần nhỏ kiến thức về STP cho mọi người. Chúc mọi người thành công :">
Attachments
Last edited: