10.4 RIP:选路信息协议
本节对R I P进行了描述,这是因为它是最广为使用(也是最受攻击)的选路协议。对于R I P 的正式描述文件是RFC 1058 [Hedrick 1988a],但是该R F C是在该协议实现数年后才出现的。
10.4.1 报文格式
RIP报文包含中在UDP数据报中,如图10-2所示(在第11章中对UDP进行更为详细的描述)。图1 0 - 3给出了使用I P地址时的R I P报文
格式。
命令字段为1表示请求,2表示应答。还
有两个舍弃不用的命令(3和4),两个非正
式的命令:轮询(5)和轮询表项(6)。请
求表示要求其他系统发送其全部或部分路由
图10-2 封装在UDP数据报中的RIP报文
表。应答则包含发送者全部或部分路由表。
版本字段通常为1,而第2版R I P(1 0 . 5节)将此字段设置为2。
紧跟在后面的2 0字节指定地址系列(address family)(对于I P地址来说,其值是2)、I P地址以及相应的度量。在本节的后面可以看出,R I P的度量是以跳计数的。
采用这种2 0字节格式的R I P报文可以通告多达2 5条路由。上限2 5是用来保证R I P报文的总长度为2 0×25 + 4 = 504,小于5 1 2字节。由于每个报文最多携带2 5个路由,因此为了发送整个路由表,经常需要多个报文。
10.4.2 正常运行
让我们来看一下采用R I P协议的r o u t e d程序正常运行的结果。R I P常用的U D P端口号是5 2 0。
• 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送
一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其
他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。目的U D P端口号是
5 2 0(这是其他路由器的路由守护程序端口号)。
这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6。这是一
种要求另一端完整路由表的特殊请求报文。
• 接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送
给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度
量设置成我们的值,否则将度量置为1 6(度量为1 6是一种称为“无穷大”的特殊值,它
意味着没有到达目的的路由)。然后发回响应。
• 接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行
修改,或是将已有表项删除。
• 定期选路更新。每过3 0秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发
送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。
• 触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,
而只需要发送那些发生变化的表项。
每条路由都有与之相关的定时器。如果运行R I P的系统发现一条路由在3分钟内未更新,
就将该路由的度量设置成无穷大( 1 6),并标注为删除。这意味着已经在6个3 0秒更新时间里没收到通告该路由的路由器的更新了。再过6 0秒,将从本地路由表中删除该路由,以保证该
路由的失效已被传播开。
10.5 RIP版本2
10.5 RIP版本2
RFC 1388 [Malkin 1993a]中对R I P定义进行了扩充,通常称其结果为R I P - 2。这些扩充并
不改变协议本身,而是利用图1 0 - 3中的一些标注为“必须为0”的字段来传递一些额外的信息。如果R I P忽略这些必须为0的字段,那么,R I P和R I P - 2可以互操作。
图1 0 - 1 0重新给出了由R I P - 2定义的图。对于R I P - 2来说,其版本字段为2。
选路域(routing domain)是一个选路守护程序的标识符,它指出了这个数据报的所有者。
在一个U n i x实现中,它可以是选路守护程序的进程号。该域允许管理者在单个路由器上运行
多个R I P实例,每个实例在一个选路域内运行。
选路标记(routing tag)是为了支持外部网关协议而存在的。它携带着一个E G P和B G P的自
治系统号。
每个表项的子网掩码应用于相应的I P地址上。下一站I P地址指明发往目的I P地址的报文该
发往哪里。该字段为0意味着发往目的地址的报文应该发给发送R I P报文的系统。
R I P - 2提供了一种简单的鉴别机制。可以指定R I P报文的前2 0字节表项地址系列为0 x ffff,
路由标记为2。表项中的其余1 6字节包含一个明文口令。
最后,R I P - 2除了广播(第1 2章)外,还支持多播。这可以减少不收听R I P - 2报文的主机
的负载。
DR/BDR
1. DR/BDR简介
在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Desi gnated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,O SPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。
BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。
如图7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用D R/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
图7 DR和BDR示意图
2. DR/BDR选举过程
DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过HELLO报文选举出来的,只有优先级大于0的路由器才具有选取资格。
进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
需要注意的是:
●∙∙∙∙∙∙∙∙∙∙∙∙∙ 只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ DR是某个网段中的概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。