首页> 中国专利> 基于生成树的域内动态多路径生成方法

基于生成树的域内动态多路径生成方法

摘要

本发明公开了一种基于生成树的域内动态多路径生成方法,包括:按照优先级结构将根结点加入到创建的优先级队列中;判断优先级队列是否为空,若不空,则选取优先级队列的队首元素,并将其删除;访问队首元素的所有邻居结点,判断各结点是否被访问过,若未被访问过,则更新结点信息,并将更新后的信息添加到优先级队列中,否则,根据设定规则计算根结点到队首元素的下一跳以及根结点到当前邻居结点的下一跳;若访问完所有邻居结点,则返回判断优先级队列是否为空的步骤。当链路状态变化时,该方法动态调节生成的最短路径树并更新下一跳,而不需要重新计算。本发明方法在确保为根结点到所有目的结点计算出多条无环路径的同时降低了算法的复杂度。

著录项

  • 公开/公告号CN103532861A

    专利类型发明专利

  • 公开/公告日2014-01-22

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201310461708.2

  • 发明设计人 施新刚;尹霞;耿海军;王之梁;

    申请日2013-09-30

  • 分类号H04L12/753(20130101);H04L12/733(20130101);

  • 代理机构11372 北京聿宏知识产权代理有限公司;

  • 代理人吴大建;刘华联

  • 地址 100084 北京市海淀区100084信箱82分箱清华大学专利办公室

  • 入库时间 2024-02-19 23:15:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-21

    授权

    授权

  • 2014-02-26

    实质审查的生效 IPC(主分类):H04L12/753 申请日:20130930

    实质审查的生效

  • 2014-01-22

    公开

    公开

说明书

技术领域

本发明属于互联网技术领域,尤其涉及域内路由算法,具体地说,是涉 及一种基于生成树的域内动态多路径生成方法。

背景技术

互联网由上万个独自运维的自治系统AS(Autonomous System)构成。

域内链路状态路由协议(OSPF和ISIS)控制着AS内部的报文转发路径, 但是OSPF和ISIS协议没有很好的利用网络中固有的路径多样性,从结点c 到结点d只能计算出一条最短路径,因此网络的可靠性和安全性都比较差。 然而多路径路由算法很好的利用了网络中路径多样性,可以为结点c到结点 d计算出多条路径,因此很容易实现负载均衡。

目前已经提出了很多种多路径路由的解决方案。等值多路径路由协议 (EqualCostMultipathRouting,ECMP),ECMP可以为结点c到结点d计算出 多条最短路径,网络管理员可以通过调节边的权值来构造多条最短路径,然 而这个问题被证明是NP-Hard问题。多路径算法(Multiple Path Algorithm, MPA),MPA的核心思想是当结点c的邻居结点到结点d的最小代价小于结 点c到结点d的最小代价时,结点c可以选择此邻居结点作为其到结点d的 下一跳。如果要实现MPA,结点c必须得到其所有邻居结点到d的最小代价。 可以通过两种方法得到结点c的所有邻居结点到结点d的最小代价,第一种 方法是在结点c上构造以邻居结点为根的SPT,但是这种方法增加了算法的 复杂度,另外一种方法是邻居结点将其计算的到结点d的最小代价传递给结 点c,而这种方法则增加了通信开销。最近IETF提出了Multi-topology routing, 该方法的特点是预先假设某些链路失效,在去除失效链路的网络拓扑图中计 算最短路径,该方法同样需要在一个结点上计算多个SPT,因此算法的时间 复杂度比较高。

因此,需要本领域研究人员迫切解决的一个问题就是如何计算出从结点 c到结点d的多条路径的同时降低算法复杂度。

发明内容

本发明所要解决的技术问题之一是需要提供一种基于生成树的域内动态 多路径生成方法,该方法在计算出根结点到所有目的结点的多条路径的同时, 降低算法复杂度。

