rip 定义
rip是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的距离,简言之,从源网络到目的网络过程中,每经过一个网络设备,度量值+1,默认的设备与直连网络度量为0;rip通过udp报文进行路由信息的交换,源端口和目的端口都是520,为限制路由收敛时间,rip最大跳数限制为15,使得rip 协议只能应用在小型网络中;它有两个版本,ripV1 和ripV2, ripV2在ripV1 基础上进行了扩展,增加了一些特性;
rip 工作过程
rip 实验拓扑
实验配置(默认使用ripV1)
AR1:
[Huawei]rip
[Huawei-rip-1] network 1.0.0.0 (发布主网地址)
AR2:
[Huawei]rip
[Huawei-rip-1] network 1.0.0.0
[Huawei-rip-1] network 3.0.0.0
AR3:
[Huawei]rip
[Huawei-rip-1] network 3.0.0.0
network 发布主网地址说明
- AR1 配置的ip 地址属于A类地址,默认子网掩码为255.0.0.0,所以最大发布的网络号为8 位,为1.0.0.0(1.1.1.1 && 255.0.0.0计算得到主网号);
- 除此之外,我们也可以发布对应的子网号,例如: 配置 ip:192.168.100.1/24, 主网号为192.168.100.0(192.168.100.1 && 255.255.255.0),network 192.168.100.0, network 192.168.0.0都可以通过,只要不超过24位网络号就行(网络号地址最大值:223.255.255.0),超过24位网络号会报错(Error: The network address is invalid, and the specified address must be major-net address without any subnets.)
流程
-.以AR1 为例, 启动rip 进程后,分别向相邻路由器广播(ripV1 版本为广播形式)发送request 报文;
-. AR2接口0收到报文后,会将自己的rip路由表封装在Response 报文中进行广播;
-.AR1 收到报文后,更新自己的路由表;
-.各个路由器经过该流程后,最终AR1 会有去往AR3 的路由,同时,AR3 会有去往AR1的路由;
- ripV1 版本下,response报文没有携带子网掩码信息,所以AR1 更新路由表时会按照A,B,C 类对应的自然掩码来更新;
rip 特性
路由信息更新和维护
- 更新定时器(Update timer)
每间隔30s,邻居路由器定时发送response更新报文; - 老化定时器(Age timer)
运行rip 协议设备如果在老化时间(默认180s)内没有收到邻居发来的路由更新报文,则认为该路由不可达,但此时还并未删除该路由,然后启动垃圾收集器; - 垃圾收集定时器(Garbage-collect timer)
如果在垃圾收集时间内(默认120s)不可达路由没有收到来自同一邻居的更新,则该路由将被从rip路由表中彻底删除; - 抑制定时器(Suppress timer)
为了降低接收错误路由选择信息的可能性,抑制计时器 引入某种程度的怀疑量,如果到一个目标网络的距离增加,设置该路由的cost 为16,对应路由进入抑制状态,并启动抑制定时器,在定时器超时后,路由器才接收有关此路由的更新消息;
路由聚合
什么是路由聚合?
路由聚合是指路由器把同一自然网段内的连续子网的路由聚合成一条路由向外发送,从而减少了路由表的规模,以及网络上的传输流量;通过配置路由聚合,可以提高网络的可扩展性以及路由器的处理速度;
ripV2 路由聚合
- 自动路由聚合(默认情况)
自动路由聚合是指ripV2将同一自然网段内的不同子网的路由聚合成一条自然掩码的路由向外发送,假设路由表里有11.1.1.0/24、11.1.2.0/24、11.1.3.0/24三条路由,使能ripV2自动路由聚合功能后,这三条路由聚合成一条自然掩码的路由11.0.0.0/8向外发送; - 手动路由聚合
在指定接口配置ripV2发布一条聚合路由, 上述场景下,可以在接口配置 11.1.0.0/16 的聚合路由向外发送;
路由环路
路由环路形成
-
假设 AR5左手边的10.10.0.1 网段故障了,AR5 等待当前更新周期超时后再通知AR6,结果AR6 的更新周期早开始了,AR6 给AR5 发送了一条到达目的网络10.10.0.1的路由,AR5在路由表中增加一条到达10.10.0.1 网络路由,下一跳是7.7.0.2,同时,AR5 把自己的路由又广播给AR6,AR6在自己的路由表中增加到10.10.0.1 网络路由,下一跳是7.7.0.1,当有一个数据包到达AR5 时,数据包不断在AR5和AR6 之间相互移动,形成环路;
路由环路消除
- 触发更新
当路由信息发生变化时,立刻向邻居设备发送触发更新报文,而不用等待更新定时器超时,从而避免产生路由环路; - 水平分割
如上图,AR5 将自己的直连路由10.10.0.1 广播到AR6,AR6 从接口0学到了到达10.10.0.1 的路由,下一跳为7.7.0.1,配置水平分割后,AR6从接口0 学到的路由不会再从接口0发给相邻路由器; - 毒性逆转
rip从某个接口学到路由后,从原接口发回邻居路由器,并将该路由的开销设置为16(即指明该路由不可达),利用这种方式,可以清除对方路由表中的无用路由;
rip 协议报文结构
ripV1
- Command: 1:为请求消息;2:表示消息为响应消息;
- Version:1:ripV1 ;2:ripV2;
- Address Family Identifier:地址簇标识,对于ip,设置为2;
- IP Address: 主机网络地址;
- Metric: 跳数 ,1-16 之间;
ripV2
在ripV1 基础上增加的字段:
- Route Tag:用来标记外部路由或重新分配到ripV2 协议中路由;
- Subnet Mask:子网掩码,标识ipv4 网络或子网部分;
- Next Hop:标识到达目的网络的下一跳;
ripV1 和ripV2 不同
request 消息形式
- ripV1 采用广播形式进行消息发送,ripV2 采用组播形式进行消息发送;
response 消息格式
- ripV2 在ripV1 基础上扩展而来, ripV2 在路由更新报文中,返回指定下一跳,在广播网上可以选择到目的网段最优下一跳地址;
- ripV2 支持外部路由标记(Route Tag),可以在路由策略中根据Tag对路由进行灵活的控制;
有无类别
- ripV1 属于有类别路由协议,报文中没有携带掩码信息,只能识别A、B、C类这样的自然网段的路由,因此ripV1无法支持路由聚合;
- ripV2 属于无类别路由协议,支持CIDR格式,报文支持携带掩码信息,可以识别任何网段路由,所以,ripV2 支持路由聚合;
安全
- ripV2 支持使用md5 进行路由消息的认证,避免网络非法攻击者,保证网络安全;