RIPng 原理和实践

1 RIPng简介


路由技术的发展是与整个因特网的发展密切相关的。随着因特网规模和负载的增长,产生了地址空间不足及路由器存储和交换的信息量急剧增加等一系列问题,使得 IPv6得以长足发展,并将最终取代IPv4。同时现有的基于IPv4的路由协议也必须加以改造,使之符合未来因特网的发展要求。


             众所周知,路由协议有基于距离矢量和链路状态两种。使用最广泛的一种基于距离矢量的路由协议是选路信息协议RIP(Routing  Information  Protocol)。RIP产生较早,经过多年的应用,已经产生成熟的标准和产品。RIP最大的优点是其比较简单,在规模不大、拓扑结构比较简单的网络上 易于操作和维护。但对于规模较大的网络,由于其存在选路环路及无限计数等问题,选路性能不如基于链路状态的协议(如OSPF),因而较少采用。


             RIP作为一种成熟的路由标准,在因特网中有着广泛的应用,特别是在一些中小型网络中。正是基于这种现状,同时考虑到RIP与IPv6的兼容性问 题,IETF对现有技术进行改造,制定了IPv6下的RIP标准,即RIPng(RIP next  generation)。下面的各节中将分别对RIPng的消息格式、工作原理、与RIPv1及RIPv2的主要差别、协议的缺点及改进方向、发展趋势等 方面做简单的介绍。


 2 RIPng的报文格式


             RIPng是基于UDP的协议,并且使用端口号521发送和接收数据报。RIPng报文大致可分为两类:选路信息报文和用于请求信息的报文。它们都使用相 同的格式,由固定的首部和路由表项RTE(Route Table Entry)组成,其中路由表项可以有多个。


            首部包括命令字段和版本号字段。同RIP一样,命令字段用来区分报文要实现的各种操作。其中命令号1表示请求部分或全部选路信息,命令号2表示响应,其中包含一个或多个RTE。


路由器或主机可以通过发送请求命令向另一个路由器请求选路信息。路由器使用响应命令回答。版本号字段包含了协议的版本号(目前的版本号值为1),接收方会检测该字段,以确定对方运行的RIPng协议本地是否能进行正确的解释。


            报文的剩余部分是一个RTE序列,其中每一个RTE由目的IPv6前缀、路由标记、前缀的有效长度以及到目的网络的花费等4部分组成。


            IPv6的地址为128bit,因此在RTE中占用16字节。


            路由标记字段是从RIP中保留下来的,其最主要的用途是用来对外部路由做标志,以区分内部路由和外部路由,供外部网关路由协议(如EGP或BGP)使用。该字段也可用于其他目的,只要网络内所有运行RIPng的路由器对其解释是一致的。


            前缀长度字段指明了前缀中有效位的长度,IPv6中使用了前缀长度的概念代替了IPv4中的子网掩码。由于IPv6地址的意义很明确,因此RIPng中不再区分网络路由、子网路由或主机路由。


            路由花费字段指明到目的网络的花费,由于RIPng的最大工作直径为15跳,因此该字段可以为1和15之间的任意值,16即意味着目的地不可达。RIPng中仍然使用固定的度量方式,即该字段的含义只能是跳数,路由器不能对其进行其他的解释。


            RIPng并没有限制报文的大小,RIPng报文所能携带的最大RTE的数目是由物理介质的MTU所决定的,计算公式如下:


            报文长度 = RTE数目×20 + 4


            其中RTE数目的计算公式如下:


            RTE数目=INT[(MTU - IPv6首部长度 - UDP首部长度 - RIPng首部长度) / RTE长度]


             与RIPv2不同的是,RIPng的下一跳字段是由一个单独的RTE指定的。RIPng使用单独的RTE表示下一跳的原因是IPv6的地址多达 128bit,若将下一跳字段与目的网络地址放在同一个RTE中,则RTE的大小几乎将会增加一倍,因此RIPng中采取目的网络地址和下一跳分开的方法 来减小RTE的长度。在表示下一跳的RTE中,路由标记和前缀长度字段必须为零,而度量字段为0xFF。


