RIP的基本概念
- RIP (Routing Information Protocol,路由信息协议)是最典型的距离矢量路由协议,常被用于在小型的网络中交互路由信息,
- 它是最先得到广泛使用的IGP协议,由于其工作机制相对简单,因此一直以来都作为数通领域入门动态路由技术的协议被大家所熟知。
- 目前RIP存在三个版本,分别是面向IPv4的RIPv1和RIPv2,以及面向IPv6的RIPng。
RIP路由更新及接收
- 每台RIP路由器都维护着一个RIP数据库(Database),在该数据库中保存着路由器发现的所有RIP路由,其中包括自己发现的直连路由以及从其他路由器“学习”到的路由。
- 在RIP数据库中的每个路由条目都包含如下元素:
(1)目的网络地址/网络掩码
(2)度量值
(3)下一跳地址
(4)老化计时器以及路由状态标识等信息。 - RIP数据库中的有效路由条目会被加载到路由器的路由表中。
- 每台运行RIP的路由器周期性地将自己的路由表通告出去,当路由器收到RIP路由更新时,如果这些路由是自己并未发现的并且是有效的,则将其加载到路由表,同时设置路由的度量值和下一跳地址。
示例
如下图所示的网络拓扑中,R1, R2和R3三台路由器直连,图中每台设备的路由表显示了路由的目的网络地址/网络掩码、协议类型、度量值及出接口。现在在这三台路由器上激活RIP并观察路由的交互过程。
(1)路由器初始启动
- 在初始情况下,所有的路由器都能自动发现自己的直连路由,并且将直连路由写入路由表。
- 以R1为例,它在其路由表中加载了192.168.12.0/24及1.0.0.0/8两条直连路由。
- RIP将直连路由的度量值视为0跳(因为该直连网段就在“家门口”),所谓的“0跳”指的是对于本设备而言,到达该目的网段不需要经过任何一台路由器。
(2)初次交换路由信息
- 由于R1, R2及R3都运行了RIP,因此它们都将自己路由表中的路由通过RIP协议报文周期性地从所有激活了RIP的接口通告出去(RIPv1使用广播地址作为协议报文的目的IP地址,RIPv2则使用组播地址)。
- 就R2而言,它会将自己的路由表从GE0/0/0和GE0/0/1接口通告出去。
- 以192.168.23.0/24路由为例,R2会将关于该路由的更新从GE0/0/0接口通告给R1,它将该路由的度量值设置为1跳(0跳加1跳,也就是加上“自己这一跳”),RIP路由器将自己路由表中的路由通告出去时将跳数加1,而收到该路由更新的RIP路由器将路由安装到自己路由表时则使用这个度量值。
- R1收到R2所通告的路由更新后发现192.168.23.0/24路由在其路由表中并不存在,于是将该路由“学习”过来,加载到路由表中,将路由的度量值设置为1跳(因为自己要到达192.168.23.0/24,需要经过R2这一个RIP路由器),此外还将该路由的下一跳设置为路由的更新源R2(它从路由更新报文的源地址获得R2的IP地址),出接口设置为GE0/0/0 。
- R3也会在自己的GE0/0/0接口上收到R2通告的路由更新,并学习到路由192.168.12.0/24,它将该条RIP路由加载到路由表中,并将路由的下一跳设置为R2,出接口设置为GE0/0/0,度量值设置为1。
- 同理,R2会在自己的GE0/0/0接口上收到R1通告的路由更新,在GE0/0/1接口上收到R3通告的路由更新,并最终学习到1.0.0.0/8、3.0.0.0/8路由。
经过这一轮路由通告及学习,R1能够学习到192.168.23.0/24路由,R2能够学习到1.0.0.0/8及3.0.0.0/8两条路由,而R3能够学习到192.168.12.0/24路由,如下图所示:
(3)路由完成收敛阶段
-
由于运行RIP的路由器会周期性地将自己的路由表通告出去,因此在下一个更新周期到来时,所有路由器再次将自己的路由表通告出去。
-
R1收到R2通告的路由后发现路由3.0.0.0/8在路由表中并不存在,因此将该条路由学习过来,加载到路由表并关联度量值:2跳(因为R1要到达3.0.0.0/8需要经过两个路由器R2、R3)。
-
同理,另一边的R3也能够从R2学习到1.0.0.0/8路由。
-
如此一来,三台路由器都拥有了到达全网各个网段的路由,如图下图所示,而且设备的路由表此时已经稳定,这个阶段被称为“网络中的路由已经完成了收敛”。
-
虽然网络中路由器的路由表已经稳定,但它们依然会周期性地将自己的路由表通过RIP通告出去,以确保路由的有效性(动态路由存在生命周期,需要不断刷新老化定时器保证路由不被老化)。