为了解决上述技术问题,本发明提供了一种基于生成树的域内动态多路 径生成方法,包括:步骤1,初始化一网络的所有结点的结点信息;步骤2, 创建优先级队列,按照优先级结构将根结点加入到所述优先级队列中,所述 优先级结构包括结点的路由ID、结点的当前最小代价和结点的当前父结点; 步骤3,判断所述优先级队列是否为空,若判断结果为否,则执行步骤4,否 则结束操作;步骤4,根据出队列规则选取所述优先级队列中的队首元素, 并将其从所述优先级队列中删除,其中,所述出队列规则为选取对应最小的 当前最小代价的结点作为队首元素;步骤5,访问所述队首元素的邻居结点, 判断当前邻居结点是否被访问过,其中,若当前邻居结点未被访问过,则更 新关于当前邻居结点的结点信息,并将更新后的信息按照优先级结构添加到 所述优先级队列中,否则,根据设定规则计算所述根结点到所述队首元素的 下一跳以及所述根结点到当前邻居结点的下一跳;步骤6,判断当前邻居结 点是否是该队首元素的最后一个邻居结点,若是,则返回步骤3,否则获取 下一个邻居结点并返回步骤5。

在一个实施例中,在所述步骤4中,若对应最小的当前最小代价的结点 为多个,则从中选取路由ID最小的结点作为队首元素。

在一个实施例中,假设以根结点c为根的最短路径树Tc中的两个结点u 和v,并且结点u和v互为邻居关系,定义Dc(v,u)=Cc(v)-Cc(Bc(v))+ L(u,v),如果Dc(v,u)<Cc(u)成立,则称v对u有贡献,

其中,Cc(v)和Cc(u)分别表示根结点c到结点v和结点u的最小代价, Bc(u)表示根结点c到结点v的最优下一跳,L(u,v)表示结点u和结点v的直 连代价,

在所述步骤5中,所述设定规则为:

假设所述队首元素为v,所述当前邻居结点为u,如果v对u有贡献,则 设置哈希表项hc[v,u]=1,并且将Bc(v)加入到Nc(u)中,同样,如果u对v有 贡献,则设置哈希表项hc[u,v]=1,并且将Bc(u)加入到Nc(v)中,

其中,Nc(u)和Nc(v)分别表示根结点c到结点u和结点v的下一跳的集 合,此外,将一个元素加入到一个下一跳集合时,需同时维护该元素被加入 该集合的次数,用引用计数表示。

在一个实施例中,在所述步骤1中,进一步,

设置根结点的最小代价为0,将除所述根结点以外的结点的最小代价设 置为无穷大;

将所有结点的父结点设置为空;

将所有结点的访问标记属性设置为未访问。

在一个实施例中,通过以下表达式来计算根结点c到结点v的最优下一 跳Bc(v):

Bc(v)=vPc(v)=vBc(Pc(v))Pc(v)v

其中,Pc(v)表示v的父结点。

在一个实施例中,还包括:

当链路L(s,e)的代价增加时,判断以根结点c构造的最短路径树的结构 是否变化,其中,根结点c到结点s的代价Cc(s)≥根结点c到结点e的代价 Cc(e),

若判断结果为变化,则将结点e和e的所有子孙结点加入到所述优先级 队列中,并对这些结点执行所述步骤3至所述步骤6;

若判断结果为不变化,则分为以下两种情况来调整所述最短路径树:如 果哈希表项hc[s,e]=1并且Dc(s,e)≥Cc(e),则将Bc(s)从Nc(e)中删除,并且 更新哈希表项hc[s,e]=0;如果哈希表项hc[e,s]=1并且Dc(e,s)≥Cc(s),则 将Bc(e)从Nc(s)中删除,并且更新哈希表项hc[e,s]=0,

其中,其中,Bc(s)表示根结点c到结点s的最优下一跳,Nc(e)表示根结 点c到结点e的下一跳的集合,Bc(e)表示根结点c到结点e的最优下一跳, Nc(s)表示根结点c到结点s的下一跳的集合,哈希表项hc[s,e]=1表示结点 s对结点e有贡献,反之,hc[s,e]=0,哈希表项hc[e,s]=1表示结点e对结 点s有贡献,反之,hc[e,s]=0。

在一个实施例中,当链路L(s,e)的代价减小时,判断以根结点c构造的 最短路径树的结构是否变化,其中,根结点c到结点s的代价Cc(s)≥根结点 c到结点e的代价Cc(e),

若判断结果为变化,则将结点e加入到所述优先级队列中,并对结点e 执行所述步骤3至所述步骤6;