3 RIPng的工作原理


            RIPng把参与通信的机器分为主动和被动两种方式。主动路由器向其他路由器通告路由,而被动路由器接收通告并更新其路由,被动路由器自己并不通告路由。只有路由器以主动方式使用RIPng,主机只能使用被动方式,因为主机并不了解路由信息。


             运行RIPng的路由器维持一个到所有可能目的网络的路由表,路由器周期性地(RFC推荐为30s)向邻居节点发送该路由器的路由表,接收方通过接收邻居 路由器的周期性通告更新自己的路由表。这种周期性的路由信息的交换使得每个路由器形成对网络拓扑结构的局部的认识。RIPng使用到达目的站点所经过的链 路数,即跳数来度量路由花费,同时RFC规定RIPng的工作范围为15跳,数值16表示无穷大,即意味着路由不可达。


            路由器通常不会主动发出请求报文来进行路由请求,路由请求通常只是在路由器刚启动或是路由器正在寻找路由信息时才会发出请求报文以获得响应。


            路由器在查询响应、周期更新、触发更新三种情况下会收到响应报文。路由器根据响应报文判断是否对本地路由表进行更新。由于响应报文可能对本地路由表进行改动,因此对报文的来源必须进行严格的检查,以确认报文的合法性。


             众所周知,基于距离矢量算法的路由协议会产生慢收敛和无限计数问题,这样就引发了路由的不一致。RIPng使用水平分割技术、毒性逆转技术、触发更新技术 来解决这些问题,但是这些技术的引入,同时又带来了另一些问题,如采用触发更新技术后,如果不对产生的报文进行合理的控制,很容易产生广播风暴。


            路由器周期性的报文广播和触发更新给网络造成很多额外的负载,为减少路由信息的数量,RIPng可以采用多播技术发送更新报文,同时利用一个小的随机时延对触发更新报文进行抑制。


             介绍RIPng的工作原理就不能不提到定时器,定时器在RIPng中起着非常重要的作用,RIPng使用定时器来实现路由表的更新、报文的发送。周期性的 报文广播是由定时器实现的,另外为防止路由表长时间未更新而失效,每个路由表项有两个定时器与之相联系,超时的路由表项最终将会被删除,以防止路由器广播 和使用已经失效的路由。RIPng中使用的定时器     主要有以下三个:


            (1)启动周期性广播的定时器。此定时器被设置成25s到35s之间的任一随机数。这样设置的目的是为了避免网络上所有路由器以相同的定时发送更新报文,利用随机间隔可以均衡通信量,从而减少路由器之间发生冲突的可能性。


             (2)期满定时器。路由器只要收到通往特定信宿路由,就对通往该信宿的期满定时器初始化。期满定时器被设定为180s,如果一条路由在期满定时器超时前未 得到相关报文的更新,则该条路由不再有效,但仍保留在路由表中,以便通知其他路由器这条路由已经失效。


            (3)垃圾收集定时器。路由器对无效路由打上尺度为无穷大的无效标记并将垃圾收集定时器初始化。此时,定时器被设置为120s,在这段时间内这些路由仍然会被路由器周期性地广播,这样相邻路由器就能迅速从路由表中删除该路由。


4 RIPv1、RIPv2和RIPng的比较


             根据上面的介绍,我们应该看到RIPng的目标并不是创造一个全新的协议,而是对RIP进行必要的改造以使其适应IPv6下的选路要求,因此RIPng的 基本工作原理同RIP是一样的,其主要的变化在地址和报文格式方面。下面列举了一些RIPv1、RIPv2与RIPng之间的主要区别:


            (1)地址版本。RIPv1、RIPv2是基于IPv4的,地址域只有32bit,而RIPng基于IPv6,使用的所有地址均为128bit。


             (2)子网掩码和前缀长度。RIPv1被设计成用于无子网的网络,因此没有子网掩码的概念,这就决定了RIPv1不能用于传播变长的子网地址或用于 CIDR的无类型地址。RIPv2增加了对子网选路的支持,因此使用子网掩码区分网络路由和子网路由。IPv6的地址前缀有明确的含义,因此RIPng中 不再有子网掩码的概念,取而代之的是前缀长度。同样也是由于使用了IPv6地址,RIPng中也没有必要再区分网络路由、子网路由和主机路由。


             (3)协议的使用范围。RIPv1、RIPv2的使用范围被设计成不只局限于TCP/IP协议簇,还能适应其他网络协议簇的规定,因此报文的路由表项中包 含有网络协议簇字段,但实际的实现程序很少被用于其他非IP的网络,因此RIPng中去掉了对这一功能的支持。


             (4)对下一跳的表示。RIPv1中没有下一跳的信息,接收端路由器把报文的源IP地址作为到目的网络路由的下一跳。RIPv2中明确包含了下一跳信息, 便于选择最优路由和防止出现选路环路及慢收敛。与RIPv2不同,为防止RTE过长,同时也是为了提高路由信息的传输效率,RIPng中的下一跳字段是作 为一个单独的RTE存在的。


             (5)报文长度。RIPv1、RIPv2中对报文的长度均有限制,规定每个报文最多只能携带25个RTE。而RIPng对报文长度、RTE的数目都不作规 定,报文的长度是由介质的MTU决定的。RIPng对报文长度的处理,提高了网络对路由信息的传输效率。


             (6)安全性考虑。RIPv1报文中并不包含验证信息,因此也是不安全的,任何通过UDP的520端口发送分组的主机,都会被邻机当作一个路由器,从而很 容易造成路由器欺骗。RIPv2设计了验证报文来增强安全性,进行路由交换的路由器之间必须通过验证才能接收彼此的路由信息,但是RIPv2的安全性还是 很不充分的。IPv6包含有很好的安全性策略,因此RIPng中不再单独设计安全性验证报文,而是使用IPv6的安全性策略。


             (7)报文的发送方式。RIPv1使用广播来发送路由信息,不仅路由器会接收到分组,同一局域网内的所有主机也会接收到分组,这样做是不必要的,也是不安 全的。因此RIPv2和RIPng既可以使用广播也可以使用多播发送报文,这样在支持多播的网络中就可以使用多播来发送报文,大大降低了网络中传播的路由 信息的数量。


你可能感兴趣的:(兼容性,路由器,产品,因特网,最大的)