Sơ lượt và tính chất giao thức
RIP (Routing Information Protocol) là một giao thức định tuyến IGP tiêu biểu thuộc nhóm Distance Vector. Trong mô hình này, mỗi router trong mạng sẽ định kỳ gửi toàn bộ bảng định tuyến của mình cho các router láng giềng (neighbor), mặc định là mỗi 30 giây.
Sau khi nhận được thông tin định tuyến, router láng giềng sẽ tiến hành cập nhật, tính toán lại đường đi và tiếp tục quảng bá thông tin đó cho các router kế cận mà nó kết nối. Đặc điểm của hình thức định tuyến này là mỗi router chỉ biết thông tin về các router kết nối trực tiếp với mình.
RIP sử dụng cơ chế tính metric dựa trên số lượng router cần đi qua để đến mạng đích, gọi là hop-count.
Trong RIP:
- Giá trị metric tối đa là 15.
- Metric bằng 16 được xem là vô hạn (infinite metric), nghĩa là mạng đích không thể truy cập được.
Do giới hạn này, RIP chỉ phù hợp với các mô hình mạng nhỏ có số lượng router nhỏ hơn 16. Nếu số lượng router vượt quá giới hạn trên, RIP sẽ không thể quảng bá tuyến đường đến đích.
RIP là một giao thức chuẩn mở và hoạt động ở tầng 4 của mô hình OSI (Transport Layer), được đóng gói trong các datagram UDP và sử dụng cổng (port) 520.
Trên thiết bị Cisco, RIP có giá trị Administrative Distance (AD) mặc định là 120.
Bảng định tuyến Router
Cơ chế hoạt động của giao thức định tuyến RIP được thể hiện qua việc các router trao đổi thông tin định tuyến với nhau để học các mạng nằm xa.
Khi chưa chạy giao thức định tuyến RIP, bảng định tuyến của mỗi router chỉ chứa các mạng kết nối trực tiếp (Directly Connected Networks). Điều này có nghĩa là router chỉ biết các mạng được kết nối trực tiếp với các cổng của chính nó.
Giá trị metric bằng “0” xuất hiện vì các mạng này được kết nối trực tiếp với router, nên để đi đến các subnet đó không cần phải đi qua bất kỳ router trung gian nào (không có hop-count).
Cơ chế định tuyến
Trong giao thức RIP, các router sẽ định kỳ gửi toàn bộ bảng định tuyến của mình cho các router láng giềng để trao đổi thông tin định tuyến.
Ví dụ:
- R1 sẽ gửi thông tin định tuyến của các subnet mà nó đang học được cho R2.
- Sau khi nhận được thông tin định tuyến từ R1, R2 sẽ kiểm tra bảng định tuyến của mình. Nếu phát hiện subnet
172.16.1.0/24chưa tồn tại trong routing table, R2 sẽ thêm subnet này vào bảng định tuyến và tiếp tục gửi toàn bộ bảng định tuyến của nó cho R3. - Khi R3 nhận được thông tin định tuyến từ R2, nó cũng sẽ kiểm tra và cập nhật các subnet chưa có vào routing table của mình.
Trong bảng định tuyến của R2, route đến mạng 172.16.1.0/24 sẽ được ghi nhận với thông tin như:
- nhận từ cổng
e0/0, - metric bằng
1, nghĩa là phải đi qua một router trung gian để đến được subnet này.
Tương tự:
- Khi R3 gửi bảng định tuyến của nó cho R2, R2 sẽ cập nhật thêm subnet
172.16.3.0/24vào routing table. - Sau đó, R2 tiếp tục gửi toàn bộ bảng định tuyến cho R1.
- Khi R1 nhận được các thông tin định tuyến mới, nó cũng sẽ cập nhật các route chưa có vào bảng định tuyến của mình.
Quá trình này tiếp tục lặp lại giữa các router cho đến khi toàn bộ hệ thống mạng đạt trạng thái hội tụ (convergence).
Khả năng gây loop
Tuy nhiên, với hình thức định tuyến này, các router phải tin tưởng vào thông tin định tuyến do các router láng giềng (neighbor) gửi đến. Điều này dễ dẫn đến hiện tượng routing loop.
Xét trường hợp mạng 172.16.1.0/24 bị mất kết nối:
- Ngay lập tức, R1 sẽ loại bỏ subnet này khỏi bảng định tuyến của nó.
- Tuy nhiên, sau chu kỳ cập nhật mặc định 30 giây, R2 lại gửi bảng định tuyến của mình cho R1.
- Trong bảng định tuyến của R2 vẫn còn tồn tại route đến mạng
172.16.1.0/24. - Khi nhận được thông tin này, R1 kiểm tra routing table và thấy rằng subnet
172.16.1.0/24chưa có trong bảng định tuyến, nên nó sẽ cập nhật lại route này với metric mới.
Sau đó:
- R1 tiếp tục gửi lại thông tin định tuyến về subnet
172.16.1.0/24cho R2 với metric đã thay đổi. - Quá trình này tiếp tục lặp đi lặp lại, tạo thành vòng lặp định tuyến (routing loop).
Ví dụ, nếu gửi gói tin ICMP từ R2 đến mạng 172.16.1.0/24, gói tin có thể bị chuyển tiếp qua lại giữa R2 và R1 mà không bao giờ đến được đích.
Để hạn chế hiện tượng routing loop trong RIP, IEEE đã đưa ra một số cơ chế và quy tắc chống loop nhằm tăng độ ổn định cho hệ thống định tuyến.
Các bộ quy tắc chống loop của RIP
Cơ chế Split Horizon
Luật Split Horizon phát biểu rằng: khi một router học được một route từ một cổng nào đó, nó sẽ không quảng bá ngược lại route đó ra chính cổng mà nó đã nhận thông tin.
Ví dụ:
- Nếu R1 học được subnet
10.0.0.0/24từ một cổng kết nối, thì R1 sẽ không quảng bá ngược subnet này trở lại qua chính cổng đó.
Xét ví dụ trước:
- Khi subnet
172.16.1.0/24của R1 bị down, R2 cũng sẽ không quảng bá route này ngược lại cho R1 theo cơ chế Split Horizon. - Nhờ đó, R1 sẽ không nhận được các thông tin định tuyến sai lệch.
Cơ chế Route Poisoning
Khi một subnet kết nối trực tiếp bị down, router sẽ gửi ngay một gói tin cập nhật (Update Packet) chứa route của subnet đó với metric bằng 16 đến các router láng giềng.
Trong RIP:
- Metric
16được xem là vô cực (infinity metric), nghĩa là mạng đích không thể truy cập được.
Khi các neighbor nhận được bản tin này, chúng sẽ hiểu rằng subnet đó không còn tồn tại và tiếp tục quảng bá thông tin này cho các neighbor khác. Quá trình này giống như cơ chế lan truyền “tin đồn” trong toàn bộ topology mạng nhằm thông báo rằng subnet đã bị mất kết nối.
Khác với cơ chế cập nhật định kỳ 30 giây/lần, các gói Route Poisoning được gửi ngay lập tức khi xảy ra sự cố.
Poison Reverse
Poison Reverse là cơ chế hoạt động kết hợp với Split Horizon nhằm tăng hiệu quả chống loop.
Theo cơ chế này:
- Khi một neighbor nhận được bản tin cập nhật có metric bằng
16, nó sẽ lập tức gửi ngược lại một bản tin phản hồi chứa chính route đó với metric16.
Điều này giúp xác nhận rằng route đã thực sự không còn khả dụng và ngăn chặn các router khác sử dụng lại route sai lệch.
Triggered Update
Hoạt động gửi các bản tin Route Poisoning và Poison Reverse ngay lập tức sau khi có thay đổi trên mạng được gọi là Triggered Update.
Triggered Update chỉ được kích hoạt khi có sự thay đổi trong topology mạng, ví dụ:
- subnet bị down,
- đường truyền bị lỗi,
- hoặc xuất hiện route mới.
Trong khi đó, các gói cập nhật định tuyến thông thường vẫn tiếp tục được gửi theo chu kỳ mặc định của RIP là 30 giây/lần.
Các loại timer trong RIP
Holddown Timer
Holddown Timer là khoảng thời gian router tạm ngừng chấp nhận các thông tin cập nhật mới liên quan đến một route vừa bị mất kết nối. Giá trị mặc định của Holddown Timer là 180 giây.
Khi một route bị down:
- Router sẽ quảng bá cho các neighbor biết rằng route này không còn truy cập được nữa.
- Trong thời gian Holddown, router sẽ không chấp nhận bất kỳ thông tin cập nhật nào về route đó nhằm tránh nhận phải các thông tin định tuyến sai lệch gây ra routing loop.
- Tuy nhiên, nếu router nhận được thông tin cập nhật tốt hơn từ chính neighbor đã cung cấp route ban đầu, nó vẫn có thể cập nhật lại route này.
Trong suốt thời gian Holddown Timer hoạt động, bảng định tuyến sẽ không được thay đổi đối với route đang bị hold.
Update Timer
Update Timer là khoảng thời gian định kỳ mà router chạy RIP gửi các bản tin cập nhật định tuyến đến các router láng giềng trong topology mạng.
- Giá trị mặc định của Update Timer là
30 giây.
Cứ mỗi 30 giây, router sẽ gửi toàn bộ bảng định tuyến của mình cho neighbor.
Invalid Timer
Khi router nhận được thông tin định tuyến về một subnet nào đó, nó sẽ chờ các bản cập nhật tiếp theo theo chu kỳ định kỳ.
Nếu sau khoảng thời gian Invalid Timer mà router vẫn không nhận được bản cập nhật mới cho route đó, router sẽ đánh dấu route là không hợp lệ (invalid).
Tuy nhiên:
- Route này chưa bị xóa ngay khỏi bảng định tuyến.
- Router sẽ đưa route vào trạng thái Holddown.
- Giá trị mặc định của Invalid Timer là
180 giây.
Flush Timer
Flush Timer là khoảng thời gian tối đa mà router giữ một route không còn hợp lệ trong bảng định tuyến.
Nếu sau khoảng thời gian Flush Timer mà router vẫn không nhận được bản cập nhật mới cho subnet đó, route sẽ bị xóa hoàn toàn khỏi routing table.
- Giá trị mặc định của Flush Timer là
240 giây.
Nguồn: ITForVN
