计算机网络知识点——8.网络层之RIP协议

距离向量算法:

距离向量算法(Distance vector algorithm)是一种最短路径算法。基本思想如下:

每个节点周期性的发送它自己的距离向量估计(distance vector estimate)给邻居。

主要使用在RIP协议。

每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。下面这个例子看完便能理解了。

这是一个很生动的例子

RIP协议:

路由信息协议(Routing Information Protocol,RIP)是一种采用距离向量算法的路由协议。

到目的网络的距离以跳为单位。最大距离为15,距离16表示无穷大,即目的网络不可一条有限的路径长度不得超过15。正是这一规定限制了RIP的使用范围,使RIP局限于小型的局域网络中。

初始时每个RIP路由器只有到直连网的路由,他们的距离为1。

每30sRIP路由器把它的整个路由表发送给邻居。具体实现时每个邻居会错开发送,30s的时间也会随机变化一点。

当收到邻居发来的路由表(update packet),路由器将更新它的路由表<目的网络,开销,下一跳>:

(1)收到的路由的距离全部加1(即一跳的距离)。

(2)利用上述路由修改路由表:

  • 把路由表中不存在的路由加入路由表
  • 如果比路由表中的路由的距离更小,则更新该路由的距离为新距离,把下一跳改为邻居
  • 如果路由存在,就要重置失效定时器。

RIP路由表的每一项都有TTL(Time-To-Live),用失效定时器(invalid timer)计时,超时则让该路由失效。

例:路由器A~G运行RIP协议,每跳的距离为1。B和C是邻居。如果B和C此时的路由表如下所示:

当路由器B接收到来自C的路由表之后对路由表进行自己的更新, 请写出更新之后B的路由表(注意:网络下标从小到大):

N1 4 接口
N3 7  
N6 2  
N7 4  
N9 5  
N10 1  
(我也不清楚N3为啥为7,我觉得是3呀……)

RIP协议的问题:

慢收敛问题(slow convergence):


慢收敛是RIP相对于OSPF而言的,就是RIP依靠定时器进行30秒一次的周期更新路由器的路由表,但当网络拓扑结构发生变化时,它收敛于新拓扑的速度慢,就有可能导致路又环的产生,使错误的数据重复发送。

例:如果路由器B离路由器A的距离是10跳: Router A--10 hops--Router B。当一个网络接入路由器A,路由器B要建立该网络的路由最长需要多少秒?
解析:330,距离是10跳指10个路由器,答案就是330。 

计数到无穷问题(count to infinity):


例:两个RIP路由器连接了三个网络: N1--R1--N2--R2--N3。在R1因N1失效而把N1的路由的距离改为16(无穷大)之后,下面哪个事件会触发计数到无穷现象?
A. R1 sends its routing table to R2.
B. R2 sends its routing table to R1.
C. N2 fails.

D. N3 fails.

答案:B,当R2发送给R1时,R1会更新自己距目的地址为2+1=3,然后发回R2,R2改为3+1=4,之间往复循环知直到两者均为16才将之丢弃。

RIP不适用于路径剧烈变化网络环境中,也不适用于大型的网络环境中。RIP在小型网络中仍在大量使用,现在大型网络多采用OSPF。

RIP协议的技术:

  1. 水平分割技术(split horizon):从一个接口学来的路由不会从该接口发回去。
  2. 毒性反转技术(poison reverse):当一条路由变为无效之后,路由器并不立即将它从路由表中删除,而是将其距离改为16之后广播为邻居,使邻居所拥有的该路由立即失效,而不是等待TTL到期后删除,以迅速消除路由环路,这种方法称为毒性反转,距离为16的路由称为毒化路由(poisoned route)。
  3. 抑制技术(hold down):距离被改为无穷大的路由在一段短时间(180s)内其距离不允许被修改。
  4. 触发更新(triggered update):一旦出现路由变化将立即把增加或更新的路由发给邻居。原有的30s发一次完整的路由表依然不变。

RIP协议的定时器:

  1. 更新定时器(update timer)控制一个路由器如何定期把路由表发送给邻居。默认时间为30s。
  2. 一个路由的失效定时器(Invalid timer)到期时它将被标记为无效路由(距离改为16)。每次更新该路由时其失效定时器都会被复位。默认值为180s。
  3. 一个路由的清除定时器(flush timer)到期时将从路由表中删除。默认值为240s。
  4. 抑制定时器(hold-down timer)是在路由的距离变为无穷大(包括收到毒化路由)时启动并在其到期之前不允许修改该路由的距离。默认值为180s。


RIPv1的数据包格式:


RIPv1数据包用UDP数据报封装(端口号为520),并且采用广播方式发送给邻居。RIPv1只能发布有类网,因此,对于存在非邻接子网的情况,很可能发生错误。

  • 如果请求分组填写了网络地址, 则用距离进行响应。如果请求的网络地址为0.0.0.0,则用整个路由表进行响应。
  • 30秒和触发更新都是发送响应分组。
  • 如果项目超过25项,则可以发送多个响应分组 。

RIPv2的数据包格式:


RIPv2支持无类网。RIPv2数据包可以采用广播方式或多播方式(244.0.0.9,所有RIPv2路由器)发送给邻居。

RIPv2可以把第一个路由项用于身份认证。

  • RIP协议的特点:
  • RIP协议简单、容易实现
  • 网络的直径不能超过16跳
  • 不允许把一个大网络分成多个区
  • 开销缺乏灵活性
  • 存在慢收敛问题和计数到无穷问题
  • 每30s发送完整路由表会消耗大量的带宽
  • 实际运行的RIP协议具有以下特征:
  1.    可以保存多达六个等距离的路由在路由表中,默认为4个
  2.    直连网的开销为0
  3.    发送的路由表会把所有距离加1

关于RIP,可参考这篇博客,很详细:点击打开链接

猜你喜欢

转载自blog.csdn.net/n1neding/article/details/80793055