路由基础


路由是把信息从源穿过网络传递到目的的行为,在路上,至少遇到一个中间节点。路由一般与桥接来对比,在粗心的人看来,它们彷佛完成的是一样的事。它们的主要区别在于桥接发生在OSI参考协议的第二层(连接层),而路由发生在第三层(网络层)。这一区别使两者在传递信息的过程当中使用不一样的信息,从而以不一样的方式来完成其任务。
路由的话题早已在计算机界出现,但直到八十年代中期才得到商业成功,这一时间延迟的主要缘由是七十年代的网络很简单,后来大型的网络才较为广泛。
2、路由的组成
路由包含两个基本的动做:肯定最佳路径和经过网络传输信息。在路由的过程当中,后者也称为(数据)交换。交换相对来讲比较简单,而选择路径很复杂。
一、路径选择
metric是路由算法用以肯定到达目的地的最佳路径的计量标准,如路径长度。为了帮助选路,路由算法初始化并维护包含路径信息的路由表,路径信息根据使用的路由算法不一样而不一样。
路由算法根据许多信息来填充路由表。目的/下一跳地址对告知路由器到达该目的最佳方式是把分组发送给表明“下一跳”的路由器,当路由器收到一个分组,它就检查其目标地址,尝试将此地址与其“下一跳”相联系。下表为一个目的/下一跳路由表的例子。
表5-1 目的/下一跳对应表决定数据的最佳路径
路由表还能够包括其它信息。路由表比较metric以肯定最佳路径,这些metric根据所用的路由算法而不一样,下面将介绍常见的metric。路由器彼此通讯,经过交换路由信息维护其路由表,路由更新信息一般包含所有或部分路由表,经过分析来自其它路由器的路由更新信息,该路由器能够创建网络拓扑细图。路由器间发送的另外一个信息例子是连接状态广播信息,它通知其它路由器发送者的连接状态,连接信息用于创建完整的拓扑图,使路由器能够肯定最佳路径。
二、交换
交换算法相对而言较简单,对大多数路由协议而言是相同的,多数状况下,某主机决定向另外一个主机发送数据,经过某些方法得到路由器的地址后,源主机发送指向该路由器的物理(MAC)地址的数据包,其协议地址是指向目的主机的。
路由器查看了数据包的目的协议地址后,肯定是否知道如何转发该包,若是路由器不知道如何转发,一般就将之丢弃。若是路由器知道如何转发,就把目的物理地址变成下一跳的物理地址并向之发送。下一跳可能就是最终的目的主机,若是不是,一般为另外一个路由器,它将执行一样的步骤。当分组在网络中流动时,它的物理地址在改变,但其协议地址始终不变,以下图所示。
上面描述了源系统与目的系统间的交换,ISO定义了用于描述此过程的分层的术语。在该术语中,没有转发分组能力的网络设备称为端系统(ES--end system),有此能力的称为中介系统(IS--intermediate system)。IS又进一步分红可在路由域内通讯的域内IS(intradomain IS)和既可在路由域内有可在域间通讯的域间IS(interdomain IS)。路由域一般被认为是统一管理下的一部分网络,遵照特定的一组管理规则,也称为自治系统(autonomous system)。在某些协议中,路由域能够分为路由区间,可是域内路由协议仍可用于在区间内和区间之间交换数据。
3、路由算法
路由算法能够根据多个特性来加以区分。首先,算法设计者的特定目标影响了该路由协议的操做;其次,存在着多种路由算法,每种算法对网络和路由器资源的影响都不一样;最后,路由算法使用多种metric,影响到最佳路径的计算。下面的章节分析了这些路由算法的特性。
一、设计目标
路由算法一般具备下列设计目标的一个或多个:
  • 优化
  • 简单、低耗
  • 健壮、稳定
  • 快速聚合
  • 灵活性
