RIP-2协议一九九八年十二月1目录第一章RIP协议简介.....................................................................................................................3第二章V-D算法的介绍.......................................................................................................41路由表的建立...........................................................................................................42距离向量算法...........................................................................................................52第三章协议中的特殊处理...........................................................................................................81对相同路由开销的的处理.......................................................................................82对过时路由的处理...................................................................................................83布局改变时的处理...................................................................................................9第四章RIP协议的实现...............................................................................................................10第五章传统RIP协议..................................................................................................................121RIP协议的报文格式..............................................................................................122协议处理.................................................................................................................14第六章RIP-2的对拨号网的支持..............................................................................................161对拨号网路由的处理.............................................................................................162报文格式的扩展.....................................................................................................17第七章RIP-2和其它路由协议的配合........................................................................................183第一章RIP协议简介路由器的关键作用是用于网络的互连,每个路由器与两个以上的实际网络相连,负责在这些网络之间转发数据报。在讨论IP进行选路和对报文进行转发时,我们总是假设路由器包含了正确的路由,而且路由器可以利用ICMP重定向机制来要求与之相连的主机更改路由(具体请看IP部分的相应章节)。但在实际情况下,IP进行选路之前必须先通过某种方法获取正确的路由表。在小型的、变化缓慢的互连网络中,管理者可以用手工方式来建立和更改路由表。而在大型的、迅速变化的环境下,人工更新的办法慢得不能接受。这就需要自动更新路由表的方法,即所谓的动态路由协议,RIP是其中最简单的一种。RIP(routeinformationprotocol)协议是基于V-D算法(又称为Bellman-Ford算法)的内部动态路由协议。V-D是Vector-Distance的缩写,因此V-D算法又称为距离向量算法。这种算法在ARPARNET早期就用于计算机网络的路由的计算。RIP协议在目前已成为路由器、主机路由信息传递的标准之一,就因为这个原因,RIP协议被大多数IP路由器商业卖主广泛使用。先大致解释一下什么是内部路由协议。由于历史的原因,当前的INTERNET网被组成一系列的自治系统,各自治系统通过一个核心路由器连到主干网上。而一个自治系统往往对应一个组织实体(比如一个公司或大学)内部的网络与路由器集合。每个自治系统都有自己的路由技术,对不同的自治系统路由技术是不相同的。用于自治系统间接口上的单独的协议称为外部路由器协议,简称EGP(ExteriorGatewayProtocol)。用于自治系统内部的路由协议称为内部路由器协议,简称IGP(InteriorGatewayProtocol)。内部路由器与外部路由器协议EGP不同,外部路由协议只有一个,而内部路由器协议则是一族。各内部路由器协议的区别在于距离制式(distancemetric,即距离度量标准)不同,和路由刷新算法不同。RIP协议是最广泛使用的IGP之一,著名的路径刷新程序Routed便是根据RIP实现的。RIP协议被设计用于使用同种技术的中型网络,因此适应于大多数的校园网和使用速率变化不是很大的连续线的地区性网络。对于更复杂的环境,一般不使用RIP协议。在实现时,RIP作为一个系统长驻进程(daemon)而存在于路由器中,它负责从网络系统的其它路由器接收路由信息,从而对本地IP层路由表作动态的维护,保证IP层发送报文时选择正确的路由,同时广播本路由器的路由信息,通知相邻路由器作相应的修改。RIP协议处于UDP协议的上层(如图1.1),RIP所接收的路由信息都封装在UDP的数据报中,RIP在520号端口上接收来自远程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它路由器。通过这种方式,达到全局路由的有效。4RIPTCPUDPIPPPPEther图1.1路由器协议结构RIP协议分为传统RIP协议、需求RIP协议(DemandRIP)和触发RIP,而传统RIP协议又分为RIP-1,和RIP-2两个版本。需求RIP协议和触发RIP协议与传统RIP协议的区别在于需求RIP协议和触发RIP协议支持对拨号网的路由的维护,增添了几种相应的报文命令,增加了报文发送确认方式。quidway2501上目前的RIP-2不是采取需求RIP协议和触发RIP的方式,但为了支持拨号网的路由的维护2,也汲取了这两种协议的一些处理方式。其中主要改进在于对拨号网的路由进行处理时,并不象对局域网的路由一样设置一定的生存周期,当然为此而付出的代价也是很大的。第二章V-D算法的介绍1路由表的建立IP路由表需要一个建立过程,它的建立过程指的是它的初始化过程。任何路由器启动时,都必须首先获取一个初始路由表。不同的网络操作系统,获取初始路由表的方式不同,总的来说,有三种方式。第一种,路由器系统启动时,从外存读入一个完整的寻径表,长驻内存使用;系统关闭时再将当前路由表(可能经过刷新),写回外存,供下次使用。第二种,系统启动时,只提供一个空表,通过执行显式命令(比如批处理文件中的命令)来填充。第三种,系统启动时,从与本路由器直接相连的各网络地址中,推导出一组初始路由,当然通过初始路由只能访问相连网上的主机。显见,无论哪种情况,初始路由表总是不完善的,需要不断地运行过程中加以补充,这就是路由表的刷新。RIP正是用于路由表的维护和刷新,RIP协议中的路由刷新算法是距离向量算法,它采取的路由表的初始化方式是上述三种中的最后一种。52距离向量算法距离向量算法的思想很简单:所有参加RIP协议的路由器周期性地向外广播路由刷新报文,主要内容是由很多路由项(entry)组成的路由刷新报文。对路由来说,最主要的内容是目的地址和下一跳地址(nexthop)。对动态路由协议来说,为了找到本协议概念中的最佳路由,还必须注意路由的开销(metric)。所以路由项主要包括了目的地址、下一跳地址和路由开销。其他的如路由标记(tag)等内容在讲报文格式时,将具体讲到。在设计时,每个路由器的另外RIP管理了一个路由数据库,该路由数据库为系统中所有可能的信宿包含一个路由项,并为每个信宿保留如下信息:目的地址:在算法的IP实现中,这指的是主机或网络的IP地址。下一跳地址:到信宿的路由中的第一个路由器。接口:用于到下一跳物理网络。metric值:一个数,指明本路由器到信宿的开销。定时器:路由项最后一次被修改的时间。路由标记:区分路由为内部路由协议的路由还是外部路由协议的路由的标记。数据库由与系统直接相连的实体的描述初始化,通过从相邻路由器受到的报文修改维护。路由器间交换的最重要的信息是修改报文,参加路由维护计划的路由器发送当前存在于实体的描述路由数据库的路由修改报文。仅通过相邻路由器间交换路由信息是可以维护整个系统的最佳路由的,这在接下来的讨论中会逐步得到证明。距离向量算法总是基于一个这样的事实:路由数据库中的路由已是目前通过报文交换而得到的最佳路由。同时,报文交换仅限于相邻的实体间,也就是说,实体共享同一个网络。当然,要定义路由是最佳的,就必须有衡量的办法,这就用到前面所说的“metric”。RIP简单的网络中,通常用可行路由所经的路由器数简单地计算metric值。在复杂的网络中,metric一般代表该路由传输数据报的延迟或其它发送开销。令D(i,j)代表从实体i到实体j的最佳路由的metric值,d(i,j)代表从i直6接到j的开销,因为开销是可加的,算法中最佳路由如此获取表示:D(i,i)=0,对所有的iD(i,j)=MIN[d(i,j)+D(k,j),当i不等于k时实体i从相邻路由器k收到k到j的开销的估计D(i,j),i将D(i,j)加上i到k的开销估计d(i,j),i比较从所有相邻路由器得到的数值,取得最小数,就得到了它到j的最佳路由。具体地说,距离向量算法如下所述:首先,路由器刚启动时,对距离向量路由表(V-D路由表)进行初始化,该初始化路由表包含所有去往与本路由器直接相连的网络的路径。由于去往直接相连的网络不经过中间路由器,所以初始化的V-D路由表中的各路由的距离均为0。图2.1初始V-D路由表的一个示例。信宿网距离路径10.0.0.00直接20.0.0.00直接(a)(b)图2.1(a)路由器G1的初始V-D路由表(b)路由器G2附近的网络拓扑图2.1的“信宿网”域含信宿网IP地址。然后,各路由器周期性地向外广播其V-D路由表内容。与某路由器直接相连的(位于同一物理网络)的路由器收到该路由表报文后,根据此报文对本地路由表进