[Series CCNA]Routing Loop trong Distance Vector

Đặng Lê Nam Avatar

Như đã giới thiệu trong phần trước, giao thức Distance Vector (DV) sử dụng cách gửi thông tin về bảng định tuyến và các gói tin cập nhật được gửi theo kiểu phát sóng (broadcast) sau mỗi 30 giây. Tuy nhiên, điều này dẫn đến việc các bộ định tuyến không cập nhật thông tin hiện tại của nhau đồng thời, làm cho mạng xảy ra hiện tượng routing loop (vòng lặp đường đi). Routing loop có thể gây hậu quả nghiêm trọng, làm cho hệ thống mạng bị sụp đổ và sai quá trình định tuyến.

Routing loop là gì?

Routing loop là hiện tượng khi các bộ định tuyến không thể xác định đúng đường đi cho các gói tin. Một ví dụ cụ thể để hiểu rõ hơn về việc xảy ra routing loop:

Routing Loop

Trong ví dụ trên, giả sử tất cả các router đã biết thông tin về Network 5 thông qua router E. Khi Network 5 gặp vấn đề và bị ngắt kết nối, router C biết được thông tin này và không định tuyến các gói tin tới Network 5 thông qua router E nữa. Tuy nhiên, router A, B và D không biết thông tin này và vẫn tiếp tục định tuyến và cập nhật thông tin định tuyến cho nhau. Router C sẽ thông báo cho router B rằng Network 5 đã bị ngắt kết nối, nhưng router A và D vẫn không biết điều này. Với chúng, vẫn còn một đường đi đến Network 5 với metric là 3.

Tình huống tiếp tục lặp đi lặp lại mỗi 30 giây, router A sẽ cập nhật thông tin và bảng định tuyến của nó. Theo đó, bảng định tuyến của router A vẫn cho biết rằng router A có thể định tuyến các gói tin đến các đích trong bảng định tuyến của mình, bao gồm cả thông tin đến Network 5. Khi router B và D nhận được thông tin này, chúng sẽ cập nhật thông tin của router A vào bảng định tuyến của mình, tức là “nếu có gói tin nào muốn đến Network 5, hãy gửi đến router A để tiếp tục xử lý”. Điều này tạo ra một vòng lặp vô hạn (loop) trong quá trình định tuyến gây hủy hoại toàn bộ hệ thống mạng.

Cách ngăn ngừa routing loop

Có một số cách để ngăn ngừa hiện tượng routing loop trong giao thức Distance Vector.

Route Poisoning

Trong quá trình route poisoning, một thông tin giả về metric của route bị ngắt kết nối được tiếp tục truyền đi. Thông tin này có giá trị “vô cực” (infinity) để router hiểu rằng route đó đã bị ngắt kết nối. Giá trị “vô cực” này được đặt khác nhau theo từng giao thức DV. Ví dụ, trong giao thức RIP, giá trị “vô cực” là 16.

Route Poisoning

Trong ví dụ trên, ta xem xét trường hợp 2 router sử dụng giao thức RIP. Khi port fa0/1 của R2 bị ngắt kết nối và không thể định tuyến gói tin tới mạng 172.30.22.0/24, thông tin về route này sẽ được xử lý theo các bước sau:

  1. Port fa0/1 của R2 bị ngắt kết nối.
  2. R2 loại bỏ thông tin về mạng 172.30.22.0/24 ra khỏi bảng định tuyến.
  3. R3 thông báo cho R1 (router láng giềng) về thông tin cập nhật mới, tức là route đến mạng 172.30.22.0/24 có metric là 16 – tương đương với giá trị “vô cực”.
  4. R1 cập nhật thông tin mới về route 172.30.22.0/24 với metric là “vô cực” và vẫn giữ trong bảng định tuyến cho đến khi route này bị xóa.

Split Horizon

Split Horizon là một quy tắc trong giao thức Distance Vector. Quy tắc này nói rằng “không được phép gửi lại thông tin định tuyến theo hướng mà nó đã nhận”. Điều này có nghĩa là giao thức định tuyến phải xác định được interface nào đã nhận thông tin về route nào đó và không gửi lại thông tin về route đó qua interface đã xác định.

Split Horizon

