CN103036791B - 一种确定点到多点路径的方法和装置 - Google Patents
一种确定点到多点路径的方法和装置 Download PDFInfo
- Publication number
- CN103036791B CN103036791B CN201210506634.5A CN201210506634A CN103036791B CN 103036791 B CN103036791 B CN 103036791B CN 201210506634 A CN201210506634 A CN 201210506634A CN 103036791 B CN103036791 B CN 103036791B
- Authority
- CN
- China
- Prior art keywords
- path
- link
- node
- cost
- down hop
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种确定点到多点路径的方法和装置,包括:利用候选列表来提供路径中的可选元素以及其相关信息,利用路径列表来提供确定出的从源地址到各目的地址的每条最短路径以及其相关信息,并通过利用不同的颜色标识来区分各目的地址对应的最短路径,可以同时确定一个源地址到达多个目的地址的最短路径。从而相对于现有技术,每次只能确定一个源地址到达一个目的地址的最短路径,可以快速确定出一个源地址到达多个目的地址的最短路径,提高了最短路径的确定效率。
Description
技术领域
本发明涉及通信领域,尤其涉及一种确定点到多点路径的方法和装置。
背景技术
点到多点流量工程(P2MP-TE,Point-to-Multipoint Traffic Engineering)是多协议标签交换流量工程(MPLS TE,Multi-Protocol Label Switching TrafficEngineering)在组播业务的扩展。
实现MPLS TE,需要如下四个步骤:
1、信息发布:设备通过发布链路状态,使得到达网络中的每台设备对整个网络的链路状态有所了解。当前,可以通过扩展开放式最短路径优先(OSPF,Open Shortest Path First)和中间系统-中间系统(ISIS,IntermediateSystem-Intermediate System)来完成信息发布。
2、路径确定:通过动态算法计算得到一条满足约束条件的路径。
3、路径建立:沿着计算得到的路径进行标签请求/分配,建立一条受限标签交换路径(CR-LSP,Constraint-Based Routing Label Switched Path)路径。
4、流量转发:数据流量通过建立的CR-LSP进行转发。
MPLS TE计算路径的算法是在最短路径优先算法(SPF,Shortest Path Firstalgorithm)基础上扩展的约束最短路径优先算法(CSPF,Constraint SPF)。标准的SPF算法只根据链路的链路属性值(Cost)值进行计算,而CSPF不仅依据链路的Cost,其他信息(如,链路的最大可用带宽、链路的预留带宽、链路的着色/亲和度等)也可以作为计算的依据,最后得到一条满足约束条件的路径。
当前CSPF算法并没有标准的实现方式,都是根据SPF算法的实现为依据,进行适当的改造。SPF的原理是使用迪杰斯特拉(Dijkstra)算法进行计算。这里介绍两个相关概念:
路径表:存放已知的在到达目的地址的最短路径上的节点和链路(可以将节点、链路(两相邻节点之间的链路)均称为元素)。只有目前在到达目的地址的最短路径上的元素在该表中。
候选列表:存放一系列目前不在到达目的地址的最短路径上的元素。该表按候选列表中每个元素的cost值(代表链路的一种属性,cost值越小,链路越优先被使用,通常cost值和链路的带宽相关,带宽越大,cost越小,不过用户可以人为更改cost的值)进行排序(这里用于排序cost的值是当前从开始执行SPF计算的节点(源节点)到达该元素时经过链路的cost值的总和),cost最小的,排在最前面。若cost相同,则先加入候选表中的元素,位于表的前面。
SPF算法的基本思路是:
1、首选将开始执行SPF计算的节点自己加到路径表中,到达节点的cost为0。
2、考虑刚加入路径表中元素的邻接元素,若该邻接元素已经在路径表,或者该邻接元素已经在候选列表且cost比该邻接元素当前cost小,则不处理该邻接元素,否则,将该邻接元素加到候选列表中,cost值为该邻接元素当前cost和到达其邻接链路的cost之和。
3、取候选表中的第一个元素,加入路径表,然后执行步骤2。
P2MP-TE存在多个目的地址,而当前CSPF每次只确定到达单个目的地址的路径,在需要确定到达多个目的地址的路径时,需要采用一个一个路径逐个确定的方式。
因此,如何快速确定到达各目的地址的路径,是目前需要解决的问题。
互联网工程任务组(IETF,Internet Engineering Task Force)在RFC4875中,扩展基于流量工程扩展的资源预留协议(RSVP-TE,Resource ReSerVationProtocol-Traffic Engineering)实现建立P2MP-TE路径。并且指出可以使用单个路径建立消息(Path)或多个Path建立针对各目的地址的CR-LSP。Path携带指示到达目的地址路径的单播显示路由对象(ERO),为了使用一个Path消息建立多个路径,IETF在Path中新增二级显示路由对象(SERO)。从而可以将到达第一目的地址的路径储存在ERO中,而将到达其他目的地址的路径存储在SERO中。
为了避免同一Path消息的ERO对象中的部分路径同时出现在SERO对象中,增加Path消息的长度,IETF引入了一种对SERO对象进行压缩的方式,那些在达到分支节点以前需要通过的路径,仅出现在ERO对象中,SERO对象中只包含从分支节点到达叶子节点的路径。
如图1所示,假设需要建立使用一个Path消息以LSRA为入口,以(LSRF,LSRH,LSRK,LSRM,LSRP,LSRQ)为出口的P2MP LSP,则路径信息如下:
S2L sub-LSP-F:ERO={LSRB,LSRC,LSRD,LSRE,LSRF}
S2L sub-LSP-H:SERO={LSRD,LSRG,LSRH}
S2L sub-LSP-K:SERO={LSRC,LSRI,LSRJ,LSRK}
S2L sub-LSP-M:SERO={LSRI,LSRL,LSRM}
S2L sub-LSP-P:SERO={LSRI,LSRN,LSRO,LSRP}
S2L sub-LSP-Q:SERO={LSRP,LSRQ}
故如何快速对各目的地址的路径进行压缩,使得能够满足Path消息的需要,也是亟需要解决的问题。
发明内容
本发明实施例提供一种确定点到多点路径的方法和装置,用于快速确定一个源地址到达多个目的地址的路径。
一种确定点到多点路径的方法,所述方法包括:
将源地址对应的元素的信息作为候选列表中的第一个元素的信息写入候选列表,候选列表中一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
确定候选列表中cost最小的路径;
在确定从源地址到达每个目的地址的路径均已确定,且本次确定出的路径的cost大于上一次确定出的路径的cost时,路径确定结束,否则,继续执行以下步骤:
将本次确定出的路径写入路径列表,并在候选列表中删除该路径;
针对该路径所属的元素,确定该元素的类型;
若该元素为节点,确定该节点连接的链路;
针对每一条链路,确定该链路是否满足流量工程的约束条件;
若该链路不满足流量工程的约束条件,结束对该链路的处理;若该链路满足流量工程的约束条件,则设置该链路的颜色标识集合与该节点cost最小的路径的颜色标识集合相同,确定该链路是否满足该颜色标识集合表示的各目的地址的路径约束条件,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的颜色标识集合为各目的地址对应的颜色标识的集合;
若该链路不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该链路的颜色标识集合中去除,且若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的cost为零,路径列表中保存有元素的信息,且一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若该链路满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若候选列表中存在该链路,将候选列表中该链路的所有路径下一跳中的路径中,路径的cost值与该链路的cost值进行比较;
若有路径的cost值大于该链路的cost值,则在该路径的颜色标识集合中去除该链路的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若有路径的cost值小于该链路的cost值,则在该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若该元素为链路,确定该链路相邻的节点;
针对每一节点,确定该节点是否满足流量工程的约束条件;
若该节点不满足流量工程的约束条件,结束对该节点的处理;若该节点满足流量工程的约束条件,则设置该节点的颜色标识集合与该链路cost最小的路径的颜色标识集合相同,确定该节点是否满足该颜色标识集合表示的各目的地址的路径约束条件;
若该节点不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该节点的颜色标识集合中去除,且若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若该节点满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若候选列表中存在该节点,将候选列表中该节点的所有路径下一跳中的路径中,路径的cost值与该节点的cost值进行比较;
若有路径的cost值大于该节点的cost值,则在该路径的颜色标识集合中去除该节点的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若有路径的cost值小于该节点的cost值,则在该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
并返回执行针对候选列表中第一个元素,确定该元素的第一个路径下一跳对应的第一条路径的操作。
一种确定点到多点路径的装置,所述装置包括:
写入模块,用于将源地址对应的元素的信息作为候选列表中的第一个元素的信息写入候选列表,候选列表中一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
确定模块,用于确定候选列表中cost最小的路径;
判断模块,用于在确定从源地址到达每个目的地址的路径均已确定,且确定模块本次确定出的路径的cost大于确定模块上一次确定出的路径的cost时,确定路径确定结束,否则,触发执行模块;
执行模块,用于将确定模块本次确定出的路径写入路径列表,并在候选列表中删除该路径;
针对确定模块本次确定出的路径所属的元素,确定该元素的类型;
若该元素为节点,确定该节点连接的链路;
针对每一条链路,确定该链路是否满足流量工程的约束条件;
若该链路不满足流量工程的约束条件,结束对该链路的处理;若该链路满足流量工程的约束条件,则设置该链路的颜色标识集合与该节点cost最小的路径的颜色标识集合相同,确定该链路是否满足该颜色标识集合表示的各目的地址的路径约束条件,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的颜色标识集合为各目的地址对应的颜色标识的集合;
若该链路不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该链路的颜色标识集合中去除,且若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的cost为零,路径列表中保存有元素的信息,且一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若该链路满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若候选列表中存在该链路,将候选列表中该链路的所有路径下一跳中的路径中,路径的cost值与该链路的cost值进行比较;
若有路径的cost值大于该链路的cost值,则在该路径的颜色标识集合中去除该链路的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若有路径的cost值小于该链路的cost值,则在该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若该元素为链路,确定该链路相邻的节点;
针对每一节点,确定该节点是否满足流量工程的约束条件;
若该节点不满足流量工程的约束条件,结束对该节点的处理;若该节点满足流量工程的约束条件,则设置该节点的颜色标识集合与该链路cost最小的路径的颜色标识集合相同,确定该节点是否满足该颜色标识集合表示的各目的地址的路径约束条件;
若该节点不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该节点的颜色标识集合中去除,且若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若该节点满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若候选列表中存在该节点,将候选列表中该节点的所有路径下一跳中的路径中,路径的cost值与该节点的cost值进行比较;
若有路径的cost值大于该节点的cost值,则在该路径的颜色标识集合中去除该节点的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若有路径的cost值小于该节点的cost值,则在该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块。
根据本发明实施例提供的方案,利用候选列表来提供路径中的可选元素以及其相关信息,利用路径列表来提供确定出的从源地址到各目的地址的每条最短路径以及其相关信息,并通过利用不同的颜色标识来区分各目的地址对应的最短路径,可以同时确定一个源地址到达多个目的地址的最短路径。从而相对于现有技术,每次只能确定一个源地址到达一个目的地址的最短路径,可以快速确定出一个源地址到达多个目的地址的最短路径,提高了最短路径的确定效率。
附图说明
图1为现有技术提供的网络示意图;
图2为本发明实施例一提供的确定点到多点路径的方法的步骤流程图;
图3为本发明实施例一提供的确定点到多点路径的方法的步骤流程图;
图4为本发明实施例一提供的确定点到多点路径的方法的步骤流程图;
图5为本发明实施例二提供的网络示意图;
图6为本发明实施例三提供的确定点到多点路径的装置的结构示意图。
具体实施方式
在本发明各实施例中,为了在利用CSPF确定两点之间的最短路径时,能够同时确定一个源地址到达多个目的地址的最短路径,采用不同颜色标识表示不同目的地址,一个路径的颜色标识集合,即为经该路径可以到达的目的地址的颜色标识集合,从而可以利用不同的颜色表示来区分路径,同时确定一个源地址到达多个目的地址的最短路径。
而进一步的,为了能够在利用CSPF确定两点之间的最短路径时,能够方便快速地提取压缩方式的约束路径,以满足Path消息的需要,在本发明各实施例中,按照约束路径先后确定出的顺序,在针对每个目的地址提取压缩方式的约束路径时,可以只提取到未被上次提取的元素。当然,提取非压缩方式的约束路径时,可以提取到达源地址对应的元素的所有元素。
下面结合说明书附图和各实施例对本发明方案进行说明。
实施例一、
本发明实施例一提供一种确定点到多点路径的方法,为了表述方便,下面介绍以下概念:
PATH-LIST:路径列表。存放已知的在到达目的地址的最短路径上的元素的信息。
TENT-LIST:候选列表。按序存放一系列目前不在到达目的地址的最短路径上的元素的信息。
Node(i):路径列表和候选列表中的元素。
Node(i){nh1,nh2,...}:元素的信息除了包含该元素的名称、类型外,还可以包含一个或多个路径下一跳(nh)信息。元素可以分为两种类型:节点(可以用ROUTER表示,节点信息可以理解为记录的设备信息(例如图1的LSRA、LSRB、LSRE等))和链路(可以用NETWORK表示,链路信息可以理解为记录的两相邻节点之间的链路信息(例如图1的设备间的链路))。
nh{remote_addr,local_addr,path_list}:路径下一跳信息中除了包含该路径下一跳的名称外,还可以包括该路径下一跳的本地地址(local_addr)、远端地址(remote_addr)和各路径(path_list)信息。其中本地地址可以理解为该路径下一跳的起始地址,远端地址可以理解为该路径下一跳的到达地址,各路径信息即为该路径下一跳所在的各路径的信息。
path(i){nh_vec,colour_list,cost}:在nh中,path_list中的每条路径的信息除包括该路径的名称外,还可以包括经该路径到达该路径所属元素需经过的下一跳(nh_vec)信息、该路径的颜色标识集合(colour_list)和链路属性值(cost)。颜色标识集合可以包括多个颜色标识。每个目的地址对应一个颜色标识。
nh_vec{nh1,nh2,...}:经过的下一跳信息中可以包括路径下一跳。
本实施例提供的方法的步骤流程可以如图2所示,包括:
步骤101、将第一个元素加入TENT-LIST。
在本步骤中,可以在空的TENT-LIST中,将源地址对应的元素(为节点(ROUTER)类型)的信息作为TENT-LIST中的第一个元素的信息写入TENT-LIST。
该元素的信息中包括一个路径下一跳,该路径下一跳中包括一个路径,该路径的cost为0,colour_list为所有目的地址的颜色标识集合,nh_vec为空。
步骤102、针对TENT-LIST中第一个元素第一个路径下一跳对应的第一条路径进行处理。
在本步骤中,针对候选列表中第一个元素(可以记为Tent-Min-Node),可以确定该元素的第一个路径下一跳(可以记为Tent-Min-Nh)对应的第一条路径(可以记为Tent-Min-P)。如图3所示,对Tent-Min-P进行以下处理:
1)在确定从源地址到达每个目的地址的路径均已确定,并且Tent-Min-P的cost大于上次确定出的Tent-Min-P的cost时,路径计算结束,并可以执行步骤104。
否则,可以将该元素的第一个路径下一跳对应的第一条路径写入路径列表,并在候选列表中删除该路径,具体的,可以继续执行以下步骤:
2)根据Tent-Min-Node的名称在PATH-LIST中查找对应的元素,可以将PATH-LIST中,名称与Tent-Min-Node名称相同的元素,记为Path-Cur-Node。
3)若Path-Cur-Node在PATH-LIST中存在,则根据Tent-Min-Nh的remote_addr和local_addr在Path-Cur-Node查找对应的路径下一跳,可以将Path-Cur-Node中,remote_addr和local_addr分别与Tent-Min-Nh的remote_addr和local_addr相同的路径下一跳,记为Path-Cur-Nh。查找后执行以下子处理。
i)若Path-Cur-Nh存在,则在Path-Cur-Nh中创建路径(记为Path-Cur-P),并将Tent-Min-P的colour-list、cost和nh_vec拷贝到Path-Cur-P。然后执行5)步骤。
ii)若Path-Cur-Nh不存在,则在Path-Cur-Node中创建路径下一跳(也记为Path-Cur-Nh),并在Path-Cur-Nh中创建路径(也记为Path-Cur-P),并将Tent-Min-P的colour-list、cost和nh_vec拷贝到Path-Cur-P。然后执行5)步骤。
4)若Path-Cur-Node在PATH-LIST中不存在,则在PATH-LIST中创建元素(也称为Path-Cur-Node),并在Path-Cur-Node中创建Path-Cur-Nh、在Path-Cur-Nh中创建Path-Cur-P。然后将Path-Cur-Node设置为Tent-Min-Node的类型,将Tent-Min-P的colour-list、cost和nh_vec拷贝到Path-Cur-P。
5)在Tent-Min-Nh删除Tent-Min-P,然后执行以下处理。
i)若删除Tent-Min-P后,Tent-Min-Nh无其他路径,则执行ii);
若删除Tent-Min-P后,Tent-Min-Nh有其他路径,则可以调整候选列表中元素、元素中的路径下一跳、路径下一跳中的路径的位置,保证候选列表中cost最小的路径为候选列表第一个元素第一个路径下一跳的第一条路径。
具体的,可以判断删除Tent-Min-P后,Tent-Min-Nh中最小cost的路径是否为Tent-Min-Nh当前第一条路径,若Tent-Min-Nh中最小cost的路径不是Tent-Min-Nh当前第一条路径,则将该最小cost的路径调整为Tent-Min-Nh的第一条路径,若Tent-Min-Nh中最小cost的路径是Tent-Min-Nh当前第一条路径,可以保持Tent-Min-Nh当前第一条路径不变。
若将该最小cost的路径调整为Tent-Min-Nh的第一条路径,可以继续判断Tent-Min-Node中最小的cost的路径是否为Tent-Min-Nh当前第一条路径,若Tent-Min-Node中最小的cost的路径是Tent-Min-Nh当前第一条路径,则仍将Tent-Min-Nh作为Tent-Min-Node的第一个路径下一跳,若Tent-Min-Node中最小的cost的路径不是Tent-Min-Nh当前第一条路径,将最小的cost的路径所在的路径下一跳调整为Tent-Min-Node的第一个路径下一跳。
若调整了Tent-Min-Node的第一个路径下一跳,可以继续判断在所述TENT-LIST对应的路径中,cost最小的路径是否为Tent-Min-Node第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为TENT-LIST第一个元素,否则,保持Tent-Min-Node为TENT-LIST第一个元素不变。
并可以执行步骤103。
ii)在Tent-Min-Node中删除Tent-Min-Nh:
若删除Tent-Min-Nh后,Tent-Min-Node无其他路径下一跳,则执行iii);
若删除Tent-Min-Nh后,Tent-Min-Node有其他路径下一跳,则可以调整候选列表中元素、元素中的路径下一跳、路径下一跳中的路径的位置,保证候选列表中cost最小的路径为候选列表第一个元素第一个路径下一跳的第一条路径。
具体的,可以判断Tent-Min-Node中最小的cost的路径是否为删除Tent-Min-Nh后,Tent-Min-Node当前第一个路径下一跳的第一条路径,若Tent-Min-Node中最小的cost的路径是删除Tent-Min-Nh后,Tent-Min-Node当前第一个路径下一跳的第一条路径,则保持Tent-Min-Node当前第一个路径下一跳不变,否则,将该最小的cost的路径所对应的路径下一跳调整为Tent-Min-Node第一个路径下一跳。
若调整了Tent-Min-Node的第一个路径下一跳,则可以继续判断在所述TENT-LIST对应的路径中,cost最小的路径是否为Tent-Min-Node第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为TENT-LIST第一个元素,否则,保持Tent-Min-Node为TENT-LIST第一个元素不变。
并可以执行步骤103。
iii)在TEND-LIST删除Tent-Min-Node。并可以执行步骤103。
步骤103、处理Path-Cur-Node元素。
将TEND-LIST中第一个元素的第一个路径下一跳对应的第一条路径写入PATH-LIST后,可以确定PATH-LIST中写入的Path-Cur-Node元素的类型。
第一种情况:
若该元素的类型为节点,则可以如图4所示,可以确定该节点连接的所有链路,并针对每一条链路,进行以下处理:
1)判断该该链路是否满足流量工程的约束条件(TE条件,如带宽、链路属性等)。若该链路不满足TE条件,则可以结束对该链路的处理,并可以继续处理该节点连接的其他链路。若该链路满足TE条件,则可以继续执行2)。
2)设置该链路的colour-list为Path-Cur-P的颜色标识集合,记为tmp-colour-list,然后按照tmp-colour-list对应各目的地址的路径约束条件判断该链路是否满足。
若该链路不满足至少一个目的地址的路径约束条件,则tmp-colour-list去掉此至少一个目的地址对应的颜色标识。并继续执行3)。
若该链路满足各目的地址的路径约束条件,则跳转执行4)。
3)判断tmp-colour-list是否为空。
若tmp-colour-list为空,则可以结束对本链路的处理,并可以继续处理Path-Cur-Node连接的其他链路。若tmp-colour-list非空,则可以继续执行4)。
4)确定该链路的cost。
可以设置该链路的cost为Path-Cur-P的cost与该链路的cost之和,记为tmp-cost。
5)根据该链路的名称在PATH-LIST中查找对应的链路,记为tmp-path-node。
6)若tmp-path-node在PATH-LIST中存在,将tmp-path-node所有路径下一跳的路径cost值和tmp-cost比较。
若tmp-path-node中有路径的cost值小于tmp-cost值,则tmp-colour-list去除此cost对应路径的颜色标识集合:
若去除颜色标识集合后,tmp-colour-list为空,则可以结束对当前链路的处理,并可以继续处理Path-Cur-Node连接的其他链路。若去除颜色标识集合后,tmp-colour-list非空,可以继续执行7)。
若tmp-path-node中没有路径的cost值小于tmp-cost值,可以继续执行7)。
7)根据链路名称在TENT-LIST中查找对应链路,记录为tmp-tent-node。
8)若tmp-tent-node在TENT-LIST中存在,执行以下子操作:
i)将tmp-tent-node中所有路径下一跳的路径cost值和tmp-cost值比较大小。将值大的一方颜色标识集合去掉值小的一方的颜色标识集合。
若有路径的cost值大于该链路的cost值,则在该路径的颜色标识集合中去除该链路的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则执行iii)。
在删除路径后,也可能如步骤102中5)所述,需要进一步删除路径下一跳和元素。且此时,也需要保证候选列表中cost最小的路径为候选列表第一个元素第一个路径下一跳的第一条路径。具体的,可以调整候选列表中元素、元素中的路径下一跳、路径下一跳中的路径的位置来实现。
具体的,可以通过以下方式实现:
在候选列表中删除该路径,并判断该路径所属的路径下一跳是否还对应其他路径;
若该路径所属的路径下一跳还对应其他路径,判断该路径所属的路径下一跳对应的其他路径中,是否cost最小的路径为删除路径后,该路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该路径下一跳的第一条路径时,判断在该路径下一跳所属元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳时,判断所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该路径所属的路径下一跳没有对应其他路径,则在候选列表中删除该路径下一跳,判断该路径下一跳所属的元素是否还对应其他路径下一跳;
若该路径下一跳所属的元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
若有路径的cost值小于该链路的cost值,则在该链路的颜色标识集合中去除该路径的颜色标识集合,并继续执行ii)。
ii)判断tmp-colour-list是否为空。
针对tmp-tent-node所有路径下一跳的路径执行完i)后,判断tmp-colour-list是否为空。若tmp-colour-list为空,则可以结束对当前链路的处理,并可以继续处理Path-Cur-Node连接的其他链路。若去除颜色标识集合后,tmp-colour-list非空,则可以继续执行iii)。
iii)根据链路remote_addr和local_addr在tmp-tent-node查找对应的路径下一跳,记为tmp-tent-nh。
iv)若tmp-tent-nh在tmp-tent-node中不存在,则在tmp-tent-node创建新的路径下一跳,并在该路径下一跳中创建路径。
若tmp-tent-nh在tmp-tent-node中存在,则只需在tmp-tent-nh中创建一条新的路径。
v)将新创建路径的颜色标识集合和cost分别设置为:tmp-colour-list和tmp-cost。且新创建路径的nh_vec内容可以是将所述节点Path-Cur-Node作为下一跳,并根据Path-Cur-Node的nh_vec确定出的。较优的,新创建路径的nh_vec内容可以是在Path-Cur-Node的nh_vec的首位置增加Path-Cur-Nh,从而可以获得按照到达该链路的顺序排列的路径下一跳信息。
在创建路径后,可以对候选列表中各元素位置、各路径下一跳位置和各路径位置进行调整,从而保证在候选列表中,cost最小的路径为候选列表中第一个元素第一个路径下一跳的第一条路径。
具体的,可以通过以下方式实现位置调整:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
较优的,可以进一步保证各元素可以根据其所拥有路径的最小cost值进行升序排序。一个元素中各路径下一跳可以按照其包含路径的最小cost值进行升序排序。一个路径下一跳中各路径也可以按照其cost值进行升序排序。从而使得后续在删除路径时,可以进一步简化比较大小步骤,减少计算量,进一步加快确定路径的速度。
在8)执行完毕后,可以继续处理Path-Cur-Node连接的其他链路。
9)若tmp-tent-node不存在,在TENT-LIST中创建元素(NETWORK类型)、在该元素中创建路径下一跳,在该路径下一跳中创建路径,将该路径的颜色标识集合和cost分别设置为tmp-colour和tmp-cost。该路径的nh_vec内容可以是将所述节点Path-Cur-Node作为下一跳,并根据Path-Cur-Node的nh_vec确定出的。较优的,新创建路径的nh_vec内容可以是在Path-Cur-Node的nh_vec的首位置增加Path-Cur-Nh。
在创建路径后,可以对候选列表中各元素位置、各路径下一跳位置和各路径位置进行调整,从而保证在候选列表中,cost最小的路径为候选列表中第一个元素第一个路径下一跳的第一条路径。
具体的,可以通过以下方式实现位置调整:
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
在9)执行完毕后,可以继续处理Path-Cur-Node连接的其他链路。
第二种情况:
类似的,若该元素的类型为链路,则可以确定该链路相邻的节点,并针对每一节点,进行以下处理:
1)判断该该节点是否满足流量工程的约束条件(TE条件,如带宽、链路属性等)。若该节点不满足TE条件,则可以结束对该节点的处理,并可以继续处理该链路相邻的其他节点。若该节点满足TE条件,则可以继续执行2)。
2)设置该节点的colour-list为Path-Cur-P的颜色标识集合,记为tmp-colour-list,然后按照tmp-colour-list对应各目的地址的路径约束条件判断该节点是否满足。
若该节点不满足至少一个目的地址的路径约束条件,则tmp-colour-list去掉此至少一个目的地址对应的颜色标识。并继续执行3)。
若该节点满足各目的地址的路径约束条件,则跳转执行4)。
3)判断tmp-colour-list是否为空。
若tmp-colour-list为空,则可以结束对本节点的处理,并可以继续处理Path-Cur-Node相邻的其他节点。若tmp-colour-list非空,则可以继续执行4)。
4)确定该节点的cost。
可以设置该节点的cost为Path-Cur-P的cost,记为tmp-cost。
5)根据该节点的名称在PATH-LIST中查找对应的节点,记为tmp-path-node。
6)若tmp-path-node在PATH-LIST中存在,将tmp-path-node所有路径下一跳的路径cost值和tmp-cost比较。
若tmp-path-node中有路径的cost值小于tmp-cost值,则tmp-colour-list去除此cost对应路径的颜色标识集合:
若去除颜色标识集合后,tmp-colour-list为空,则可以结束对当前节点的处理,并可以继续处理Path-Cur-Node相邻的其他节点。若去除颜色标识集合后,tmp-colour-list非空,可以继续执行7)。
若tmp-path-node中没有路径的cost值小于tmp-cost值,可以继续执行7)。
7)根据节点名称在TENT-LIST中查找对应节点,记录为tmp-tent-node。
8)若tmp-tent-node在TENT-LIST中存在,执行以下子操作:
i)将tmp-tent-node中所有路径下一跳的路径cost值和tmp-cost值比较大小。将值大的一方颜色标识集合去掉值小的一方的颜色标识集合。
若有路径的cost值大于该节点的cost值,则在该路径的颜色标识集合中去除该节点的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则执行iii)。
在删除路径后,也可能如步骤102中5)所述,需要进一步删除路径下一跳和元素。且此时,也需要保证候选列表中cost最小的路径为候选列表第一个元素第一个路径下一跳的第一条路径。具体的,可以调整候选列表中元素、元素中的路径下一跳、路径下一跳中的路径的位置来实现。
若有路径的cost值小于该节点的cost值,则在该节点的颜色标识集合中去除该路径的颜色标识集合,并继续执行ii)。
ii)判断tmp-colour-list是否为空。
针对tmp-tent-node所有路径下一跳的路径执行完i)后,判断tmp-colour-list是否为空。若tmp-colour-list为空,则可以结束对当前节点的处理,并可以继续处理Path-Cur-Node相邻的其他节点。若去除颜色标识集合后,tmp-colour-list非空,则可以继续执行iii)。
iii)根据节点remote_addr和local_addr在tmp-tent-node查找对应的路径下一跳,记为tmp-tent-nh。
iv)若tmp-tent-nh在tmp-tent-node中不存在,则在tmp-tent-node创建新的路径下一跳,并在该路径下一跳中创建路径。
若tmp-tent-nh在tmp-tent-node中存在,则只需在tmp-tent-nh中创建一条新的路径。
v)将新创建路径的颜色标识集合和cost分别设置为:tmp-colour-list和tmp-cost。且新创建路径的nh_vec内容可以是将所述节点Path-Cur-Node作为下一跳,并根据Path-Cur-Node的nh_vec确定出的。较优的,新创建路径的nh_vec内容可以是在Path-Cur-Node的nh_vec的首位置增加Path-Cur-Nh,从而可以获得按照到达该链路的顺序排列的路径下一跳信息。
在创建路径后,可以对候选列表中各元素位置、各路径下一跳位置和各路径位置进行调整,从而保证在候选列表中,cost最小的路径为候选列表中第一个元素第一个路径下一跳的第一条路径。
具体的,可以通过以下方式实现位置调整:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
较优的,可以进一步保证各元素可以根据其所拥有路径的最小cost值进行升序排序。一个元素中各路径下一跳可以按照其包含路径的最小cost值进行升序排序。一个路径下一跳中各路径也可以按照其cost值进行升序排序。从而使得后续在删除路径时,可以进一步简化比较大小步骤,减少计算量,进一步加快确定路径的速度。
在8)执行完毕后,可以继续处理Path-Cur-Node相邻的其他节点。
9)若tmp-tent-node不存在,在TENT-LIST中创建元素(ROUTER类型)、在该元素中创建路径下一跳,在该路径下一跳中创建路径,将该路径的颜色标识集合和cost分别设置为tmp-colour和tmp-cost。该路径的nh_vec内容可以是将所述节点Path-Cur-Node作为下一跳,并根据Path-Cur-Node的nh_vec确定出的。较优的,新创建路径的nh_vec内容可以是在Path-Cur-Node的nh_vec的首位置增加Path-Cur-Nh。
在创建路径后,可以对候选列表中各元素位置、各路径下一跳位置和各路径位置进行调整,从而保证在候选列表中,cost最小的路径为候选列表中第一个元素第一个路径下一跳的第一条路径。
具体的,可以通过以下方式实现位置调整:
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
在9)执行完毕后,可以继续处理Path-Cur-Node相邻的其他节点。
在完成对Path-Cur-Node元素的处理(若Path-Cur-Node为节点,可以理解为完成对该节点连接的所有链路的处理;若Path-Cur-Node为链路,可以理解为完成对该链路相邻的所有节点的处理)后,可以返回步骤102重新针对TENT-LIST中第一个元素第一个路径下一跳对应的第一条路径进行处理,直到确定从源地址到达每个目的地址的路径均已确定,并且Tent-Min-P的cost大于上次确定出的Tent-Min-P的cost。
步骤104、提取路径。
进一步的,在将路径信息写入路径列表完成后(路径确定完成后),在提取路径时,可以实现路径的压缩提取和非压缩提取。包括:确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;按照所述待提取的路径由先到后写入路径列表的顺序,确定对所述待提取的路径的提取顺序;按照确定出的提取顺序,提取每条待提取路径中,对应元素为链路,且该元素未设置已提取标识的,经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址,并为该下一跳对应元素设置已提取标识,从而实现路径的压缩提取;或者,确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;提取每条待提取路径中,每个对应元素为链路、经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址,从而实现路径的非压缩提取。
在对路径进行压缩提取时,具体可以通过如下方式实现:
根据路径列表,针对每个目的地址,按照先确定出路径的目的地址先提取的原则,进行如下提取:
1、获取在PATH-LIST各目的地址对应的Node(i)。
2、针对一个目的地址,根据路径选择的条件和颜色标识,在Node(i)的所有路径下一跳的路径中,选择最优的path(i)。若选择失败,继续处理下一个目的地址。
3、若Node(i)提取标记为1(1表示已提取,0表示未提取),继续处理下一个目的地址对应的元素。
4、若Node(i)提取标记为0,提取该目的地址对应的路径,并设置Node(i)提取标记为1。
在提取时,遍历path(i)中,nh_vec中的nh(i),针对所属元素为NETWORK类型的nh(i),若该nh(i)所属元素提取标记为0,则将该nh(i)的remote_addr,local_addr加入到该目的地址的提取路径列表中,并可以将该nh(i)所属元素提取标记设置为1。
在对路径进行非压缩提取时,具体可以通过如下方式实现:
1、获取在PATH-LIST各目的地址对应的Node(i)。
2、针对一个目的地址,根据路径选择的条件和颜色标识,在Node(i)的所有路径下一跳的路径中,选择最优的path(i)进行路径提取。若选择失败,继续处理下一个目的地址。
在提取时,遍历path(i)中,nh_vec中的nh(i),针对所属元素为NETWORK类型的nh(i),将该nh(i)的remote_addr,local_addr加入到该目的地址的提取路径列表中。
在实施例一中,为了便于提取cost最小的路径,提供了将cost最小的路径作为候选列表的第一个元素的第一个路径下一跳的第一个路径的较佳实施例。实际上,本发明实施例提供的方案不限于将cost最小的路径作为候选列表的第一个元素的第一个路径下一跳的第一个路径,只需从候选列表中确定cost最小的路径,即可以实现本发明实施例一提供的方案。且若不是将cost最小的路径作为候选列表的第一个元素的第一个路径下一跳的第一个路径,也无需在候选列表中删除路径时,或者,在候选列表中写入路径时,对路径、路径下一跳和元素的位置进行调整。
下面通过一个具体的实例对本发明实施例一的方案进行说明。
实施例二、
本发明实施例二提供一种确定点到多点路径的方法,应用该方法的网络的结构可以如图5所示,假设隧道要求带宽50M带宽,要求计算R1到达R4和R5两个目的地址的路径,其中假设R1到R4指定期望经过路径是R1—R2—R4,而R1到R5未指定期望经过的路径。假设到达R4目的地址,colour设置为01;到达R5目的地址,colour设置为10。在本实施例中,每个颜色标识可以占用二级制数中的一个位,例如,如假设要求计算R1到达R3、R4和R5两个目的地址的路径,则可以将到达R4目的地址,colour设置为001;到达R5目的地址,colour设置为010;将到达R3目的地址,colour设置为100。该方法包括以下步骤:
1、创建ROUTER类型节点R1,R1包括一个下一跳、一个路径,路径的cost为0,colour_list为所有目的地址颜色标识集合(11,此处针对用二进制数表示的两个颜色标识:01和10,可以用这两个颜色标识的或值表示这两个颜色标识对应的颜色标识集合),nh_vec为空。R1加入候选列表(TENT-LIST)。在本实施例中,每个元素(节点或链路)均可以理解为PATH-LIST列表或TENT-LIST中的一个节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:NONE
TENT-LIST列表:
2、将TENT-LIST最小cost的路径(R1-NH1的P1)移到PATH-LIST中。在PATH-LIST中创建新的节点。在TENT-LIST中删除R1。
3、处理刚加入PATH-LIST的R1节点所有链路L12(即图5中,R1与R2之间的链路),L13(即图5中,R1与R3之间的链路)。该两个链路初始颜色11(和刚加入PATH-LIST中路径颜色相同)。由于L13不符合到达R4的期望路径,故L13需去掉目的地址R4的颜色(01),最终L12颜色11,L13颜色10。该两个链路初始cost均为10,即为0(PATH-LIST中刚刚处理路径R1-NH1的P1的cost)+10(链路的cost)。在PATH-LIST和TENT-LIST中都不存在L12、L13这两个节点,则在TENT-LIST创建两个NETWORK类型的节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:
TENT-LIST列表:
4、将TENT-LIST最小cost的路径(L12-NH1的P1和L13-NH1的P1cost相同,任选一个,此处以选择L12-NH1的P1为例)移到PATH-LIST中。在PATH-LIST中创建新的节点。在TENT-LIST删除L12。
5、处理刚加入PATH-LIST的L12节点所有邻居R1,R2。该两个邻居初始颜色11(和刚加入PATH-LIST中路径颜色相同),并且R1、R2都满足到达R4和R5期望路径。该两个邻居初始cost=10(刚加入PATH-LIST中路径L12-NH1的P1的cost)。由于邻居R1在PATH-LIST中存在,并且路径的cost值小(0),则邻居R1的颜色去掉11(P-R1-NH1中P1的颜色),最终为0,则不处理邻居R1。邻居R2在PATH-LIST和TENT-LIST中都不存在,则颜色不变,在TENT-LIST创建一个ROUTER类型的节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:
TENT-LIST列表:
6、将TENT-LIST最小cost的路径(以选择R2-NH1的P1为例)移到PATH-LIST中。同样在PATH-LIST中创建新的节点。在TENT-LIST删除R2。
7、处理刚加入PATH-LIST的节点R2所有链路L12,L24。该两个链路初始颜色11(和刚加入PATH-LIST中路径颜色相同),该两个链路都符合到达R4、R5的期望路径,故颜色不变。该两个链路初始cost=10(刚加入PATH-LIST中路径的cost)+10(链路的cost)。由于链路L12在PATH-LIST中存在,并且路径的cost值小(10),则链路L12的颜色去掉11(P-L12-NH1中P1的颜色),最终为0,则不处理链路L12。在PATH-LIST和TENT-LIST中都不存在L24节点,则在TENT-LIST创建一个NETWORK类型的节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:
TENT-LIST列表:
8、将TENT-LIST最小cost的路径(L13-NH1的P1)移到PATH-LIST中。由于PATH-LIST中不存在L13,则需在PATH-LIST中创建新的节点。同样TENT-LIST中删除L13。
9、处理刚加入PATH-LIST的节点L13所有邻居R1,R3。该两个邻居初始颜色10(和刚加入PATH-LIST中路径颜色相同),都满足到达R5期望路径,最终两个邻居颜色都为10。该两个邻居初始cost=10(刚加入PATH-LIST中路径的cost)。由于邻居R1在PATH-LIST中存在,并且路径的cost值小(0),则邻居R1的颜色去掉11(P-R1-NH1中P1的颜色),最终为0,则不处理邻居R1。在PATH-LIST和TENT-LIST中都不存在R3节点,则在TENT-LIST创建一个ROUTER类型的节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:
TENT-LIST列表:
10、将TENT-LIST最小cost的路径(R3-NH1的P1)移到PATH-LIST中。由于PATH-LIST中不存在R3,则需在PATH-LIST中创建新的节点。同样TENT-LIST需要删除R3。
11、处理刚加入PATH-LIST的节点R3所有链路L13,L34。该两个链路初始颜色10(和刚加入PATH-LIST中路径颜色相同),该两个链路都符合到达R5的期望路径,故最终两路径颜色都是10。该两个链路初始cost为20=10(PATH-LIST中R3的P1的cost)+10(链路的cost)。由于链路L13在PATH-LIST中存在,并且路径的cost值小(10),则链路L13的颜色去掉10(P-L13-NH1中P1的颜色),最终为0,则不处理链路L13。在PATH-LIST和TENT-LIST中都不存在L34节点,则在TENT-LIST创建一个NETWORK类型的节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:
TENT-LIST列表:
12、将TENT-LIST最小cost的路径(L34-NH1的P1)移到PATH-LIST中。由于PATH-LIST中不存在L34,则需在PATH-LIST中创建新的节点。同样TENT-LIST中删除L34。
13、处理刚加入PATH-LIST的节点L34所有邻居R3,R4。该两个邻居初始颜色10(和刚加入PATH-LIST中路径颜色相同),都满足到达R5期望路径,最终两个邻居颜色都为10。该两个邻居初始cost=20(PATH-LIST中L34的P1的cost)。由于邻居R3在PATH-LIST中存在,并且路径的cost值小(10),则邻居R3的颜色去掉10(P-R3-NH1中P1的颜色),最终为0,则不处理邻居R3。在PATH-LIST和TENT-LIST中都不存在R4节点,则在TENT-LIST创建一个ROUTER类型的节点。
结果如下:
已经计算目的地址列表:NONE
PATH-LIST列表:
TENT-LIST列表:
14、将TENT-LIST最小cost的路径(R4-NH1的P1)移到PATH-LIST中。由于PATH-LIST中不存在R4,则需在PATH-LIST中创建新的节点。同样TENT-LIST需要删除R4。
15、处理刚加入PATH-LIST的节点R4所有链路L24,L34,L45。该三个链路初始颜色10(和刚加入PATH-LIST中路径颜色相同),该三个链路都符合到达R5的期望路径,故最终三路径颜色都是10。该三个链路初始cost=20(PATH-LIST中R4的P1的cost)+10(链路的cost)。由于链路L34在PATH-LIST中存在,并且路径的cost值小(20),则链路L34的颜色去掉10(P-L34-NH1中P1的颜色),最终为0,则不处理链路L34。由于链路L24在TENT-LIST中存在,并且路径的cost值小(20),则链路L24的颜色去掉11(L24-NH1中P1的颜色),最终为0,则不处理链路L24。在PATH-LIST和TENT-LIST中都不存在L45节点,则在TENT-LIST创建一个NETWORK类型的节点。
结果如下:
已经计算目的地址列表:R4
PATH-LIST列表:
TENT-LIST列表:
16、将TENT-LIST最小cost的路径(L24-NH1的P1)移到PATH-LIST中。由于PATH-LIST中不存在L24,则需在PATH-LIST中创建新的节点。同样TENT-LIST中删除L24。
17、处理刚加入PATH-LIST的节点L24所有邻居R2,R4。该两个邻居初始颜色11(和刚加入PATH-LIST中路径颜色相同),都满足到达R4、R5期望路径,最终两个邻居颜色都为11。该两个邻居初始cost=20(PATH-LIST中L24的P1的cost)。由于邻居R2和R4在PATH-LIST中存在,并且R2路径的cost值小(10),则邻居R2的颜色去掉11(P-R2-NH1中P1的颜色),最终为0,则不处理邻居R2;R4路径的cost值20并不小于邻居R4的cost,故需继续处理邻居R4。在TENT-LIST为R4创建一个ROUTER类型的节点。
结果如下:
已经计算目的地址列表:R4
PATH-LIST列表:
TENT-LIST列表:
18、将TENT-LIST最小cost的路径(R4-NH1的P1)移到PATH-LIST中。由于PATH-LIST中存在R4,但remote_addr不同,则需在PATH-LIST的R4中创建新的下一跳P-R4-NH2。同样TENT-LIST需要删除R4。
19、处理刚加入PATH-LIST的节点R4所有链路L24,L34,L45。该三个链路初始颜色11(和刚加入PATH-LIST中路径颜色相同),由于已经计算到R4(获得的路径列表中已经包括元素R4),故去掉R4颜色后,颜色为10;该三个链路都符合到达R5的期望路径,最终三链路颜色都是10。该两个链路初始cost=20(PATH-LIST中R4的P1的cost)+10(链路的cost)。由于链路L24在PATH-LIST中存在,并且路径的cost值小(20),则链路L24的颜色去掉11(P-L24-NH1中P1的颜色),最终为0,则不处理链路L24。由于链路L34在PATH-LIST中存在,并且路径的cost值小(20),则链路L34的颜色去掉10(P-L34-NH1中P1的颜色),最终为0,则不处理链路L34。由于链路L45在TENT-LIST中存在,并且路径的cost值30,cost值相同,链路颜色不发生变化,则需处理L45。链路L45在TENT-LIST中存在相同的remote_addr和local_addr的下一跳,故只创建新路径。
结果如下:
已经计算目的地址列表:R4
PATH-LIST列表:
TENT-LIST列表:
20、将TENT-LIST最小cost的路径(以选择L45-NH1的P1为例)移到PATH-LIST中。由于PATH-LIST中不存在L45,则需在PATH-LIST中创建新的节点。在TENT-LIST的L45-NH1中删除P1路径。
21、处理刚加入PATH-LIST的节点L45所有邻居R4,R5。该两个邻居初始颜色10,都满足到达R5期望路径,最终两个邻居颜色都为10。该两个邻居初始cost=30(PATH-LIST中L45的P1的cost)。由于邻居R4在PATH-LIST中存在,并且R4路径的cost值小(20),则邻居R4的颜色去掉10(P-R4-NH1中P1的颜色)和11(P-R4-NH2中P1的颜色),最终为0,则不处理邻居R4。在TENT-LIST和PATH-LIST都不存在R5,在为R5创建一个ROUTER类型的节点。
结果如下:
已经计算目的地址列表:R4
PATH-LIST列表:
TENT-LIST列表:
22、将TENT-LIST最小cost的路径(R5-NH1的P1)移到PATH-LIST中。由于PATH-LIST中不存在R5,则需在PATH-LIST中创建新的节点。同样TENT-LIST需要删除R5。
23、处理刚加入PATH-LIST的节点R5所有链路L45。该链路初始颜色10。
该链路初始cost 40=30(PATH-LIST中R5的P1的cost)+10(链路的cost)。
由于链路L45在PATH-LIST中存在,并且路径的cost值小(30),则链路L45的颜色去掉10(P-L45-NH1中P1的颜色),最终为0,则不处理链路L45。
结果如下:
已经计算目的地址列表:R4、R5
PATH-LIST列表:
TENT-LIST列表:
24、将TENT-LIST最小cost的路径(L45-NH1的P2)移到PATH-LIST中。由于PATH-LIST中存在L45,并且存在相同remote_addr、local_addr的下一跳,则在PATH-LIST的该下一跳中创建新的路径。在TENT-LIST中删除L45路径。
25、处理刚加入PATH-LIST的节点L45所有邻居R4,R5。该两个邻居初始颜色10,都满足到达R5期望路径,最终两个邻居颜色都为10。该两个邻居初始cost=30(PATH-LIST中L45的P1的cost)。由于邻居R4在PATH-LIST中存在,并且R4路径的cost值小(20),则邻居R2的颜色去掉10(P-R4-NH1中P1的颜色)和11(P-R4-NH2中P1的颜色),最终为0,则不处理邻居R4。由于邻居R5在PATH-LIST中存在,并且R5路径的cost值(30)并不小于邻居R5,则R5颜色不变。在TENT-LIST为R5创建一个ROUTER类型的节点。
结果如下:
已经计算目的地址列表:R4、R5
PATH-LIST列表:
TENT-LIST列表:
26、将TENT-LIST最小cost的路径(R5-NH1的P1)移到PATH-LIST中。由于PATH-LIST中存在R5,并且存在remote_addr、local_addr相等的下一跳,则需在PATH-LIST中该下一跳创建新的路径。同样TENT-LIST需要删除R5。
27、处理刚加入PATH-LIST的节点R5所有链路L45。该链路初始颜色10。该链路初始cost=30(PATH-LIST中R5的P1的cost)+10(链路的cost)。由于链路L45在PATH-LIST中存在,并且路径的cost值小(30),则链路L45的颜色去掉10(P-L45-NH1中P1和P2的颜色),最终为0,则不处理链路L45。
结果如下:
已经计算目的地址列表:R4、R5
PATH-LIST列表:
TENT-LIST列表:NONE
下面结合步骤27得到的路径列表,对路径压缩提取的方式进行说明。
由于在路径列表中先写入R4对应的路径,因此,可以先提取R4对应的路径,再提取R5对应的路径。
此时R4有两个下一跳,分别是P-R4-NH1和P-R4-NH2,其中着有R4颜色(01)的只有P-R4-NH2。针对P-R4-NH2对应的路径,得到下一跳列表成员P-R1-NH1,P-L13-NH1,P-R3-NH1,P-L34-NH1,其中,所属元素为NETWORK类型的下一跳列表成员为P-L13-NH1和P-L34-NH1。且由于是首次针对步骤27得到的路径列表进行路径提取,因此,P-L13-NH1和P-L34-NH1分别所属的元素L34、L13的提取标识均为0。
较优的,路径的获取可以从L34开始,向前获取(依次获取该链路之前的链路信息),即从路径的最后一个链路开始获取。提取L34的本地地址和远端地址,得到路径信息表(192.168.23.1、192.168.23.2),此时可以设置L34的提取标识为1。并可以继续提取L13的本地地址和远端地址,然后可以得到路径信息表(192.168.21.1、192.168.21.2、192.168.23.1、192.168.23.2),此即为R4对应的压缩路径,此时可以设置L13的提取标识为1。
由于在本实施例中,每个路径中的下一跳列表成员是按获取顺序依次保存的,因此,向前获取方式可以在一旦确定出一个链路的提取标识为1时,即确定路径提取结束,无需继续提取路径,从而进一步节约计算量。当然,路径的获取不限于从L34开始,向前获取。例如,也可以从L13开始,向后获取。
此时,已经获得了R4对应的路径,可以将R4的提取标识从0设置为1。
下面继续针对R5,进行压缩路径提取。
此时R5有一个下一跳P-R5-NH1,该下一跳包括两个路径P1和P2,其都着有R5颜色(10)的颜色。故此时R1到达R5存在两个等价路径。由于已经知道了各个路径上和等价路径选取相关的信息(如最小带宽等信息),故只需要进行一次简单的比较即可找到用户期望的满足等价路径处理规则的约束路径。
第一种情况、假设确定出的需要提取的路径为P-R5-NH1的P1,则可以得到下一跳列表成员为P-R1-NH1,P-L13-NH1,P-R3-NH1,P-L34-NH1,P-R4-NH1,P-L45-NH1。其中,所属元素为NETWORK类型的下一跳列表成员为P-L45-NH1、P-L34-NH1、P-L13-NH1。
路径的获取可以从L45开始,向前获取。而此时,P-L45-NH1所属元素L45的提取标识为0,P-L34-NH1、P-L13-NH1分别所属的元素L34、L13的提取标识均为1。
因此,只需要提取L45的本地地址和远端地址,得到路径信息表(192.168.24.1、192.168.24.2)。此即为R5对应的压缩路径。且此时,可以设置L45的提取标识为1。
此时,已经获得了R5对应的路径,可以将R5的提取标识从0设置为1。
第二种情况、假设确定出的需要提取的路径为P-R5-NH1的P2,则可以得到下一跳列表成员为P-R1-NH1,P-L12-NH1,P-R2-NH1,P-L24-NH1,P-R4-NH2和P-L45-NH1。其中,所属元素为NETWORK类型的下一跳列表成员为P-L45-NH1、P-L24-NH1和P-L12-NH1。
路径的获取可以从L45开始,向前获取。而此时,P-L45-NH1、P-L24-NH1和P-L12-NH1分别所属元素L45、L24和L12的提取标识均为0。
因此,可以提取L45的本地地址和远端地址,得到路径信息表(192.168.24.1、192.168.24.2)。且此时,可以设置L45的提取标识为1。然后,提取L24的本地地址和远端地址,得到路径信息表(192.168.22.1、192.168.22.2、192.168.24.1、192.168.24.2)。且此时,可以设置L24的提取标识为1。最后,提取L12的本地地址和远端地址,得到路径信息表(192.168.20.1、192.168.20.2、192.168.22.1、192.168.22.2、192.168.24.1、192.168.24.2)。且此时,可以设置L24的提取标识为1。
路径信息表(192.168.20.1、192.168.20.2、192.168.22.1、192.168.22.2、192.168.24.1、192.168.24.2)即表示R5对应的压缩路径,可以将R5的提取标识从0设置为1。
下面对路径非压缩提取的方式进行说明。
R4对应的待提取的路径为P-R4-NH2对应的路径,假设R5对应的待提取的路径为P-R5-NH1的P1。对R4、R5对应的路径的提取顺序可以不分先后。
针对P-R4-NH2对应的路径,得到下一跳列表成员P-R1-NH1,P-L13-NH1,P-R3-NH1,P-L34-NH1,其中,所属元素为NETWORK类型的下一跳列表成员为P-L13-NH1和P-L34-NH1。路径的获取也可以从L34开始,向前获取,从而得到依次衔接的路径信息,当然,也可以从L13开始,向后获取。提取L34的本地地址和远端地址,得到路径信息表(192.168.23.1、192.168.23.2)。并可以继续提取L13的本地地址和远端地址,然后可以得到路径信息表(192.168.21.1、192.168.21.2、192.168.23.1、192.168.23.2),此即为R4对应的非压缩路径。
针对P-R5-NH1的P1,得到下一跳列表成员为P-R1-NH1,P-L13-NH1,P-R3-NH1,P-L34-NH1,P-R4-NH1,P-L45-NH1。其中,所属元素为NETWORK类型的下一跳列表成员为P-L45-NH1、P-L34-NH1、P-L13-NH1。路径的获取可以从L45开始,向前获取。提取L45的本地地址和远端地址,得到路径信息表(192.168.24.1、192.168.24.2)。并可以继续提取L34的本地地址和远端地址,然后可以得到路径信息表(192.168.23.1、192.168.23.2、192.168.24.1、192.168.24.2)。最后,可以继续提取L13的本地地址和远端地址,然后可以得到路径信息表(192.168.21.1、192.168.21.2、192.168.23.1、192.168.23.2、192.168.24.1、192.168.24.2)。此即为R5对应的非压缩路径。
而若假设R5对应的待提取的路径为P-R5-NH1的P2。可以得到下一跳列表成员为P-R1-NH1,P-L12-NH1,P-R2-NH1,P-L24-NH1,P-R4-NH2和P-L45-NH1。其中,所属元素为NETWORK类型的下一跳列表成员为P-L45-NH1、P-L24-NH1和P-L12-NH1。
可以提取L45的本地地址和远端地址,得到路径信息表(192.168.24.1、192.168.24.2)。然后,提取L24的本地地址和远端地址,得到路径信息表(192.168.22.1、192.168.22.2、192.168.24.1、192.168.24.2)。最后,提取L12的本地地址和远端地址,得到路径信息表(192.168.20.1、192.168.20.2、192.168.22.1、192.168.22.2、192.168.24.1、192.168.24.2)。
路径信息表(192.168.20.1、192.168.20.2、192.168.22.1、192.168.22.2、192.168.24.1、192.168.24.2)即表示R5对应的非压缩路径。
本发明实施例一~二提供的方案,可以在不增加CSPF计算路径复杂度的前提下,同时计算出到达多个目的地址的路径。在不增加CSPF计算路径复杂度的前提下,当某个目的地址路径存在等价路径的时候,能够根据用户指定的等价路径处理规则,快速选择一条符合用户指定规则的约束路径。且在不增加CSPF计算路径复杂度的前提下,能够快速提出压缩和非压缩路径。
本发明实施例一~二提供的方案,还可以但不限于应用到跨区间P2MP-TE分段计算显式路径。若用户有其它等价路径选取的需求,只需要对本发明的路径结构做适当扩展,使其记录用户感兴趣的信息即可。
与本发明实施例一~二基于同一发明构思,提供以下的装置。
实施例三、
本发明实施例三提供一种确定点到多点路径的装置,该装置的结构可以如图6所示,包括写入模块11、确定模块12、判断模块13和执行模块14,其中:
写入模块11用于将源地址对应的元素的信息作为候选列表中的第一个元素的信息写入候选列表,候选列表中一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
确定模块12用于确定候选列表中cost最小的路径;
判断模块13用于在确定从源地址到达每个目的地址的路径均已确定,且确定模块本次确定出的路径的cost大于确定模块上一次确定出的路径的cost时,确定路径确定结束,否则,触发执行模块;
执行模块14用于将确定模块本次确定出的路径写入路径列表,并在候选列表中删除该路径;
针对确定模块本次确定出的路径所属的元素,确定该元素的类型;
若该元素为节点,确定该节点连接的链路;
针对每一条链路,确定该链路是否满足流量工程的约束条件;
若该链路不满足流量工程的约束条件,结束对该链路的处理;若该链路满足流量工程的约束条件,则设置该链路的颜色标识集合与该节点cost最小的路径的颜色标识集合相同,确定该链路是否满足该颜色标识集合表示的各目的地址的路径约束条件,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的颜色标识集合为各目的地址对应的颜色标识的集合;
若该链路不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该链路的颜色标识集合中去除,且若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的cost为零,路径列表中保存有元素的信息,且一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若该链路满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若候选列表中存在该链路,将候选列表中该链路的所有路径下一跳中的路径中,路径的cost值与该链路的cost值进行比较;
若有路径的cost值大于该链路的cost值,则在该路径的颜色标识集合中去除该链路的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若有路径的cost值小于该链路的cost值,则在该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若该元素为链路,确定该链路相邻的节点;
针对每一节点,确定该节点是否满足流量工程的约束条件;
若该节点不满足流量工程的约束条件,结束对该节点的处理;若该节点满足流量工程的约束条件,则设置该节点的颜色标识集合与该链路cost最小的路径的颜色标识集合相同,确定该节点是否满足该颜色标识集合表示的各目的地址的路径约束条件;
若该节点不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该节点的颜色标识集合中去除,且若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若该节点满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若候选列表中存在该节点,将候选列表中该节点的所有路径下一跳中的路径中,路径的cost值与该节点的cost值进行比较;
若有路径的cost值大于该节点的cost值,则在该路径的颜色标识集合中去除该节点的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若有路径的cost值小于该节点的cost值,则在该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块。
所述确定模块12具体用于针对候选列表中第一个元素,确定该元素的第一个路径下一跳对应的第一条路径;
所述执行模块14用于若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块14用于若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块14用于若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块14用于若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块14用于若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块14用于若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
执行模块14用于将本次确定出的路径写入路径列表,并在候选列表中删除该路径,具体为,根据候选列表中该元素的名称,查找路径列表,确定路径列表中是否存在该元素;
若路径列表中存在该元素,则根据候选列表中该元素的第一个路径下一跳的本地地址和远端地址,查找路径列表,确定路径列表中是否存在该元素的第一个路径下一跳;若路径列表中存在该元素的第一个路径下一跳,则在路径列表中存在的该元素的第一个路径下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中存在的该元素的第一个路径下一跳中创建的路径的颜色标识集合、cost和经该路径到达该元素需经过的下一跳信息;若路径列表中不存在该元素的第一个路径下一跳,则在路径列表中存在的该元素中创建路径下一跳,并在该路径下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中存在的该元素中创建的路径下一跳中的路径的颜色标识集合、cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中不存在该元素,则在路径列表中创建该元素,在该元素中创建下一跳,并在该下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中创建的该元素中路径下一跳中的路径的颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
并,在候选列表中删除该元素的第一个路径下一跳对应的第一条路径,判断该元素的第一个路径下一跳是否还对应其他路径;
若该元素的第一个路径下一跳还对应其他路径,判断该元素的第一个路径下一跳对应的其他路径中,是否cost最小的路径为删除该元素的第一个路径下一跳对应的第一条路径后,该元素的第一个路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该元素的第一个路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该元素的第一个路径下一跳的第一条路径时,判断在该元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素的第一个路径下一跳没有对应其他路径,则在候选列表中删除该元素的第一个路径下一跳,判断该元素是否还对应其他路径下一跳;
若该元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该元素的第一个路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
执行模块14用于若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,具体为,在候选列表中删除该路径,并判断该路径所属的路径下一跳是否还对应其他路径;
若该路径所属的路径下一跳还对应其他路径,判断该路径所属的路径下一跳对应的其他路径中,是否cost最小的路径为删除路径后,该路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该路径下一跳的第一条路径时,判断在该路径下一跳所属元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳时,判断所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该路径所属的路径下一跳没有对应其他路径,则在候选列表中删除该路径下一跳,判断该路径下一跳所属的元素是否还对应其他路径下一跳;
若该路径下一跳所属的元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
执行模块14用于在候选列表中第一个元素的类型为节点时,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息,确定为经路径到达该链路需经过的下一跳信息,包括:将该节点作为下一跳,添加在候选列表中该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息的首位置,并将添加下一跳后获得的下一跳信息,确定为经路径到达该链路需经过的下一跳信息,其中,源地址对应的元素第一个路径下一跳对应的第一条路径中,经该路径到达该元素需经过的下一跳信息为空;
在候选列表中第一个元素的类型为链路时,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息,确定为经该路径到达该节点需经过的下一跳信息,包括:
将该链路作为下一跳,添加在候选列表中该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息的首位置,并将添加下一跳后获得的下一跳信息,确定为经路径到达该节点需经过的下一跳信息,其中,源地址对应的元素第一个路径下一跳对应的第一条路径中,经该路径到达该元素需经过的下一跳信息为空。
所述装置还包括提取模块15:
提取模块15用于判断模块确定路径确定结束后,确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;按照所述待提取的路径由先到后写入路径列表的顺序,确定对所述待提取的路径的提取顺序;按照确定出的提取顺序,提取每条待提取路径中,对应元素为链路,且该元素未设置已提取标识的,经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址,并为该下一跳对应元素设置已提取标识;或者,
用于判断模块确定路径确定结束后,确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;提取每条待提取路径中,每个对应元素为链路、经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种确定点到多点路径的方法,其特征在于,所述方法包括:
将源地址对应的元素的信息作为候选列表中的第一个元素的信息写入候选列表,候选列表中一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
确定候选列表中cost最小的路径;
在确定从源地址到达每个目的地址的路径均已确定,且本次确定出的路径的cost大于上一次确定出的路径的cost时,路径确定结束,否则,继续执行以下步骤:
将本次确定出的路径写入路径列表,并在候选列表中删除该路径;
针对该路径所属的元素,确定该元素的类型;
若该元素为节点,确定该节点连接的链路;
针对每一条链路,确定该链路是否满足流量工程的约束条件;
若该链路不满足流量工程的约束条件,结束对该链路的处理;若该链路满足流量工程的约束条件,则设置该链路的颜色标识集合与该节点cost最小的路径的颜色标识集合相同,确定该链路是否满足该颜色标识集合表示的各目的地址的路径约束条件,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的颜色标识集合为各目的地址对应的颜色标识的集合;
若该链路不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该链路的颜色标识集合中去除,且若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的cost为零,路径列表中保存有元素的信息,且一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若该链路满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若候选列表中存在该链路,将候选列表中该链路的所有路径下一跳中的路径中,路径的cost值与该链路的cost值进行比较;
若有路径的cost值大于该链路的cost值,则在该路径的颜色标识集合中去除该链路的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若有路径的cost值小于该链路的cost值,则在该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;
若该元素为链路,确定该链路相邻的节点;
针对每一节点,确定该节点是否满足流量工程的约束条件;
若该节点不满足流量工程的约束条件,结束对该节点的处理;若该节点满足流量工程的约束条件,则设置该节点的颜色标识集合与该链路cost最小的路径的颜色标识集合相同,确定该节点是否满足该颜色标识集合表示的各目的地址的路径约束条件;
若该节点不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该节点的颜色标识集合中去除,且若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若该节点满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若候选列表中存在该节点,将候选列表中该节点的所有路径下一跳中的路径中,路径的cost值与该节点的cost值进行比较;
若有路径的cost值大于该节点的cost值,则在该路径的颜色标识集合中去除该节点的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若有路径的cost值小于该节点的cost值,则在该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;
并返回执行针对候选列表中第一个元素,确定该元素的第一个路径下一跳对应的第一条路径的操作。
2.如权利要求1所述的方法,其特征在于,确定候选列表中cost最小的路径,具体包括:
针对候选列表中第一个元素,确定该元素的第一个路径下一跳对应的第一条路径;
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体包括:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体包括:
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体包括:
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体包括:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体包括:
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体包括:
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
3.如权利要求2所述的方法,其特征在于,将本次确定出的路径写入路径列表,并在候选列表中删除该路径,具体包括:
根据候选列表中该元素的名称,查找路径列表,确定路径列表中是否存在该元素;
若路径列表中存在该元素,则根据候选列表中该元素的第一个路径下一跳的本地地址和远端地址,查找路径列表,确定路径列表中是否存在该元素的第一个路径下一跳;若路径列表中存在该元素的第一个路径下一跳,则在路径列表中存在的该元素的第一个路径下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中存在的该元素的第一个路径下一跳中创建的路径的颜色标识集合、cost和经该路径到达该元素需经过的下一跳信息;若路径列表中不存在该元素的第一个路径下一跳,则在路径列表中存在的该元素中创建路径下一跳,并在该路径下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中存在的该元素中创建的路径下一跳中的路径的颜色标识集合、cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中不存在该元素,则在路径列表中创建该元素,在该元素中创建下一跳,并在该下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中创建的该元素中路径下一跳中的路径的颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
在候选列表中删除该元素的第一个路径下一跳对应的第一条路径,判断该元素的第一个路径下一跳是否还对应其他路径;
若该元素的第一个路径下一跳还对应其他路径,判断该元素的第一个路径下一跳对应的其他路径中,是否cost最小的路径为删除该元素的第一个路径下一跳对应的第一条路径后,该元素的第一个路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该元素的第一个路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该元素的第一个路径下一跳的第一条路径时,判断在该元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素的第一个路径下一跳没有对应其他路径,则在候选列表中删除该元素的第一个路径下一跳,判断该元素是否还对应其他路径下一跳;
若该元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该元素的第一个路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
4.如权利要求2所述的方法,其特征在于,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,具体包括:
在候选列表中删除该路径,并判断该路径所属的路径下一跳是否还对应其他路径;
若该路径所属的路径下一跳还对应其他路径,判断该路径所属的路径下一跳对应的其他路径中,是否cost最小的路径为删除路径后,该路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该路径下一跳的第一条路径时,判断在该路径下一跳所属元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳时,判断所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该路径所属的路径下一跳没有对应其他路径,则在候选列表中删除该路径下一跳,判断该路径下一跳所属的元素是否还对应其他路径下一跳;
若该路径下一跳所属的元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
5.如权利要求2所述的方法,其特征在于,
在候选列表中第一个元素的类型为节点时,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息,确定为经路径到达该链路需经过的下一跳信息,包括:
将该节点作为下一跳,添加在候选列表中该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息的首位置,并将添加下一跳后获得的下一跳信息,确定为经路径到达该链路需经过的下一跳信息,其中,源地址对应的元素第一个路径下一跳对应的第一条路径中,经该路径到达该元素需经过的下一跳信息为空;
在候选列表中第一个元素的类型为链路时,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息,确定为经该路径到达该节点需经过的下一跳信息,包括:
将该链路作为下一跳,添加在候选列表中该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息的首位置,并将添加下一跳后获得的下一跳信息,确定为经路径到达该节点需经过的下一跳信息,其中,源地址对应的元素第一个路径下一跳对应的第一条路径中,经该路径到达该元素需经过的下一跳信息为空。
6.如权利要求1~5任一所述的方法,其特征在于,确定路径确定结束后,所述方法还包括:
确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;按照所述待提取的路径由先到后写入路径列表的顺序,确定对所述待提取的路径的提取顺序;按照确定出的提取顺序,提取每条待提取路径中,对应元素为链路,且该元素未设置已提取标识的,经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址,并为该下一跳对应元素设置已提取标识;或者,
确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;提取每条待提取路径中,每个对应元素为链路、经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址。
7.一种确定点到多点路径的装置,其特征在于,所述装置包括:
写入模块,用于将源地址对应的元素的信息作为候选列表中的第一个元素的信息写入候选列表,候选列表中一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
确定模块,用于确定候选列表中cost最小的路径;
判断模块,用于在确定从源地址到达每个目的地址的路径均已确定,且确定模块本次确定出的路径的cost大于确定模块上一次确定出的路径的cost时,确定路径确定结束,否则,触发执行模块;
执行模块,用于将确定模块本次确定出的路径写入路径列表,并在候选列表中删除该路径;
针对确定模块本次确定出的路径所属的元素,确定该元素的类型;
若该元素为节点,确定该节点连接的链路;
针对每一条链路,确定该链路是否满足流量工程的约束条件;
若该链路不满足流量工程的约束条件,结束对该链路的处理;若该链路满足流量工程的约束条件,则设置该链路的颜色标识集合与该节点cost最小的路径的颜色标识集合相同,确定该链路是否满足该颜色标识集合表示的各目的地址的路径约束条件,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的颜色标识集合为各目的地址对应的颜色标识的集合;
若该链路不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该链路的颜色标识集合中去除,且若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路,首次写入候选列表的源地址对应的元素第一个路径下一跳对应的第一条路径的cost为零,路径列表中保存有元素的信息,且一个元素的信息包括该元素的名称、类型、该元素的路径下一跳信息,其中,路径下一跳信息针对每个路径下一跳,包括该路径下一跳的名称、本地地址、远端地址和路径信息,路径信息针对每条路径,包括该路径的名称、颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若该链路满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该链路的cost为该节点cost最小的路径的cost与该链路的cost之和,根据该链路的名称查找路径列表,确定路径列表中是否存在该链路;
若路径列表中存在该链路,则确定路径列表中该链路的所有路径下一跳中的路径中,是否有路径的cost值小于该链路的cost值:
若有路径的cost值小于该链路的cost值,则将该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若没有路径的cost值小于该链路的cost值,则根据该链路的名称查找候选列表,确定候选列表中是否存在该链路;
若候选列表中存在该链路,将候选列表中该链路的所有路径下一跳中的路径中,路径的cost值与该链路的cost值进行比较;
若有路径的cost值大于该链路的cost值,则在该路径的颜色标识集合中去除该链路的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若有路径的cost值小于该链路的cost值,则在该链路的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该链路的颜色标识集合为空,则结束对该链路的处理,若去除颜色标识集合后,该链路的颜色标识集合非空,则根据该链路的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该链路的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若该元素为链路,确定该链路相邻的节点;
针对每一节点,确定该节点是否满足流量工程的约束条件;
若该节点不满足流量工程的约束条件,结束对该节点的处理;若该节点满足流量工程的约束条件,则设置该节点的颜色标识集合与该链路cost最小的路径的颜色标识集合相同,确定该节点是否满足该颜色标识集合表示的各目的地址的路径约束条件;
若该节点不满足该颜色标识集合表示的至少一个目的地址的路径约束条件,则将该至少一个目的地址的颜色标识集合从该节点的颜色标识集合中去除,且若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若该节点满足该颜色标识集合表示的各目的地址的路径约束条件,则设置该节点的cost为该链路cost最小的路径的cost,根据该节点的名称查找路径列表,确定路径列表中是否存在该节点;
若路径列表中存在该节点,则确定路径列表中该节点的所有路径下一跳中的路径中,是否有路径的cost值小于该节点的cost值:
若有路径的cost值小于该节点的cost值,则将该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若没有路径的cost值小于该节点的cost值,则根据该节点的名称查找候选列表,确定候选列表中是否存在该节点;
若候选列表中存在该节点,将候选列表中该节点的所有路径下一跳中的路径中,路径的cost值与该节点的cost值进行比较;
若有路径的cost值大于该节点的cost值,则在该路径的颜色标识集合中去除该节点的颜色标识集合,若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,若去除颜色标识集合后,该路径的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若有路径的cost值小于该节点的cost值,则在该节点的颜色标识集合中去除该路径的颜色标识集合,若去除颜色标识集合后,该节点的颜色标识集合为空,则结束对该节点的处理,若去除颜色标识集合后,该节点的颜色标识集合非空,则根据该节点的本地地址和远端地址,查找候选列表,确定候选列表中是否存在与该节点的本地地址和远端地址对应的路径下一跳:
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块;
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;并触发确定模块。
8.如权利要求7所述的装置,其特征在于,所述确定模块,具体用于针对候选列表中第一个元素,确定该元素的第一个路径下一跳对应的第一条路径;
所述执行模块,用于若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中存在与该链路的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块,用于若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在与该链路的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该链路第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该链路第一个路径下一跳;若将该路径所属的路径下一跳作为该链路第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块,用于若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的cost最小的路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在该链路,在候选列表中创建该链路,在该链路中创建路径下一跳,并在该路径下一跳中创建路径,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息、该链路的颜色标识集合和cost,确定为该路径的经该路径到达该链路需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该链路做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块,用于若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中存在与该节点的本地地址和远端地址对应的路径下一跳,则在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若创建的路径是候选列表中该路径所属的路径下一跳中,cost最小的路径,则将该路径作为该路径所属的路径下一跳的第一条路径;若将该路径作为该路径所属的路径下一跳的第一条路径,确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块,用于若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在与该节点的本地地址和远端地址对应的路径下一跳,则在候选列表中存在的该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且确定该路径的cost是否小于未创建该路径之前,该节点第一个路径下一跳的第一条路径的cost,若小于,则将该路径所属的路径下一跳作为该节点第一个路径下一跳;若将该路径所属的路径下一跳作为该节点第一个路径下一跳,确定该路径的cost是否小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,若是,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变;
所述执行模块,用于若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的cost最小的路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost,具体为,
若候选列表中不存在该节点,在候选列表中创建该节点,在该节点中创建路径下一跳,并在该路径下一跳中创建路径,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息、该节点的颜色标识集合和cost,确定为该路径的经该路径到达该节点需经过的下一跳信息、颜色标识集合和cost;且若确定该路径的cost小于未创建该路径之前,候选列表中第一个元素第一个路径下一跳对应的第一条路径的cost,则将该节点做为候选列表中第一个元素,否则,保持候选列表中第一个元素不变。
9.如权利要求8所述的装置,其特征在于,执行模块,用于将本次确定出的路径写入路径列表,并在候选列表中删除该路径,具体为,根据候选列表中该元素的名称,查找路径列表,确定路径列表中是否存在该元素;
若路径列表中存在该元素,则根据候选列表中该元素的第一个路径下一跳的本地地址和远端地址,查找路径列表,确定路径列表中是否存在该元素的第一个路径下一跳;若路径列表中存在该元素的第一个路径下一跳,则在路径列表中存在的该元素的第一个路径下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中存在的该元素的第一个路径下一跳中创建的路径的颜色标识集合、cost和经该路径到达该元素需经过的下一跳信息;若路径列表中不存在该元素的第一个路径下一跳,则在路径列表中存在的该元素中创建路径下一跳,并在该路径下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中存在的该元素中创建的路径下一跳中的路径的颜色标识集合、cost和经该路径到达该元素需经过的下一跳信息;
若路径列表中不存在该元素,则在路径列表中创建该元素,在该元素中创建下一跳,并在该下一跳中创建路径,将候选列表中该元素第一个路径下一跳对应的第一条路径的颜色标识集合、cost和到达该元素需经过的下一跳信息确定为路径列表中创建的该元素中路径下一跳中的路径的颜色标识集合、链路属性值cost和经该路径到达该元素需经过的下一跳信息;
在候选列表中删除该元素的第一个路径下一跳对应的第一条路径,判断该元素的第一个路径下一跳是否还对应其他路径;
若该元素的第一个路径下一跳还对应其他路径,判断该元素的第一个路径下一跳对应的其他路径中,是否cost最小的路径为删除该元素的第一个路径下一跳对应的第一条路径后,该元素的第一个路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该元素的第一个路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该元素的第一个路径下一跳的第一条路径时,判断在该元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素的第一个路径下一跳没有对应其他路径,则在候选列表中删除该元素的第一个路径下一跳,判断该元素是否还对应其他路径下一跳;
若该元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该元素的第一个路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
10.如权利要求8所述的装置,其特征在于,执行模块,用于若去除颜色标识集合后,该路径的颜色标识集合为空,则在候选列表中删除该路径,具体为,在候选列表中删除该路径,并判断该路径所属的路径下一跳是否还对应其他路径;
若该路径所属的路径下一跳还对应其他路径,判断该路径所属的路径下一跳对应的其他路径中,是否cost最小的路径为删除路径后,该路径下一跳当前第一条路径,若否,则将该cost最小的路径调整为该路径下一跳的第一条路径,若是,则保持当前第一条路径不变;在将该cost最小的路径调整为该路径下一跳的第一条路径时,判断在该路径下一跳所属元素对应的路径中,cost最小的路径是否为该元素当前第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳,否则,保持当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳作为该元素的第一个路径下一跳时,判断所述候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该路径所属的路径下一跳没有对应其他路径,则在候选列表中删除该路径下一跳,判断该路径下一跳所属的元素是否还对应其他路径下一跳;
若该路径下一跳所属的元素还对应其他路径下一跳,判断该元素对应的路径中,是否cost最小的路径为删除该路径下一跳后,该元素当前第一个路径下一跳的第一条路径,若否,则将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳,若是,则保持该元素当前第一个路径下一跳不变;在将该cost最小的路径所对应的路径下一跳调整为该元素的第一个路径下一跳时,判断在该候选列表对应的路径中,cost最小的路径是否为该候选列表当前第一个元素第一个路径下一跳第一条路径,若否,则将该cost最小的路径所对应的元素调整为该候选列表第一个元素,否则,保持该候选列表当前第一个元素不变;
若该元素没有对应其他路径下一跳,则在候选列表中删除该元素。
11.如权利要求8所述的装置,其特征在于,执行模块,用于在候选列表中第一个元素的类型为节点时,将利用该节点作为下一跳,并根据该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息,确定出的到达该链路需经过的下一跳信息,确定为经路径到达该链路需经过的下一跳信息,包括:将该节点作为下一跳,添加在候选列表中该节点的第一个路径下一跳的第一条路径中,经该路径到达该节点需经过的下一跳信息的首位置,并将添加下一跳后获得的下一跳信息,确定为经路径到达该链路需经过的下一跳信息,其中,源地址对应的元素第一个路径下一跳对应的第一条路径中,经该路径到达该元素需经过的下一跳信息为空;
在候选列表中第一个元素的类型为链路时,将利用该链路作为下一跳,并根据该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息,确定出的到达该节点需经过的下一跳信息,确定为经该路径到达该节点需经过的下一跳信息,包括:
将该链路作为下一跳,添加在候选列表中该链路的第一个路径下一跳的第一条路径中,经该路径到达该链路需经过的下一跳信息的首位置,并将添加下一跳后获得的下一跳信息,确定为经路径到达该节点需经过的下一跳信息,其中,源地址对应的元素第一个路径下一跳对应的第一条路径中,经该路径到达该元素需经过的下一跳信息为空。
12.如权利要求7~11任一所述的装置,其特征在于,所述装置还包括提取模块:
提取模块,用于判断模块确定路径确定结束后,确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;按照所述待提取的路径由先到后写入路径列表的顺序,确定对所述待提取的路径的提取顺序;按照确定出的提取顺序,提取每条待提取路径中,对应元素为链路,且该元素未设置已提取标识的,经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址,并为该下一跳对应元素设置已提取标识;或者,
用于判断模块确定路径确定结束后,确定各目的地址对应的元素,并确定每个目的地址对应的元素中待提取的路径;提取每条待提取路径中,每个对应元素为链路、经该路径到达该路径所属元素需经过的下一跳的远端地址和本地地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210506634.5A CN103036791B (zh) | 2012-11-30 | 2012-11-30 | 一种确定点到多点路径的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210506634.5A CN103036791B (zh) | 2012-11-30 | 2012-11-30 | 一种确定点到多点路径的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103036791A CN103036791A (zh) | 2013-04-10 |
CN103036791B true CN103036791B (zh) | 2015-08-19 |
Family
ID=48023295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210506634.5A Active CN103036791B (zh) | 2012-11-30 | 2012-11-30 | 一种确定点到多点路径的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103036791B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108966039B (zh) * | 2018-08-29 | 2021-09-21 | 迈普通信技术股份有限公司 | 一种组播方法和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778041A (zh) * | 2009-12-31 | 2010-07-14 | 福建星网锐捷网络有限公司 | 路径选择方法、装置和网络设备 |
CN102377676A (zh) * | 2011-11-21 | 2012-03-14 | 中兴通讯股份有限公司 | 恢复隧道路径的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7911944B2 (en) * | 2007-12-26 | 2011-03-22 | Nortel Networks Limited | Tie-breaking in shortest path determination |
-
2012
- 2012-11-30 CN CN201210506634.5A patent/CN103036791B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778041A (zh) * | 2009-12-31 | 2010-07-14 | 福建星网锐捷网络有限公司 | 路径选择方法、装置和网络设备 |
CN102377676A (zh) * | 2011-11-21 | 2012-03-14 | 中兴通讯股份有限公司 | 恢复隧道路径的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103036791A (zh) | 2013-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103370908B (zh) | 用于找到跨多个域的点到多点标签交换路径的系统以及方法 | |
CN1992676B (zh) | 在通信网络中多个业务路径之间共享转发状态的方法和设备 | |
CN101938421B (zh) | 多协议标签交换网络中实现路由汇聚的方法及路由设备 | |
CN102916879B (zh) | 一种快速路由收敛方法 | |
CN101741709A (zh) | 建立标签交换路径的方法、系统及网络节点 | |
CN107872388A (zh) | 用于实现报文转发的方法、装置和系统 | |
CN102195844B (zh) | 转发表项的管理方法和设备 | |
CN101778041B (zh) | 路径选择方法、装置和网络设备 | |
CN105637807B (zh) | 转发报文的方法、控制器、转发设备和网络系统 | |
CN110224935A (zh) | 一种处理组播数据报文的方法及装置 | |
CN109246624A (zh) | 一种组播转发方法及相关设备 | |
CN108322394A (zh) | 路由表建立、查找、删除及状态变更方法和装置 | |
WO2009152725A1 (en) | Method and apparatus for calculating mpls traffic engineering paths | |
CN104486224A (zh) | 路由学习方法和设备 | |
CN102065006B (zh) | 一种跨域标签交换路径域间失效的恢复方法 | |
CN101764728B (zh) | 一种网络拓扑的发现方法和设备 | |
CN113810287B (zh) | 一种基于ndn和sdn的数据检索与推送方法 | |
CN110096458B (zh) | 基于神经网络的命名数据网内容存储池数据检索方法 | |
CN103036791B (zh) | 一种确定点到多点路径的方法和装置 | |
CN101719868A (zh) | 一种lsp承载于te隧道的方法及装置 | |
CN101686197B (zh) | 路径信息的获取方法和系统及路径计算装置 | |
CN104135438A (zh) | 报文携带路由信息的可扩展路由方法 | |
CN101938424B (zh) | 建立路由表的方法和装置及报文转发方法和装置 | |
CN106453091A (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN106411553A (zh) | 一种业务链路径的优化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |