1、协议内容
RIP(Routing information Protocol) 是比较古老的动态路由协议,是一种基于距离矢量算法来计算到
达目的网络的最佳路径路由协议,RIP报文承载于UDP报文,使用UDP端口520,属于应用层协议。
在RIP协议中,路由根据到达目的地的跳数作为路由选择的度量值。
2、路由交换过程
(1)RIP更新方式
网络初始化后,每一台使用RIP协议的路由器,通过间隔30秒向邻居路由器广播同步路由表配置同
步报文,同时邻居也会不断广播同步路由表报文,经过收敛事件后,每台路由器都会包含去往整个
自制系统内所有路由器的路由信息。
(注:在整个系统稳定的状态下,路由信息交换也是会持续进行。)
所谓逐跳,如上图所示,拓扑更新时,B首先更新本地路由表,然后将自己的路由表信息广播至自
治系统内的邻居路由器,如图上的路由器A,然后A开始路由信息的学习,然后再向A的邻居们进行
广播同步。
(2)距离向量算法
使用RIP协议的路由器会对邻居路由器广播发送来的的报文进行以下处理:
a.将邻居路由器R发送来的路由表中所有条目的距离字段加一,并将吓一跳地址都更改为R。
(路由表项目条目的三个关键字段:目的地网络N,距离D,吓一跳路由器X)
b.逐条分析更新过后的路由表:
若条目中的目的网络不在自身路由表中,则将该路由条目加入到自身路由表中;
若条目中的目的网络在自身路由表中且下一跳同时为R,则使用该条目替换自身路由
表该条记录;
若条目中的目的网络在自身路由表中但下一跳不同为R,则比较距离D,系统优先考虑
距离更小对的条目。
c.若180s后还没有收到RIP网络中某一路由器的更新路由表,则把该路由器标记为不可
达距离,即把距离设置为16;
d.返回。
(3)RIP报文封装过程
RIP报文消息都是封装在UDP报文中,端口号是520,而UDP报文是封装在IP报文中的,
IP把报文封装在以太帧中。
RIPv1: a.对于请求消息或周期性的响应消息,IP报文的目的地址为广播IP地址255.255.255.255,
源地址为发送该请求消息或响应消息的接口的IP地址,协议字段为0x11。以太帧的目的
地址为广播MAC地址ff-ff-ff-ff-ff-ff,源地址为发送该请求消息或响应消息的接口的MAC地
址,类型字段是0x0800。
b.对于为了回应请求消息而发送的响应消息,IP报文的目的地址为发送请求消息的接口的
IP地址,源地址为发送该响应消息的接口的IP地址,协议字段的值为0x11。以太帧的目
的地址为发送请求消息的接口的MAC地址,源地址为发送该响应消息的接口的MAC地
址,类型字段是0x0800。
RIPv2: a.对于请求消息或周期性的响应消息,IP报文的目的地址可以是组播IP地址224.0.0.9(这
个组播地址是对应所有运行RIP-2的路由器的),也可以是广播IP地址255.255.255.255,
源地址为发送该请求消息或响应消息的接口的IP地址,协议字段为0x11。以太帧的目的地
址为广播MAC地址ff-ff-ff-ff-ff-ff,也可以是某个选定的组播MAC地址,源地址为发送该请
求消息或响应消息的接口的MAC地址,类型字段是0x0800
b.对于为了回应请求消息而发送的响应消息,IP报文的目的地址为发送请求消息的接口的IP
地址,源地址为发送该响应消息的接口的IP地址,协议字段的值为0x11。以太帧的目的
地址为发送请求消息的接口的MAC地址,源地址为发送该响应消息的接口的MAC地址,
类型字段是0x0800
注:RIP-2要比RIP-1少占用计算机的处理资源,因为计算机在网络层就可以把携带有RIP-2消息的
报文丢弃,而必须在传输层才能把携带有RIP-1消息的报文丢弃。
3、RIP报文格式
(1)报文类型:
请求报文:RIP路由器开始启动后,立即向其他所有邻居路由器发送RIP请求消息,以获取整个RIP
网络的网络信息;
RIP网络运行过程中,根据自身需要可向邻居发送请求报文。
响应报文:RIP路由器收到请求报文后,会立即发出RIP响应报文;
RIP网络中,路由器总是间隔30秒向邻居发送响应报文,告知邻居当前路由表信息。
(2)报文格式:
RIPv1:
RIP报文字段 |
字段含义 |
所占字节 |
描述 |
Command |
命令 |
1 |
表示报文类型,值为1时表示请求Request报文,向直连路由器请求全部或部分路由信息 值为2时表示Response报文,一个Response报文最多携带25个路由条目,多于25会发送多个Response |
Version |
版本号 |
1 |
RIP共有两个版本,值为1代表RIPv1,值为2代表RIPv2 |
Must be zero |
未使用 |
2 |
未使用 |
Addr fam id |
地址表示符 |
2 |
值为2时表示IP协议。如果是请求整个路由表的Request报文,则值为0,同时Request报文有且只有一个路由条目,路由的目的网段为0.0.0.0,度量值为16。 |
Must be zero |
未使用 |
2 |
未使用 |
IP address |
IP地址 |
4 |
路由的目的网络地址 |
Must be zero |
未使用 |
4 |
未使用 |
Must bu zero |
未使用 |
4 |
未使用 |
Metric |
度量值 |
4 |
路由的度量值,也记为跳数 |
RIPv2:
RIP报文字段 |
字段含义 |
所占字节 |
描述 |
Command |
命令 |
1 |
表示报文类型,值为1时表示请求Request报文,向直连路由器请求全部或部分路由信息 值为2时表示Response报文,一个Response报文最多携带25个路由条目,多于25会发送多个Response |
Version |
版本号 |
1 |
RIP共有两个版本,值为1代表RIPv1,值为2代表RIPv2 |
Must bu zero |
未使用 |
2 |
未使用 |
Addr fam id |
地址表示符 |
2 |
值为2时表示IP协议。如果是请求整个路由表的Request报文,则值为0,同时Request报文有且只有一个路由条目,路由的目的网段为0.0.0.0,度量值为16。 |
Route Tag |
未使用 |
2 |
标记外部路由器或者引入到RIPv2协议中的路由 |
IP address |
IP地址 |
4 |
路由的目的网络地址 |
Subnet Mask |
未使用 |
4 |
用于标记IPV4地址的网络和子网部分 |
NextHop |
未使用 |
4 |
表示比通告路由器地址更好的下一跳地址。若为0.0.0.0,则说明通告路由器地址为最优下一跳。 |
Metric |
度量值 |
4 |
路由的度量值,也记为跳数 |
4、RIP定时器机制----三个倒计时计时器
(1)更新计时器:路由器每隔30s就会发送更新信息,为防止同一时间所有路由器发报文,添加了5s
对的偏移,在[25,35]之间取值;(收到RIP请求消息时,不影响更新计时器)
(2)过期计时器:在180s内未收到该路由器的任何信息,就将其设为不可达,即将该表项的距离字段
设置为16。
(3)刷新计时器(Holddown):一条记录失效后不会,立即删除,而是等待指定时间后删除,一般为12
0s,目的是将该无效路由告知所有邻居,倒计时至0时,立即删除该无效路由。
注:
a.每一条路由表项对应两个定时器:老化定时器和垃圾收集定时器。当学到一条路由并添加
到路由表中时,老化定时器启动。如果老化定时器超时,设备仍没有收邻居发来的更新报
文,则把该路由的度量值置为16(表示路由不可达),并启动垃圾收集定时器。如果垃圾收
集定时器超时,设备仍然没有收到更新报文,则在路由表中删除该条目。
b.如果在没有触发更新的前提下,一个路由表项最多需要300秒才能被删除(老化时间+垃圾收集时间);
如果存在触发更新,那么一个路由条目最多需要120秒才能被删除(即为老化时间).
5、RIP环路问题
(1)产生环路的原因:RIP网络中某一段网络的故障,由于收敛速度过慢,部分路由器认为该网
络仍然可达,导致路由不断更新导致距离计数至无穷大。
(2)防环机制:
a.最大跳数:当一个路由条目作为更新信息发送给邻居路由器时,路由条目会自加1跳,通过设定
最大跳数15防止路由条目被无限转发。同时16跳可作为路由不可达标记。
b.触发更新:当网络出现拓扑变更后,路由器会立即产生更新通告,并广播通知所有直连邻居,不
需要考虑30秒的更新计时器。为减少带宽和资源占用,触发更新消息只包含更新的路由条目。
c.水平分割:RIP路由器路由表中的某条条目信息由路由器的a口学习而来,则路由器a口向外发送
响应消息时,不会包含该路由项的信息。
d.毒性反转:RIP路由器路由表中的某条不可达路由条目信息由路由器的a口学习而来,则路由器a口
向外发送响应消息时,会包含该路由信息,但Metric会设置为16,不可达
注:毒性反转和水平分割都可避免路由环路的产生,但是两者原则上为互斥的,即RIP网络中RIP路
由器不会同时开启水平分割和毒性反转功能。通常,RIP网络中的路由器都会配置触发更新功能,
然后再水平分割和毒性反转功能中选择其一开启。
6.RIP问题
“好消息传的块,坏消息传的慢”
7.比较RIPv1 RIPv2
维度 |
RIPv1 |
RIPv2 |
更新方式 |
广播 255.255.255.255 |
广播/组播 224.0.0.9 |
协议类别 |
有类 |
无类 |
CIDR |
不支持 |
支持 |
VLSM |
不支持 |
支持 |
路由聚合 |
不支持 |
支持 |
报文认证 |
不支持 |
支持 |
路由标记tag |
不携带 |
携带 |
下一跳地址 |
不携带 |
携带 |
掩码信息 |
不携带 |
携带 |