Rip2协议讲解Word格式.docx
- 文档编号:19271392
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:18
- 大小:133.56KB
Rip2协议讲解Word格式.docx
《Rip2协议讲解Word格式.docx》由会员分享,可在线阅读,更多相关《Rip2协议讲解Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
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号端口上接收来自远程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它路由器。
通过这种方式,达到全局路由的有效。
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协议中的路由刷新算法是距离向量算法,它采取的路由表的初始化方式是上述三种中的最后一种。
2距离向量算法
距离向量算法的思想很简单:
所有参加RIP协议的路由器周期性地向外广播路由刷新报文,主要内容是由很多路由项(entry)组成的路由刷新报文。
对路由来说,最主要的内容是目的地址和下一跳地址(nexthop)。
对动态路由协议来说,为了找到本协议概念中的最佳路由,还必须注意路由的开销(metric)。
所以路由项主要包括了目的地址、下一跳地址和路由开销。
其他的如路由标记(tag)等内容在讲报文格式时,将具体讲到。
在设计时,每个路由器的另外RIP管理了一个路由数据库,该路由数据库为系统中所有可能的信宿包含一个路由项,并为每个信宿保留如下信息:
●目的地址:
在算法的IP实现中,这指的是主机或网络的IP地址。
●下一跳地址:
到信宿的路由中的第一个路由器。
●接口:
用于到下一跳物理网络。
●metric值:
一个数,指明本路由器到信宿的开销。
●定时器:
路由项最后一次被修改的时间。
●路由标记:
区分路由为内部路由协议的路由还是外部路由协议的路由的标记。
数据库由与系统直接相连的实体的描述初始化,通过从相邻路由器受到的报文修改维护。
路由器间交换的最重要的信息是修改报文,参加路由维护计划的路由器发送当前存在于实体的描述路由数据库的路由修改报文。
仅通过相邻路由器间交换路由信息是可以维护整个系统的最佳路由的,这在接下来的讨论中会逐步得到证明。
距离向量算法总是基于一个这样的事实:
路由数据库中的路由已是目前通过报文交换而得到的最佳路由。
同时,报文交换仅限于相邻的实体间,也就是说,实体共享同一个网络。
当然,要定义路由是最佳的,就必须有衡量的办法,这就用到前面所说的“metric”。
RIP简单的网络中,通常用可行路由所经的路由器数简单地计算metric值。
在复杂的网络中,metric一般代表该路由传输数据报的延迟或其它发送开销。
令D(i,j)代表从实体i到实体j的最佳路由的metric值,d(i,j)代表从i直接到j的开销,因为开销是可加的,算法中最佳路由如此获取表示:
D(i,i)=0,对所有的i
D(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路由表内容。
与某路由器直接相连的(位于同一物理网络)的路由器收到该路由表报文后,根据此报文对本地路由表进行刷新。
刷新时,路由器逐项检查来自相邻路由器的V-D报文,遇到下述表目之一,须修改本地路由表(假设路由器Gi收到路由器Gj的V-D报文):
1)Gj列出的某表目Gi路由表中没有。
则Gi路由表中须增加相应表目,其“信宿”是Gj表目中的信宿,其“路径”为“Gj”(即下一路由器为Gj)。
2)Gj去往某信宿的距离值比Gi去往该信宿的距离减1还小。
这种情况说明,Gi去往某信宿若经过Gj,距离会更短。
则Gi修改本表目,其中“信宿”域不变,“距离”为Gj表目中距离加1,“路径”为“Gj”。
3)Gi去往某信宿的路由经过Gj,而Gj去往该信宿的路由发生变化。
这里分两种情况:
a.Gj的V-D表不再包含去往某信宿的路由,则GI中相应路由须删除。
b.Gj的V-D表中去往某信宿的路由距离发生变化,则Gi中相应表目“距离”须修改,以Gj中的“距离”加1取代原来的距离。
图2.2中对以上描述给出直观的说明,其中Gi、Gj为相邻路由器。
图2.2
(a)路由器Gi原路由表;
(b)路由器Gj广播的V-D报文;
(c)路由器Gj刷新后的路由表
图2.2中,“”所指示为须刷新的表目,“”为引起刷新的表目,“”为刷新后的表目。
这里要特别强调的是,V-D算法的路由刷新发生在相邻路由器之间,所以V-D报文不一定以广播方式发送出去,一种比较优化的思想是路由器直接向相邻路由器发送V-D报文,不必采用广播方式。
第三章协议中的特殊处理
1对相同路由开销的的处理
当修改报文中的路由开销和路由数据库的路由开销相同时,不修改路由数据库中的路由。
这种情况对应在实际网络中的问题,是指网络中出现了多条开销相同的路由时,路由如何选择的问题。
在这种情况下,采用先入为主的原则,即采用以前的路由。
这符合处理方式的简单性和实用性。
2对过时路由的处理
根据V-D算法,一条路由只在出现一条更优路由时才被刷新,否则,将继续保留在路由数据库中。
这就忽略了这样一种情况,即当某条路由突然崩溃,需要选择一条新的路由来代替现存路由。
但这靠V-D中的刷新算法来是不能得到解决的。
针对这种情况,在实际应用中,RIP规定,所有机器对其路由数据库中的每一表目都设置一个时钟,每增加一个新表目,就相应设置一个新时钟。
在收到V-D报文中假如有关于此路由的表目,则将时钟清零,重新记时。
假如在规定时间内,一直未收到该路由的刷新信息,时钟期满,则将该路由从路由数据库中删除。
如果到指定的信宿有其它路由,则新的路由将从进一步收到的定时刷新报文中获得,否则去往原信宿的路由不存在。
3布局改变时的处理
在上一章所述的V-D算法中,有一个严重的问题,即“慢收敛”(slowconvergence)问题,又叫“计算到无穷”(counttoinfinity)。
如图3.1(a)中所示正常网间网拓扑结构,从G1可直接到达网络Net1,从G2经G1(距离为1)可到达Net1.正常情况下,G2收到G1的V-D报文后,会建立一条路由(1,G1,1).
现在假设从G1到Net1的路由因故障而崩溃,但G1依然能正常工作.G1一旦检测到不可达,会立即将原来的路由废除(将距离改为16).然后会出现两种可能:
第一种,在收到来自G2的V-D报文之前,G1将修改后的路由信息广播出去,于是G2将修改其路由数据库,将原来去往Net1的路由(1,G1,1)删除.这是完全正常的.
第二种,在G1发送新的报文之前,G2广播自己的V-D报文.该报文中必然有一条路由(1,1)表目,说明从G2出发,经1个驿站可以到达Net1.G1收到该报文
后,显然会根据此表目更改自己的路由表,产生关于Net1的新路由(1,G2,2).于是G1与G2间产生寻径环,如图3.1(b)所示.
上述路由环会通过G1和G2间的不断V-D报文交换而解除,但解除的过程是非常缓慢的:
出现路由环后,在下一轮路由广播中,G1将向G2通告(1,2)表目,G2收到此表目修改本地路由数据库,将去往Net1的路由改为(1,G1,3).然后,G2向G1通告(1,3)表目,G1将去往Net1的表目改为(1,G2,4)...如此下去,直到路由长度变为16.也就是说,至少要经过7番来回(至少30*7秒),路由环才能解除.这就是所谓满收敛问题.
其实这只是一种非常简单的情况,路由环也可以建立在不相邻的路由器之间.对于这种情况,如果减小路由的最大长度,对解决慢收敛问题将有所帮助,但这会限制网点的规模,无疑是不行的.
对于这种问题,有很多种办法,在本协议的实现中,用的是水平分割(SplitHorizon)和毒性逆转法(PoisonReverse),并在毒性逆转时采用触发刷新(TriggeredUpdate).具体实现是这样的:
水平分割:
当路由器从某个网络接口发送RIP路由刷新报文时,其中不包含从该接口获取的路由信息.
毒性逆转:
某路径崩溃后,最早广播此路由的路由器将原路由继续保留在若干报文中,但指明该路由为无限长.
触发刷新:
一旦检测到路由崩溃,立即广播路由刷新报文,而不等到下一刷新周期.
根据路由环产生的过程,可知通过水平分割法对解决两路由器之间形成的路由环是极为有效的方法.毒性逆转法可解决多路由器之间的路由环问题.使用触发刷新,显然可以加快新路由的有效刷新.
更有这样一个事实,从本接口发出的路由再从别的接口收到,对本地路由表是不会帮助的,正是基于这种考虑,水平分割是在RIP协议的实现中是必不可少的.对于这一点在后来的讨论中会更清楚地得到认识.
第四章RIP协议的实现
RIP根据V-D算法的特点,将协议的参加者分为主动机和被动机两种。
主动机主动向外广播路由刷新报文,被动机被动地接收路由刷新报文。
一般情况下,主机作为被动机,路由器则既是主动机又是被动机,即在向外广播路由刷新报文的同时,接受来自其它主动机的V-D报文,并进行路由刷新。
RIP规定,路由器每30秒向外广播一个V-D报文,报文信息来自本地路由表。
RIP的V-D报文中,其距离以驿站计:
与信宿网络直接相连的路由器规定为一个驿站,相隔一个路由器则为两个驿站……以此类推。
一条路由的距离为该路由(从信源机到信宿机)上的路由器数。
为防止寻径环长期存在,RIP规定,长度为16的路由为无限长路由,即不存在的路由。
所以一条有效的路由长度不得超过15。
正是这一规定限制了RIP的使用范围,使RIP局限于中小型的网络网点中。
为了保证路由的及时有效性,RIP采用触发刷新技术和水平分割法。
当本地路由表发生修改时,触发广播路由刷新报文,以迅速达到最新路由的广播和全局路由的有效。
水平分割法是指当路由器从某个网络接口发送RIP路由刷新报文时,其中不包含从该接口获取的路由信息。
这是由于从某网络接口获取的路由信息对于该接口来说是无用信息,同时也解决了两路由器间的慢收敛问题。
对于局域网的路由,RIP规定了路由的超时处理。
主要是考虑到这样一个情况,如果完全根据V-D算法,一条路由被刷新是因为出现一条路由开销更小的路由,否则路由会在路由表中一直保存下去,即使该路由崩溃。
这势必造成一定的错误路由信息。
为此,RIP规定,所有机器对其寻径表中的每一条路由都设置一个时钟,每增加一条新路由,相应设置一个新时钟。
在收到的V-D报文中假如有关于此路由的表目,则将时钟清零,重新计时。
假如在120秒内一直未收到该路由的刷新信息,则认为该路由崩溃,将其距离设为16,广播该路由信息。
如果再过60后仍未收到该路由的刷新信息,则将它从路由表中删除。
如果某路由在距离被设为16后,在被删除前路由被刷新,亦将时钟清零,重新计时,同时广播被刷新的路由信息。
至于路由被删除后是否有新的路由来代替被删除路由,取决于去往原路由所指信宿有无其它路由。
假如有,相应路由器会广播之。
机器一旦收到其它路由的信息,自然会利用V-D算法建立一条新路由。
否则,去往原信宿的路由不再存在。
RIP启动和运行的整个过程如下所描述:
某路由器刚启动RIP时,以广播的形式向相邻路由器发送请求报文,相邻路由器的RIP收到请求报文后,响应请求,回发包含本地路由表信息的响应报文。
RIP收到响应报文后,修改本地路由表的信息,同时以触发修改的形式向相邻路由器广播本地路由修改信息。
相邻路由器收到触发修改报文后,又向其各自的相邻路由器发送触发修改报文。
在一连串的触发修改广播后,各路由器的路由都得到修改并保持最新信息。
同时,RIP每30秒向相邻路由器广播本地路由表,各相邻路由器的RIP在收到路由报文后,对本地路由进行的维护,在众多路由中选择一条最佳路由,并向各自的相邻网广播路由修改信息,使路由达到全局的有效。
同时RIP采取一种超时机制对过时的路由进行超时处理,以保证路由的实时性和有效性。
RIP作为内部路由器协议,正是通过这种报文交换的方式,提供路由器了解本自治系统内部个网络路由信息的机制。
RIP-2支持版本1和版本2两种版本的报文格式。
在版本2中,RIP还提供了对子网的支持和提供认证报文形式。
版本2的报文提供子网掩码域,来提供对子网的支持;
另外,当报文中的路由项地址域值为0xFFFF时,默认该路由项的剩余部分为认证。
RIP2对拨号网的支持则是参考需求RIP和触发RIP的形式经修改而加入的新功能。
这时,我们只是要求在拨号网拨通之后对路由进行30秒一次的广播,而在没拨通时并不作如是要求,这是根据具体情况变通的结果。
第五章传统RIP协议
正如前几章所说,RIP协议是来允许路由器(或相关产品)通过基于IP网络交换有关计算路由信息的一种距离向量协议。
RIP传送路由信息给信宿,信宿可以是路由器和主机,当信宿是主机时,主机必须有多个接口。
RIP作为一个系统常驻进程(daemon)存在,它负责从网络信筒中其它路由器接收路由更改信息,从而对本地IP层的路由进行动态地维护,保证IP层发送报文时选择正确的路由。
RIP协议处于UDP协议的上层,RIP所接收的路由修改信息都封装在UDP的数据报中,RIP在520号端口上接收来自远程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它的路由器,通过这种方式,达到全局路由的的有效。
1RIP协议的报文格式
本协议在实现过程中支持RIPVersion1和RIPVersion2两种格式的报文。
RIP数据报一共有五类,由Command域确定数据报的类型,如图4.1所示。
类型意义
1路径信息请求
2路径信息响应
3过时
4过时
5留作Sun微系统公司内部使用
图4.1RIP报文类型
其中第1、2类报文是最重要的一对,后者是从发送该报文的路由器的寻径表中取出的V-D报文。
各种RIP报文的格式相同,包括一个固定的报头和一个可选的V-D表。
其格式如图4.2和图4.3所示,图2是RIPVersion1的报文格式,图3是RIPVersion2的报文格式。
RIPVersion1的报文格式:
RIPVersion2的格式:
其中:
Metric:
到下一路由器的权值。
AddressFamilyIdentifier:
指示路由项中的地址种类,这里应为2。
IpAddress:
地址域,包括网络类和IP地址在内,RIP报文中对每一网络共有14个字节的地址空间。
RIPVersion2报文的特有的一些属性:
RouteTag:
外部路由标记,是表示路由是保留还是重播的属性。
它提供一种从外部路由中分离内部路由的方法,用于传播从外部路由器协议(EGP)获得的路由信息。
Subnetmask:
子网掩码,应用于IP地址产生非主机部分地址,为0时表示不包括子网掩码部分,使得RIP能够适应更多的环境。
NextHop:
下一驿站,可以对使用多路由协议的网络环境下的路由进行优化。
认证,确认合法的信息包,目前支持纯文本的口令形式。
认证是每一报文的功能,因为在报文头中只提供两字节的空间,而任一合理的认证表均要求多余两字节的空间,故RIPVersion2认证表使用一个完整的RIP路由项。
如果在报文中最初路由项AddressFamilyIdentifier域的值是0xFFFF,路由项的剩余部分就是认证。
包含认证RIP报文路由项采用如下格式:
组播,为了降低那些没有监听RIPVersion2报文的主机的不必要的开销,IP多目传送地址被用于定时广播。
IP多目地址是224.0.0.9。
为了支持向后兼容,多目地址的使用是可配置的。
如果能够多目传送,则它将被支持它所有接口使用。
管理信息库,允许在路由软件内部对RIP操作进行监听和控制。
如果RIP-2路由器接收RIP-1的请求,它将以RIP-1的响应方式响应。
如果路由器被配置成只发送RIP-2报文,它将不响应RIP-1的请求。
2协议处理
RIP协议的运行过程就是路由器软件对消息输入和输出处理过程,其输入和输)出处理大致如下所描述:
(一)输入处理:
主要是指路由器协议软件对在520号UDP端口收到的数据报进行的处理。
对于输入处理,首先必须先作一定格式检查,检查通过后,再分别对几种输入消息做相应的处理。
请求报文:
路由器在开始运行时,为了从邻机处获取路由表的初始值,通常会发一个请求。
报文的Command字段为(request)。
对所有或部分路由表的请求,一般以广播
形式从520号UDP端口发送。
实际中,这种请求有两种格式:
请求获取路由表的全部和请求获取路由表的某些特定路由项。
路由软件先逐个路由项地处理请求,如果没有任何路由项,也就没有响应;
如果请求中恰好只有一个路由项,并且addressfamilyidentifier为0,metric为16,则表示需要接收方发送所有路由表的请求;
除此之外,则是要求部分路由,处理很简单,沿着请求路由项表一个一个看,对于每个路由项,在主机路由数据库中查找,如果找到,则将该路由的metric值填入数据报的metric字段,如果没有,则向其中填16。
一旦所有路由项均已处理,将command字段设为响应(response),并将该数据报发回其来自的端口。
注意,根据请求是否关于指定的一批目的地,还是关于整个路由表,处理有所不同。
如果关于整个路由表,输出作普通的处理即可,包括水平分割和子网隐藏,因此来自路由表的某些路由项将被隐藏;
如果是指定路由项,则将查找结果返回,不作水平分割,如果需要还要返回子网信息。
2.响应报文:
因为指定查询、路由修改等原因而收到响应。
不论收到什么样的响应,RIP处理程序就开始更新它的路由表。
路由表的每一项至少都要包括如下内容:
目的站点的地址;
通往目的站点的量度值;
“下一个路由器”的地址;
“最近更新过”的标志;
几个定时器。
因为处理响应可能修改主机路由表,所以必须作严格的有效性检查。
对于
RIPVeon1数据报,对mustbezero域必须进行查零处理,对RIPVersion2数据报则可忽略。
数据报验证有效后,还要对其路由项逐个进行验证。
全部通过后,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Rip2 协议 讲解