若判断结果为不变化,则分为以下两种情况来调整所述最短路径树:如 果哈希表项hc[s,e]=0并且Dc(s,e)<Cc(e),则将Bc(s)添加至Nc(e)中并更新 其引用计数,同时更新哈希表项hc[s,e]=1;如果哈希表项hc[e,s]=0并且 Dc(e,s)<Cc(s),则将Bc(e)添加至Nc(s)中并更新其引用计数,同时更新哈希 表项hc[e,s]=1,

其中,Bc(s)表示根结点c到结点s的最优下一跳,Nc(e)表示根结点c 到结点e的下一跳的集合,Bc(e)表示根结点c到结点e的最优下一跳,Nc(s)表 示根结点c到结点s的下一跳的集合,哈希表项hc[s,e]=1表示结点s对结 点e有贡献,反之,hc[s,e]=0,哈希表项hc[e,s]=1表示结点e对结点s 有贡献,反之,hc[e,s]=0。

在一个实施例中,在所述步骤5中,若队首元素v的当前邻居结点u未 被访问,则将该结点u的当前最小代价TC更新为TC=Cc(v)+L(v,u),将 该结点u的当前父结点TP更新为TP=v,将该结点u的访问标记属性设置 为已访问,其中,Cc(v)表示根结点c到队首元素v的最小代价,L(v,u)表 示结点u和结点v的直连代价。

与现有技术相比,本发明的一个或多个实施例可以具有如下优点:

在本发明提出的一种基于生成树的域内动态多路径生成方法中,每个结 点只需运行一次就可以计算出该结点到所有目的结点的多条无环路径。该方 法在每个结点上维护一个以该结点为根的最短路径树(Shortest Path Tree, SPT),当链路状态发生变化的时候,该方法不需要重新计算该结点到所有目 的的下一跳,动态的调整该SPT的结构并且动态更新下一跳信息。

实验结果表明本发明在确保为c到所有目的计算出多条无环路径的同时 降低了算法的复杂度。本发明充分利用了网络中路径的多样性,因此具有更 高的可靠性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说 明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优 点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本 发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:

图1为根据本发明第一实施例的基于生成树的域内动态多路径生成方法 的流程示意图;

图2是一简单网络的拓扑示意图;

图3是根据本发明一实施例的方法获取图2所示网络中根结点a的最短 路径树和a到其它结点的下一跳的示例图;

图4是根据本发明一实施例的方法构造的另一网络中以结点a为根的最 短路径树的示例图;

图5是一链路发生变化的最短路经树的示例图;

图6为根据本发明第二实施例的基于生成树的域内动态多路径生成方法 的流程示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明 如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解 并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及 各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护 范围之内。

另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的 计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情 况下,可以以不同于此处的顺序执行所示出或描述的步骤。

为了弥补现有算法的不足,本发明提出了一种基于生成树的域内动态多 路径生成方法。为了确保该方法计算出的从根结点到所有目的的路径是没有 环路的,网络中所有的结点必须保持一致的计算信息,但是网络中所有的结 点是分布式计算的,因此要想得到一致的计算信息,每个结点必须进行相同 的计算或者通过邻居交换信息。本发明方法以链路状态路由协议(OSPF或 者ISIS)为基础,每个结点构造以自身为根的SPT。

为了方便描述本实施例,先定义一些标记,这些标记适用于整个发明内 容。我们将网络拓扑抽象为一个无向连通图G(V,E),其中V和E分别代表图 的顶点和边,L(u,v)是结点u和结点v的直连代价,当结点u和结点v不是 邻居时,该值为无穷大,R(v)表示结点v的路由ID(Router-ID),Tc表示以 结点c为根的SPT。在Tc中,Cc(v)表示结点c到结点v的最小代价,Hc(v)表 示结点v的所有孩子结点,Pc(v)表示结点v的父结点,Dc(v)表示结点v以 及结点v的所有子孙结点。

特别是,该方法的目的是为结点c计算到目的结点的多个下一跳。我们 用Nc(v)表示根结点c到结点v的下一跳的集合,Bc(v)表示根结点c到结点v 的最优下一跳,并且Bc(v)∈Nc(v)。为了方便表述,后面相关内容或附图也 可以使用N(v)和B(v)来分别表示根结点到结点v的下一跳的集合以及根结点 到结点v的最优下一跳。

