分布式路由算法分析与设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i.清空SPT树和候选链路表;
ii.将根顶点加进SPT树中,相关成本为0;
1.距离向量算法
距离矢量路由算法(Distance Vector Routing,DV)也称Bellman-Ford路由算法和Ford-Fulkerson算法。“距离矢量路由算法”的基本思想如下:每个路由器维护一个距离矢量(通常是跳数、延时等度量)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每个距离矢量表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离,通信子网中的其它每个路由器在表中占据一个表项,并作为该表项的索引。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。
执行链路状态路由选择的路由器的工作:
a)探测相邻路由器,并获得其网络地址;
b)测量到相邻路由器的延时或开销;
c)组装链路状态信息分组;
d)发送链路状态信息分组到所有其他路路径以及所有的该路由器的网络端口信息添加到路由表中。
探测相邻路由器:相邻路由器的存在是由Hello分组的发送及响应确定:路由器向每条点对点链路发送Hello分组,接到Hello分组的另一端路由器发回一个应答,说明“我是谁”。测量链路开销:发送一个ECHO分组给相邻的路由器X,并要求X收到后,立即把ECHO分组发回来,ECHO分组往返的时间的一半就是与X之间延时的一个自然估值,可以多取几个这样的估值,按数理统计原理计算出更为精确合理的估值。
互联网的复杂性使得当前使用的路由算法主要是动态的、分布式的。为了降低数据包在网络中的传输开销和时延,要求为数据选择的路径是最短的。这里的“最短”在不同的场合具有不同的含义,它可以是跳数的多少、物理距离的长短或者时延的大小等。互联网中使用的各种路由协议或者路由算法,其根本目的就是寻找源节点和目的节点之间最短的一条路径,即最短路径。
一、路由器简介
(1).基本概念
路由器是工作在网络层上,可以连接不同类型的网络,能够选择数据传送路径并对数据进行转发的网络设备。路由器工作的目的就是选择最佳路径,把数据传递到目的地。
(2).路由表
路由器在接收到数据时,要对其传输路径进行选择。为了实现这一目标,路由器需要维护一个称为“路由表”的数据结构。概括来讲,路由表就是包含若干条目、供路由器选路时查询数据包传输路径的表项。
b)现在路由器A把它的路由表发给路由器B。此时它会综合从A路由器发来的路由表和它自己的初始路由表,更新为一个新的矢量表,如图7-40左图所示(最终的矢量表如图中深颜色部分)。从图中可以看出,从B结点到达E结点此时存在两条路径,一条是直达的,一条是通过A结点到达的。而且这两条线的开销不同,经过A结点到达E结点的开销(7)比直达线路的开销(8)更低,所以最终在形成的路由表中,把到达E结点的线路改为经由A结点这条线路,如图7-40右图所示。
计算新路由:当路由器收集到了足够的链路状态数据后,就可以调用Dijkstra算法计算最短路径了。用最短路径计算结果刷新路由表,整个网络新的路由表就重建起来了。
Dijkstra算法
如图9.4的样本拓扑图,假设我们要求顶点A到所有其他顶点的最短路径树(SPT),这可以逐步进行,即先求出到相邻顶点的最短路径,然后再往前继续。注意,两个相邻顶点间的最短路径不一定是它们之间的链路。例如,A到D的最短路径通过C(这是SPT计算的难点)。同时,可以理解,所有相邻顶点中,总有一个最短路径,就是与根的直接连接,这个顶点的成本最低(这里是B),这是可以保证的。
这里要注意一点,因为在B结点路由表中就已识别了直接通过B结点到达E结点的开销(8)还比依次通过B、A结点到达E结点的开销(7)大,所以在C结点路由表中是采用依次通过B、A结点到达E结点这条路径。最终形成的路由表如图7-41右图所示。
d)路由器C再把它的最终路由表发给路由器D。同样,路由器D也要把它原来的初始路由表与从C路由器发来的路由表进行综合,形成新的矢量表,如图7-42左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的C和E结点间的矢量信息外,还新收集了到达A和B结点的矢量信息。因为D结点没有与A和B结点的直接连接,所以在其最初的路由表中并没有到达这两个结点的矢量信息,此时仍采用经过C结点到达A和B结点的路径。
世界各地的自治系统都通过自己的边界路由器连接到Internet的核心网上。一般来说,一个自治系统可以配置一个或多个边界路由器,自治系统内部的路由器或者网络通过边界路由器与其他自治系统或者Internet核心网进行通信。
一个自治系统内部还可以再划分成几个小的路由域,也称为区域。
(5).路由选择算法
路由选择算法是指路由器获得对网络拓扑结构的认知,并为数据包选择正确传输路径的方法或者策略。一个理想的路由算法至少应该具备以下几点特征:
选路策略的实质就是如何确定数据传送的最佳路径,它是通过建立并维护路由表开实现的。选路策略的不同,从本质上讲就是建立和维护路由表的方式不同;选路机制实际上就是如何查找路由表,并根据查表的结果把数据转发出去。
(4).自治系统和路由域
由于Internet规模太大,分布范围太广,所以所有路由器的路由表中对应每一个目的网络都有一个条目是不可能的,同样,也不可能采用一个全局的路由算法或协议。因此,Internet将整个网络划分为若干个相对自治的局部系统,即自治系统(Autonomous System, AS)。自治系统可以定义为同一机构下管理的路由器和网络的集合。
组装链路状态分组:发送者标识是发送该分组的路由器的名字;序号是指该分组是路由器发送的第几个分组,路由器每发送一个分组,其序号就加1;年龄是指分组生存时间,每秒减1,当年龄归零时,分组就被丢掉。可以防止分组在网络中生存时间过长。
发布链路状态分组:链路状态分组的发布是通过扩散实现的。基本做法是,路由器记下它见过的分组的[发送者标识,序号]。当一个分组到达时,进行如下处理:它根据[发送者标识,序号]判断该分组是否收到过,如果是新的,则把它向所有链路(进入链路除外)发布,如果是重复的,则丢弃它;如果分组的序号比当前已到达的最大的序号小,则被认为是已过时而被拒绝。
a)完整性和正确性,即每个路由器中的路由表都必须给出到所有可能目的节点的下一跳应怎样走,且给出的走法是正确的;
b)简单性,即路由选择的计算不应使网络通信量增加太多的额外开销;
c)健壮性,主要指当某些节点、链路出现故障不能工作,或故障恢复后投入运行,算法能及时改变路由;
d)公平性,即算法对所有用户都是平等的;
现以一个如图7-38所示的示例介绍距离矢量算法中的路由的确定流程,各段链路的延时均已在图中标注。A、B、C、D、E代表五个路由器,假设路由表的传递方向为:A→B→C→D→E(这与路由器启动的先后次序有关)。下面是具体的流程:
a)初始状态下,各路由器都只收集直接相连的链路的延时信息,各路由器结点得出各自的初始矢量表如图7-39所示。因为各结点间还没有交换路由信息,所以它们的初始状态的路由表也如它们的矢量表。
在这里有两个要注意的地方:一是从E结点到达A结点的路径问题,因为此时E结点与A结点是直接连接的,而且其开销(1)要比原来从D路由口器发来的路由表中提供的通过D、C、B结点到达A结点路径开销(11)要小,所以在最终的E结点路由表中,到达A结点是采用直接连接这条线路。二是E结点虽然也是与B结点直接连接,但它的开销(8)还要比原来从D路由器发来的路由表中提供的依次经过D、C这两个结点到达B结点的开销(5)大,所以在最终的E结点路由表中,到达B结点是采用依次经过D、C两个结点这条路径。最终形成的路由表如图7-43右图所示。
这样,最短路径树(SPT)中就有了A-B链路。链路A-C和A-D仍然是最短路径树中的候选链路,例如,到C的最短路径等于A-C。但是,到与B相邻的顶点的所有链路也是候选链路,好在这里具有相同的逻辑:在所有候选链路中,从根到SPT已经覆盖的顶点的相邻顶点的路径一定属于最短路径树,标示出这种路径后,相应链路和顶点将加进SPT树中,相邻顶点的链路成为候选链路,算法迭代,直到没有更多候选链路为止。算法步骤如下:
(3).选路策略和选路机制
一般来说,路由器要实现数据转发的功能,至少需要完成两方面的工作:
a)根据数据包的目的地址和网络的拓扑结构选择一条最佳路径,把对应不同目的地址的最佳路径存放在路由表中(找最佳路径的过程就相当于更新路由表的过程);
b)搜索路由表,决定向哪个接口转发数据,并执行相应的操作。
在上面的两方面工作中,前者是选路策略(Routing policy,也称为路由选择策略)问题,而后者是选路机制(Routing mechanism,也称为路由选择机制)问题。
在这里同样要注意一点,从D结点到达E结点也有两条路径:一是直接到达,二是依次通过C、B、A结点到达,经过比较发现直接连接到达的开销(2)要比通过C、B、A结点到达E结点路径的开销(10)要小,所以在D结点中,到达E结点是采用直接连接这条线路。最终形成的路由表如图7-42右图所示。
e)路由器D再把它的最终路由表发给路由器E。同样,路由器E也要把它原来的初始路由表与从D路由器发来的路由表进行综合,形成新的矢量表,如图7-43左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的A、B和D结点间的矢量外,还新收集了到达C结点的矢量信息,因为E结点没有与C结点的直接连接。此时仍采用经过D结点到达C结点的路径。
e)最佳性,即以最低的成本来实现路由算法。
二、路由选择算法
路由算法的分类标准很多:
a)按照能否根据网络状况的变化而动态调整路由表可以分为静态路由选择算法和动态路由选择算法;
b)按照工作的模式可以分为集中式和分布式两大类,前者由路由控制中心集中收集网络拓扑结构信息并计算路由,后者由网络中的所有路由器通过交换路由信息,各自独立地计算路由。
集中式路由算法是指网络的路由是由路由控制中心计算的,该中心周期性收集各链路的状态,经过路由计算后周期性地向各网络节点提供路由表;分布式路由是指网络中所有节点通过相互交换路由信息,独立地计算到达各节点的路由。
分布式路由算法是每个节点周期性的从相邻的节点获得网络状态信息,同时也将本节点做出的决定周期性的通知周围的各节点,以使这些节点不断的根据网络新的状态更新其路由选择。整个网络的路由选择经常处于一种动态变化的状态。各个节点的路由表相互作用。是这种路由选择算法的特点。当网络状态发生变化时,必然会影响到许多节点的路由表。因此,要经过一定的时间以后,各路由表中的数据才能达到稳定的数值。该算法的核心思想是各个节点独立的计算最短路径。典型的分布式最短路径选择算法有距离向量算法和链路状态算法。
通过以上步骤,网络中各路由器就完整了整个路由表的确定,在拓扑结构发生变化时,各路由器的路由表又会发生变化,重新进行更新。
2.链路状态算法
链路状态算法,又称最短路径优先算法。与距离向量算法不同的是,由于这种算法需要每一个路由器都保存一份最新的关于整个网络的网络拓扑结构数据库,因此路由器不仅清楚地知道从本路由器出发能否到达某一指定网络,而且能够到达的情况下,还可以选择出最短的路径以及采用该路径将经过的路由器。该算法要求每个路由器具有唯一的名字或标识。
c)B再把最终形成的路由表发给路由器C。同样,路由器C也要把它原来的初始路由表与从B路由器发来的路由表进行综合,形成新的矢量表,如图7-41左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的B和D结点间的矢量外,还新收集了到达A和E结点的矢量信息。因为C结点没有与A和E结点的直接连接,在初始路由表中并没有到达这两个结点的路由信息,所以现在只有采用从B路由器发来的路由表中,经过B结点到达A、E结点的路径。
相关文档
最新文档