1.为RIP的辩护
随着OSPF与IS-IS的出现,许多人都相信RIP已经过时了。
事实上,尽管新的IGP路由协议的确比RIP优越得多,但RIP
也确有它自己得一些优点。首先,在一个小型网络中,RIP
对于使用带宽以及网络的配置和治理方面的要求是很少的,
与新的IGP相比,RIP非常轻易实现。
此外,现在RIP还在大量使用,这是OSPF与IS-IS所不
能比的。而且,看起来这种状况还将持续一些年。
既然RIP在许多领域和一定时期内仍具有使用价值,那
么就有理由增加RIP的有效性,这是毫无疑问的,因为对已
有技术进行改造所获收益比起彻底更新要现实得多。
2.现在的RIP
现在的RIP包中只是包含了路由器为包在网络上选路所
需要的最小限度的路由信息。由于历史原因,在现在的RIP
包中还有大量的未被使用的空间。
现在的RIP协议没有考虑自治系统(AS)之间以及内部网
关协议与外部网关协议之间的信息交互,没有考虑子网的问
题,没有身份验证机制。在RIP包中没有包含子网掩码信息对
于路由器来说是一个非凡严重的问题,因为它们需要知道子
网掩码以决定如何选择路由。假如一个RIP路由是到一个网络
的路由,那么这时候子网掩码和网络掩码是相同的。但是,
假如这个路由不是到一个网络的路由,那么路由器就无法确定
子网掩码。更糟糕的是,路由器将无法确定这个路由是到一个
网络的路由还是到一个特定主机的路由。现在,一些路由器只
是简单的选择包来源处的子网掩码,并依次决定路由的类型。
3.协议扩展
这份文档并没有从根本上改变RIP协议。更恰当的来说,它
只是提供了一个对于RIP协议数据包格式的扩展,以使路由器能
够分享一些重要的附加信息。
新的RIP数据包格式如下:
01233
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+命令字
(1)版本(1)路由选择域(2)
+---------------+---------------+-------------------------------+
地址族标识符(2)路由标签(2)
+-------------------------------+-------------------------------+
IP地址(4)
+---------------------------------------------------------------+
子网掩码(4)
+---------------------------------------------------------------+
下一跳(4)
+---------------------------------------------------------------+
度量值(4)
+---------------------------------------------------------------+
上图中的命令字域,地址族标识符域,IP地址域以及度量值域
都保留了它们在RFC1058中的定义。版本域被指定为2的RIP包将会支
持使用身份验证机制或者在其他几个新定义的域中携带信息。
所以的域都使用IP网络字节顺序来编码。
3.1验证机制
验证机制是个数据包的功能,在包的头信息里只有两个字节
大小的域可以用来进行身份验证,而任何合理的身份验证都需要
不止两个字节大小的空间。所以RIP-2的验证机制决定使用一个完
整的RIP头项以进行身份验证。假如包中地址族标识符的第一项(只有
一项)的值是0XFFFF,那么这项的其余部分包含了验证的信息(包括
所使用的验证算法的类型以及16个字节的验证数据)。在往后就是最多
为24个目的的站点-度量值数据对。假如不使用验证机制的话,那么
地址族标识符项就不能是0XFFFF。一个包含了验证项的RIP包的格式如
下:
01233
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
命令字(1)版本(1)路由选择域(2)
+---------------+---------------+-------------------------------+
0xFFFF验证类型(2)
+-------------------------------+-------------------------------+
~验证(16)~
+---------------------------------------------------------------+
现在,能确定的唯一的验证算法就是“简易密码”,它的
类型是2。其余的16个字节包含了纯文本的密码。密码格式是向
左对齐,右边假如有空的话有二进制的0补齐
3.2选择域路由
路由域标号是路由程序用来决定路由更新信息归属(那个域)
的信息。这个字段是用来将路由更新信息绑定到路由器上特定的
路由程序来处理的。假如我需要实现多个不同的网络共存与同以
物理网络的话,那么我们就需要路由信息中包含这个字段。这可以
使治理员可以使用简单的策略来实现多个并行的RIP实例。这意味着,
一个路由器只在一个和一系列域中工作,它将会忽略那些属于别的
其他域的RIP数据包。路由域标号为0的是缺省路由域。
3.3路由标记
路由标记字段的存在是为了支持外部网关协议(EGP)。有关与
这个字段的使用已经超出本协议的范围了。不论使用什么方法,这个
字段被期望用于传递自治系统的标号给外部网关协议以及边界网关协
议(BGP)。任何RIP系统收到一个包含有非零路由标记字段的RIP包时,
必须重新对外广播收到的值。而没有路由标记的路由器必须将0作为
自己的路由标记对外广播。
3.4子网掩码
子网掩码字段包含的子网掩码用于产生目标地址的非主机地址部
分(即目标所处网络的网络地址)。假如这个字段的值为0的话,这意
味这该字段中没有包含子网掩码。
利用下面两条规则,一个RIP-1路由器可以收到RIP-2的数据包并对
其进行操作:
1)网络内部的路由信息不可以出现在其他的网络里。
2)有关特定子网的路由信息不能对RIP-1路由器广播,因为它会误
认为那是一个到主机的路由。
3.5下一跳
指定一个包到一个特定地址的立即下一跳地址的路由器应该被跳
过。假如这个字段的值为0.0.0.0的话,那么说明这个这个包的路由必
须包括发出RIP广播指定该字段的地址为0.0.0.0的路由器。每一个被指
定的下一跳地址,都必须是可以通过发送RIP广播的逻辑子网而直接抵达
的。
增加下一跳地址字段的目的是消除包在发送的过程中不会增加不必要
的跳数。当一个网络上并不是所有的路由器都运行RIP时,下一跳地址字段
就会显得非凡有用。一个很简单的例子就是附录A中给出的例子。注重,下
一跳地址字段是一个可选的字段。假如这些信息被忽略了,那么路由器的
效率一定会有所下降的。
3.6多点广播
为了减轻那些不接受RIP-2包的主机的不必要的负载,一个ip多点广播
地址将被用于周期性的广播。这个ip多点广播地址时224.0.0.9。注重,因为
RIP路由信息包只是在本地网络上进行多点广播,所以连IGMP也不需要。
为了维持向后兼容性,我们将设置多点广播地址的使用方式,具体方法
参考下面的4.1节。假如使用多点广播的话,应该使用在所以支持它的路由器
上。
4.兼容性
在RFC1058的描述中,我们看见了相当多的有关于如何处理版本号的深谋
远虑。在那篇RFC中规定了,一个版本号为0的的RIP包将会被丢弃;假如一个
版本号为1的RIP包中的任何一个必须为0的字段不是0,那么这个包也将被抛弃;
任何版本号大于1的包将不会仅仅因为某个规定必须为0的字段不为0而被抛弃。
这些规定意味着,新版本的RIP协议对于现存的只是部分支持这些规范的RIP实
现将会是完全向下兼容的。
4.1兼容的转换
我们需要兼容的转换有两个原因。第一,有一些RIP-1的实现并不服从我们
在上面所谈到的在RFC1058中的描述。第二,多点广播技术的使用将会阻止RIP-1
路由器收到RIP-2路由更新信息包(这正是我们在某些情况下希望得到的的特性)。
转换有三种设置方法:1.RIP-1,只有RIP-1包在RIP-1路由器中传递
2.RIP-1兼容,用广播的方法发送RIP-2路由信息包
3.RIP-2,用多点广播的方法发送RIP-2路由信息包
推荐的方法是RIP-1兼容。
4.2验证机制
因为验证机制的使用是通过将RIP包中地址族标识符字段的第一项置为0xffff
来标识的。那么,一个RIP-1路由器将会忽略这个包,因为对于它来说,这是一个
属于非IP地址族的地址。应当注重的一点是,使用验证机制并不能阻止RIP-1路由
器得到RIP-2路由信息包。假如你希望达到这种效果的话,应当像在3.6及4.1节中
描述的那样使用多点广播来发送你的RIP-2路由信息包。
4.3多重度量制式
当讨论到兼容性的话题时,有一些要求增加度量制式的请求。这里有一个
这个要求不能被满足的最基本的原因,因为这样做会直接破坏向下兼容性。一
个增加的度量制式很显而易见的会彻底使一个老版本的RIP路由器迷惑。最好
是它们能够忽略这些路由信息,就像忽略公制的16。也有一种建议是令度量为
一个字节,而重新使用高的三字节,但是这样会破坏任何已有的实现。
4.4无地址连接
和RIP-1一样,RIP-2也不支持无地址连接。
附录A
这是一个在一个RIP实体中使用下一跳字段的很简单的例子。
------------------------------
IR1IR2IR3XR1XR2XR3
--+----+----+----+----+----+--
--+-------+-------+---------------+-------+-------+--
<-------------RIP-2------------->
假设IR1,IR2和IR3都是一个使用RIP-2为内部网关协议的网络(例如
一个校园网)的内部路由器。另一方面,XR1,XR2,和XR3则是在另一个
使用其他网关协议(例如OSPF)的网络(例如一个局域网,校园网是它的
一个成员)中。XR1,XR2和XR3之间会互相交换路由信息,这样它们会知道
到网络N1,N2的最佳路由是经过XR1,到网络N3,N4和N5的最佳路由是经过
XR2,而到网络N6,N7的最佳路由是经过XR3。通过设定正确的下一跳字段(通
过XR2到N3,N4,N5,通过XR3到N6,N7),只有XR1需要与IR1/IR2/IR3交换
路由信息已避免经由XR1的多余的跳数。假如没有下一跳字段(例如,我们使用
RIP-1),那么我们就需要XR2,XR3也一样分享RIP-2路由信息以消灭多余的跳
数。
参考文献
[1]Hedrick,C.,"RoutingInformationProtocol",RFC1058,Rutgers
University,June1988.
[2]Malkin,G.,andF.Baker,"RIPVersion2MIBExtension",RFC
1389,Xylogics,Inc.,AdvancedComputerCommunications,January
1993.
[3]Malkin,G.,"RIPVersion2ProtocolAnalysis",RFC1387,
Xylogics,Inc.,January1993.
安全注重事项
基本的RIP协议并不是一个安全的协议。为了使RIP-2协议更像一个
现代的路由协议,一个可扩展的验证机制被加到协议的改进中了。验证
机制的具体描述请参考3.1节以及4.2节。
作者地址
GaryScottMalkin
Xylogics,Inc.
53ThirdAvenue
Burlington,MA01803
Phone:(617)272-8140
EMail:gmalkin@Xylogics.COM