我们定义下述选取下一跳的规则。

规则1:[Next hop selection rule]

假设Tc中的两个结点u、v并且u和v互为邻居关系,定义Dc(v,u)= Cc(v)-Cc(Bc(v))+L(u,v),如果Dc(v,u)<Cc(u)成立,则称v对u有贡献, 并且将Bc(v)加入到Nc(u)中。

需要说明的是,上述规则最重要的一点就是计算出的根结点到所有目的 结点的多条路径是无环的。下面我们证明利用规则1计算的路径没有环路。

定理1:对于任意的目的v,如果c的邻居x满足条件Cx(v)<Cc(v),

结点c可以将报文发送给它该邻居结点x,则c到目的v的路径将不会 出现环路。

证明:因为Cx(v)是结点x到结点v的最短路径,Cc(v)是结点c到结点v 的最短路径,因此从c到目的v的代价是单调递减的,因此c到目的v的路 径将不会出现环路。

定理2:假设Tc中的两个结点u、v并且u和v互为邻居关系,定义 Dc(v,u)=Cc(v)-Cc(Bc(v))+L(u,v),如果Dc(v,u)<Cc(u)成立,则可以将 Bc(v)加入到Nc(u)中。

证明:因为Dc(v,u)是结点Bc(v)到v再到u的这条实际存在的路径的代 价,因此Dc(v,u)CBc(v)(u),

所以根据定理1可知,c可以选择结点Bc(v)作为到结点u 的下一跳。

第一实施例

图1是根据本发明第一实施例的基于生成树的域内动态多路径生成方法 的流程示意图,本实施例是静态情况下的多路径生成方法,下面参考图1来 详细说明构造以某一结点为根的SPT的各个步骤。在构造SPT的过程中可以 计算出根结点到其它所有结点的多个下一跳。并且构造SPT是一个迭代的过 程,每次都选择一个结点加入到SPT。

步骤S110,初始化一网络的所有结点的结点信息。

具体地,初始化的结点信息包括每个结点的代价、父亲结点、子孙结点 以及访问标记属性(visited)。为每个结点定义一个访问标记属性,设置初 值为未访问false,当该结点加入到SPT后,设置访问标记属性为已访问true。

更具体地,初步设置根结点,例如结点c的最小代价为0,即Cc(c)=0, 将除根结点c以外的任意结点v的最小代价设置为无穷大,即Cc(v)=∞。将 所有结点(例如结点v)的父结点设置为空NULL,即Pc(v)=NULL。将所 有结点(例如结点v)的访问标记属性(visited)设置为未访问false,即 v.visited=false。

如图2所示,其为一简单网络的拓扑图,在该网络中包括5个结点,分 别为结点a、b、c、d和e。每条链路上的数字表示所连接的两结点之间的直 连代价,例如,结点a到结点b的直连代价L(a,b)为10。在构造以结点a为 根的最短路径树时,首先需要按照上述步骤将该网络中的所有结点进行初始 化。

步骤S120,创建优先级队列Q,将结点c的优先级结构信息加入到优先 级队列Q中。

需要说明的是,该优先级队列Q中元素的结构为QStruct(ID,TC,TP), 其中ID表示结点的Router-ID,TC为结点的当前最小代价,TP表示结点的 当前父结点。将根结点c的QStruct信息加入到Q中,完成该步骤后,Q中 目前只有一个元素Q(c,0,NULL)。

步骤S130,判断优先级队列Q是否为空,若判断结果为否,则执行步 骤S140,否则结束操作。

步骤S140,根据出队列规则取出优先级队列Q中的队首元素(Cur), 设置该元素为当前结点,并且将该元素从队列Q中删除。

其中,定义ExtractMin为结点出队列的规则,该规则如下:

(1)选取TC最小的结点;

(2)当有多个结点有相同的TC,选择Router-ID最小的结点。

当一个结点出队列后,该结点的最小代价和父结点就确定了,并且将该 结点的访问标记属性(visited)设置为true。

如果当前结点不是根结点c且访问属性为false,则变更当前结点v的 visited属性为true(即v.visited=true),并且更新当前结点的最小代价: Cc(v)=tc;子孙结点:Hc(tp)=Hc(tp)∪{v},Hc(Pc(v))=Hc(Pc(v))\{v}; 父结点:Pc(v)=tp。并且通过以下表达式来计算根结点c到当前结点v的 最优下一跳Bc(v)。

