RIP:选路信息协议

【RIP:选路信息协议】
;;;;本节对RIP进行了描述,这是因为它是最广为使用(也是最受攻击)的选路协议 。对于RIP的正式描述文件是RFC 1058 [Hedrick 1988a],但是该RFC是在该协议实现数年后才出现的 。
10.4.1 报文格式
;;;;RIP报文包含中在UDP数据报中,如图10-2所示(在第11章中对UDP进行更为具体的描述) 。
;;;;图1 0 - 3给出了使用I P地址时的RIP报文格式 。
;;;;命令字段为1表示请求,2表示应答 。还有两个舍弃不用的命令( 3和4),两个非正式的命令:轮询( 5)和轮询表项( 6) 。请
求表示要求其他系统发送其全部或部分路由表 。应答则包含发送者全部或部分路由表 。
;;;;版本字段通常为1,而第2版RIP(1 0 . 5节)将此字段设置为2 。
;;;;紧跟在后面的2 0字节指定地址系列( address family)(对于I P地址来说,其值是2)、I P地址以及相应的度量 。在本节的后面可以看出,RIP的度量是以跳计数的 。
;;;;采用这种2 0字节格式的RIP报文可以通告多达2 5条路由 。上限2 5是用来保证RIP报文的总长度为2 0×254 = 504,小于5 1 2字节 。由于每个报文最多携带2 5个路由,因此为了发送整个路由表,经常需要多个报文 。
10.4.2 正常运行
;;;;让我们来看一下采用RIP协议的routed程序正常运行的结果 。RIP常用的U D P端口号是5 2 0 。
;;;;? 初始化:在启动一个路由守护程序时,它先判定启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表 。在点对点链路中,该请求是发送给其他终点的 。假如网络支持广播的话,这种请求是以广播形式发送的 。目的U D P端口号是
5 2 0(这是其他路由器的路由守护程序端口号) 。
;;;;这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6 。这是一种要求另一端完整路由表的非凡请求报文 。
;;;;? 接收到请求 。假如这个请求是刚才提到的非凡请求,那么路由器就将完整的路由表发送给请求者 。否则,就处理请求中的每一个表项:假如有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为1 6(度量为1 6是一种称为“无穷大”的非凡值,它意味着没有到达目的的路由) 。然后发回响应 。
;;;;? 接收到响应 。使响应生效,可能会更新路由表 。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除 。
;;;;? 定期选路更新 。每过3 0秒,所有或部分路由器会将其完整路由表发送给相邻路由器 。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的 。
;;;;? 触发更新 。每当一条路由的度量发生变化时,就对它进行更新 。不需要发送完整路由表,而只需要发送那些发生变化的表项 。
;;;;每条路由都有与之相关的定时器 。假如运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大( 1 6),并标注为删除 。这意味着已经在6个3 0秒更新时间里没收到通告该路由的路由器的更新了 。再过6 0秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开 。
10.4.3 度量
;;;;RIP所使用的度量是以跳( h o p )计算的 。所有直接连接接口的跳数为1 。考虑图1 0 - 4所示的路由器和网络 。画出的4条虚线是广播RIP报文 。
;;;;路由器R 1通过发送广播到N 1通告它与N 2之间的跳数是1(发送给N 1的广播中通告它与N 1之间的路由是无用的) 。同时也通过发送广播给N 2通告它与N 1之间的跳数为1 。同样,R 2通告它与N 2的度量为1,与N 3的度量为1 。

推荐阅读