1.引言
对于静态选路,在配置接口时,以默认方式生成路由表项(对于直接连接的接口),并通过r o u t e命令增加表项(通常从系统自引导程序文件),或是通过I C M P重定向生成表项(通常是在默认方式出错的情况下)。在网络很小,且与其他网络只有单个连接点且没有多余路由时,采用这种方法是可行的。如果上述三种情况不能全部满足,通常使用动态选路。
动态选路主要运用R I P,即选路信息协议(Routing Infromation Protocol),大多数T C P / I P实现都提供这个应用广泛的协议。
2.动态选路
当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程称为路由守护程序(routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信。
3.RIP:选路信心协议
3.1 RIP报文格式
RIP报文包含中在UDP数据报中。这里只总结版本1,对于版本2参考tcp/ip(v1)。
命令字段为1表示请求,2表示应答。还有两个舍弃不用的命令( 3和4),两个非正式的命令:轮询( 5)和轮询表项( 6)。请求表示要求其他系统发送其全部或部分路由表。应答则包含发送者全部或部分路由表。版本字段通常为1,而第2版R I P将此字段设置为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个路由,因此为了发送整个路由表,经常需要多个报文。有一个注意点:跳数的最大值是1 5,这意味着R I P只能用在主机间最大跳数值为1 5的A S(自治系统)内。度量为1 6表示到无路由到达该I P地址。最大跳数为15限制了使用RIP网络的大小。
3.2 运行步骤
让我们来看一下采用R I P协议的r o u t e d程序正常运行的结果。R I P常用的U D P端口号是5 2 0。
1)初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6。这是一种要求另一端完整路由表的特殊请求报文。
2)接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为1 6(度量为1 6是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由)。然后发回响应。
3)接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。
4)定期选路更新。每过3 0秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。
5)触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。
每条路由都有与之相关的定时器。如果运行R I P的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷(16),并标注为删除。这意味着已经在6个3 0秒更新时间里没收到通告该路由的路由器的更新了。再过6 0秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。