优化指路由算法选择最佳路径的能力,根据metric的值和权值来计算。例若有一种路由算法可能使用跳数和延迟,但可能延迟的权值要大些。固然,路由协议必须严格定义计算metric的算法。
路由算法也能够设计得尽可能简单。换句话说,路由协议必须高效地提供其功能,尽可能减小软件和应用的开销。当实现路由算法的软件必须运行在物理资源有限的计算机上时高效尤为重要。
路由算法必须健壮,即在出现不正常或不可预见事件的状况下必须仍能正常处理,例如硬件故障、高负载和不正确的实现。由于路由器位于网络的链接点,当它们失效时会产生重大的问题。最好的路由算法一般是那些通过了时间考验,证明在各类网络条件下都很稳定的算法。
此外,路由算法必须能快速聚合,聚合是全部路由器对最佳路径达成一致的过程。当某网络事件使路径断掉或不可用时,路由器经过网络分发路由更新信息,促使最佳路径的从新计算,最终使全部路由器达成一致。聚合很慢的路由算法可能会产生路由环或网路中断。
在下图中的路由环中,某分组在时间t1到达路由器1,路由器1已经更新并知道到达目的的最佳路径是以路由器2为下一跳,因而就把该分组转发给路由器2。可是路由器2尚未更新,它认为最佳的下一跳是路由器1,因而把该分组发回给路由器1,结果分组在两个路由器间来回传递直到路由器2收到路由更新信息或分组超过了生存期。
路由算法还应该是灵活的,即它们应该迅速、准确地适应各类网络环境。例如,假定某网段断掉了,当知道问题后,不少路由算法对一般使用该网段的路径将迅速选择次佳的路径。路由算法能够设计得可适应网络带宽、路由器队列大小和网络延迟。
二、算法类型
各路由算法的区别点包括:
  • 静态与动态
  • 单路径与多路径
  • 平坦与分层
  • 主机智能与路由器智能
  • 域内与域间
  • 连接状态与距离向量
(1)静态与动态
静态路由算法很难算得上是算法,只不过是开始路由前由网管创建的表映射。这些映射自身并不改变,除非网管去改动。使用静态路由的算法较容易设计,在网络通讯可预测及简单的网络中工做得很好。
因为静态路由系统不能对网络改变作出反映,一般被认为不适用于如今的大型、易变的网络。九十年代主要的路由算法都是动态路由算法,经过分析收到的路由更新信息来适应网络环境的改变。若是信息表示网络发生了变化,路由软件就从新计算路由并发出新的路由更新信息。这些信息渗入网络,促使路由器从新计算并对路由表作相应的改变。
动态路由算法能够在适当的地方以静态路由做为补充。例如,最后可选路由(router of last resort),做为全部不可路由分组的去路,保证了全部的数据至少有方法处理。
(2)单路径与多路径
一些复杂的路由协议支持到同一目的的多条路径。与单路径算法不一样,这些多路径算法容许数据在多条线路上复用。多路径算法的优势很明显:它们能够提供更好的吞吐量和可靠性。
(3)平坦与分层
一些路由协议在平坦的空间里运做,其它的则有路由的层次。在平坦的路由系统中,每一个路由器与其它全部路由器是对等的;在分层次的路由系统中,一些路由器构成了路由主干,数据从非主干路由器流向主干路由器,而后在主干上传输直到它们到达目标所在区域,在这里,它们从最后的主干路由器经过一个或多个非主干路由器到达终点。
路由系统一般设计有逻辑节点组,称为域、自治系统或区间。在分层的系统中,一些路由器能够与其它域中的路由器通讯,其它的则只能与域内的路由器通讯。在很大的网络中,可能还存在其它级别,最高级的路由器构成了路由主干。
分层路由的主要优势是它模拟了多数公司的结构,从而能很好地支持其通讯。多数的网络通讯发生在小组中(域)。由于域内路由器只须要知道本域内的其它路由器,它们的路由算法能够简化,根据所使用的路由算法,路由更新的通讯量能够相应地减小。
(4)主机智能与路由器智能
一些路由算法假定源结点来决定整个路径,这一般称为源路由。在源路由系统中,路由器只做为存贮转发设备,无心识地把分组发向下一跳。其它路由算法假定主机对路径一无所知,在这些算法中,路由器基于本身的计算决定经过网络的路径。前一种系统中,主机具备决定路由的智能,后者则为路由器具备此能力。
主机智能和路由器智能的折衷实际是最佳路由与额外开销的平衡。主机智能系统一般能选择更佳的路径,由于它们在发送数据前探索了全部可能的路径,而后基于特定系统对“优化”的定义来选择最佳路径。然而肯定全部路径的行为一般须要不少的探索通讯量和很长的时间。
(5)域内与域间
一些路由算法只在域内工做,其它的则既在域内也在域间工做。这两种算法的本质是不一样的。其遵循的理由是优化的域内路由算法没有必要也成为优化的域间路由算法。
(6)连接状态与距离向量
连接状态算法(也叫作短路径优先算法)把路由信息散布到网络的每一个节点,不过每一个路由器只发送路由表中描述其本身连接状态的部分。距离向量算法(也叫作Bellman-Ford算法)中每一个路由器发送路由表的所有或部分,但只发给其邻居。也就是说,连接状态算法处处发送较少的更新信息,而距离向量算法只向相邻的路由器发送较多的更新信息。
因为连接状态算法聚合得较快,它们相对于距离算法产生路由环的倾向较小。在另外一方面,连接状态算法须要更多的CPU和内存资源,所以连接状态算法的实现和支持较昂贵。虽然有差别,这两种算法类型在多数环境中均可以工做得很好。
三、路由的metric
路由表中含有由交换软件用以选择最佳路径的信息。可是路由表是怎样创建的呢?它们包含信息的本质是什么?路由算法怎样根据这些信息决定哪条路径更好呢?
路由算法使用了许多不一样的metric以肯定最佳路径。复杂的路由算法能够基于多个metric选择路由,并把它们结合成一个复合的metric。经常使用的metric以下:
  • 路径长度
  • 可靠性
  • 延迟
  • 带宽
  • 负载
  • 通讯代价
