RIP协议报文格式
继续上文的内容,这篇文章我们来学习下RIP协议的报文格式。
RIP报文由首部和路由部分组成。
首部占4个字节,其中的命令字段指出报文的意义,例如,1表示请求路由信息,2表示对请求路由信息的响应或未被请求而发出的路由更新报文,首部后面的“必为0”是为了4字节的对齐。RIP2报文中的路由部分由若干个路由信息组成,每个路由信息需要用20个字节。其中,地址族标识符字段用来标志所使用的地址协议,如采用IP地址就令这个字段的值为2。路由标记填入自治系统号ASN(Autonomous System Number),这是考虑使RIP有可能收到本自治系统以外的路由选择信息。后面指出了网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。一个RIP报文最多可包含25个路由,因而RIP报文的最大长度是(4 + 25 * 20) = 504字节。如超过,必须再用一个RIP报文来传送。
RIP还具有简单的鉴别功能。若使用鉴别功能,则将原来写入第一个路由信息的位置用作鉴别(20字节)。这时应将地址族标识符置为全1,而路由标记写入鉴别类型,剩下的16字节为鉴别数据。在鉴别数据之后,才写入路由信息,但这时最多只能再放入24个路由信息。
RIP存在的一个问题是当网络出现故障时,要经过较长的时间才能将此信息传送到所有的路由器,看下面这个例子:
设三个网络通过两个路由器互连起来,并且都已建立了各自的路由表。图中路由器交换的信息只给出了我们感兴趣的一行内容。路由器R1中的“1, 1, 直接”表示“到网1的距离是1,直接交付”。路由器R2中的“1, 2, R1”表示“到网1的距离是2,下一跳经过R1”。
现在假定路由器R1到网1的链路出了故障,R1无法到达网1,于是路由器R1把到网1的距离改为16,表示网1不可达,所以现在R1的路由表中的相应项目变为“1, 16, 直接”。但是,很可能要经过30s后,R1才把更新信息发送给R2,在这段时间,可能R2已经把自己的路由表发送给了R1,其中有“1, 2, R1”这一项。R1收到R2的更新报文(1, 3, R2)后,误以为可经过R2到达网1,根据前面一篇文章提到的步骤:路由表中存在目的网络,下一条路由器不是它自己,而且距离小于路由表中的距离16,所以进行了更新,被改为:1, 3, R2,表明“我到网1的距离是3,下一跳路由器经过R2”,并把更新后的信息发送给R2。同理R2又更新自己的路由表为“1, 4, R1”,以为“我到网1的距离是4,下一跳经过路由器R1”。这样的更新一直继续下去,直到R1和R2到网1的距离都为16时,R1和R2才知道原来网1是不可达的。RIP协议的这一特点叫做:好消息传播得快,坏消息传播得慢。网络出故障的传播时间往往需要较长的时间,这是RIP的一个主要缺点。
总之,RIP协议最大的优点是实现简单,开销较小。但RIP协议的缺点也较多。首先,RIP限制了网络的规模,它能使用的最大距离为15,其次,路由器之间交换的路由信息是路由器中的完整路由表,随着网络规模的增大,开销也就增加。最后,“坏消息传播得慢”,使得更新过程的收敛时间过长。