SPANNING TREE VÀ CÁCH NÓ CHỐNG LOOP

spanningtree-01
Ví dụ Spanning Tree

Spanning Tree là giao thức chống loop trên các thiết bị mạng (802.1d).

Nó sử dụng BPDU packets để giao tiếp với các switch khác nhằm tìm ra cổng block để ngăn chặn việc bị loop trong hệ thống mạng ngày nay.

 

Cách Spanning Tree hoạt động thế nào?

Các switch sẽ bầu chọn ai là root switch với một thiết bị mới mua, chưa config gì cả.

Quá trình này sử dụng Bridge-ID (8 bytes) viết tắt là BID, BID nào thấp nhất thì sẽ là root switch.

BID bao gồm 2 bytes:

  • Priority (2 bytes): 0 – 65535 (default 32768)
  • MAC (6 bytes)

Vậy làm sao để biết switch nào có địa chỉ MAC nhỏ hơn?

VD:

  • A: 0010.5a0c.fd86
  • B: 0010.5a0c.fd87
  • C: 0010.6000.0000

=> A < B < C

=> Root switch sẽ là A

Ta sẽ xét ví dụ trên, ví dụ A < B < C < D thì điều gì sẽ xảy ra với 4 con switch đó?

B1: chọn Root switch

  • A sẽ là root switch
  • A sẽ định kỳ gửi BPDU mỗi 2s/lần
  • Các switch BCD chỉ forward BPDU của root switch

B2: Bầu chọn root port

Trên tất cả non-rootswitch phải chọn ra 1 root port mà cung cấp đường về root switch mà đường nhỏ nhất cho con switch đang xét

ta có bảng quy đổi cost như sau:

Bandwidth

Cost

10 Mbps 100
100 Mbps 19
1 Gbps 4
10 Gbps 2

 

Ta ví dụ tất cả các cổng có cost đều là = 19, thì sao?

Muốn tổng path cost từ 1 cổng nào về root switch thì ta tính tổng từ root switch tính về (đi vào thì cộng, đi ra thì không cộng)

  • Xét D, eth0/0 = 19, eth0/1 = 57 => eth0/0 là root port
  • Xét B, eth0/0 = 19, eth0/1 = 57 => eth0/0 là root port
  • Xét C, eth0/0 = 38, eth0/1 = 38
    • ta xét Tie-Breaker cho path cost: Sender B-ID
    • cổng nào nối với switch láng giềng có BID nhỏ hơn thì sẽ trở thành root port
    • => cổng nối với D là root port => eth0/1
  • Ví dụ ta có 2 link giống nhau nối thêm vào C và D dẫn đến từ C đến root luôn = 38
    • Sử dụng Port ID (Port Priority + Port number) giữa C và D.
    • Cổng nào PortID nhỏ hơn sẽ thành root port

B3: Bầu chọn Designated port

Là port cung cấp đường về root switch cho phân đoạn mạng (không phải cho con switch) mà có tổng path cost nhỏ nhất.

Quy tắc cần chú ý:

  • Tất cả các cổng của root switch đều là designated port
  • Cổng đấu nối với root port sẽ phải là designated port
  • Designated port cung cấp đường về root switch cho phân đoạn mạng (không phải cho con switch) mà có tổng path cost nhỏ nhất

Áp dụng ví dụ trênm ta tính được cổng eth0/0 sẽ bị block (khóa)

B4: Blocking port


STP timers:

  • Hello timer: 2s
  • Forward delay timer: 15s
  • Max age timer: 20s

STP port states:

  • Disabled: coi như cổng bị shutdown
  • Blocking: 1 port chỉ được quyền nhận BPDU, không gửi BPDU, không được học MAC nên không được forward data
  • Listening (sau Forward delay timer: 15s ): được nhận và gửi BPDU, không học MAC, không forward data
  • Learning (sau Forward delay timer: 15s): nhận và gửi BPDU, học MAC, không forward data
  • Forwarding: nhận+gửi BPDU, học MAC, forward data

Ta để ý thấy phải mất 30s thì các cổng không bị khóa mới được phép forwarding, nhằm mục đích chống loop, vì có thể xảy ra hiện tượng không đồng bộ spanning tree trên các switch, có thể không tính toán kịp.


Có một điểm các bạn chú ý, khi cắm máy tính vào switch, cổng sẽ mất 30s mới có mạng, vậy lý do tại sao? Nó cũng liên quan đến spanning tree. Mời các bạn đọc bài tiếp theo sẽ rõ 😀

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top