Spanning-Tree Protocol (STP) là một giao thức mạng được sử dụng để ngăn chặn các vòng lặp trong mạng LAN. STP hoạt động bằng cách xác định và chặn các đường không cần thiết trong một mạng.
Khi có nhiều đường giữa các switch trong mạng, các frame dữ liệu có thể được truyền đi và trở lại giữa các switch một cách vô tận, dẫn đến tình trạng loop.
Khi STP được kích hoạt trên switch, nó sẽ tạo ra một đồ thị của toàn bộ mạng và tìm ra các đường đi tốt nhất giữa các switch. Các đường đi không tốt hoặc không cần thiết sẽ được chặn, do đó loại bỏ khả năng tạo ra loop.
Mục lục
Cách hoạt động của STP:
Note: Trong STP, từ Bridge sẽ được hiểu như là một Switch
Hai khái niệm cơ bản của STP
Việc tính toán trong Spanning Tree dựa trên hai tham số: Bridge ID (BID) và chi phí đường đi.
Bridge ID
Bridge ID (BID) là một định danh duy nhất được sử dụng để xác định switch trong một mạng LAN khi sử dụng giao thức Spanning Tree Protocol (STP). Bridge ID bao gồm hai phần:
- Bridge Priority: Đây là một số nguyên dương 16-bit (từ 0 đến 65535) được sử dụng để xác định mức ưu tiên của switch trong mạng. Switch có bridge priority thấp nhất sẽ được chọn làm root bridge trong STP
- MAC Address: Đây là địa chỉ MAC của switch, giá trị này dùng để chọn ra Bridge ID trong trường hợp các Bridge có Bridge Priority như nhau. MAC thấp nhất sẽ được chọn
Trong STP, Brigde ID càng thấp, thì sẽ độ ưu tiên càng cao.
Chi phí đường đi
Khi root bridge đã được chọn, STP bắt đầu xác định các đường đi tốt nhất đến root bridge. Chi phí đường đi đến root bridge được xác định bằng tổng của tất cả các chi phí trên các nhận vào port (ingress port) trên đường đi từ switch đó đến root bridge.
Khi một Switch nhận được BPDU, nó sẽ cộng thêm chi phí của cổng nhận BPDU vào, để xác định chi phí đường.
Chi phí mặc định trên port được xác định bởi tốc độ hoạt động của cổng . Bảng sau thể hiện chi phí cổng mặc định do IEEE đề xuất.
Link Speed | STP Cost: IEEE 802.1D-1998 | RSTP Cost: IEEE 802.1w-2004 |
10 Gbps | 2 | 2,000 |
1 Gbps | 4 | 20,000 |
100 Mbps | 19 | 200,000 |
10 Mbps | 100 | 2,000,000 |
Mặc dù các port có chi phí theo tốc độ, nhưng chi phí trên port có thể cấu hình được. Điều đó giúp quản trị viên linh hoạt kiểm soát đường đi đến root bridge theo mong muốn.
Trong STP, chi phí càng thấp, thì càng tốt.
Chi tiết các bước hoạt động của STP:
STP xây dựng hệ thống mạng không có vòng lặp trong quy trình bốn bước:
- Xác định root bridge
- Chọn root ports.
- Chọn designated ports.
- Chọn alternate (blocked) ports.
1. Xác định root bridge:
Thuật toán trong giao thức Spanning-Tree tìm ra switch làm root bridge, nó được sử dụng như là điểm tham chiếu cho tất cả các tính toán đường đi trong mạng.
Trong quá trình hoạt động của STP, các switch trao đổi các gói tin BPDU để xây dựng một topology không có vòng lặp bắt đầu với việc chọn root bridge. Tất cả các switch trong miền broadcast tham gia vào quá trình bầu cử, và mục tiêu là chọn switch có BID thấp nhất làm root bridge.
Sau khi switch khởi động, nó bắt đầu gửi các gói tin BPDU mỗi hai giây. Các gói tin BPDU này chứa BID của switch gửi và BID của root bridge, được gọi là Root ID.
Ban đầu, tất cả các switch xem mình là root bridge và đặt BID của chính mình là Root ID trong các khung BPDU mà chúng gửi đi. Khi các gói tin BPDU được trao đổi giữa các switch, chúng học được về BID của các switch khác trong mạng và xác định switch nào có BID thấp nhất. Switch có BID thấp nhất trở thành root bridge cho mạng, và tất cả các switch đồng ý với điều này.
Sau khi root bridge được chọn, các switch xác định root port, designated port và alternate port của mình dựa trên khoảng cách đến root bridge và BID của các switch khác trong mạng, như chúng ta đã thảo luận trước đó. Điều này giúp đảm bảo không có vòng lặp trong mạng.
2. Chọn Root Ports
Sau khi xác định được root bridge, thuật toán STA được sử dụng để lựa chọn root port (cổng gốc). Mỗi switch không phải là root bridge sẽ chọn một root port. Root port là port gần nhất với root brigde tính theo tổng Chi phí đường đi đến root bridge.
Chi phí đường đi bằng tổng chi phí của tất cả các cổng trên đường đi đến root bridge, như được hiển thị trong hình vẽ. Các đường đi có chi phí thấp nhất trở thành ưu tiên, và tất cả các đường đi dư khác đều bị chặn.
Trong ví dụ, chi phí đường từ S2 đến root bridge S1 qua Path 1 (màu nâu) là 19, trong khi chi phí qua đường Path 2 (màu xanh) là 38. Bởi vì Path 1 có tổng chi phí thấp hơn đến root bridge, cho nên nó là đường được chọn và F0/1 trở thành root port trên S2.
3. Chọn Designated Ports
- Mỗi đoạn giữa hai switch sẽ có một designated port (cổng được chỉ định). Designated port là cổng có chi phí đường đi đến root bridge thấp nhất trên một phân đoạn mạng. Nói cách khác, designated port có đường đi tốt nhất để nhận lưu lượng dữ liệu dẫn đến root bridge.
- Những cổng không phải là root port hoặc designated port sẽ trở thành alternate hoặc blocked port.
- Tất cả các cổng trên root bridge đều là designated port.
- Nếu một đầu của một đoạn là root port, đầu kia là designated port.
- Tất cả các cổng được gắn vào thiết bị cuối đều là designated port.
- Trên các đoạn giữa hai switch mà không có switch nào là root bridge, cổng trên switch có cho phí thấp nhất đến root bridge sẽ là designated port.
4. Chọn Alternate (Blocked) Ports
- Nếu một cổng không phải là root port hoặc designated port, thì nó sẽ trở thành Alternate (hoặc Blocked) port (port thay thế hoặc dự phòng).
- Alternate (hoặc Blocked) port sẽ ở trạng thái discarding or blocking (từ chối hoặc chặn) để ngăn chặn các vòng lặp.
- Trong hình vẽ, STP đã cấu hình cổng F0/2 trên S3 ở vai trò Alternate (hoặc Blocked). Cổng F0/2 trên S3 đang ở trạng thái chặn và sẽ không chuyển tiếp traffic. Tất cả các cổng kết nối giữa các switch khác đang ở trạng thái chuyển tiếp. Đây là cách STP giúp cắt vòng lặp.
Cách chọn Root Port khi nhiều đường có chi phí bằng nhau
Khi một switch có nhiều đường có chi phí bằng nhau đến root bridge, switch sẽ xác định root port bằng cách sử dụng lần lượt các tiêu chí sau:
- BID người gửi thấp nhất – Lowest sender BID
- Ưu tiên cổng người gửi thấp nhất – Lowest sender port priority
- ID cổng người gửi thấp nhất – Lowest sender port ID
Lowest Sender BID
Mạng này có bốn switch với switch S1 là root switch. Cổng F0/1 trên switch S3 và cổng F0/3 trên switch S4 đã được chọn làm root port vì chúng có chi phí đường dẫn đến root switch thấp nhất. S2 có hai cổng, F0/1 và F0/2, với chi phí bằng nhau đến switch gốc => vậy bây giờ sẽ chọn đường nào?
Giá trị Bridge ID của S3 và S4 sẽ được sử dụng để giải quyết xung đột này, nó là BID của người gửi. S3 có BID là 32769.5555.5555.5555 và S4 có một BID là 32769.1111.1111.1111. Vì S4 có BID thấp hơn, cổng F0/1 của S2, là cổng kết nối với S4, sẽ trở thành root port.
Lowest Sender Port Priority
Mạng này có hai switch được kết nối với nhau bằng hai đường có chi phí bằng nhau. S1 là root switch, vì vậy cả hai cổng của nó đều là Designated Port. S4 có hai cổng với hai đường có chi phí như nhau đến root switch. Vì cả hai cổng đều được kết nối với cùng một switch, BID của người gửi (S1) cũng là bằng nhau. Vì vậy, sử dụng BID của người gửi sẽ không thể giải quyết được.
Để giải quyết được, tiếp theo là sử dụng độ ưu tiên cổng của người gửi (S1). Độ ưu tiên mặc định cổng là 128, vì vậy cả hai cổng trên S1 đều có cùng một ưu tiên => Đây là một trận hòa.
Tuy nhiên, độ ưu tiên này là có thể cấu hình được, nếu bất kỳ cổng nào trên S1 được cấu hình với ưu tiên cổng thấp hơn, S4 sẽ đặt port nối vào cổng trên S1 có độ ưu tiên thấp hơn vào trạng thái forwarding. Cổng khác trên S4 sẽ ở trạng thái chặn.
Lowest Sender Port ID
Bộ ngắt cuối cùng là ID cổng của người gửi thấp nhất.
Switch S4 đã nhận BPDU từ cổng F0/1 và cổng F0/2 trên S1. Quyết định dựa trên ID cổng của người gửi, không phải ID cổng của người nhận. Do ID cổng của F0/1 trên S1 thấp hơn cổng F0/2 nên cổng F0/6 trên switch S4 sẽ là root port. Đây là port trên S4 được kết nối với port F0/1 trên S1.
Port F0/5 trên S4 sẽ trở thành Alternate (Blocked) Port và được đặt ở trạng thái chặn.
Các trạng thái port (Port States)
Trong giao thức Spanning-Tree Protocol (STP), các port có thể có các trạng thái sau đây:
- Disabled: Port bị vô hiệu hóa và không tham gia vào STP.
- Blocking: Port đã kết nối nhưng không được sử dụng để chuyển dữ liệu, vì nó được thiết lập để ngăn chặn các vòng lặp trong mạng.
- Listening: Port đang nghe STP BPDUs và tiến hành quá trình xây dựng cây Spanning-Tree, tuy nhiên nó vẫn không chuyển dữ liệu.
- Learning: Port đang tiếp tục lắng nghe các BPDUs STP và học về các port và bridge khác trong mạng, tuy nhiên nó vẫn không chuyển dữ liệu.
- Forwarding: Port được kích hoạt và đã được chuyển đổi sang trạng thái forward dữ liệu.
Port State | BPDU | MAC Address Table | Forwarding Data Frames |
Blocking | Receive only | No update | No |
Listening | Receive and send | No update | No |
Learning | Receive and send | Updating table | No |
Forwarding | Receive and send | Updating table | Yes |
Disabled | None sent or received | No update | No |