Bạn đã bao giờ tự hỏi, vì sao cùng một mạng có thể “tự chọn đường” theo kiểu RSTP/STP mà lại luôn ra kết quả giống nhau (root bridge, root port, designated port, port bị chặn)? Nhiều người học Spanning-Tree chỉ dừng ở mức thuộc khái niệm. Nhưng khi đi thực chiến, thứ bạn cần là cơ chế tính toán “cost” và cách thiết bị ra quyết định dựa trên cost đó.
Trong bài chia sẻ này, mình sẽ đứng vai một người đã làm đủ STP đủ lâu để “không còn sợ khi topology phức tạp”, và mình sẽ mổ xẻ toàn bộ chủ đề Spanning-Tree Cost Calculation đúng theo tinh thần tài liệu bạn gửi: từ nền lý thuyết cho tới các bước tính trong từng ví dụ, và cuối cùng là quy tắc chọn cổng khi cost bằng nhau. Bạn đọc xong có thể nhìn topology bất kỳ là tự đoán được STP sẽ chặn cổng nào.
1. Vì sao phải quan tâm “cost” trong STP?
STP làm nhiệm vụ chống loop bằng cách xây dựng một cây không vòng. Để xây dựng cây đó, switch phải chọn “đường đi ngắn nhất” (theo metric cost) từ mỗi switch về root bridge.
Tài liệu nhấn mạnh một câu rất quan trọng:
“Spanning-tree cost là tổng cost của đường đi ngắn nhất từ switch tới root bridge.”
Nói đơn giản: switch không tự nhiên chọn port; nó chọn port để đạt được tuyến đường có cost thấp nhất (đường “rẻ nhất”).
Ở thực tế, cost càng thấp thì switch càng “thích” sử dụng hướng đó để đi về root.
2. Cost được tính từ băng thông như thế nào?
Trong tài liệu có một bảng quy đổi (mình sẽ chuyển thành mô tả theo đúng nội dung):
3. BPDU (Bridge Protocol Data Unit) và “đường cost” từ root lan xuống
Tài liệu mô tả rõ rằng ở BPDU, switch sẽ mang theo thông tin để các switch kế tiếp biết mình đang “đi về root bằng đường nào, cost bao nhiêu”.
Tư duy đúng để tự tính trong đầu là:
BPDU sẽ phát đi từ root bridge xuống các switch phía dưới, và mỗi hop sẽ cộng thêm cost của interface mà BPDU đi qua.
4. Topology ví dụ trong tài liệu: đặt bài và hiểu các loại port
Tài liệu mô tả topology có:
5. Ví dụ 1: Root có 2 link 10M và 2 nhánh phía dưới
Tài liệu đưa một ví dụ “đơn giản hóa” để bạn thấy cách chọn cost dựa trên interface cost.
Ở ví dụ đầu:
ROOT “đẩy” BPDU xuống, nếu một switch nhận BPDU và thấy tuyến đường có tổng cost rẻ hơn, nó chọn tuyến đó làm “đường đi về root”.
6. Ví dụ 2 (phần dài hơn trong tài liệu): tính từng bước BPDU cost theo từng hop
Tài liệu có một hình topology với nhiều switch non-root ở nhiều tầng (SW2, SW3, SW4, SW5…). Sau đó họ “tách nhỏ” các bước, kiểu như một bài toán lớp mạng.
Mình diễn giải đúng logic của tài liệu bằng các bước tư duy:
Bước 1: Bắt đầu từ root
Root bridge phát BPDU đầu tiên với cost ban đầu là 0 (trong bài toán cost về root, root không cộng thêm gì).
Bước 2: Hop 1 (trực tiếp từ root xuống)
Khi SW5 nhận BPDU “đến từ SW3” hay “đến từ SW4”, thì:
Bạn không cần đoán. Bạn chỉ cần làm “chuỗi cộng cost” theo từng hop theo đúng cost của link (10/100/1000 Mbit).
7. “Cổng bị chặn” thực chất được chọn như thế nào? (bằng ví dụ SW6/ SW7 trong tài liệu)
Phần cuối của tài liệu mô tả một đoạn quan trọng:
Có lúc một non-root switch nhận BPDU từ nhiều hướng khác nhau, dẫn tới root path cost bằng nhau. Khi đó STP không chỉ dừng ở cost.
Tài liệu minh họa tình huống:
8. Quy tắc tie-breaker khi cost bằng nhau (phần quan trọng trong tài liệu)
Tài liệu liệt kê một danh sách các tiêu chí khi phải ra quyết định với tình huống “bằng cost”. Mình diễn giải lại theo đúng thứ tự tư duy trong tài liệu:
STP luôn phải chốt một quyết định duy nhất để tránh loop. Khi cost không phân biệt được, nó dùng dãy tie-breaker để đảm bảo tính nhất quán.
9. Ví dụ gỡ rối nhanh để bạn áp dụng ngay khi lab hoặc production
Khi bạn đứng trước một topology có vẻ phức tạp, mình gợi ý cách “làm như bài toán” đúng tinh thần tài liệu:
Nếu bạn muốn “tiên đoán” port sẽ bị chặn, thường bạn chỉ cần tìm:
Spanning-Tree Cost Calculation không phải là “học thuộc cost rồi nhìn hình”. Nó là cơ chế thiết bị làm phép toán và ra quyết định bằng cost + tie-breaker để tạo cây không vòng.
Nếu bạn nắm được đúng 3 ý sau, bạn sẽ tự tin khi gặp topology khó:
Trong bài chia sẻ này, mình sẽ đứng vai một người đã làm đủ STP đủ lâu để “không còn sợ khi topology phức tạp”, và mình sẽ mổ xẻ toàn bộ chủ đề Spanning-Tree Cost Calculation đúng theo tinh thần tài liệu bạn gửi: từ nền lý thuyết cho tới các bước tính trong từng ví dụ, và cuối cùng là quy tắc chọn cổng khi cost bằng nhau. Bạn đọc xong có thể nhìn topology bất kỳ là tự đoán được STP sẽ chặn cổng nào.
1. Vì sao phải quan tâm “cost” trong STP?
STP làm nhiệm vụ chống loop bằng cách xây dựng một cây không vòng. Để xây dựng cây đó, switch phải chọn “đường đi ngắn nhất” (theo metric cost) từ mỗi switch về root bridge.
Tài liệu nhấn mạnh một câu rất quan trọng:
“Spanning-tree cost là tổng cost của đường đi ngắn nhất từ switch tới root bridge.”
Nói đơn giản: switch không tự nhiên chọn port; nó chọn port để đạt được tuyến đường có cost thấp nhất (đường “rẻ nhất”).
Ở thực tế, cost càng thấp thì switch càng “thích” sử dụng hướng đó để đi về root.
2. Cost được tính từ băng thông như thế nào?
Trong tài liệu có một bảng quy đổi (mình sẽ chuyển thành mô tả theo đúng nội dung):
- Nếu băng thông 10 Mbit thì Cost = 100
- Nếu băng thông 100 Mbit thì Cost = 19
- Nếu băng thông 1000 Mbit thì Cost = 4
3. BPDU (Bridge Protocol Data Unit) và “đường cost” từ root lan xuống
Tài liệu mô tả rõ rằng ở BPDU, switch sẽ mang theo thông tin để các switch kế tiếp biết mình đang “đi về root bằng đường nào, cost bao nhiêu”.
Tư duy đúng để tự tính trong đầu là:
- Root bridge bắt đầu hành trình.
- Các switch nhận BPDU từ các láng giềng sẽ tạo ra “cái cost tốt nhất” để mô tả tuyến đường của mình tới root.
- Khi một switch có nhiều BPDU khác nhau (từ các hướng khác nhau), nó sẽ chọn đường có cost tổng nhỏ nhất.
BPDU sẽ phát đi từ root bridge xuống các switch phía dưới, và mỗi hop sẽ cộng thêm cost của interface mà BPDU đi qua.
4. Topology ví dụ trong tài liệu: đặt bài và hiểu các loại port
Tài liệu mô tả topology có:
- 1 root (ROOT) ở trung tâm phía trên
- 4 switch ở phía dưới (NON-ROOT)
- Các đường link giữa chúng có băng thông khác nhau, trong hình thể hiện rõ các cạnh 10 Mbit, 100 Mbit, 1000 Mbit…
- Trên hình còn nhấn mạnh cách gọi: ROOT là root bridge, còn lại là non-root switches.
- Root port: cổng trên một non-root switch, được chọn để đi về root bridge với cost nhỏ nhất.
- Designated port: trên từng đoạn LAN/segment, switch nào “đại diện” cho hướng đi của segment đó về phía root.
- Port bị chặn: các port còn lại không nằm trong nhánh cost tối ưu (hoặc bị chọn thua khi so sánh).
5. Ví dụ 1: Root có 2 link 10M và 2 nhánh phía dưới
Tài liệu đưa một ví dụ “đơn giản hóa” để bạn thấy cách chọn cost dựa trên interface cost.
Ở ví dụ đầu:
- Switch ROOT (SW1) có kết nối xuống các switch non-root
- Có các link:
- SW2/SW3/SW4/SW5… (tên trong hình)
- Trong phần mô tả, tài liệu nêu cụ thể trường hợp khi SW2 nhận BPDU từ SW1 qua link 1000 Mbit (cost 4) hay qua link 100 Mbit (cost 19) hoặc 10 Mbit (cost 100).
- Vì SW2 nhận link từ root bridge với cost tốt hơn, nên SW2 sẽ chọn route về root theo hướng có tổng cost nhỏ nhất.
ROOT “đẩy” BPDU xuống, nếu một switch nhận BPDU và thấy tuyến đường có tổng cost rẻ hơn, nó chọn tuyến đó làm “đường đi về root”.
6. Ví dụ 2 (phần dài hơn trong tài liệu): tính từng bước BPDU cost theo từng hop
Tài liệu có một hình topology với nhiều switch non-root ở nhiều tầng (SW2, SW3, SW4, SW5…). Sau đó họ “tách nhỏ” các bước, kiểu như một bài toán lớp mạng.
Mình diễn giải đúng logic của tài liệu bằng các bước tư duy:
Bước 1: Bắt đầu từ root
Root bridge phát BPDU đầu tiên với cost ban đầu là 0 (trong bài toán cost về root, root không cộng thêm gì).
Bước 2: Hop 1 (trực tiếp từ root xuống)
- Nếu SW5 nhận BPDU từ SW1 qua interface cost 19 (ví dụ đường 100M), thì cost từ SW5 tới root lúc này = 19.
- Nếu SW3 nhận BPDU từ root qua link cost 4 (ví dụ đường 1000M), thì cost của SW3 tới root = 4.
- cost tới root = cost nhận từ BPDU + cost interface mà BPDU đi qua
Khi SW5 nhận BPDU “đến từ SW3” hay “đến từ SW4”, thì:
- BPDU có sẵn “root path cost” (tức cost từ nguồn láng giềng tới root)
- SW5 sẽ cộng thêm cost của interface mà BPDU vừa đi vào SW5
- Sau đó so sánh với tuyến trước đó, giữ tuyến cost nhỏ nhất
- SW5 forward BPDU với cost từ nút trước đó
- SW5 cộng thêm cost interface để ra tổng cost của mình tới root
- Cuối cùng chọn root path cost nhỏ nhất
Bạn không cần đoán. Bạn chỉ cần làm “chuỗi cộng cost” theo từng hop theo đúng cost của link (10/100/1000 Mbit).
7. “Cổng bị chặn” thực chất được chọn như thế nào? (bằng ví dụ SW6/ SW7 trong tài liệu)
Phần cuối của tài liệu mô tả một đoạn quan trọng:
Có lúc một non-root switch nhận BPDU từ nhiều hướng khác nhau, dẫn tới root path cost bằng nhau. Khi đó STP không chỉ dừng ở cost.
Tài liệu minh họa tình huống:
- Có 2 switch, và một cặp link song song giữa ROOT và NON-ROOT (trong hình có các cổng như Fa0/1, Fa0/2 ở bên ROOT và Fa0/1, Fa0/2 ở bên NON-ROOT)
- Hai đường có cost tổng như nhau
- STP sẽ phải quyết định đường nào được làm active, đường nào bị chặn
- SW2 là non-root, nên SW2 chọn root port dựa trên cost tốt nhất
- Khi cost bằng nhau, tie-breaker sẽ dùng thông tin khác (không chỉ cost)
8. Quy tắc tie-breaker khi cost bằng nhau (phần quan trọng trong tài liệu)
Tài liệu liệt kê một danh sách các tiêu chí khi phải ra quyết định với tình huống “bằng cost”. Mình diễn giải lại theo đúng thứ tự tư duy trong tài liệu:
- Lowest Bridge ID
Switch có Bridge ID nhỏ hơn sẽ được ưu tiên để trở thành hướng tốt hơn về phía root. - Lowest Path Cost to Root
Switch chọn đường sao cho tổng cost tới root nhỏ nhất. Nếu một hướng có cost tổng lớn hơn, nó sẽ thua. - Lowest Sender Bridge ID
Khi so các thông tin trong BPDU, nếu cần tiếp tục so ở mức sender, thì sender bridge ID nhỏ hơn sẽ thắng. - Lowest Port ID
Nếu vẫn chưa phân thắng (vì còn bằng nhau), STP chọn dựa vào port ID thấp hơn. - Lowest Sender Port ID
Nếu tie vẫn tiếp tục, so nốt các thông tin port theo thứ tự thấp hơn.
STP luôn phải chốt một quyết định duy nhất để tránh loop. Khi cost không phân biệt được, nó dùng dãy tie-breaker để đảm bảo tính nhất quán.
9. Ví dụ gỡ rối nhanh để bạn áp dụng ngay khi lab hoặc production
Khi bạn đứng trước một topology có vẻ phức tạp, mình gợi ý cách “làm như bài toán” đúng tinh thần tài liệu:
- Bước A: Xác định root bridge (bridge có Bridge ID thấp nhất theo cấu hình/thuật toán bầu chọn).
- Bước B: Với từng non-root switch, nhìn các đường nối sang các hàng xóm gần root hơn (hoặc các hướng mà BPDU tới).
- Bước C: Lấy cost BPDU đang nhận + cost interface tương ứng (theo 10/100/1000 Mbit).
- Bước D: So sánh các tuyến, chọn tuyến nhỏ nhất làm root path.
- Bước E: Nếu tuyến bằng nhau, áp dụng tie-breaker: Bridge ID rồi tới Port ID.
Nếu bạn muốn “tiên đoán” port sẽ bị chặn, thường bạn chỉ cần tìm:
- trên switch non-root, root port là port được chọn; các port khác không nằm trong tuyến cost tối ưu sẽ có xu hướng bị chặn (hoặc ở vai trò designated khác tùy segment).
Spanning-Tree Cost Calculation không phải là “học thuộc cost rồi nhìn hình”. Nó là cơ chế thiết bị làm phép toán và ra quyết định bằng cost + tie-breaker để tạo cây không vòng.
Nếu bạn nắm được đúng 3 ý sau, bạn sẽ tự tin khi gặp topology khó:
- Cost của link phụ thuộc băng thông (10M/100M/1000M tương ứng cost 100/19/4).
- Mỗi BPDU đi thêm một hop thì cost tăng bằng cost của interface vừa đi qua.
- Khi cost bằng nhau, STP chắc chắn sẽ chốt bằng Bridge ID và Port ID theo chuỗi tiêu chí.