动态路由协议RIP介绍

RIP的基础介绍

主要介绍的内容包括:RIPv1与RIPv2的特点、RIP报文的分析、RIP工作原理、RIP环路的产生以及RIP防环机制。

RIPv1与RIPv2的特点

RIP(Routing Information Protocal,路由信息协议)是一种简单的动态路由协议,是一种不可靠的协议(RIP只能通过邻居获取路由信息,不知道全局的路由状况,就算邻居的路由信息有误,协议也不会知道,直至出现网络异常);

RIP使用UDP520端口号进行路由信息的交换;

RIPv1的特点:

  • 广播更新;
  • 有类协议(A、B、C类),不支持不连续子网;
  • 不支持CIDR和VLSM;
  • 不支持认证,自动聚合;

RIPv2的特点:

  • 组播更新(224.0.0.9);
  • 无类协议,支持不连续协议;
  • 支持认证,支持手动汇总;
  • 支持CIDR和VLSM;

RIP协议定时器

RIP协议内包含三个定时器(仅供了解):

  • 更新定时器:当此定时器超时时,立即发送路由更新报文,默认为30s(报文的发送间隔时间,每个30秒才发送一次,因此RIP协议的收敛速度慢,不适用于大型网络);
  • 老化定时器:当老化定时器超时时,仍没收到邻居发送的路由更新报文,就认为该路由不可达,如果开启了防环机制,就会在RIP路由表中将其标记为16跳(无穷大)并启动垃圾收集定时器。当路由条目添加到RIP路由表里,老化时间就开始启动,每次收到路由更新报文就重置老化定时器,默认时间为180s
  • 垃圾收集定时器:如果在垃圾定时器内仍没有收到邻居发送的路由更新报文,就会将RIP路由表中相应的路由删除,默认为120s
  • 抑制失效定时器:在开启防环机制时,当路由器收到度量值为16的路由更新时,对应的路由就会进入抑制状态并开启抑制定时器,默认为180s。在该定时器超时前,不会接收对应的路由更新(就算收到度量值小于16的路由更新,也不会接收),防止出现环路;超时后恢复正常;

RIP路由更新规则

RIP的路由更新机制分为定期更新触发更新;定时更新是按照更新定时器发送更新路由更新报文;触发更新是一旦路由条目发生改变,不用等到更新定时器超时就可以直接发送路由更新报文(与增量更新只发送被改变的路由条目不同,触发更新是将整个路由表发送,重新进行路由收敛);

RIP路由更新规则(收到路由更新报文后,需要将报文携带的RIP路由表项的度量值增加1,才进行下列的路由更新):

  • 如果收到RIP路由表中没有的路由条目,就直接添加进路由表里;
  • 如果收到RIP路由表中已有的目的路由条目,且来源端口相同,直接更新当前路由项(RIP认为该目的路由已经发生了改变);
  • 如果收到RIP路由表中已有的目的路由条目,且来源端口不同,如果度量值比路由表对应项大,就不做改变,如果比路由表项的度量值小,就更新路由表项的对应项(RIP认为有更优的路径出现);

RIP报文结构

RIP报文结构

报文字段 说明
Command 命令字段,表示报文类型;Request(请求,对应值1)、Reply(响应,对应值2)、Traceon(开启追踪报文,对应值3,RIPv2不再使用)和Traceoff(关闭追踪标记,对应值4,RIPv2不再使用)
Version 版本字段,RIPv1版本值为1,RIPv2版本值为2
Unused 保留字段
Address Family Identity(AFI) 地址簇标识字段,用于携带多种不同协议的路由详细,IP对应的AFI值为2;
Route Tag 路由标签字段,适用于RIPv2,用于区分内部路由(RIP学习到的)和外部路由(使用重分发通告的其他路由)
IP Address IP地址字段,表示指定的目的路由(标准网段或子网地址)
Subnet Mask 子网掩码字段,适用于RIPv2,用于确定IP地址的网段
Next Hop 下一跳字段,适用于RIPv2,用于指定路由的方向
Metric 度量值字段,也就是"跳数",最大值为15,数值为16为无穷大(即该RIP路由条目不可用)