Ví dụ trên cho thấy các bước của Split Horizon:

  1. R1 gửi thông tin cập nhật cho R2.
  2. R2 gửi lại thông tin cho R1.
  3. Port fa0/1 của R2 bị ngắt kết nối.
  4. R2 loại bỏ thông tin về mạng 172.30.22.0/24 trong bảng định tuyến.
  5. R2 gửi thông tin cập nhật về mạng 172.30.22.0/24 với metric là “vô cực”.
  6. R1 cập nhật thông tin về route 172.30.22.0/24, tạm thời giữ lại trong bảng định tuyến và đợi xử lý sau.
  7. R1 tiếp tục gửi thông tin cập nhật cho R2 nhưng không bao gồm thông tin về route 172.30.22.0/24 do áp dụng Split Horizon.

Poison Reverse và Triggered Update

Poison Reverse và Triggered Update là hai cách khác nhau để ngăn ngừa routing loop trong giao thức DV. Cả hai cách này đều cố gắng thông báo về việc route nào đó bị ngắt kết nối trong thời gian ngắn nhất có thể.

Triggered Update: Khi một route bị ngắt kết nối, router không cần đợi cho tới lần cập nhật tiếp theo, mà sẽ ngay lập tức gửi một thông tin cập nhật liệt kê các route bị “poisoned” (biến đổi).

Poison Reverse: Khi nhận được thông tin về một route bị ngắt kết nối, router sẽ gửi lại một route đã bị “poisoned” (biến đổi).

Poison Reverse and Triggered Update

Trong ví dụ này, ta thấy một cách tiếp cận đầy tưởng tượng về hai phương pháp này:

  1. Port fa0/1 của R2 bị ngắt kết nối.
  2. R2 ngay lập tức gửi thông tin cập nhật về thành phần bị thay đổi, tức là thông tin về route đến mạng 172.30.22.0/24 đã bị “poisoned”.
  3. R1 cũng ngay lập tức gửi lại cho R2 thông tin về route đó, cũng bị “poisoned”. Đây được gọi là reverse poison.
  4. Trong lần cập nhật định kỳ tiếp theo, R2 sẽ gửi tất cả thông tin về bảng định tuyến, nhưng thông tin trong đó đã bị “poisoned” theo tình hình hiện tại.
  5. Tương tự, R1 cũng sẽ gửi một thông tin đúng về tình hình mạng trong lần cập nhật tiếp theo.

Holddowns

Holddowns là quá trình giữ lại một route được cho là đã ngắt kết nối trong một khoảng thời gian để router có thể chắc chắn rằng route này thực sự đã ngắt kết nối. Quá trình holddowns giúp router loại bỏ toàn bộ thông tin về route được xem là đã ngắt kết nối trong một khoảng thời gian gọi là “holddown timer”. Các thông tin từ router khác về route này chỉ được chấp nhận sau khi khoảng thời gian holddown kết thúc.

Holddowns

Trong ví dụ này, chúng ta thấy một ví dụ về Holddowns:

  1. Port fa0/1 của R2 bị ngắt kết nối.
  2. Ngay lập tức, R2 thông báo thông tin mới này đến các router láng giềng về route bị ngắt kết nối và “poison” nó.
  3. R3 nhận thông tin “poisoned” từ R2, R3 sẽ thêm route này với metric là 16. Đồng thời, R3 bắt đầu đếm một khoảng thời gian – holddown timer dành cho route này (mặc định là 180 giây cho RIP).
  4. Giả sử trước khi bước 2 xảy ra, R1 đã gửi một thông tin về route 172.30.22.0/24 đến R3 với metric là 2 như bình thường.
  5. R1 nhận thông tin cập nhật từ R2 và đặt route này vào bảng định tuyến với metric là 16.
  6. R3 nhận thông tin cập nhật từ R1 (bước 4) rằng vẫn có thể đến 172.30.22.0/24 với metric là 2. Tuy nhiên, vì thông tin này không đến từ R2 – nơi đầu tiên thông báo việc route bị ngắt kết nối cho R3, nên R3 sẽ loại bỏ thông tin mới này.

Cuối cùng, mỗi router có bảng định tuyến chứa thông tin chính xác, tránh hiện tượng routing loop.

Để biết thêm thông tin và tư vấn về các vấn đề liên quan đến viễn thông, truy cập Cộng đồng Viễn Thông A Việt Nam.

Tagged in :

Đặng Lê Nam Avatar

Leave a Reply

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