路由器运行RIP后,会优先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应,网络稳定后路由器会周期性的发送路由更新信息。RIP使用跳数作为度量值来衡量到达目标网络的聚类。缺省条件下直连路由跳数为0,当路由器收到其他路由器发送的RIP路由信息时会把跳数加1,。RIP规定超过15跳的网络不可达。
路由器启动时,路由表中只会包含直连路由。运行RIP之后,路由器会发送Request报文,用来请求邻居路由器的RIP路由。运行RIP的邻居路由器收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。路由器在收到Response报文后,会将相应的路由添加到自己的路由表中。
RIP网络稳定以后,每个路由器会周期性地向邻居路由器通告自己的整张路由表中的路由信息,默认周期为30秒。邻居路由器根据收到的路由信息刷新自己的路由表。
t0时段直接产生的路由进入路由表,t1时段所有路由器向他直连的路由器宣告自己的路由表,其他路由器收到路由表后与自己的路由表比较,计算自己没有的路由条目,t2时段重复t1时段的工作,知道所有的路由学习完成。
RIP协议有两个版本RIPv1和RIPv2
RIPv1为有类别路由协议,不支持VLSM和CIDR。 RIPv2为无类别路由协议,支持VLSM,支持路由聚合与CIDR。
RIPv1使用广播发送报文;RIPv2有两种发送方式:广播方式和组播方式,缺省是组播方式。RIPv2的组播地址为224.0.0.9。组播发送报文的好处是在同一网络中那些没有运行RIP的网段可以避免接收RIP的广播报文;另外,组播发送报文还可以使运行RIPv1的网段避免错误地接收和处理RIPv2中带有子网掩码的路由。
RIPv1不支持认证功能,RIPv2支持明文认证和MD5密文认证。
RIP协议通过UDP交换路由信息,端口号为520。RIPv1以广播形式发送路由信息,目的IP地址为广播地255.255.255.255。
报文格式中每个字段的值和作用:
表项 | 释义 |
---|---|
Command | 表示该报文是一个请求报文还是响应报文,只能取1或者2。1表示该报文是请求报文,2表示该报文是响应报文 |
Version | 表示RIP的版本信息。对于RIPv1,该字段的值为1 |
Address Family Identifier(AFI) | 表示地址标识信息,对于IP协议,其值为2 |
IP address | 表示该路由条目的目的IP地址。这一项可以是网络地址、主机地址 |
Metric | 标识该路由条目的度量值,取值范围1-16 |
一个RIP路由更新消息中最多可包含25条路由表项,每个路由表项都携带了目的网络的地址和度量值。整个RIP报文大小限制为不超过504字节。如果整个路由表的更新消息超过该大小,需要发送多个RIPv1报文
RIPv2在RIPv1基础上进行了扩展,但RIPv2的报文格式仍然同RIPv1类似。
其中不同的字段如下所示:
表项 | 释义 |
---|---|
AFI | :地址族标识除了表示支持的协议类型外,还可以用来描述认证信息 |
Route tag | 用于标记外部路由 |
Subnet Mask | 指定IP地址的子网掩码,定义IP地址的网络或子网部分 |
Next Hop | 指定通往目的地址的下一跳IP地址 |
如图所示,RIP网络正常运行时,RTA会通过RTB学习到10.0.0.0/8网络的路由,度量值为1。一旦路由器RTB的直连网络10.0.0.0/8产生故障,RTB会立即检测到该故障,并认为该路由不可达。此时,RTA还没有收到该路由不可达的信息,于是会继续向RTB发送度量值为2的通往10.0.0.0/8的路由信息。RTB会学习此路由信息,认为可以通过RTA到达10.0.0.0/8网络。此后,RTB发送的更新路由表,又会导致RTA路由表的更新,RTA会新增一条度量值为3的10.0.0.0/8网络路由表项,从而形成路由环路。这个过程会持续下去,直到度量值为16。
RIP路由协议引入了很多机制来解决环路问题,除了之前介绍的最大跳数,还有水平分割机制。水平分割的原理是,路由器从某个接口学习到的路由,不会再从该接口发出去。也就是说,RTA从RTB学习到的10.0.0.0/8网络的路由不会再从RTA的接收接口重新通告给RTB,由此避免了路由环路的产生。
实验拓扑:
IP地址配置:
AR1:
AR2:
AR3:
RIP配置:
[Huawei]rip
[Huawei-rip-1]version 2
[Huawei-rip-1]network 10.0.0.0
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]rip metricin 2 # RIP配置Metricin
命令rip metricin 用于修改接口上应用的度量值(注意:该命令所指定的度量值会与当前路由的度量值相加)。当路由器的一个接口收到路由时,路由器会首先将接口的附加度量值增加到该路由上,然后将路由加入路由表中。
例如AR1发送的10.1.1.0/30路由条目的度量值为1,由于在AR2的GigabitEthernet0/0/0接口上配置了rip metricin 2,所以当路由到达AR2的接口时,AR2会将该路由条目的度量值加2,最后该路由的度量值为3。
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]rip metricout 2
命令rip metricout用于路由器在通告RIP路由时修改路由的度量值。一般情况下,在将路由表项转发到下一跳之前,RIP会将度量值加1。如果配置了rip metricout命令,则只应用命令中配置的度量值。即,当路由器发布一条路由时,此命令配置的度量值会在发布该路由之前附加在这条路由上,但本地路由表中的度量值不会发生改变。
例如,缺省情况下,AR1发送的10.1.1.0/30路由条目的度量值为1。但是,由于在AR1
GigabitEthernet0/0/0接口上配置了rip metricout 2,所以AR2会将该路由条目的度量值设置为2,然后发送给AR2。
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]rip split-horizon # 配置水平分割
[Huawei-GigabitEthernet0/0/0]rip poison-reverse # 配置毒性反转
水平分割和毒性反转都是基于每个接口来配置的。缺省情况下,每个接口都启用了rip split-horizon命令(NBMA网络除外)以防止路由环路。
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]undo rip output #禁止发送RIP报文
命令rip output用于配置允许一个接口发送RIP更新消息。如果想要禁止指定接口发送RIP更新消息,可以在接口上运行命令undo rip output。缺省情况下,ARG3系列路由器允许接口发送RIP报文。
企业网络中,可以通过运行命令undo rip output来防止连接外网的接口发布内部路由。
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]undo rip input #接口禁止接收RIP报文
rip input命令用来配置允许指定接口接收RIP报文。
undo rip input命令用来禁止指定接口接收RIP报文。运行命令undo rip input之后,该接口所收到的RIP报文会被立即丢弃。缺省情况下,接口可以接收RIP报文。
[Huawei]rip 1
[Huawei-rip-1]silent-interface GigabitEthernet 0/0/1
silent-interface命令用来抑制接口,使其只接收RIP报文,更新自己的路由表,但不发送RIP报文。
命令silent-interface比命令rip input和rip output的优先级更高。命令silent-interface all表示抑制所有接口,此命令优先级最高,在配置该命令之后,所有接口都被抑制。
命令silent-interface通常会配置在NBMA网络上。在NBMA网络上,一些路由器需要接收RIP更新消息但是不需要广播或者组播路由器自身的路由更新,而是通过命令peer 与对端路由器建立关系。