Các giải pháp chống LOOP trong distance vector Tác giả: Đặng Quang Minh CƠ CHẾ HOẠT ĐỘNG CỦA CÁC GIẢI PHÁP NHẰM TRÁNH "LOOP" TRONG GIẢI THUẬT DISTANCE VECTOR I. Routing Loop là gì? Trước khi network 1 bị down thì thì tất cả router đều xem đường route tới network là tốt. Router C nhận định rằng muốn tới network 1 thì fải qua router B với metric là 3 (ví dụ ta chạy RIP). Khi network 1 bị down xuống thì router E mới gửi 1 bản update tới A là: N1 down rồi nhưng router B, C, D không biết. Nhưng B và D có thể nhận biết được N1 down 1 cách nhanh chóng vì nó connect trực tiếp tới A nên nhận update nhanh hơn. Tuy nhiên do C không nhận được update là N1 down nến vẫn gửi 1 bản update tới B và D là đường tới N1 vẫn tồn tại. Và như thế B và D update lại bản routing table của mình là N1 vẫn tốt. Muốn đến N1 hãy đi qua C. Như thế là sai và quá trình này cứ lặp đi lặp lại (vì A sẽ gửi lại 1 update nói với B và D rằng la N1 vẫn good) ===> routing loop Nguyên nhân: B và D có thể nhận được update từ A còn C thì không , bởi vì 1 "HÔI TỤ CHẬM" ( SLOW CONVERGENCE) Vậy convergence là gì : sau khi topology change thì tất cả router cần 1 time để tính toán lại các đường route của mình, và quá trình và thời gian đó gọi là TIME TO CONVERGENCE II. CÁC GIẢI PHÁP ĐỂ TRÁNH LOOP 1. SPLIT HORIZON: Router B và D nhận update về N1(down) sẽ không gửi lại update về N1 (up, sau khi nhận được từ C) tới cho router A. Split horizon được sử dụng để đảm bảo rằng thông tin về một route do một router phát ra không quay lại chính nó. Ví dụ, khi network 1 chưa down, router E gửi thông tin update đến router A. Router A sẽ không gửi lại thông tin update đến N1 quay lại E vì nếu làm như thế, đương nhiên E sẽ không dùng thông tin đó ==> lãng phí. Còn trong trường hợp route bị poison ==> Do có Split horizon, thông tin về route đến N1 không bị lặp đi lặp lại trên link giữa A và E (count-to-infinite) Split horizon with Poison reverse : Bình thường, A không gửi lại cho E thông tin về route đến N1. Nhưng khi A nhận được bản tin update nói rằng route đến N1 là unreachable > A gửi lại cho E thông tin về route đến N1 với metric là infinite. 2. HOLD DOWN TIMER : Khi router nhận được thông tin về một route là unreachable, router sẽ đánh dấu route đó và đặt nó vào trạng thái hold-down (Router đặt bộ định thời = thời gian hold-down). Trong thời gian hold-down, router vẫn tiếp tục dùng route đó để forward gói tin, nhưng sẽ bỏ qua tất cả các thông tin về route với thông số metric bằng hoăc xấu hơn metric router đang có về route đó . Hold-down timer bị reset khi thời gian hold-down đã hết, hoặc router nhận được thông tin về route với metric tốt hơn metric nó đang giữ. Ví dụ: Khi A nhận được thông tin route đến N1 bị down, hold-down timer cho route đó được thiết lập. Tương tự với B, D. Do đó khi D nhận được update từ C, vì metric mà C gửi lớn hơn (xấu hơn) metric D đang có về route N1 nên D bỏ qua ==> Không còn loop 3. POSION REVERSE UPDATE : Là bản update đặc biệt được gửi từ router connect với 1 network down tới các router neighbor của mình ( khong bao gồm router có network bị down ) rằng đường route tới network đó là infinity.[ ở đây là Router E sẽ gửi đến các neighbor là A] Khi một router phát hiện ra một route R bị down (router không nhận được bản tin update từ router neighbor mà từ đó nó học được route R), router sẽ đặt giá trị metric của route R bằng giá trị không xác định (infinite) và gửi đi trong bản tin cập nhật định tuyến để thông báo với các router trên mạng rằng route R unreachable. Trong hình vẽ, router E không nhận được thông tin về route đến N1, nó đặt metric của route đến N1 là infinite rồi gửi đi trong bản tin định tuyến. Đồng thờ, E hủy bỏ route đến N1 trong bảng định tuyến của nó. 4. TRIGGER UPDATE: Trigger updates là bản update được gửi ngay khi có route bị fail, không cần chờ đến thời gian định kỳ để gửi update. Bài viết này mô tả các phương pháp chống loop trong môi trường Distance vector network . Trong phần này ta sẽ khảo sát các kĩ thuật sau đây : • Counting to infinity • Using holddown • Using split horizon and poison reverse • Using triggered updates Trước hết ta hãy tìm hiểu xem thế nào là hiện tượng loop và tại sao lại xảy ra loop ? Bản chất của giao thức distance vector là quảng bá broadcast có định kì toàn bộ bảng định tuyến ra khỏi các interface cho các router neighbor ( interface đã enable giao thức định tuyến ) . Khi một router quảng bá tất cả các route mà nó biết cho neighor thì cũng có nghĩa là những route được học từ neighbor trước đó cũng sẽ được quảng bá ngược lại cho neighbor đó . Khi có 1 route bị fail , sẽ có 2 router là next hop của nhau khi đi đến một network . Đây chính là hiện tượng Routing loop . Cụ thể hơn , ta hãy xem ví dụ sau : Ba router RT1 , RT2 , RT3 được kết nối theo dạng đường thẳng như hình vẽ .Các router dùng metric là hop-count . Router RT3 quảng bá Dest 3 cho RT2 , RT2 lại quảng bá Dest3 cho RT1 biết . RT2 có metric đến Dest3 là 1 . RT1 có metric đến Dest3 là 2 . Do cả 3 router đều chạy giao thức distance vector nên RT1 sẽ quảng bá thông tin về Dest3 cho RT2 với metric là 2 . Router RT2 cộng thêm vào giá trị này thêm 1 đơn vị , RT2 thấy rằng nó có thể đến Dest3 qua 3 hops . Tuy nhiên , thông tin này không có giá trị bằng thông tin mà nó đang lưu trong Routing table ( metric đến Dest3 bằng 1 ) . RT2 sẽ bỏ qua thông tin này . Mạng đang chạy ổn định cho đến khi kết nối giữa RT2 và RT3 bị down . Router RT2 nhận thấy đường đi đến Dest3 không còn nữa , nhưng nó phải đợi đến thời gian update định kì mới gửi thông tin này cho RT1 biết được . Trong khi router RT2 chưa gửi kịp thông tin , thì tại Router RT1 thời gian update định kì đã đến , nó tiếp tục broadcast thông tin định tuyến cho RT2 biết rằng : Dest3 có thể đến được với metric là 2 . Router RT2 apply ngay thông tin này , Router RT2 nghĩ rằng Dest 3 đã up trở lại và có thể đến được thông qua Router RT1 với metric là 3 . Trong khi đó Router RT1 lại có next hop là RT2 . Như vậy hiện tượng Routing loop đã xảy ra giữa 2 router RT1 và RT2 . Một packet gửi cho Dest 3 sẽ bị loop giữa RT1 và RT2 , nó chỉ bị drop khi TTL = 0 . Để giải quyêt vấn đề Routing loop trong distance vector , kĩ thuật đầu tiên cần dùng là Count-to-infinity . Hop count được tăng lên liên tục giữa 2 router RT1 và RT2 . Người ta định nghĩa ra một giá trị là Infinity . Nghĩa là khi hop count của một route được tăng lên đến giá trị này , route đó sẽ bị coi là unreachable và remove ra khỏi bảng định tuyến . Với giao thức RIP thì giá trị Infinity là 16 . Kĩ thuật thứ 2 được dùng là Holddown timer . Kĩ thuật này được phát biểu như sau : Khi một router nhận được update từ neighbor báo rằng có một network lúc trước accessible thì bây giờ đã inaccessible , Router lập tức đánh dấu network đó là inaccessible và bật holddown timer lên . Trong khoảng thời gian holddown , router sẽ không nhận bất kì một update nào thông báo rằng network đó đã access trở lại với metric cao hơn metric hiện tại đến network đó . Khoảng thời gian holddown này sẽ đủ cho thông tin về network bị down được lan truyền đến toàn bộ router trong mạng biết . Thời gian holddown chỉ bị remove đi khi một trong 2 khả năng sau xảy ra : - Router được cùng neighbor đó báo rằng network đã access trở lại - Router nhận được thông tin network đó access trở lại thông qua một neighbor khác , nhưng metric này thấp hơn metric hiện tại . Với ví dụ trên , Router RT2 khi nhận biết Dest3 là inaccessible , nó sẽ start holddown timer lên . Khi thời gian holddown đang còn có hiệu lực , RT2 sẽ không nhận update từ RT1 báo rằng Dest3 là accessible với metric là 3 . Metric này cao hơn metric hiện tại của RT2 ( đến Dest3 với metric = 1 ) . Trong khoảng thời gian chờ đợi và hi vọng rằng Dest3 down thì đủ để RT1 nhận biết được Dest3 đã bị down . Sau khi holddown hết hạn , Dest3 sẽ không còn được dùng đến và remove ra khỏi Routing table . Kĩ thuật thứ 3 là Split horizon with Poison reverse . Trước hết ta hãy tìm hiểu về 2 version khác nhau của Split horizon là : Simple Split Horizon và Split horizon with Poison Reverse . . Các giải pháp chống LOOP trong distance vector Tác giả: Đặng Quang Minh CƠ CHẾ HOẠT ĐỘNG CỦA CÁC GIẢI PHÁP NHẰM TRÁNH " ;LOOP& quot; TRONG GIẢI THUẬT DISTANCE VECTOR I. Routing Loop. gian định kỳ để gửi update. Bài viết này mô tả các phương pháp chống loop trong môi trường Distance vector network . Trong phần này ta sẽ khảo sát các kĩ thuật sau đây : • Counting to infinity •. nào là hiện tượng loop và tại sao lại xảy ra loop ? Bản chất của giao thức distance vector là quảng bá broadcast có định kì toàn bộ bảng định tuyến ra khỏi các interface cho các router neighbor