Bc(v)=vPc(v)=vBc(Pc(v))Pc(v)v

步骤S150,访问队首元素Cur的所有邻居Nei。

步骤S160,判断当前邻居结点是否被访问过。

如果该邻居结点未被访问过,则更新该邻居结点的结点信息,并将该邻 居结点更新后的信息按照优先级结构加入到优先级队列Q中。

需要说明的是,在初次遍历当前结点v的所有邻居结点,由于所有邻居 结点的访问标记属性(visited)设置为false,也就是所有邻居结点未被访问, 此时需要对所有邻居结点进行信息更新并加入到优先级队列Q中。例如对于 邻居结点u来说,计算u的TC:TC=Cc(v)+LC(v,u)和TP:TP=v。将 计算的结点u的QStruct(u,TP,TC)加入到Q中。

如果该邻居结点已经被访问过,则根据上述规则1计算根结点c到队首 元素Cur的下一跳以及根结点c到该邻居结点Nei的下一跳。

进一步地,如上述规则1可知,假设队首元素为v,当前邻居结点为u, 如果v对u有贡献,则设置哈希表项hc[v,u]=1,并且将Bc(v)加入到Nc(u)中, 同样,如果u对v有贡献,则设置哈希表项hc[u,v]=1,并且将Bc(u)加入到Nc(v) 中。此外,将一个元素加入到一个下一跳集合时,需同时维护该元素被加入 该集合的次数,用引用计数表示。也就是,将引用计数作加1计算。

步骤S170,判断当前邻居结点是否是该队首元素的最后一个邻居结点, 若是则返回步骤S130,否则获取下一个邻居结点并返回步骤S160。

当队列Q中的元素为空时,算法执行完毕。此时已经计算出结点c到所 有结点的下一跳,将这些下一跳存入到路由表中。

如图3所示,为根据本实施方法计算得到的关于图2所示网络中根结点 a的最短路径树的整个过程。在图3中,依次访问并添加根结点a的邻居结 点,如访问结点b的时候,得到了根结点a与结点b的关系,即B(b)=b, N(b)={b},直到访问完e,构造了关于根结点a的最短路径树。

图4所示为利用上述方法得到另一网络的以结点a为根的最短路径树, 其中实线为SPT中的边,虚线为拓扑图中的边。该网络中所包含的结点较多, 包括14个结点,同图2所示,每条链路上的数字表示所连接的两结点之间的 直连代价,而圈内的数字表示连接的两结点之间的最小代价,例如⑩表示根 结点a到结点b的最小代价为10。并且在该最短路径树中还标注了根结点到 每个结点的下一跳的集合以及相关结点的贡献程度。

本发明提出的一种基于生成树的域内动态分布式多路径生成方法,本发 明通过在每个结点上维护一个SPT,其时间复杂度类似于Dijkstra算法,具 有较低的时间复杂度。另外,该方法具有较高的运行效率,在降低运行时间 的同时大大提高了网络的可靠性。每一个结点只需要维护一个以自身为根结 点的最短路径树SPT。当SPT构造完成时,该结点将计算出到所有目的的多 个下一跳。

第二实施例

图6为根据本发明第二实施例的基于生成树的域内动态多路径生成方法 的流程示意图,本实施例是在链路状态发生变化时的,即动态的多路径生成 方法,下面参考图6来详细说明各个步骤。

为了描述方便,下面我们假设根结点c到结点s的最小代价Cc(s)≥ 根结点c到结点e的最小代价Cc(e)。

步骤S210,分析链路(边)L(s,e)的代价变化,当边L(s,e)的代价增 加,则执行步骤S220,否则执行步骤S230。

步骤S220,判断静态构造的关于根结点c的最短路径树SPT的结构是否 改变。

具体地,若判断结果为否,即该边不在SPT上时,则根结点c到结点s 和结点e的下一跳将会受到影响。分为以下两种情况来动态调整SPT的结构:

如果哈希表项hc[s,e]=1并且Dc(s,e)≥Cc(e),函数Del(Bc(s),Nc(e))将被 调用,即将根结点c到结点s的最优下一跳Bc{s)从根结点c到结点e的下一 跳的集合Nc(e)中删除,并且更新哈希表项hc[s,e]=0。

