DISTANCE VECTOR PROTOCOL: RIP & IGRP Tác giả: Đặng Quang Minh DISTANCE VECTOR PROTOCOL: RIP & IGRP Tổng quan về giao thức định tuyến Một giao thức là một tập hợp các qui tắc trong đó xác định một đối tượng nào đó sẽ hoạt động như thế nào. Một giao thức định tuyến là một tập hợp các qui tắc mô tả một giao thức lớp 3 sẽ gửi các cập nhật cho nhau về các mạng hiện có. Nếu có nhiều đường đi đến một mạng cùng tồn tại, giao thức định tuyến cũng sẽ xác định đường đi tốt nhất được dùng. Khi các thiết bị có chung một hiểu biết về mạng đó, các thiết bị sẽ bắt đầu route trên đường đi tốt nhất. Các giao thức định tuyến hoạt động như thế nào? Có ba bước cơ bản liên quan trong quá trình xây dựng, duy trì và sử dụng bảng định tuyến: - Các giao thức định tuyến gửi các thông tin cập nhật về routes hoặc về network bên trong AS, chẳng hạn như RIPv1, IGRP và EIGRP và giữa các AS như BGP4 [border gateway protocol] - Bảng định tuyến nhận các cập nhật từ các giao thức định tuyến và cung cấp các thông tin theo yêu cầu - Quá trình chuyển gói xác định đường đi nào cần chọn lựa từ bảng định tuyến để chuyển một gói tin đi. Hoạt động của các giao thức Distance Vector Các giao thức distance vector gửi định kỳ các cập nhật về các mạng mà quá trình định tuyến đã tìm thấy và đưa vào bảng định tuyến. Các cập nhật được gửi trực tiếp vào các router láng giềng kết nối trực tiếp. Địa chỉ đích của các routing update là 255.255.255.255 (địa chỉ broadcast), có nghĩa là tất cả các router trên phân đoạn mạng đó sẽ nghe được các update. Các cập nhật sẽ gửi ra định kỳ sau khi một khoảng thời gian bị hết. Khoảng thời gian timer này sẽ được reset ngay lập tức sau khi router gửi một cập nhật. Như vậy giao thức định tuyến distance vector sẽ gửi ra toàn bộ bảng định tuyến đến các láng giềng của nó, thiết lập một đồng hồ thời gian và sau một khoảng thời gian xác định trước (30 giây đối với RIP v.1) sẽ gửi ra toàn bộ bảng định tuyến một lần nữa. Sau khi nhận được bảng định tuyến của router láng giềng, router sẽ cập nhật bảng định tuyến của nó và thay đổi bảng định tuyến theo các cập nhật mà nó nhận được. Do router sẽ tiếp tục truyền những thông tin mà nó nghe được từ router láng giềng, các giao thức định tuyến nhóm distance vector được gọi là “định tuyến theo tin đồn”. RIP là giao thức định tuyến dạng classful, nghĩa là không chứa thông tin subnet mask trong các cập nhật định tuyến. Do đó, RIP không hỗ trợ VLSM và mạng không liên tục (discontiguos network). RIP có hai phiên bản là RIPv1 và RIPv2, sử dụng metric là hop count với giới hạn là 15 hop. RIPv1 là giao thức định tuyến dạng classful, không hỗ trợ VLSM. RIPv2 là giao thức định tuyến dạng classless, có hỗ trợ VLSM, route summarization và xác thực. Hoạt động của RIP: Routing Information Protocol version 1 (RIPv1) là một giao thức đơn giản và vì vậy hoạt động hiệu quả trong những mạng nhỏ ít có những thay đổi. RIP là giao thức đầu tiên trong nhóm distance vector và trở thành một chuẩn mở cho các nhà quản trị mạng. Router RIP sẽ gửi bảng định tuyến để cập nhật thông tin sau khoảng thời gian trung bình là 30 giây (update timer), địa chỉ đích của thông tin cập nhật này là 255.255.255.255 (all-hosts broadcast). Thời gian route tồn tại trong bảng định tuyến khi không có cập nhật mới là 180 giây (invalid timer/timeout/expiration timer). Trong vòng 180 giây mà không nhận được thông tin cập nhật thì hop count của route sẽ mang giá trị 16, mặc dù route là unreachable nhưng route vẫn được dùng để chuyển tiếp gói. Router sẽ không nhận bất cứ cập nhật mới của route này trong khoảng thời gian 180 giây (holddown timer). Khoảng thời gian router phải chờ trước khi xoá route ra khỏi bảng định tuyến là 240 giây (flush timer/garbage collection timer). Tức là 240 giây nó tự động xóa route Metric của RIP Giao thức định tuyến RIP sử dụng metric là hop count mang giá trị từ 1 đến 15. Tuyến đường (route) có metric là 16 được định nghĩa là vô hạn (infinity), nghĩa là tuyến đó không đến được (unreachable). Count to infinity Một router A nghe các thông tin về các mạng từ các láng giềng B và C và cập nhật bảng định tuyến với các mạng mới. Bảng định tuyến sau đó sẽ được gửi tới tất cả các láng giềng (B và C). Tuy nhiên, nếu láng giềng B được gửi thông tin về network mà chính router B là nguồn gốc của network này, sự nhầm lẫn có thể xảy ra. Vấn đề này còn gọi là routing loop. Vấn đề xảy ra khi đường đi đến một mạng bị down và mỗi router có thể tin rằng có một đường đi khác về router láng giềng của bó. Mỗi router thường tăng giá trị hop count trước khi nó gửi update. Khi giá trị hop count đạt đến giá trị 16, thông tin về network đó sẽ được xem là unreachable, bởi vì giá trị của RIPv1 sẽ không vượt quá con số 15. Đây còn được gọi là count-to-infinity, trong đó giá trị bất định là bằng 16. Split Horizon Split horizon là một kỹ thuật dùng để tránh lặp trong quá trình cập nhật định tuyến. Với split horizon khi tuyến học được từ một cổng giao tiếp thì tuyến đó sẽ không quảng cáo lại trên cổng giao tiếp đó. Ví dụ ở hình 2-1: Hình 2-1 R o u t e r 1 R o u t e r 2 N e t w o r k X Router 1 nhận thông tin về mạng X với metric là 1 từ router 2. Khi split horizon được kích hoạt trên router 1, thông tin về mạng X sẽ không quảng cáo ngược lại về router 2. Nếu không kích hoạt split horizon, router 1 sẽ quảng cáo mạng X cho router 2 với metric là 2. Nếu mạng X bị sự cố, router 2 sẽ học tuyến đường đến mạng X qua router 1 và sẽ tạo ra lỗ hổng (black hole). Split Horizon with Poison Reverse Đây là một kỹ thuật khác được dùng để tránh lặp. Với poison reverse, tuyến đường học được từ cổng giao tiếp sẽ được quảng cáo ngược lại cổng giao tiếp đó nhưng được đánh dấu với metric là 16 (unreachable). Ví dụ ở hình 2-2 Hình 2-2 R o u t e r 1 R o u t e r 2 N e t w o r k X Router 1 nhận thông tin về mạng X với metric là 1 từ router 2. Khi sử dụng kỹ thuật split horizon with poison reverse, router 1 sẽ quảng cáo mạng X với metric là 16 ngược trở về router 2. Bình thường kỹ thuật này không được dùng (vì nó có khuynh hướng làm tăng kích thước bảng định tuyến) mà chỉ được dùng khi mạng gặp sự cố (link failure occurs). Holddown Sau khi quyết định rằng một địa chỉ mạng trong bảng định tuyến là không còn hợp lệ, quá trình định tuyến sẽ chờ trong khoảng thời gian 3 lần thời gian gửi routing update trước khi nó bắt đầu quá trình định tuyến với một đường đi cho metric tồi hơn. Triggered updates Ngay khi một quá trình định tuyến thay đổi metric cho một địa chỉ mạng nào đó trong bảng định tuyến của nó, nó sẽ gửi một cập nhật với giá trị metric đến một giá trị không dùng được. Giá trị này thường là bằng 16. Trigger update thông báo cho các router khác ngay lập tức. Nếu có một vấn đề xảy ra, tất cả các router bị ành hưởng sẽ đi vào trạng thái holdown ngay lập tức thay vì chờ một khoảng thời gian định kỳ. Cơ chế này giúp giảm thời gian hội tụ và giúp ngăn ngừa routing loop. Load balancing Nếu một giao thức định tuyến tìm thấy nhiều đường đi có chi phí bằng nhau, nó sẽ phân phối các gói bằng nhau giữa các đường đi. Các gói dữ liệu sẽ được phân phốI theo kiểu round-robin. Kiểu switching được dùng bên trong router (process switching hay fast switching) sẽ xác định là quá trình cân bằng tải sẽ thực hiện theo kiểu round-robin hay là theo kiều session. Cân bằng tải theo kiểu round- robin sẽ được dùng khi cơ chế process switching được dùng. Nguyên tắc gửi và nhận thông tin cập nhật định tuyến Xét ví dụ như hình dưới, 2 router sử dụng giao thức định tuyến RIP, mạng 131.108.0.0 kết nối router 1 và router 2. Hình 2-3 R o u t e r 1 R o u t e r 2 1 3 1 . 1 0 8 . 2 . 0 / 2 4 S 0 1 3 1 . 1 0 3 . 5 . 0 / 2 4 S 0 . 2 . 1 . 1 1 3 1 . 1 0 8 . 3 . 0 / 2 41 3 7 . 9 9 . 8 8 . 0 / 2 4 . 2 . 2 Các bước thực hiện khi Router 1 gửi cập nhật định tuyến cho Router 2 1. Kiểm tra xem mạng 131.108.5.0/24 có cùng mạng chính (major network, có lẽ mạng chính là lớp B) với mạng 131.108.2.0/24 hay không? 2. Có. Kiểm tra tiếp mạng 131.108.5.0/24 có cùng subnet mask với mạng 131.108.2.0/24 hay không? 3. Có. Router 1 tiến hành quảng cáo mạng này. 4. Kiểm tra xem mạng 137.99.88.0/24 có cùng mạng chính (major network) với mạng 131.108.2.0/24 hay không? 5. Không. Router 1 tiến hành tóm tắt mạng 137.99.88.0/24 thành mạng 137.99.0.0 và quảng cáo mạng này đến router 2. Như vậy Router 1 sẽ gửi đến Router 2 mạng 131.108.5.0 và 137.99.0.0. Khi sử dụng lệnh debug ip rip trên router 1, kết quả sẽ như sau: Router1#debug ip rip RIP: sending v1 update to 255.255.255.255 via Serial0 (131.108.2.2) subnet 131.108.5.0, metric 1 network 137.99.0.0, metric 1 Các bước kiểm tra khi router 2 tiến hành cập nhật định tuyến R o u t e r 1 R o u t e r 2 1 3 1 . 1 0 8 . 2 . 0 / 2 4 S 0 1 3 1 . 1 0 3 . 5 . 0 / 2 4 S 0 . 2 . 1 . 1 1 3 1 . 1 0 8 . 3 . 0 / 2 41 3 7 . 9 9 . 8 8 . 0 / 2 4 . 2 . 2 1. Kiểm tra xem mạng 137.99.0.0 có cùng mạng chính (major network) với mạng 131.108.2.0/24 hay không? 2. Không. Kiểm tra xem trong bảng định tuyến có tồn tại mạng con của mạng 137.99.0.0 hay không? 3. Không. Router 2 áp dụng subnet mask /16 cho mạng 137.99.0.0. 4. Kiểm tra xem mạng 131.108.5.0 có cùng mạng chính (major network) với mạng 131.108.2.0/24 hay không? 5. Có. Router 2 tiến hành áp dụng subnet mask /24 cho mạng 131.108.5.0 (mask này là mask của cổng giao tiếp nhận thông tin định tuyến). Như vậy router 2 sẽ nhận được 2 mạng đến router 1 là mạng 131.108.5.0/24 và 137.99.0.0/16. Khi sử dụng lệnh debug ip rip trên Router 2, kết quả sẽ như sau: Router2#debug ip rip RIP: received v1 update from 131.108.2.2 on Serial0 131.108.5.0 in 1 hops 137.99.0.0 in 1 hops Xem bảng định tuyến trên Router 2 kết quả sẽ như sau: Router2#show ip route R 137.99.0.0/16 [120/1] via 131.108.2.2, 00:00:07, Serial0 131.108.0.0/24 is subnetted, 3 subnets [mạng 108.5, .2, .3] R 131.108.5.0 [120/1] via 131.108.2.2, 00:00:08, Serial0 C 131.108.2.0 is directly connected, Serial0 C 131.108.3.0 is directly connected, Ethernet0 RIP không hỗ trợ discontigous network Mạng không liên tục là một major network bị phân cách bởi một major network khác. Ví dụ mạng 131.108.0.0 bị ngăn cách bởi mạng 137.99.0.0 như hình 2-4: Hình 2-4 1 3 1 . 1 0 8 . 2 . 0 / 2 4 R o u t e r 1 R o u t e r 2 1 3 7 . 9 9 . 8 8 . 0 / 2 4 . 1 1 3 1 . 1 0 8 . 5 . 0 / 2 4 . 2 . 1. 2 RIP là giao thức dạng classful, khi RIP quảng cáo một mạng đi qua một major network khác thì sẽ tiến hành tóm tắt mạng đó về major network. Ví dụ router 1 gửi cập nhật chứa mạng 131.108.5.0 đến router 2 thông qua mạng 137.99.88.0, mạng 131.108.5.0 sẽ được tóm tắt thành mạng 131.108.0.0/16. Tiến trình này được gọi là autosummarization. Trước khi gửi cập nhật định tuyến cho router 2, router 1 thực hiện các bước sau: 1. Kiểm tra xem mạng 131.108.5.0/24 có cùng major network với mạng 137.99.88.0/24 hay không? 2. Không. Router 1 tóm tắt mạng 131.108.5.0/24 thành mạng 131.108.0.0/16 và tiến hành quảng cáo mạng này. Khi sử dụng lệnh debug ip rip trên router 1, kết quả sẽ như sau: Router1#debug ip rip RIP: sending v1 update to 255.255.255.255 via Serial0 (137.99.88.2) network 131.108.0.0, metric 1 Router 2 thực hiện kiểm tra các cập nhật định tuyến qua các bước sau: 1. Kiểm tra xem mạng nhận được (131.108.0.0) có cùng major network với mạng 137.99.88.0/24 hay không? 2. Không. Kiểm tra trong bảng định tuyến xem có mạng con nào có cùng major network với mạng 131.108.0.0 hay không? 3. Có. Router 2 tiến hành loại bỏ cập nhật định tuyến. Khi sử dụng lệnh debug ip rip trên router 2, kết quả như sau: Router2#debug ip rip RIP: received v1 update from 137.99.88.1 on Serial0 131.108.0.0 in 1 hops Xem bảng định tuyến trên router 2 bằng lệnh show ip route kết quả như sau: Router2#show ip route 137.99.0.0/24 is subnetted, 1 subnets C 137.99.88.0 is directly connected, Serial0 131.108.0.0/24 is subnetted, 3 subnets C 131.108.2.0 is directly connected, Ethernet0 Có nhiều cách để giải quyết vấn đề này, cách cơ bản nhất là dùng định tuyến tĩnh như sau: Router1(config)#ip route 131.108.2.0 255.255.255.0 137.99.88.1 Router2(config)#ip route 131.108.5.0 255.255.255.0 137.99.88.2 RIP không hỗ trợ VLSM Xét ví dụ như hình 2-5, 2 router sử dụng giao thức định tuyến RIP, mạng 131.108.0.0 kết nối router 1 và router 2. Hình 2-5 R o u t e r 1 R o u t e r 2 1 3 1 . 1 0 8 . 6 . 0 / 3 0 S 0 1 3 1 . 1 0 3 . 7 . 0 / 3 0 S 0 . 2 . 1 . 1 1 3 1 . 1 0 8 . 2 . 0 / 3 01 3 1 . 1 0 8 . 5 . 0 / 2 4 . 2 . 2 Các bước thực hiện khi Router 1 gửi cập nhật định tuyến cho Router 2 1. Router 1 kiểm tra xem mạng 131.108.5.0/24 có cùng mạng chính (major network) với mạng 131.108.6.0/30 hay không? 2. Có. Kiểm tra tiếp mạng 131.108.5.0/24 có cùng subnet mask với mạng 131.108.6.0/30 hay không? 3. Không. Router 1 tiến hành loại bỏ và không quảng cáo mạng này. 4. Router 1 kiểm tra xem mạng 131.108.7.0/30 có cùng mạng chính (major network) với mạng 131.108.6.0/30 hay không? 5. Có. Kiểm tra tiếp mạng 131.108.7.0/30 có cùng subnet mask với mạng 131.108.6.0/30 hay không? 6. Có. Router 1 tiến hành quảng cáo mạng này. Khi sử dụng lệnh debug ip rip trên router 1, kết quả như sau: RIP: sending v1 update to 255.255.255.255 via Serial0 (131.108.6.2) subnet 131.108.7.0, metric 1 Xem bảng định tuyến trên router 2 bằng lệnh show ip route kết quả như sau: Router2#show ip route 131.108.0.0/30 is subnetted, 3 subnets R 131.108.7.0 [120/1] via 131.108.2.2, 00:00:08, Serial0 C 131.108.6.0 is directly connected, Serial0 C 131.108.2.0 is directly connected, Ethernet0 Ta thấy rằng chỉ có mạng 131.108.7.0 được quảng cáo. Để khắc phục, trong mạng RIP nên sử dụng cùng chung subnet mask hoặc sử dụng cách cơ bản nhất là dùng định tuyến tĩnh để định tuyến. RIP và default route RIP hỗ trợ default route, nghĩa là cho phép quảng bá mạng 0.0.0.0/0. Khi RIP . DISTANCE VECTOR PROTOCOL: RIP & IGRP Tác giả: Đặng Quang Minh DISTANCE VECTOR PROTOCOL: RIP & IGRP Tổng quan về giao thức định tuyến Một. lựa từ bảng định tuyến để chuyển một gói tin đi. Hoạt động của các giao thức Distance Vector Các giao thức distance vector gửi định kỳ các cập nhật về các mạng mà quá trình định tuyến đã tìm. Information Protocol version 1 (RIPv1) là một giao thức đơn giản và vì vậy hoạt động hiệu quả trong những mạng nhỏ ít có những thay đổi. RIP là giao thức đầu tiên trong nhóm distance vector và