路由是把信息从源穿过网络传递到目的的行为,在路由上至少遇到一个中间节点。路由通常与桥接相比,二者的主要区别在于桥接发生在OSI参考协议的第2层(链接层),而路由发生在第3层(网络层)。这一区别使二者在传递信息的过程中使用不同信息,从而以不同方式来完成其任务。
1.路由组成
路由包含两个基本的动作,即确定最佳路径和通过网络传输信息。在路由过程中,后者也称为"数据交换".交换相对来说比较简单,而选择路径很复杂。
(1)路径选择
metric是路由算法用于确定到达目的地的最佳路径的计量标准,如路径长度。为了帮助选路,路由算法初始化并维护包含路径信息的路由表,路径信息根据使用的路由算法不同而不同。
路由算法根据许多信息来填充路由表,目的/下一跳地址对告知路由器到达该目的最佳方式是把分组发送给代表"下一跳"的路由器。当路由器收到一个分组,则检查其目标地址,尝试将此地址与其"下一跳"相联系。
路由表还可以包括其他信息,它比较metric以确定最佳路径,这些metric根据所用的路由算法而不同。路由器彼此通信,通过交换路由信息维护其路由表,路由更新信息通常包含全部或部分路由表。通过分析来自其他路由器的路由更新信息,该路由器可以建立网络拓扑细图。路由器间发送的另一个信息例子是链接状态广播信息,它通知其他路由器发送者的链接状态,链接信息用于建立完整的拓扑图,使路由器可以确定最佳路径。
(2)交换
交换算法相对而言较简单,对大多数路由协议是相同的。多数情况下,某主机决定向另一台主机发送数据。通过某些方法获得路由器的地址后,源主机发送指向该路由器的物理地址(MAC)的数据包,其协议地址指向目的主机。
路由器查看了数据包的目的协议地址后,确定是否知道如何转发该包。如果路由器不知道如何转发,通常就将之丢弃;如果知道,就把目的物理地址变成下一跳的物理地址并向之发送。下一跳可能就是最终的目的主机,如果不是,通常为另一个路由器,它将执行同样的步骤。当分组在网络中流动时,其物理地址在改变,但其协议地址始终不变。
2.路由算法
路由算法可以根据多个特性来加以区分,首先,算法设计的特定目标影响了该路由协议的操作;其次,存在多种路由算法,每种算法对网络和路由器资源的影响不同;最后,路由算法使用多种metric,影响到最佳路径的计算。
(1)静态与动态
静态路由算法很难算得上是算法,只不过是开始路由前由网管建立的表映射。这些映射自身并不改变,除非网管改动。使用静态路由的算法较容易设计,在可预测及简单的网络中工作得很好。
由于静态路由,系统不能对网络改变做出反映,通常被认为不适用于现在大型且易变的网络。20世纪90年代主要的路由算法都是动态路由算法,通过分析收到的路由更新信息来适应网络环境的改变。如果信息表示网络发生了变化,路由软件就重新计算路由并发出新的路由更新信息。这些信息渗入网络,促使路由器重新计算并对路由表做相应的改变。
动态路由算法可以在适当的地方以静态路由作为补充,例如,最后可选路由(router of last resort)作为所有不可路由分组的去路,保证了所有的数据至少有方法处理。
(2)单路径与多路径
一些复杂的路由协议支持到同一目的的多条路径。与单路径算法不同,这些多路径算法允许数据在多条线路上复用。多路径算法的优点很明显,它们可以提供更好的吞吐量和可靠性。
(3)平坦与分层
一些路由协议在平坦的空间中运行,其他则有路由的层次。在平坦的路由系统中,每个路由器与其他所有路由器是对等的;在分层次的路由系统中,一些路由器构成了路由主干。数据从非主干路由器流向主干路由器,然后在主干上传输直到到达目标所在区域。在这里,它们从最后的主干路由器通过一个或多个非主干路由器到达终点。
路由系统通常设计有逻辑节点组,称为"域"或"自治系统"或"区间".在分层系统中,一些路由器可以与其他域中的路由器通信,其他则只能与域内的路由器通信。在很大的网络中,可能还存在其他级别,最高级的路由器构成了路由主干。
分层路由的主要优点是它模拟了多数公司的结构,从而能很好地支持其通信。多数的网络通信发生在小组(域)中,因为域内路由器只需要知道本域内的其他路由器,它们的路由算法可以简化。根据所使用的路由算法,路由更新的通信量可以相应地减少。
(4)主机智能与路由器智能
一些路由算法假定源节点来决定整个路径,通常称为"源路由".在源路由系统中路由器只作为存储转发设备,把分组发向下一跳。其他路由算法假定主机对路径一无所知,在这些算法中,路由器基于自己的计算决定通过网络的路径。在前一种系统中,主机具有决定路由的智能,后者则为路由器具有此能力。
主机智能和路由器智能的折中实际是最佳路由与额外开销的平衡,主机智能系统通常能选择更佳的路径。因为它们在发送数据前探索了所有可能的路径,然后基于特定系统对"优化"的定义来选择最佳路径,确定所有路径的行为通常需要很多的探索通信量和很长的时间。
(5)域内与域间
一些路由算法只在域内工作,其他则既在域内,也在域间工作。这两种算法的本质不同的,其遵循的是优化的域内路由算法没有必要也成为优化的域间路由算法。
(6)链接状态与距离向量
链接状态算法(也叫做"短路径优先算法")把路由信息散布到网络的每个节点,不过每个路由器只发送路由表中描述其自己链接状态的部分;距离向量算法(也叫做"Bellman-Ford算法")中每个路由器发送路由表的全部或部分,但只发给其邻居。即链接状态算法到处发送较少的更新信息,而距离向量算法只向相邻的路由器发送较多的更新信息。
由于链接状态算法聚合得较快,所以它们相对于距离算法产生路由环的倾向较小。另一方面,链接状态算法需要更多的CPU和内存资源,因此实现和支持较昂贵。虽然有差异,但这两种算法类型在多数环境中都可以工作得很好。
3.路由的metric
路由表中含有由交换软件用于选择最佳路径的信息,但如何建立路由表?它们包含的信息的本质是什么?路由算法怎样根据这些信息决定哪条路径更好?
路由算法使用了许多不同的metric以确定最佳路径,复杂的路由算法可以基于多个metric选择路由,并把它们结合成一个复合的metric.常用的metric如下。
(1)路由长度:是最常用的路由metric,一些路由协议允许网管为每个网络链接人工赋以代价值。这种情况下,路由长度是所经过各个链接的代价总和。其他路由协议定义了跳数,即分组在从源到目的的路途中必须经过的网络产品,如路由器的个数。
(2)可靠性:在路由算法中指网络链接的可依赖性(通常以位误率描述),有些网络链接可能比其他失效更多。网路失效后,一些网络链接可能比其他更易或更快修复。任何可靠性因素都可以在为可靠率赋值时计算在内,通常是由网管为网络链接赋以metric值。
(3)路由延迟:指分组从源通过网络到达目的所花时间。很多因素影响到延迟,包括中间的网络链接的带宽、经过的每个路由器的端口队列、所有中间网络链接的拥塞程度,以及物理距离等。因为延迟是多个重要变量的混合体,所以它是比较常用且有效的metric.
(4)带宽:指链接用的流通容量。在其他所有条件都相等时,10 Mb/s的以太网链接比64 Kb/s的专线更可取。虽然带宽是链接可获得的最大吞吐量,但是通过具有较大带宽的链接作为路由不一定比经过较慢链接的路由更好。例如,如果一条快速链路很忙,分组到达目的所花时间可能要更长。
(5)负载:指网络资源,如路由器的繁忙程度,负载可以用很多方面计算,包括CPU使用情况和每秒处理分组数。持续地监视这些参数本身也很耗费资源。
(6)通信代价:另一种重要的metric,尤其是有一些公司可能关系运作费用甚于性能。即使线路延迟可能较长,他们也宁愿通过自己的线路发送数据,而不采用昂贵的公用线路。
4.网络协议
可被路由的协议(Routed Protocol)由路由协议(Routing Protocol)传输,前者亦称为"网络协议".这些网络协议执行在源与目的设备的用户应用间通信所需的各种功能,不同的协议中这些功能可能差异很大。网络协议发生在OSI参考模型的上4层,即传输层、会话层、表示层和应用层。
各种路由协议如下。
(1)内部路由协议
内部路由协议又称"IGP"(Interior Gateway Protocol,内部网关协议),主要在自主系统内部使用。目前,TCP/IP网络中较为常用的IGP主要有以下几种。
RIP(Routed Information Protocol,路由信息协议)
RIP是以跳数作为metric的距离向量协议,它广泛用于全球互联网的路由,是一种内部网关协议,即在自治系统内部执行路由功能。EGP(Exterior Gateway Protocol,外部网关路由协议)如边缘网关协议(BGP),在不同的自治系统间进行路由。
RIP协议最早由施乐公司在20世纪80年代推出,当时主要用于施乐公司自己开发的一种网络系统。如今,RIP协议已经被众多的计算机网络所采用,成为一种基本的路由协议。
RIP主要适用于小规模的网络环境,如果应用到大型网络中,则存在很多限制。例如,RIP协议规定任何两台网络主机之间的路由跳跃次数(每通过一台路由器定为跳跃一次)不得超过16.此外,RIP的聚敛速度很慢,这就意味着当网络发生变化时,变动信息需要经过很长时间才能传送到所有的路由器。最后,RIP通过查看两个节点之间的路由跳数来确定最佳路由,而不考虑线路速度及使用率等其他因素,从而导致结果往往不是最佳路径。正是基于上述原因,许多原先采用RIP协议的大型网络已经逐步转向其他功能更加完善的路由协议。
OSPF(开放最短路径优先)
OSPF是IETF的IGP工作组为IP网开发的路由协议,该工作组成立于1998年,专门设计用于互联网的基于SPF(最短路径优先)算法的IGP.与IGRP(Interior Gateway Routing Protocol,内部网关路由协议)类似,OSPF创建的原因是到了20世纪80年代中期,RIP不能服务于大型及异构网络的缺陷愈发明显。
OSPF是由多个研究结果发展而来的,包括1978年为ARPANET开发的Bolt、Beranek和Newman(BBN)的SPF算法,Dr. Radia Perlman对路由信息容错性广播的研究(1988),BBN在区域路由的工作(1986)和OSI的IS-IS路由协议的早期版本。
OSPF有两个主要的特性,一是该协议是开放的,即其规范是公开的,公布的OSPF规范是RFC1247;二是OSPF基于SPF算法,该算法也称为"Dijkstra算法",即以创建该算法的人来命名。
OSPF是个链接状态路由协议,在同一层的区域内与其他所有路由器交换链接状态公告(LSA)信息。OSPF的LSA中包含连接的接口、使用的metric及其他变量信息。OSPF路由器积累链接状态信息,并使用SPF算法来计算到各节点的最短路径。
作为链接状态路由协议,OSPF与RIP和IGRP这些距离向量路由协议不同。使用距离向量算法的路由器的工作模式是在路由更新信息中把路由表全部或部分发送给其相邻的路由器。
IGRP(Interior Gateway Routing Protocol,内部网关路由协议)
IGRP是20世纪80年代中期由Cisco公司开发的路由协议,Cisco创建IGRP的主要目的是为AS内的路由提供一种健壮的协议。
20世纪80年代中期,最流行的AS内的路由协议是RIP.虽然RIP对于小到中型的同类网非常有用。但随着网络的发展,其限制越来越显著。特别是RIP很小的跳数限制(16)制约了网络的规模,且其单一的metric(跳数)在复杂的环境中很不灵活。Cisco路由器的普及和IGRP的健壮性使许多拥有大型网络的组织用IGRP代替RIP.
Cisco最初的IGRP实现工作在IP网络上,但是IGRP设计运行于任何网络环境中,Cisco很快就把它移植运行于OSI的CLNP(Connectionless Network Protocol)网络。在20世纪90年代初Cisco开发了增强型IGRP(EIGRP)以提高IGRP的工作效率。
IGRP是一种距离向量型的内部网关协议,它要求每个路由器以规定的时间间隔向其相邻的路由器发送其路由表的全部或部分。随着路由信息在网络上扩散,路由器即可计算到所有节点的距离。
IGRP使用一组metric的组合(向量),网络延迟、带宽、可靠性和负载都被用于路由选择,网管可以为每种metric设置权值,IGRP可以用管理员设置或默认的权值来自动计算最佳路由。
IGRP为其metric提供了较宽的值域,例如,可靠性和负载可在1~255之间取值,带宽值域为1 200b/s~10吉(千兆)b/s,延迟可取值1~24.宽的值域可以提供满意的metric设置,更重要的是,metric各组件以用户定义的算法结合。因此网管可以以直观的方式影响路由选择。
为了提供更多的灵活性,IGRP允许多路径路由。两条等带宽线路可以以循环(round-robin)方式支持一条通信流,当一条线路断开时自动切换到第2条线路。此外,即使各条路的metric不同也可以使用多路径路由。例如,如果一条路径比另一条好3倍,它将以3倍使用率运行。只有具有一定范围内的最佳路径metric值的路由才用做多路径路由。
(2)外部路由协议
外部路由协议提供了自主系统之间的路由,在TCP/IP网络中最为常用的主要有以下两种。
EGP
第一代广使用的外部路由协议就是EGP,它可以提供动态连通性。但是要求所有连接的自主系统都必须采用树形结构,这在互联网发展的初期还是可以使用的。
虽然EGP是一种动态路由协议,但是其设计原理非常简单,没有采用任何形式的度量标准,因而也就无法真正做出智能化的路由决定。由于EGP协议已经无法满足当今复杂网络的需要,因此正逐渐被另一种协议BGP所替代。
BGP
BGP协议对EGP中的很多关键性问题进行了改进,也是一种域间路由协议,主要用于网络核心路由器。BGP被设计成可以在任何网络拓扑结构中工作,对网络结构的支持更加灵活。