本文探讨了Ripng用于IPv6网络的RIP。在IPv6技术作为下一代互联网IP层技术已成定局的情况下,深入研究未来网络中路由技术的简单,易用协议Ripng是一项走在信息技术学科前沿的课题之一,具有重要的经济和社会意义。

Internet的迅猛发展,使得网络规模急剧膨胀,信息量直线上升,新应用层出不穷,原有的己发展20多年的网络互连协议版本4——IPv4协议由于其先天的缺陷(地址空间不足、路由选择效率不高、安全性差、服务质量不高以及缺乏对移动的有效支持等),己经不能从根本上适应网络发展的需要。在这样的背景下,下一代网络标准——IPv6协议应运而生。本文探讨了Ripng用于IPv6网络的RIP。在IPv6技术作为下一代互联网IP层技术已成定局的情况下,深入研究未来网络中路由技术的简单,易用协议Ripng是一项走在信息技术学科前沿的课题之一,具有重要的经济和社会意义。

一、 RIP基本工作原理

路由信息协议RIP(RoutingInformationProtocol)是互联网工程任务组(IETF)的内部网关协议工作组为IP网络专门设计的路由协议,是一种基于距离矢量算法的内部网关动态路由协议。

每个运行RIP的路由器都维护着一张RIP路由表,该路由表的内容如图1所示。

IPv6时代RIP路由协议研究与实现_研究

其中,下一跳(nexthop)表示下一站数据包要到达的地址,度量(metric)代表把数据包从本路由器送达目的站所需的花费(cost)。RIP协议支持的最大有效度量为15,当一条路由的度量达到16后,那条路由就被认为无效,并且认为对应的目的地不可达。

标志位标志此路由最近是否发生变化,以备触发更新时用到,年龄实际是个定时器,用于维护每条路由。在RIP中若哪条路由经过180秒后仍未被刷新,则该路由被认为不再有效,而把其度量置成16。

RIP路由器周期性地以多播形式向邻居发送自己的路由表拷贝,即<目的,度量>组,每个接收到该消息的路由器修改消息中路由的度量,在每条路由的度量上加上接收该路由消息接口的花费。然后,依据度量的大小来判断路由的好坏,把度量最小的一条路由放入路由表,其判断过程如下:

(1)查看路由表中是否已有到该目的的路由;(2)如果没找到,则添加该路由;(3)如果找到,只有在新度量更小时才更新路由,否则,忽略该路由。

图2是RIP的工作流程。由此图大家就可以很清楚的感受到RIP拥有如此简单的工作流程。

IPv6时代RIP路由协议研究与实现_时代_02

如图2所示,当在RouterA路由器的某接口上启动RIP,接口以多播形式向邻居发送路由表信息请求,请求邻居给自己发送路由表信息;邻居RouterB接收到路由表信息请求,发送整个路由表信息对请求进行响应;RouterA和RouterB在启动后就开始周期发送并周期更新路由器;RouterA检测到路由变化时,以多播形式向邻居发送触发更新,通知邻居路由变化。

二、IPv6时代RIP的演变

众所周知,如今的RIP已经从RIP-1发展到RIP-2,直到今天有变革意义的基于IPv6的Ripng!研究RIP的演变过程,剖析其各个发展阶段的异同点对于优化、发展该协议具有重要的意义。

RIP-1只在有子网划分的网络中支持子网,在该网络外部由于子网掩码很难得知,从而也就无法区分子网项和主机项,这样就需要强制使用严格层次路由:外部路由器把分组传递到该网中距离最近的路由器,而不考虑目的站点属于哪个子网。紧跟在严格层次路由之后是对连通性的要求,即这个网络中的每一个路由器都应该知道如何去往任何一个子网!

基于上述缺点,RIP-2定义了一套有效的RIP改进方案,把RIP-1的格式中含有的一些“必须为零”的域,进行了重新定义。

基于安全考虑添加了新的AFI项(0xFFFF)用来传送“验证数据”;添加了“路由选择域”、“下一跳域”,允许在单个路由器上运行多个RIP实例,指明发往目的IP地址的报文该发向哪里,“下一跳域”属性使得仅仅只有一个运行别种协议的路由器通告所有的路由,并且使得运行RIP的路由器能够找到正确运行别种协议的路由器作为下一跳以达到所有已知的别种协议的目的地址;添加了“子网掩码”,达到可以支持VLSM(可变长子网掩码)和CIDR(无类别域间路由)的目的,增强子网选择路由的性能;添加了“路由标签”,对外部路由进行标志。

RIP-2保留了RFC-1058中定义的“命令字”、“地址族标志符”、“IP地址”、“度量值”等域。

没有最好只有更好!在基于IPv4的RIP-1,RIP-2不断完善的状态下,IPv4虽然将一个成熟的互联网架构支撑了20年之久,但人们早已形成共识,那就是IPv6最终取代IPv4是大势所趋:128位地址格式所支持的IP地址数量可以彻底解决地址枯竭的问题;IPv4地址空间匮乏,路由选择效率差,安全性差,移动性差,服务质量保证差。所有这些IPv4问题将毫不犹豫地要求IPv6协议解决,于是Ripng(v6版本)将要,也必然会成为宠儿。

Ripng虽然隶属RIP家族,但毕竟它经历了一场变革。与RIP-1,RIP-2在各个方面都有差别:使用端口不同;分组格式不同;最大报文长度不同;下一跳不同;编址考虑不同;特殊请求不同;安全考虑不同。

Ripng与RIP-2均有下一跳的说法,但是RIP-2的下一跳是固化在包格式之中的,也就是说下一跳无论添不添都给它留4个字节的空间。而Ripng把下一跳(nexthop)与路由表项分开,使用“度量域”中的值来判断究竟是下一跳还是路由表项,若值是0xff则说明是下一跳!采用这种方法在无须添写下一跳信息时,则可以省略不添,从而节省了宝贵空间。

在Ripng与RIP改头换面的变化中,还有一个重大的变化!那就是在RIP-2包格式中有“子网掩码域”,而在Ripng中用一个字节的前缀长度代替了“子网掩码域”的功能,虽然这与IPv6协议的特点有着不可分割的关系,但是就其布局的合理性、优美性、简化性也足可以使我们优先考虑使用它。

三、Ripng的实现

Ripng的实现分为六个功能模块,即Ripng的启动、Ripng的关闭、输入处理、输出处理、定时器处理及路由操作,如图3所示。

IPv6时代RIP路由协议研究与实现_时代_03

Ripng启动模块:完成Ripng协议的初始化工作,建立通信套接口;Ripng关闭模块:通知内核删除由RIPng进程导入的路由、释放Ripng进程占用的内存空间;输入处理模块:把Ripng当作一个黑盒子来处理,邻居所发送的数据包都是向该黑盒投放的信息,该模块主要是对这些信息进行相应处理;输出处理模块:输出处理主要包括周期更新和触发更新的处理;定时器处理模块:负责维护RIP中为支持寻路操作使用的三个定时器,同时还要负责处理触发更新中为防止广播风暴引入的定时机制;路由操作模块:负责路由条目的处理和路由表的查找和添删。

Ripng作为解决未来IPv6网络路由的首选,其简单内部网关协议有强大的优势和无限的潜力。一个优秀的路由技术,不仅仅是为数据传输找到一条高速的通道就行,还需要考虑所选路径的传输容量和服务质量,即具有QoS能力的路由算法,并且还要分析全网负荷,以平衡网络中各条通道的数据流量。在这些诸多因素考虑的基础上研究基于IPv6的Ripng路由协议正是我们今后研究的热点和重点。