首页 -> 2008年第7期

基于IPv6的RIP路由协议研究与实现

作者:于 莉




  Internet的迅猛发展,使得网络规模急剧膨胀,信息量直线上升,新应用层出不穷,原有的已发展20多年的网络互联协议版本4-IPv4协议已经不能从根本上适应网络发展的需要。在这样的背景下,下一代网络标准-IPv6协议应运而生。
  
  (一)RIP路由协议配置
  RIP路由协议配置RIP(Routing information Protocol)是应用较早、使用较普遍的内部网关协议(Interior Gateway Protocol,简称IGP),适用于小型同类网络,是典型的距离向量(distance-vector)协议。RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hop count)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的数目。如果到相同目标有两个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器为15个,跳数16表示不可达。
  
  (二)RIP基本工作原理
  路由信息协议RIP是互联网工程任务组(IETF)的内部网关协议工作组为IP网络专门设计的路由协议,是一种基于距离矢量算法的内部网关动态路由协议。每个运行RIP的路由器都维护着一张RIP路由表,该路由表的内容如图1所示。
  
  其中,下一跳(nexthop)表示下一站数据包要到达的地址,度量(metric)代表把数据包从本路由器送达目的站所需的花费(cost)。标志位标志此路由最近是否发生变化,以备触发更新时用到,年龄实际是个定时器,用于维护每条路由。在RIP中若哪条路由经过180秒后仍未被刷新,则该路由被认为不再有效,而把其度量置成16。
  RIP路由器周期性地以多播形式向邻居发送自己的路由表拷贝,即<目的,度量>组,每个接收到该消息的路由器修改消息中路由的度量,在每条路由的度量上加上接收该路由消息接口的花费。然后,依据度量的大小来判断路由的好坏,把度量最小的一条路由放入路由表,其判断过程如下:查看路由表中是否已有到该目的的路由;如果没找到,则添加该路由;如果找到,只有在新度量更小时才更新路由,否则,忽略该路由。
  
  (三)IPv6时代RIP的演变
  如今的RIP已经从RIP-1发展到RIP-2,直到今天有变革意义的基于IPv6的Ripng。研究RIP的演变过程,剖析其各个发展阶段的异同点对于优化、发展该协议具有重要的意义。 RIP-1只在有子网划分的网络中支持子网,在该网络外部由于子网掩码很难得知,从而也就无法区分子网项和主机项,这样就需要强制使用严格层次路由:外部路由器把分组传递到该网中距离最近的路由器,而不考虑目的站点属于哪个子网。紧跟在严格层次路由之后是对连通性的要求,即这个网络中的每一个路由器都应该知道如何去往任何一个子网。基于上述缺点,RIP-2定义了一套有效的RIP改进方案,把RIP-1的格式中含有的一些“必须为零”的域,进行了重新定义。基于安全考虑添加了新的AFI项(0xFFFF)用来传送“验证数据”;添加了“路由选择域”、“下一跳域”,允许在单个路由器上运行多个RIP实例,指明发往目的IP地址的报文该发向哪里,添加了“子网掩码”,达到可以支持VLSM(可变长子网掩码)和CIDR(无类别域间路由)的目的,增强子网选择路由的性能;添加了“路由标签”,对外部路由进行标志。 RIP-2保留了RFC-1058中定义的“命令字”、“地址族标志符”、“IP地址”、“度量值”等域。
  Ripng虽然隶属RIP家族,但毕竟它经历了一场变革。与RIP-1、RIP-2在各个方面都有差别:使用端口不同;分组格式不同;最大报文长度不同;下一跳不同;编址考虑不同;特殊请求不同;安全考虑不同。
  
  (四)Ripng的实现
  Ripng的实现分为六个功能模块,即Ripng的启动、Ripng的关闭、输入处理、输出处理、定时器处理及路由操作。Ripng启动模块:完成Ripng协议的初始化工作,建立通信套接口;Ripng关闭模块:通知内核删除由Ripng进程导入的路由、释放Ripng进程占用的内存空间;输入处理模块:把Ripng当做一个黑盒子来处理,邻居所发送的数据包都是向该黑盒投放的信息,该模块主要是对这些信息进行相应处理;输出处理模块:输出处理主要包括周期更新和触发更新的处理;定时器处理模块:负责维护RIP中为支持寻路操作使用的三个定时器,同时还要负责处理触发更新中为防止广播风暴引入的定时机制;路由操作模块:负责路由条目的处理和路由表的查找和添删。 Ripng作为解决未来IPv6网络路由的首选,其简单内部网关协议有强大的优势和无限的潜力。一个优秀的路由技术不仅仅是为数据传输找到一条高速的通道就行,还需要考虑所选路径的传输容量和服务质量,即具有QoS能力的路由算法,并且还要分析全网负荷,以平衡网络中各条通道的数据流量。所以基于IPv6的Ripng路由协议正是我们今后研究的重点。