需要说明的是,如果Bc(s)在Nc(e)中的引用计数大于1,则只引用计数减 1,如果引用计数从1降为0,才真正从Nc(e)中删除Bc(s)。这是因为,由于 有多个不同结点s、x、y、z,...,它们的最优下一跳相同,假设为b,而且都 对e有贡献,则这个相同的最优下一跳b可能会被多次加入N(e),所以采用 一个引用计数来记录相应的次数,当把b加入N(e)的时候,实际是增加其引 用计数,当希望从N(e)中删除b时,实际是减小其引用计数,只有当引用计 数降为0的时候,才需要将b真正从N(e)中删除。

反之,如果哈希表项hc[e,s]=1并且Dc(e,s)≥Cc(s),函数Del(Bc(e),Nc(s)) 将被调用,即将根结点c到结点e的最优下一跳Bc(e)从根结点c到结点s的 下一跳的集合Nc(s)中删除,并且更新哈希表项hc[e,s]=0。

需要说明的是,如果Bc(e)在Nc(s)中的引用计数大于1,则只引用计数减 1,如果引用计数从1降为0,才真正从Nc(s)中删除Bc(e)。

其中,对于任意两个结点u和v,hc[u,v]=1表示u对v有贡献,反之 hc[u,v]=0。

如图5所示,在该最短路径树中链路ej和链路lm的权值(直连代价) 发生变化。链路ej的权值从7增加到9,链路lm的权值从9增加到11。并 且这两条链路均不是最短路径树的边,根据图4可以看出,链路ej符合上述 第一种情况,因此,将根结点a到结点e的最优下一跳从根结点a到结点j 的下一跳的集合中删除,即将结点b从{b,c}中删除,得到N(j)={c},并同时 更新哈希表项hc[e,j]=0。

另一方面,当边L(s,e)的代价增加,并且SPT结构发生改变,即该边 在SPT上时,e的所有子孙的下一跳将会受到影响,则将e和e的所有子孙 加入到优先级队列中。对这些结点执行第一实施例中的步骤S130-S170,相 应步骤请参考第一实施例的描述,在此不再赘述。

步骤S230,当边L(s,e)的代价减小,判断静态构造的关于结点c的最 短路径树SPT的结构是否改变。

具体地,若不影响SPT的结构时,根结点c到结点s和结点e的下一跳 将会受到影响。分为以下两种情况来动态调整SPT的结构:

如果哈希表项hc[s,e]=0并且Dc(s,e)<Cc(e),函数Add(Bc(s),Nc(e))将 被调用,即将根结点c到结点s的最优下一跳Bc(s)添加至根结点c到结点e 的下一跳的集合Nc(e)中并更新其引用计数,同时更新哈希表项hc[s,e]=1。

反之,如果哈希表项hc[e,s]=0并且Dc(e,s)<Cc(s),函数 Add(Bc(e),Nc(s))将被调用,即将根结点c到结点e的最优下一跳Bc(e)添加至 根结点c到结点s的下一跳的集合Nc(s)中并更新其引用计数,同时更新哈希 表项hc[e,s]=1。

另一方面,当边L(s,e)的代价减小,并且影响SPT的结构时,将e加 入到优先级队列中,执行第一实施例中的步骤S130-S170,相应步骤请参考 第一实施例的描述,在此不再赘述。

本发明提出了一种基于生成树的域内动态分布式多路径生成方法,每一 个结点只需要维护一个以自身为根结点的SPT(Shortest Path Tree)。当SPT构 造完成时,该结点将计算出到所有目的的多个下一跳。当链路状态发生变化 的时候,DMPA不需要重新构造SPT和下一跳信息,该方法可以动态的调整 SPT和下一跳信息,因此该算法具有较高的效率。该生成方法的时间复杂度 和构造SPT是相同的。实验表明本方法具有较高的运行效率,并且可以为源 到目的提供多个下一跳,因此大大提高了网络的可靠性和快速恢复的能力。

本领域的技术人员应该明白,上述的本发明的各步骤可以用通用的计算 装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置 所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现, 从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制 作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电 路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本 发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内 的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的 形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所 附的权利要求书所界定的范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号