注:度量值(跳数)的数值是每经过一个RIP路由条目数值就会增加1

RIP工作原理

RIP协议是采用邻居通告的方式更新路由条目,接收来自邻居发送的路由表项,以便于更新和添加路由进入自己的路由表项,从而达成路由条目的学习;

RIP路由学习拓扑图

  • A.初始状态下,每个路由器的RIP路由表里只有与自己直连的路由条目;
  • B.将所有的网段通告进RIP网络中,各个路由器开始路由学习;
  • C.R1会将自己包含的10.1.1.0和1.1.1.0路由条目发送给邻居RIP路由器R2;
  • D.R2收到邻居发送的RIP通告报文(包含有R1的RIP路由表信息),将R1通告的路由条目的度量值(跳数)加1,并查看自己的路由条目,发现1.1.1.0是自己直连路由条目,度量值为0,比R1发送的小,但是R2中没有10.1.1.0的路由条目,直接添加进RIP路由表里,然后再将自己整个路由表发送给邻居路由器(R1和R3),包含的路由条目有10.1.1.0、1.1.1.0和2.2.2.0;
  • E.R1收到邻居发送的路由条目,会将邻居发送的路由条目度量值加1,然后按照路由更新机制添加路由条目;
  • F. R3收到R2发送RIP通告报文,按照路由更新规则添加路由条目,然后如同R2一样将整个路由表发送给邻居,R4收到报文以后,也是一样的操作,直至所有路由器都学习到所有的路由条目;

RIP环路产生的原因

RIP环路拓扑图

  • A) 假设路由器R1断开了与客户端的连接,R1会删除该路由条目并立即向邻居发送路由通告报文,告知邻居R2路由器10.1.1.0路由不可达,再让R2通告其他路由器,通往R1客户端的路由不可达,但由于网络延迟、CPU繁忙等原因,没有及时发送给R2路由器
  • B) 由于R2没有及时收到R1发送报文,R2仍旧定期通告路由条目给邻居路由器R1和R3,此时通告的路由表中包含有10.1.1.0,跳数为1;
  • C) R1收到R2通告的路由条目后,将R2发送路由表项中的各路由条目的度量值加1,然后按照路由更新规则添加或更新路由条目(此时路由器R1认为有另外一条路径能够到到达客户端),此时R1路由器会将10.1.1.0,跳数为2添加进路由表中,等到更新定时器超时,R1会再次将整个路由表发送给邻居路由器R2
  • D) R2再次受到R1发送路由条目时,将该路由表内的路由条目跳数加1比较,发现10.1.1.0路由条目的跳数虽然比自己路由表中的大,但是来源端口相同(下一跳相同),R2就认为10.1.1.0网络发生了改变,立即将该其更新至路由表项,然后等待更新定时器超时,R2会再次将整个路由表发送给邻居路由器R1;
  • E) R1受到通告报文后,会将10.1.1.0,跳数为4添加进RIP路由表里(添加原因与R2的原因相同),如此反复,直至达到无穷大,除非达到某种限制(设置了最大跳数防环,就是达到最大跳数16(不可达),才会从路由表中删除);

RIP的防环机制

  • 最大跳数:设置路由条目最大跳数为15,16表示不可达;
  • 水平分割法:从某一端口学习到的路由条目,不会再将该路由条目从该端口发送出去(不发生回传)
  • 毒性逆转:在更新报文里包括回传路由,但是回传路由的跳数标记为16跳,便于通知其他路由器,回传路由不可达(即向邻居发送包含有标记为16跳的失效路由器的路由更新报文);
  • 路由毒化:当拓扑发生变化时,失效的路由会被标记为possibly down,跳数设为16;
  • 触发更新:拓扑发生变化时,不用等到更新定时器超时,就直接发送更新报文;
  • 保持失效定时器:收到跳数为16的路由条目时,会开启抑制定时器,在该期间不接收该路由条目;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章