路径长度是最经常使用的路由metric。一些路由协议容许网管给每一个网络连接人工赋以代价值,这种状况下,路由长度是所通过各个连接的代价总和。其它路由协议定义了跳数,即分组在从源到目的的路途中必须通过的网络产品,如路由器的个数。
可靠性,在路由算法中指网络连接的可依赖性(一般以位误率描述),有些网络连接可能比其它的失效更多,网路失效后,一些网络连接可能比其它的更易或更快修复。任何可靠性因素均可以在给可靠率赋值时计算在内,一般是由网管给网络连接赋以metric值。
路由延迟指分组从源经过网络到达目的所花时间。不少因素影响到延迟,包括中间的网络连接的带宽、通过的每一个路由器的端口队列、全部中间网络连接的拥塞程度以及物理距离。由于延迟是多个重要变量的混合体,它是个比较经常使用且有效的metric。
带宽指连接可用的流通容量。在其它全部条件都相等时,10Mbps的以太网连接比64kbps的专线更可取。虽然带宽是连接可得到的最大吞吐量,可是经过具备较大带宽的连接作路由不必定比通过较慢连接路由更好。例如,若是一条快速链路很忙,分组到达目的所花时间可能要更长。
负载指网络资源,如路由器的繁忙程度。负载能够用不少方面计算,包括CPU使用状况和每秒处理分组数。持续地监视这些参数自己也是很耗费资源的。
通讯代价是另外一种重要的metric,尤为是有一些公司可能关系运做费用甚于性能。即便线路延迟可能较长,他们也宁愿经过本身的线路发送数据而不采用昂贵的公用线路。
可被路由的协议(Routed Protocol)由路由协议(Routing Protocol)传输,前者亦称为网络协议。这些网络协议执行在源与目的设备的用户应用间通讯所需的各类功能,不一样的协议中这些功能可能差别很大。网络协议发生在OSI参考模型的上四层:传输层、会话层、表示层和应用层。
术语routed protocol(可被路由的协议)和routing protocol(路由协议)常常被混淆。routed protocol在网络中被路由,例如IP、DECnet、AppleTalk、Novell NetWare、OSI、Banyan VINES和Xerox Network System(XNS)。而路由协议是实现路由算法的协议,简单地说,它给网络协议作导向。路由协议如:IGRP、EIGRP、OSPF、EGP、BGP、IS-IS及RIP等。咱们将陆续介绍上述的各类协议。