路由信息协议,一种较为简单的内部网关协议。是DV,使用跳数作为度量来衡量到达目的网络的距离,通过UDP报文进行路由信息的交换,端口号为520,协议号为17。其实现较为简单,在配置和维护管理方面也很简单,所以主要应用于规模较小的网络中,如园区网等,现有两个版本,RIP-1和RIP-2。
度量值等于从本网络到达目的网络间的设备数量。
为了限制收敛(在最佳路径的判断上所有路由器达成一致的过程)时间,RIP规定度量值取0-15之间的整数,>=16的跳数被定义为无穷大,即目标网络不可达。这也是RIP无法在大型网络中应用的原因。
RIP协议启动后,RouterA会向相邻的路由器广播一个Request报文。
RIP协议更新与维护主要与四个定时器有关:
更新定时器:如果超时,立即发送更新报文。
老化定时器:设备如果在老化时间内未收到更新报文,则认为该路由不可达。
垃圾收集器:如果在垃圾收集时间内还未收到更新报文,则将该路由从RIP路由表中彻底删除。
抑制定时器:如果收到的更新cost值为16,则对应的路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,即使再收到对端路由cost值小于16的更新报文也不接受。当抑制定时器超时后,就允许重新接受。 默认华为的抑制计时器是不启用的,时间默认为0,而且和CISCO不同的是,开始计时后,即使收到优于原来的路由,它也不启用,一直等到age time 计时结束。
路由与定时器的关系:
RIP的更新消息是由更新定时器控制的,默认为每30秒发送一次。
每一条路由表项对应两个定时器:老化定时器和垃圾收集定时器,当学到一条新路由并添加到RIP路由表中时,老化定时器启动,如果直至超时仍未收到邻居的更新报文,则在RIP数据库中把该路由的度量值置为16(即路由不可达,路由表中删除),并启动垃圾收集定时器,同时对外发送不可达路由更新请求报文,如果直至超时仍未收到邻居的更新报文,则在RIP路由表中删除该路由。
RIP-1是一种有类别路由协议;
只支持以广播方式发布协议报文;
协议报文中不携带掩码信息,只能识别A、B、C类这样的自然网段的路由,因此不支持路由聚合,也不支持不连续子网(指在一个网络中,某几个连续由同一主网划分的子网中间被多个其它网段的子网或网络隔开) 。
RIP-2是一种无分类路由协议;
报文中携带掩码信息,支持路由聚合和CIDR;
支持外部路由标记,可以在路由策略中根据Tag对路由进行灵活的控制。
支持指定下一跳,可以在广播网上选择到目的网络的最优下一跳地址。
支持组播,但只有支持RIP-2的设备才能接收协议报文。
支持简单认证和MD5密文认证。
原理是一个自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一个网段的路由发送。
路由聚合可提高大型网络的可扩展性和效率,缩减路由表。
基于RIP进程的有类聚合,按类聚合,聚合得到最优的metric值。
基于接口的聚合:用户可以指定聚合地址。
距离矢量路由算法可以通过IP头中的生存时间(TTL)来 纠错,但路由环路问题可能首先要求无穷计数。为了避免这个延时问题,距离矢量协议定义了一个最大值,这个数字是指最大的度量值(如rip协议最大值为16),比如跳数。也就是说,路由更新信息可以向不可到达的网络的路由中的路由器发送15次,一旦达到最大值16,就视为网络不可到达,存在故障,将不再接受来自访问该网络的任何路由更新信息。
定义最大值在一定程度上解决了路由环路问题,但并不彻底,因为在达到最大值之前,路由环路还是存在的。为此,路由中毒就可以彻底解决这个问题。其原理是这样的:假设有三台路由器ABC,当网络10.4.0.0出现故障无法访问的时候,路由器C便向邻居路由发送相关路由更新信息,并将其度量值标为无穷大,告诉它们网络10.4.0.0不可到达,路由器B收到毒化消息后将该链路路由表项标记为无穷大,表示该路径已经失效,并向邻居A路由器通告,依次毒化各个路由器,告诉邻居10.4.0.0这个网络已经失效,不再接收更新信息,从而避免了路由环路。
一种消除路由环路并加快网络收敛的方法是通过叫做“水平分割”的技术实现的。其规则就是不向原始路由更新的方向再次发送路由更新信息(个人理解为单向更新,单向反馈)。比如有三台路由器ABC,B向C学习到访问网络10.4.0.0的路径以后,不再向C声明自己可以通过C访问10.4.0.0网络的路径信息,A向B学习到访问10.4.0.0网络路径信息后,也不再向B声明,而一旦网络10.4.0.0发生故障无法访问,C会向A和B发送该网络不可达到的路由更新信息,但不会再学习A和B发送的能够到达10.4.0.0的错误信息。
结合上面的例子,当路由器B收到毒化的路由后,不遵水平分割原则,将中毒消息转发给所有的相邻路由器,说明10.4.0.0这个网络不可达到,这样保证所有的路由器都接受到了毒化的路由信息。
抑制计时器用于阻止定期更新的消息在不恰当的时间内重置一个已经坏掉的路由。抑制计时器告诉路由器把可能影响路由的任何改变暂时保持一段时间,抑制时间通常比更新信息发送到整个网络的时间要长。当路由器从邻居接收到以前能够访问的网络现在不能访问的更新后,就将该路由标记为不可访问,并启动一个抑制计时器,如果收到具有更好度量值的路由,就标记为可以访问,并取消抑制计时器。如果在抑制计时器超时之前从不同邻居收到的更新信息包含的度量值比以前的更差,更新将被忽略,这样可以有更多的时间让更新信息传遍整个网络。
正常情况下,路由器会定期将路由表发送给邻居路由器。而触发更新就是立刻发送路由更新信息,以响应某些变化。检测到网络故障的路由器会立即发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,使整个网络上的路由器在最短的时间内收到更新信息,从而快速了解整个网络的变化。但这样也是有问题存在,有可能包含更新信息的数据包被某些网络中的链路丢失或损坏,其他路由器没能及时收到触发更新,因此就产生了结合抑制的触发更新,抑制规则要求一旦路由无效,在抑制时间内,即使收到对端路由cost小于16的更新也会被忽略,直至超时之后。这样触发更新将有时间传遍整个网络,从而避免了已经损坏的路由重新插入到已经收到触发更新的邻居中,也就解决了路由环路的问题。
原文:https://www.cnblogs.com/tmjblog/p/12640022.html