路由选择指迷津
路由协议作为TCP/IP协议族中重要成员之一,其选路过程实现的好坏会影响整个Internet网络的效率。按应用范围的不同,路由协议可分为两类:在一个AS(Autonomous System,自治系统,指一个互连网络,就是把整个Internet划分为许多较小的网络单位,这些小的网络有权自主地决定在本系统中应采用何种路由选择协议)内的路由协议称为内部网关协议(interior gateway protocol),AS之间的路由协议称为外部网关协议(exterior gateway protocol)。这里网关是路由器的旧称。现在正在使用的内部网关路由协议有以下几种:RIP-1,RIP-2,IGRP,EIGRP,IS-IS和OSPF。其中前4种路由协议采用的是距离向量算法,IS-IS和OSPF采用的是链路状态算法。对于小型网络,采用基于距离向量算法的路由协议易于配置和管理,且应用较为广泛,但在面对大型网络时,不但其固有的环路问题变得更难解决,所占用的带宽也迅速增长,以至于网络无法承受。因此对于大型网络,采用链路状态算法的IS-IS和OSPF较为有效,并且得到了广泛的应用。IS-IS与OSPF在质量和性能上的差别并不大,但OSPF更适用于IP,较IS-IS更具有活力。IETF始终在致力于OSPF的改进工作,其修改节奏要比IS-IS快得多。这使得OSPF正在成为应用广泛的一种路由协议。现在,不论是传统的路由器设计,还是即将成为标准的MPLS(多协议标记交换),均将OSPF视为必不可少的路由协议。
外部网关协议最初采用的是EGP。EGP是为一个简单的树形拓扑结构设计的,随着越来越多的用户和网络加入Internet,给EGP带来了很多的局限性。为了摆脱EGP的局限性,IETF边界网关协议工作组制定了标准的边界网关协议--BGP。
下面对使用广泛且很有活力的RIP,OSPF和BGP进行介绍。
一、RIP协议
RIP是路由信息协议(Routing Information Protocol)的缩写,采用距离向量算法,是当今应用最为广泛的内部网关协议。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP分组分为两种:请求分组和相应分组。
RIP-1被提出较早,其中有许多缺陷。为了改善RIP-1的不足,在RFC1388中提出了改进的RIP-2,并在RFC 1723和RFC 2453中进行了修订。RIP-2定义了一套有效的改进方案,新的RIP-2支持子网路由选择,支持CIDR,支持组播,并提供了验证机制。
随着OSPF和IS-IS的出现,许多人认为RIP已经过时了。但事实上RIP也有它自己的优点。对于小型网络,RIP就所占带宽而言开销小,易于配置、管理和实现,并且RIP还在大量使用中。但RIP也有明显的不足,即当有多个网络时会出现环路问题。为了解决环路问题,IETF提出了分割范围方法,即路由器不可以通过它得知路由的接口去宣告路由。分割范围解决了两个路由器之间的路由环路问题,但不能防止3个或多个路由器形成路由环路。触发更新是解决环路问题的另一方法,它要求路由器在链路发生变化时立即传输它的路由表。这加速了网络的聚合,但容易产生广播泛滥。总之,环路问题的解决需要消耗一定的时间和带宽。若采用RIP协议,其网络内部所经过的链路数不能超过15,这使得RIP协议不适于大型网络。
二、OSPF协议
为了解决RIP协议的缺陷,1988年RFC成立了OSPF工作组,开始着手于OSPF的研究与制定,并于1998年4月在RFC 2328中OSPF协议第二版(OSPFv2)以标准形式出现。OSPF全称为开放式最短路径优先协议(Open Shortest-Path First),OSPF中的O意味着OSPF标准是对公共开放的,而不是封闭的专有路由方案。OSPF采用链路状态协议算法,每个路由器维护一个相同的链路状态数据库,保存整个AS的拓扑结构(AS不划分情况下)。一旦每个路由器有了完整的链路状态数据库,该路由器就可以自己为根,构造最短路径树,然后再根据最短路径构造路由表。对于大型的网络,为了进一步减少路由协议通信流量,利于管理和计算,OSPF将整个AS划分为若干个区域,区域内的路由器维护一个相同的链路状态数据库,保存该区域的拓扑结构。OSPF路由器相互间交换信息,但交换的信息不是路由,而是链路状态。OSPF定义了5种分组:Hello分组用于建立和维护连接;数据库描述分组初始化路由器的网络拓扑数据库;当发现数据库中的某部分信息已经过时后,路由器发送链路状态请求分组,请求邻站提供更新信息;路由器使用链路状态更新分组来主动扩散自己的链路状态数据库或对链路状态请求分组进行响应;由于OSPF直接运行在IP层,协议本身要提供确认机制,链路状态应答分组是对链路状态更新分组进行确认。
相对于其它协议,OSPF有许多优点。OSPF支持各种不同鉴别机制(如简单口令验证,MD5加密验证等),并且允许各个系统或区域采用互不相同的鉴别机制;提供负载均衡功能,如果计算出到某个目的站有若干条费用相同的路由,OSPF路由器会把通信流量均匀地分配给这几条路由,沿这几条路由把该分组发送出去;在一个自治系统内可划分出若干个区域,每个区域根据自己的拓扑结构计算最短路径,这减少了OSPF路由实现的工作量;OSPF属动态的自适应协议,对于网络的拓扑结构变化可以迅速地做出反应,进行相应调整,提供短的收敛期,使路由表尽快稳定化,并且与其它路由协议相比,OSPF在对网络拓扑变化的处理过程中仅需要最少的通信流量;OSPF提供点到多点接口,支持CIDR(无类型域间路由)地址。
OSPF的不足之处就是协议本身庞大复杂,实现起来较RIP困难。
三、BGP协议
RFC1771对BGP的最新版本BGP-4进行了详尽的介绍。BGP用来在AS之间实现网络可达信息的交换,整个交换过程要求建立在可靠的传输连接基础上来实现。这样做有许多优点,BGP可以将所有的差错控制功能交给传输协议来处理,而其本身就变得简单多了。BGP使用TCP作为其传输协议,缺省端口号为179。与EGP相比,BGP有许多不同之处,其最重要的革新就是其采用路径向量的概念和对CIDR技术的支持。路径向量中记录了路由所经路径上所有AS的列表,这样可以有效地检测并避免复杂拓扑结构中可能出现的环路问题;对CIDR的支持,减少了路由表项,从而加快了选路速度,也减少了路由器间所要交换的路由信息。另外,BGP一旦与其他BGP路由器建立对等关系,其仅在最初的初始化过程中交换整个路由表,此后只有当自身路由表发生改变时,BGP才会产生更新报文发送给其它路由器,且该报文中仅包含那些发生改变的路由,这样不但减少了路由器的计算量,而且节省了BGP所占带宽。