第十章 动态选路协议
第九章讲述的是一个IP报发到网络中后,路由器是如何为它找到正确的路径并发送到该到的地点。
路由器先查找路由表里的主机项,如果找到则直接发出。如果找不到,再到跟这个IP匹配的网络项,如果找到则发往这个网络,由这个网络的路由器负责转发到正确的位置。如果网络项也找不到匹配的,就发往默认路由。默认路由一般有更多的路由表项,能查找更多的目的地。如果默认路由也不能处理,它又把IP数据报发往它的默认路由。这个过程一直持续下去,直到找到正确的主机,或者收到一个ICMP错误“主机不可达”。正转发数据报的过程中,路由器之间可能会发出ICMP重定向报文,帮助形成更有效的传输路径。
第十章更详细地讨论了路由信息在路由器之间的传递。其实提到的协议有:RIPv1, RIPv2,OSPF,BGP,CIDR。
Internet是以一组自治系统(AS,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。
每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。
最常用的IGP是路由信息协议RIP。一种新的IGP是开放最短路径优先OSPF(Open Shortest Path First)协议。它意在取代RIP。
RIP,即路由信息协议(Routing Infromation Protocol)。协议格式为:
+--20 bytes-+--8 bytes --+----------+
+ IP Header + UDP Header + RIP data +
+-----------+------------+----------+
整个RIP数据报封装在UDP数据报中。
RIPv1协议格式为:
0 7 8 15 16 31
+--------+--------+----------------+
+Command + ver + 0 +
+--------+--------+----------------+ ---
+ addr type(2) + 0 +
+-----------------+----------------+
+ IP addr (32 bits) +
+----------------------------------+
+ 0 +
+----------------------------------+
+ 0 +
+----------------------------------+
+ metric(1..16) +
+----------------------------------+ --- 20 Bytes each
+ other 24 (up to) routing info +
+----------------------------------+
command 命令分两种:1为请求,2为应答。另有废弃命令(3和4),非正式命令(5和6)。
ver 版本,v1为1,v2为2。
后面就是跟着具体的路由信息,每个路由占20字节。
addr type 地址类型,IP地址为2。
从上面协议格式来看,每个报文最多可以携带25个路由信息。因此如果路由表比较大,需要用多个报文来传送。
限制每次只传25个路由信息的依据是数据报的总大小。如果全部用完,25*20+4=504 < 512。
使用过程:
每次启动时向所有接口广播请求路由信息的报文。
附近的路由器接收到请求报文后,将自己的路由信息发送回去。
每隔30秒,路由器将自身路由表完整地广播给其他路由器。
如果有一个路由的度量(hop)发生了变化,只发送这条路由信息。每条路由都有与之相关的定时器。如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(16),并标注为删除。这意味着已经在6个30秒更新时间里没收到通告该路由的路由器的更新了。再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。RIP包括的度量信息以跳(hop)计算,每经过一个路由器为1跳。当到达同一主机有多个路由信息时,路由器选择跳数最少的,而忽略其他。
规定16为跳数的上限,也就相当于“不可达”。因此在RIPv1中,每条路由信息最多可以是15跳。如果一个AS的范围超个这个跳数,RIP使用将有局限。另外RIP的路由信息中没有子网掩码,因而不知道一个地址是主机地址还是网络地址。如果链路发生故障,路由信息需要较长时间才能稳定下来。在稳定的过程中,很有可能会形成路由环路,需要小心避免。
RIPv2基本沿用了RIPv1的格式,但利用了v1中必须为0的字节。用这些字节来表示额外的信息,如子网掩码,路由标志,下一站IP地址等。可以与RIP兼容使用。
另一个IGP协议是开放最短路径优先OSPF,克服了RIP协议的所有缺点,并有许多的优点,因此广泛使用。基本思想是路由器主动检查与邻近路由器的链路状态,并将状态信息发送给其他的路由器,其他的路由器就可以根据这些信息来建立完整的路由表。OSPF直接使用IP协议。
BGP用于AS自治系统的边界,与其他的自治系统之间交换路由信息。与RIP不同的是,BGP使用TCP连接来交换路由信息,并每隔30秒检查一次连接状态。如果有路由信息更新,则立即通知其他路由器。
另一种用于自治系统边界通信的是CIDR(无类型域间路由)。基本的思想是路由到子网络级,更具体的选路由子网解决。要求必须有子网掩码,通过对子网掩码的操作来决定具体的路由。这种方法可以减少路由信息的数目。