CN101778041B - 路径选择方法、装置和网络设备 - Google Patents

路径选择方法、装置和网络设备 Download PDF

Info

Publication number
CN101778041B
CN101778041B CN2009102660382A CN200910266038A CN101778041B CN 101778041 B CN101778041 B CN 101778041B CN 2009102660382 A CN2009102660382 A CN 2009102660382A CN 200910266038 A CN200910266038 A CN 200910266038A CN 101778041 B CN101778041 B CN 101778041B
Authority
CN
China
Prior art keywords
node
path
adjacent node
candidate
adjacent
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.)
Expired - Fee Related
Application number
CN2009102660382A
Other languages
English (en)
Other versions
CN101778041A (zh
Inventor
刘金辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Star Net Communication Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN2009102660382A priority Critical patent/CN101778041B/zh
Publication of CN101778041A publication Critical patent/CN101778041A/zh
Application granted granted Critical
Publication of CN101778041B publication Critical patent/CN101778041B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种路径选择方法、装置和网络设备,其中方法包括:根据节点的路径权重生成根节点到目的节点的路径表,路径表中的路径节点携带各自的下一跳表;根据等价约束路径选取规则从目的节点的下一跳表指示的等价约束路径中选择最优的约束路径。装置包括:路径表生成模块,用于根据节点的路径权重生成根节点到目的节点的路径表,路径表中的路径节点携带各自的下一跳表;路径选择模块,用于根据等价约束路径选取规则从所述目的节点的下一跳表指示的等价约束路径中选择最优的约束路径。本实施例还提供了一种网络设备。本实施例在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的等价路径,提高了链路的整体性能,提高了路径选择的效率。

Description

路径选择方法、装置和网络设备
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种路径选择方法、装置和网络设备。 
背景技术
多协议标签转换流量工程(Multi Protocol Label Switch TrafficEngineering;以下简称:MPLS-TE)是将用户的业务数据流映射到物理拓扑/链路上的一项任务,其运用MPLS技术实现对数据流的流量进行管理和控制。如图1所示为现有技术的路径拓扑的一示意图,在传统IP网络中,依靠内部网关协议(Interior Gateway Protocol;以下简称:IGP)来计算最短路径,通过计算R2达到R4的最短路径为R2-R3-R4,则在R2接收到R1发往R4的业务流时,均将业务流通过R3转发,由于在路径选择时默认选择最短路径,R2接收到R5发往R4的业务流也经过R3转发,当业务流较大时,则会造成该最短路径拥塞,而R2和R6之间的链路则处于空闲状态,链路资源不能得到充分利用;MPLS-TE通过在根节点R2和目的节点R4之间建立一个TE隧道R2-R6-R7-R4,将一部分业务流通过TE隧道到达目的节点MPLS-TE可以解决上述问题,使得资源得到充分利用。 
在现有技术中,MPLS-TE根据约束路径建立TE隧道,约束路径即该路径上所有链路均能满足建立TE隧道的约束条件,TE隧道的约束条件通常包括带宽、亲和属性,或要求一定不能通过某种类型的链路等。约束路径通常通过受限最短路径优先算法(Constraint Shortest Path First algorithm;以下简称:CSPF)计算出到达目的节点的完整约束路径,再使用资源预留协议(Resource Reservation Protocol;以下简称:RSVP)来完成TE隧道的建立。 
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:在比较复杂的网络中,如图2所示为现有技术的路径拓扑的另一示意图,假设约束条件为期望带宽为50MB,图中链路上标识的数字为链路上当前剩余带宽。在CSPF根据用户指定的TE隧道的约束条件计算约束路径时,在R1上 能够计算出满足约束条件的三条等价约束路径,分别为:R1-R2-R3-R4、R1-R5-R3-R4以及R1-R5-R4,由于只需使用一个路径作为TE隧道,现有技术中通过随机选择一条约束路径作为TE隧道,会导致后续再次建立隧道失败。假设选择R1-R2-R3-R4,此时如果在R1上期望再建立一条到达R4的带宽为70MB的TE隧道,由于路径R1-R2-R3-R4随着TE隧道的建立,带宽分别减少为50MB、30MB和20MB,则不存在满足带宽约束条件的路径,导致带宽为70MB的TE隧道建立失败,使得链路的整体性能降低。 
发明内容
本发明实施例提供一种路径选方法、装置和网络设备,用以解决现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高链路的整体性能。 
本发明实施例提供一种路径选择方法,包括: 
根据节点的路径权重生成根节点到目的节点的路径表,所述路径表中的路径节点携带各自的下一跳表; 
根据等价约束路径选取规则从所述目的节点的下一跳表指示的等价约束路径中选择最优的约束路径; 
其中,所述根据节点的路径权重生成根节点到目的节点的路径表包括: 
获取加入路径表的最新路径节点的满足约束条件的所有邻接节点; 
根据所述邻接节点的路径权重判断是否将所述邻接节点添加到候选列表中,并根据判断结果更新所述候选列表; 
将更新后的候选列表中路径权重最低的候选节点转移到所述路径表中; 
重复执行上述步骤,直到将目的节点添加到所述路径表中; 
其中,所述根据所述邻接节点的路径权重判断是否将所述邻接节点添加到候选列表中,并根据判断结果更新所述候选列表包括: 
当所述邻接节点不在候选列表和所述路径表中时,将所述邻接节点添加到候选列表中,并生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中; 
当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重小于候选路径上根节点到所述邻接节点的路径权重时,则从所述候选列 表中删除所述候选路径对应的所述邻接节点和所述邻接节点的下一跳表,将所述当前路径对应的所述邻接节点添加到所述候选列表中,并生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中; 
当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重等于候选路径上根节点到所述邻接节点的路径权重时,保留所述候选列表中的所述邻接节点和所述邻接节点在所述候选路径上的下一跳,并生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中; 
其中,所述候选路径为所述根节点到作为候选列表中的候选节点的所述邻接节点的路径,所述当前路径为所述根节点到所述邻接节点的除所述候选路径之外的路径,节点的下一跳表中存储有到达所述节点的所有下一跳信息,所述下一跳信息表示父节点到达所述节点的链路信息,以及根节点经过所述节点的父节点到达所述节点所经过的所有链路信息。 
本发明实施例提供一种路径选择装置,包括: 
路径表生成模块,用于根据节点的路径权重生成根节点到目的节点的路径表,所述路径表中的路径节点携带各自的下一跳表; 
路径选择模块,用于根据等价约束路径选取规则从所述目的节点的下一跳表指示的等价约束路径中选择最优的约束路径; 
其中,所述路径表生成模块包括: 
获取子模块,用于获取加入路径表的最新路径节点的满足约束条件的所有邻接节点; 
更新子模块,用于根据所述邻接节点的路径权重判断是否将所述邻接节点添加到候选列表中,并根据判断结果更新所述候选列表; 
转移子模块,用于将所述更新子模块更新后的候选列表中路径权重最低的候选节点转移到所述路径表中,直到将目的节点添加到所述路径表中; 
其中,所述更新子模块包括: 
第一节点添加单元,用于当所述邻接节点不在候选列表和所述路径表中时,将所述邻接节点添加到候选列表中; 
第二节点添加单元,用于当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重小于候选路径上根节点到所述邻接节点的路径权重时,则从所述候选列表中删除所述候选路径对应的所述邻接节点和 所述邻接节点在候选列表中的下一跳,将所述当前路径对应的所述邻接节点添加到所述候选列表中; 
第三节点添加单元,用于当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重等于候选路径上根节点到所述邻接节点的路径权重时,保留所述候选路径对应的邻接节点和所述邻接节点在所述候选路径上的下一跳; 
生成单元,用于生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中; 
其中,所述候选路径为所述根节点到作为候选列表中的候选节点的所述邻接节点时的路径,所述当前路径为所述根节点到所述邻接节点的除所述候选路径之外的路径,节点的下一跳表中存储有到达所述节点的所有下一跳信息,所述下一跳信息表示父节点到达所述节点的链路信息,以及根节点经过所述节点的父节点到达所述节点所经过的所有链路信息。 
本发明实施例还提供了一种网络设备,包括上述路径选择装置。 
本发明实施例的路径选择方法、装置和网络设备,根据节点的路径权重生成根节点到目的节点的路径表,根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 
图1为现有技术的路径拓扑的一示意图; 
图2为现有技术的路径拓扑的另一示意图; 
图3为本发明路径选择方法实施例一的流程图; 
图4为本发明路径选择方法实施例一中路径拓扑的示意图; 
图5为本发明路径选择方法实施例二的流程图; 
图6为本发明路径选择方法实施例三的流程图; 
图7为本发明路径选择装置实施例一的结构示意图; 
图8为本发明路径选择装置实施例二的结构示意图; 
图9为本发明路径选择装置实施例三的结构示意图; 
图10为本发明路径选择装置实施例四的结构示意图。 
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 
图3为本发明路径选择方法实施例一的流程图,如图3所示,本实施例提供了一种路径选择方法,可以包括如下步骤: 
步骤301,根据节点的路径权重生成根节点到目的节点的路径表,所述路径表中的路径节点携带各自的下一跳表。 
如图4所示为本发明路径选择方法实施例一中路径拓扑的示意图,图中链路上方标识的数字为该链路的权重(cost),链路下方标识的数字为该链路的带宽,链路两端标识的分别为两个节点的链路地址。本实施例中的节点可以表示一个实际的路由器,每个节点均对应有路径权重,本实施例中节点的路径权重表示从根节点到当前节点所经过的链路的权重之和。在图4中,R1为根节点,R4为目的节点,在链路R1-R2上方标识的权重为10,则节点R2在该链路R1-R2上的路径权重为从根节点R1到当前节点R2所经过的链路R1-R2的权重之和10,而节点R5在链路R1-R2-R5上的路径权重为从根节点R1到当前节点R5所经过的链路R1-R2以及R2-R5的权重之和(10+10=20),而节点R5在链路R1-R5上的路径权重为从根节点R1到当前节点R5所经过的链路R1-R5的权重之和10,可见,同一节点在不同链路上的路径权重可以是不同的。在传统的最短进程优先算法(Shortest Path First algorithm;以下简称:SPF)中,路径表用于存放已经到达目的节点最短路径的节点,只有目前 到达目的节点是最短路径的节点存放在该路径表中。 
本步骤根据根节点、目的节点以及从根节点到目的节点之间链路所经过的各节点的路径权重,将符合条件的节点添加到路径表中,同时根据各节点的路径权重、带宽等生成各节点的下一跳,并将节点的每个下一跳添加到该节点的下一跳表中。在本实施例中,节点的下一跳表中存储有到达该节点的所有下一跳信息,此处的下一跳信息表示父节点到达本节点的链路信息,以及根节点经过该节点的父节点到达该节点所经过的所有链路信息。其中,父节点为节点的上一节点,由于从根节点到达一个节点可能包含多个链路,则一个节点可能对应有多个父节点,如图中4中节点R3的父节点可以为R2,也可以为R5,分别对应R1-R2-R3和R1-R5-R3链路。在本实施例中,节点的下一跳可以包括远端地址、本端地址、最小带宽、最大带宽、跳数、下一跳列表成员。其中,远端地址表示父节点与本节点相连的链路的地址,本端地址表示本节点与父节点相连的链路的地址,最小带宽表示从根节点通过本节点的父节点到达本节点所经过的链路的剩余带宽的最小值,最大带宽表示从根节点通过该本节点的父节点到达本节点所经过的链路的剩余带宽的最大值,跳数表示从根节点通过本节点的父节点到达本节点所经过链路的个数,下一跳列表成员用于存储从根节点通过本节点的父节点到达本节点经过的所有下一跳,包括父节点和本节点相连链路所包含的下一跳。 
步骤302,根据等价约束路径选取规则从目的节点的下一跳表指示的等价约束路径中选择最优的约束路径。 
在获取到根节点到目的节点的路径表之后,由于路径表中各节点均携带有各自的下一跳表,得到的目的节点的下一跳表可以包括多个下一跳,从而可以从目的节点的下一跳表中提取出多条等价约束路径,根据等价约束路径选取规则,通过比较目的节点的下一跳表中下一跳中的各参数,可以快速地从多条等价约束路径中选择一条满足用户要求的最优约束路径。由于生成的节点的下一跳表中的下一跳包括带宽、跳数等约束路径的相关参数,而这些参数都是用户在选择约束路径时所期望满足的条件,如用户期望选择跳数较少的路径作为约束路径,则本步骤可以为根据跳数最少原则从多条等价约束路径中选择最优的约束路径,可以通过比较目的节点的各下一跳表中的下一跳的跳数,选择目的节点中跳数最少的下一跳表的下一跳对应的约束路径作为最优的约束路径。 
本实施例提供了一种路径选择方法,根据节点的路径权重生成根节点到目的节点的路径表,根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
图5为本发明路径选择方法实施例二的流程图,如图5所示,本实施例提供了一种路径选方法,可以包括如下步骤: 
步骤501,将根节点加入到路径表中,设置为路径表中的首路径节点,并将该首路径节点的路径权重设置为0,将其下一跳表设置为空,本实施例仍结合图4进行说明,则本步骤为将根节点R1添加到路径表中,此时路径表的成员为R1,候选列表为空。 
步骤502,获取加入路径表的最新路径节点的满足约束条件的所有邻接节点。 
在经过上述步骤501之后,由于路径表的成员为R1,则此时执行本步骤获取到的加入路径表的最新路径节点为根节点R1,即根节点R1为目前刚加入到路径表中的最新路径节点。获取该最新路径节点R1的所有满足约束条件的邻接节点,假设本实施例中的约束条件为期望带宽为50MB,R1的邻接节点包括R2和R5,由于R1到R5的链路的可用带宽为80MB,R1到R2的链路的可用带宽为100,均满足约束条件,则获取到的最新路径节点的满足约束条件的邻接节点包括R2和R5。 
步骤503,根据邻接节点的路径权重判断是否将邻接节点添加到候选列表中,生成候选节点的下一跳,并根据判断结果更新候选列表。 
在获取到当前处理的路径表中路径节点的满足约束条件的邻接节点后,根据邻接节点在当前路径上对应的路径权重,判断是否将该邻接节点添加到候选列表中,并生成添加到候选列表中的候选节点的下一跳,将生成的候选节点的下一跳添加到候选节点的下一跳表中,在下一跳表中存储有到达该节点的所有下一跳信息,此处的下一跳信息表示父节点到达本节点的链路信息,以及根节点经过该节点的父节点到达该节点所经过的所有链路信息。经过判断,如果将 该邻接节点添加到候选列表中,则根据当前候选列表中各候选节点对应的路径权重对候选列表进行更新,可以根据各候选节点对应的路径权重对候选节点进行排序,按照路径权重从小到大的顺序对候选节点进行排序,路径权重最小的候选节点排在更新后的候选列表中的第一个。此处所指的候选节点为当前添加到候选列表中的节点。仍以图4为例进行说明,获取到的最新路径节点R1的满足约束条件的邻接节点包括R2和R5,本步骤则根据节点R2的路径权重判断是否应该将该节点R2添加到候选列表中,根据节点R5的路径权重判断是否应该将节点R5添加到候选列表中,并根据判断结果更新候选列表。经过判断后,节点R5和R2均应该添加到候选列表中,由于R2和R5的对应的路径权重相等,因此可以将先处理的R5排在候选列表中的第一位。 
步骤504,将更新后的候选列表中路径权重最低的候选节点转移到路径表中,路径表中的路径节点携带各自的下一跳表。 
在对当前处理的路径表中的路径节点的邻接节点进行上述步骤503的处理之后,对候选列表进行了更新,本步骤直接将更新后的候选列表中路径权重最低的候选节点转移到路径表中。由于候选列表中各候选节点按照对应的路径权重从小到大的顺序排列,则本步骤将候选列表中排在第一位的候选节点转移到路径表中,即将排候选列表中在第一位的候选节点添加到路径表中,并将该候选节点从候选列表中删除,此时候选列表中位于第一位的候选节点为之前排在第二位的候选节点。仍以图4为例进行说明,将更新后的候选链表中排在路径表中第一位的候选节点R5转移到路径表中,即将节点R5添加到路径表中,并删除候选列表中的节点R5,则此时候选列表中排在第一位的候选节点为节点R2。 
步骤505,重复执行上述步骤502-504,直到将目的节点添加到路径表中为止。 
依次对刚加入路径表中的最新路径节点的邻接节点进行分析,由于每次对刚加入路径表中的最新路径节点的邻接节点进行分析,会得到新的添加到候选列表中的候选节点,然后对候选列表进行更新,而且每次从更新后的候选列表中选出路径权重最低的候选节点加入到路径表中。本实施例不断地重复执行上述步骤502-504,对每次刚加入路径表中的最新路径节点的邻接节点进行分析,直到目的节点也被添加到路径表中为止。以图4为例,在将节点R5添加到路径表中之后,将节点R5作为最新路径节点,继续对R5的邻接 节点进行分析,直到将目的节点R4添加到路径表中,则执行步骤506。 
步骤506,根据等价约束路径选取规则从目的节点的下一跳表指示的等价约束路径中选择最优的约束路径。 
在根据上述步骤502-506获取到从根节点到目的节点之间的路径所经过的各路径节点之后,由于在每个路径节点中均携带有该路径节点的下一跳表,而下一跳表中存储有用户所关心的各个约束路径的参数,以及对应的各个等价约束路径,通过该目的节点的下一跳表便可以获取到从根节点到目的节点的等价约束路径。上述目的节点的下一跳表所指示的等价约束路径可以为一条,也可以为多条,当存在多条等价约束路径时,本步骤可以根据等价约束路径选取规则,从目的节点的下一跳表指示的多条等价约束路径中选择最优的约束路径。其中,等价约束路径选取规则可以为用户根据实际情况设定的选取规则,如用户所期望的是获取剩余带宽较大的约束路径,则通过比较目的节点的下一跳表中携带的各个等价约束路径的剩余带宽,便可以快速地选择出一条用户所期望的符合等价约束路径选取规则的约束路径,而不是现有技术中从多条等价约束路径中随机选取一条约束路径,这样很容易导致后续约束路径建立失败。 
本实施例提供了一种路径选择方法,通过设置候选列表和路径表,对每个加入路径表中的最新路径节点的邻接节点进行分析,根据邻接节点的路径权重判断是否将该邻接节点添加到候选列表中,并更新候选列表,每次从候选列表中选择路径权重最低的候选节点,转移到路径表中,并重复上述步骤,直到将目的节点也添加到路径表中,然后根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
图6为本发明路径选择方法实施例三的流程图,如图所示,本实施例提供了一种路径选择方法,本实施例仍结合图4进行说明,本实施例在上述实施例二的基础之上,其中,步骤503可以具体包括如下步骤: 
步骤513,判断当前最新路径节点的满足约束条件的邻接节点是否在路径表中,如果是,则执行步骤563,否则执行步骤523。 
在对每个刚加入路径表的最新路径节点的邻接节点进行分析时,只分析邻接节点中满足约束条件的邻接节点,此处假设约束条件为期望的剩余带宽为50MB。对于当前最新路径节点R1来说,其邻接节点包括R5和R2,由于R1到R5的剩余带宽为80MB,R1到R2的剩余带宽为100MB,则邻接节点R5和R2均满足约束条件。因此,本步骤在分析最新路径节点R1时,需要判断邻接节点R5是否已经在路径表中,如果是,则执行步骤563,不对该邻接节点进行操作,继续重复步骤513对该最新路径节点的下一个邻接节点R2进行分析,否则执行步骤523继续判断R5是否已经在候选列表中。由于邻接节点R5不在路径表中,则执行步骤523,对该邻接节点R5进行继续判断。 
步骤523,判断该邻接节点是否在候选列表中,如果是,则执行步骤533,否则执行步骤534。 
当邻接节点不在路径表中时,继续判断该邻接节点是否已经在候选列表中,如果是,则执行步骤533,继续对该邻接节点进行判断,否则直接将该邻接节点添加到候选列表中,并生成该邻接节点的下一跳,将该下一跳添加到该邻接节点的下一跳表中。经过判断,邻接节点R5也不在候选列表中,则直接将该邻接节点R5添加到候选列表中,并生成R5的下一跳,将该下一跳添加到R5的下一跳表中。 
步骤534,将该邻接节点添加到候选列表中,并生成该邻接节点的下一跳,将该下一跳添加到该邻接节点的下一跳表中。 
经过判断,邻接节点R5也不在候选列表中,则直接将该邻接节点R5添加到候选列表中,并生成R5的下一跳,将该下一跳添加到R5的下一跳表中。 
具体地,本实施例中生成节点的下一跳的步骤可以具体包括如下步骤: 
当节点在当前链路上的父节点的下一跳表为空时,将节点的下一跳的本端地址和远端地址分别设置为当前链路中节点的地址和父节点的地址,将节点的下一跳的跳数设置为1,将节点的下一跳的最大带宽和最小带宽均设置为当前链路的带宽,将节点的下一跳本身设置为节点的下一跳的下一跳列表成员。 
当节点在当前链路上的父节点的下一跳表不为空时,对父节点的下一跳表中的所有下一跳进行分析,根据父节点的下一跳表生成该节点在当前链路上的下一跳,即父节点的下一跳表中包含几个下一跳,则对应生成该节点的几个下一跳。对于其中一个下一跳来说,将该节点的下一跳的本端地址和远端地址分别设置为当前链路中该节点的地址和父节点的地址,将该节点的下一跳的跳数设置为父节点的下一跳的跳数与1之和,将该节点的下一跳的最大带宽设置为当前链路的带宽与父节点的下一跳的最大带宽中的最大值,将该节点的下一跳的最小带宽设置为当前链路的带宽与父节点的下一跳的最小带宽的最小值,将该节点的下一跳本身和父节点的下一跳的下一跳列表成员设置为该节点的下一跳的下一跳列表成员。以邻接节点R5为例,在生成节点R5的下一跳时,由于节点R5在当前链路(R1到R5)上的父节点R1的下一跳表为空,则将节点R5的下一跳的本端地址设置为当前链路(R1到R5)中该节点R5的地址192.168.20.100,将下一跳的远端地址设置为当前链路(R1到R5)中父节点R1的地址192.168.20.25,将下一跳的跳数设置为1,将下一跳的最大带宽设置为当前链路的带宽80MB,将下一跳的最小带宽也设置为当前链路的带宽80MB,将节点R5的下一跳本身NH5设置为节点R5的下一跳的下一跳列表成员,即节点R5的下一跳的下一跳列表成员包括NH5。假设已经处理完路径表中刚加入的最新路径节点R1的所有符合约束条件的邻接节点R5和R2,且将R5和R2均添加到候选列表中,然后根据上述步骤504将当前候选列表中路径权重最低的候选节点R5转移到则路径表中,则此时路径表的节点包括R1、R5,而候选列表的节点为R2。然后根据步骤513处理当前刚加入路径表中的节点R5的邻接节点,由于R1已经在路径表中,则不对其进行操作,由于R5到R2的链路带宽不满足约束条件,则也不对其进行操作,此时R5的邻接节点只有R3符合条件,根据步骤523,R3当前未在候选列表中,则将R3添加到候选列表中,并生成R3的下一跳。此时,由于R3的父节点R5的下一跳表不为空,则将节点R3的下一跳的本端地址设置为当前链路(R5到R3)中节点R3的地址192.168.23.20,下一跳的远端地址设置为当前链路(R5到R3)中父节点R5的地址192.168.23.10,将下一跳表的跳数设置为父节点R5的下一跳的跳数1与1之和,即下一跳的跳数为2, 将下一跳的最大带宽设置为当前链路(R5到R3)的带宽90MB与父节点R5的下一跳的最大带宽80MB中的最大值90MB,将下一跳的最小带宽设置为当前链路(R5到R3)的带宽90MB与父节点R5的下一跳的最小带宽80MB的最小值80MB,将该节点R3的下一跳本身NH3和父节点R5的下一跳的下一跳列表成员NH5设置为该节点R3的下一跳的下一跳列表成员,即节点R3的下一跳的下一跳列表成员包括NH5和NH3。 
步骤533,判断当前路径上根节点到邻接节点的路径权重与候选路径上根节点到邻接节点的路径权重的大小关系;如果当前路径上根节点到邻接节点的路径权重小于候选路径上根节点到邻接节点的路径权重,则执行步骤543;如果当前路径上根节点到邻接节点的路径权重等于候选路径上根节点到邻接节点的路径权重,则执行步骤553;如果当前路径上根节点到邻接节点的路径权重大于候选路径上根节点到邻接节点的路径权重,则执行步骤563。 
在本步骤中,候选路径为根节点到邻接节点作为候选列表中的候选节点时的路径,即以图4为例,在对路径节点R5的邻接节点进行分析之后,候选列表中的候选节点包括R2和R3。对于候选节点R3来说,其候选路径为根节点R1到节点R3作为当前候选列表中的候选节点时的路径,由于R3是作为路径节点R5的邻接节点而添加到候选列表中的,因此,候选节点R3对应的候选路径即为R1-R5-R3。即候选路径为根节点到该邻接节点已被添加到候选列表中所经过的路径,而本步骤中的当前路径为根节点到邻接节点所经过的另外一条路径,仍以R3为例,R3可以为路径节点R5的邻接节点,也可以为路径节点R2的邻接节点,当节点R3作为R5的邻接节点被添加到候选列表中时,其从根节点经过路径节点R5的路径R1-R5-R3为节点R3的候选路径,而在对路径节点R2进行分析时,节点R3的当前路径为根节点到达节点R3经过路径节点R2所经过的路径R1-R2-R3。 
在邻接节点已经在候选列表中时,则需要判断当前路径上根节点到邻接节点的路径权重与候选路径上根节点到邻接节点的路径权重的大小关系,即 判断当前路径R1-R2-R3上根节点R1到邻接节点R3的路径权重,与候选路径上R1-R5-R3上根节点R1到邻接节点R3的路径权重。当当前路径上根节点到邻接节点的路径权重小于候选路径上根节点到邻接节点的路径权重,则执行步骤543,清空该邻接节点在候选列表中的信息,重新将当前路径对应的邻接节点添加到候选列表中,并重新生成该邻接节点的信息。当当前路径上根节点到邻接节点的路径权重等于候选路径上根节点到邻接节点的路径权重,则执行步骤553,并生成邻接节点在当前路径上的下一跳表。当当前路径上根节点到邻接节点的路径权重大于候选路径上根节点到邻接节点的路径权重,则执行步骤563,不对该邻接节点进行操作,继续重复上述步骤513-553对该最新路径节点的下一个邻接节点进行分析。 
步骤543,从候选列表中删除候选路径对应的邻接节点和邻接节点在候选路径上的下一跳,将所述当前路径对应的邻接节点添加到候选列表中,并生成邻接节点在当前路径上的下一跳,将该下一跳添加到该邻接节点的下一跳表中。 
当当前路径上根节点到邻接节点的路径权重小于候选路径上根节点到邻接节点的路径权重时,从当前候选列表中将候选路径对应的邻接节点和邻接节点在候选路径上的下一跳删除,将当前路径对应的邻接节点添加到候选列表中,并生成该邻接节点在当前路径上的下一跳。仍以上述节点R3为例,如果当前路径R1-R2-R3上R1到R3的路径权重小于候选路径R1-R5-R3上R1到R3的路径权重时,表明当前路径优于候选路径,则从当前候选列表中删除候选路径R1-R5-R3对应的R3和R3的下一跳,将当前路径R1-R2-R3对应的R3重新添加到候选列表中,并生成R3在当前路径R1-R2-R3上的下一跳,即候选列表中只保存路径权重最小的同一候选节点对应的路径。其中,邻接节点R3在当前路径上的下一跳的生成过程可以与上述步骤523类似,此处不再赘述。 
步骤553,生成邻接节点在当前路径上的下一跳,将该下一跳添加到该 邻接节点的下一跳表中。 
当当前路径上根节点到邻接节点的路径权重等于候选路径上根节点到邻接节点的路径权重时,则保留当前候选列表中候选路径对应的邻接节点和邻接节点在候选路径上的下一跳,并生成该邻接节点在当前路径上的下一跳。仍以上述节点R3为例,如果当前路径R1-R2-R3上R1到R3的路径权重等于候选路径R1-R5-R3上R1到R3的路径权重时,表明当前路径与候选路径等价,则保留当前候选列表中候选路径R1-R5-R3对应的R3和R3的下一跳,并生成R3在当前路径R1-R2-R3上的下一跳。其中,邻接节点R3在当前路径上的下一跳的生成过程可以与上述步骤523类似,此处不再赘述。 
步骤563,不对该邻接节点进行操作,继续重复上述步骤513-553对该最新路径节点的下一个邻接节点进行分析。 
当当前路径上根节点到邻接节点的路径权重大于候选路径上根节点到邻接节点的路径权重时,则保留当前候选列表中候选路径对应的邻接节点和邻接节点的下一跳,不对当前路径对应的邻接节点进行操作,并继续重复上述步骤513-553对该最新路径节点的下一个邻接节点进行分析。仍以上述节点R3为例,如果当前路径R1-R2-R3上R1到R3的路径权重大于候选路径R1-R5-R3上R1到R3的路径权重时,表明候选路径优于当前路径,则保留当前候选列表中候选路径R1-R5-R3对应的R3和R3的下一跳表,不对当前路径对应的R3进行操作,并继续重复上述步骤513-553对该最新路径节点R2的下一个邻接节点进行分析。 
本实施例提供了一种路径选择方法,通过设置候选列表和路径表,对每个加入路径表中的最新路径节点的邻接节点进行分析,根据邻接节点的路径权重判断是否将该邻接节点添加到候选列表中,并更新候选列表,每次从候选列表中选择路径权重最低的候选节点,转移到路径表中,并重复上述步骤,直到将目的节点也添加到路径表中,然后根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径, 本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
为了更清楚地解释本发明实施例的技术方案,下面将结合图4对本发明的技术方案的整体流程进行说明,假设期望建立一条根节点R1到目的节点R4的TE隧道,其中,约束条件为期望带宽为50MB,则本实施例可以采用下述步骤实现: 
(1)将根节点R1添加到路径表中,根节点R1的路径权重为0,下一跳表为空,此时路径表中的路径节点包括R1,候选列表中没有候选节点。 
(2)处理刚加入路径表中的最新路径节点R1的邻接节点,R1的邻接节点包括R5和R2,由于R1到R5的可用带宽为80MB,满足约束条件,且R5未在路径表中,也未在候选列表中,则将R5添加到候选列表中,并生成R5的下一跳表如下表1所示。此处为了表示方便,将NH5称为节点R5的下一跳,其中,由于R5在当前链路R1-R5上的父节点R1的下一跳表为空,则R5的下一跳NH5中远端地址为R1在链路R1-R5上对应的地址192.168.20.25,本端地址为R5在链路R1-R5上对应的地址192.168.20.100,最大带宽和最小带宽均为当前链路R1-R5的带宽80MB,跳数为1,NH5的下一跳列表成员只包含NH5本身,节点R5的下一跳表只有一个成员,即NH5。处理完R1的邻接节点R5之后,处理R1的下一个邻接节点R2,由于R1到R5的可用带宽为80MB,符合约束条件,且R2未在路径表中,也未在候选列表中,则将R2添加到候选列表中,并生成R2的下一跳如下表1所示,即NH2。由于R2在当前链路R1-R2上的父节点R1的下一跳表为空,则R2的下一跳中远端地址为R1在链路R1-R2上对应的地址 192.168.201.102,本端地址为R2在链路R1-R2上对应的地址192.168.201.150,最大带宽和最小带宽均为当前链路R1-R2的带宽100MB,跳数为1,下一跳列表成员为节点的下一跳本身NH2。 
(3)经过上述(2)的处理之后,当前的路径表中路径节点包括R1,候选列表中候选节点包括R5、R2,然后处理候选列表中的成员,其中,NH5的路径权重和NH2的路径权重相等,均为10,而由于R5先被加入到候选列表中,则R5位于候选列表中的前面。此时,将当前候选列表中位于第一个的节点R5添加到路径表中,并将R5从候选列表候中删除,更新后的路径表中路径节点包括R1、R5,更新后的候选列表中候选节点包括R2。 
表1下一跳表一 
  名称   远端地址   本端地址   最大  带宽   最小  带宽   跳  数   下一跳  列表成  员
  NH5   192.168.20.25   192.168.20.100   80   80   1   NH5
  NH2   192.168.201.102   192.168.201.150   100   100   1   NH2
(4)处理刚加入路径表中的最新路径节点R5的邻接节点,R5的邻接节点包括R2、R3和R4,由于R5到R2的可用带宽为40MB,不满足约束条件,则不对该邻接节点R2进行处理。处理R5的下一个邻接节点R3,由于R5到R3的可用带宽为90MB,符合约束条件,且R3未在路径表中,也未在候选列表中,则将R3添加到候选列表中,并生成R3的下一跳如下表2所示,即NH3。由于R3在当前链路R5-R3上的父节点R5的下一跳表不为空,则R3的下一跳远端地址为R5在链路R5-R3上对应的地址192.168.23.10,本端地址为R3在链路R5-R3上对应的地址192.168.23.20,最大带宽为当前链路R5-R3的带宽90MB与父节点R5的下一跳的最大带宽80MB中的最大值,即为90MB,最小带宽为当前链路R5-R3的带宽90MB与父节点R5的下一跳的最小带宽80MB的最小值,即为80MB,跳数为节点R5的下一跳的跳数1与1之和,即跳数为2,下一跳列表成员为节点的下一跳本身NH3 以及父节点R5的下一跳的下一跳列表成员NH5。处理R5的下一个邻接节点R4,由于R5到R4的可用带宽为60MB,满足约束条件,且R4未在路径表中,也未在候选列表中,则将R4添加到候选列表中,并生成R4的下一跳如下表2所示,即NH4。由于R4在当前链路R5-R4上的父节点R5的下一跳表不为空,则R4的下一跳中远端地址为R5在链路R5-R4上对应的地址192.168.24.10,本端地址为R4在链路R5-R4上对应的地址192.168.24.20,最大带宽为当前链路R5-R4的带宽60MB与父节点R5的下一跳的最大带宽80MB中的最大值,即为80MB,最小带宽为当前链路R5-R4的带宽60MB与父节点R5的下一跳的最小带宽80MB的最小值,即为60MB,跳数为节点R5的下一跳的跳数1与1之和,即跳数为2,下一跳列表成员为节点的下一跳本身NH4以及父节点R5的下一跳的下一跳列表成员NH5。 
表2下一跳表二 
  名称   远端地址   本端地址   最大  带宽   最小  带宽   跳  数   下一跳  列表成  员
  NH3   192.168.23.10   192.168.23.20   90   80   2   NH3  NH5
  NH4   192.168.24.10   192.168.24.20   80   60   2   NH4  NH5
(5)经过上述(4)的处理之后,当前的路径表中路径节点包括R1、R5,候选列表中候选节点包括R2、R3和R4,然后处理候选列表中的成员,其中,NH2的路径权重为链路R1-R2的路径权重10,NH3的路径权重为链路R1-R5的路径权重10与R5-R3的路径权重10之和(10+10=20),NH4的路径权重为链路R1-R5的路径权重10与R5-R4的路径权重10之和(10+20=30)。此时,将当前候选列表中位于第一个的节点R2添加到路径表中,并将R2从候选列表候中删除,更新后的路径表中路径节点包括R1、R5、R2,更新后的候选列表中候选节点包括R3、R4。 
(6)处理刚加入路径表中的最新路径节点R2的邻接节点,R2的邻接节 点包括R5、R3,由于R2到R5的可用带宽为40MB,不满足约束条件,则不对该邻接节点R5进行处理。处理R2的下一个邻接节点R3,由于R2到R3的可用带宽为65MB,符合约束条件,但R3已经在候选列表中,当前路径R1-R2-R3上根节点到邻接节点R3的路径权重为链路R1-R2的路径权重10与链路R2-R3的路径权重10之和(10+10=20),而候选路径R1-R5-R3上根节点到邻接节点R3的路径权重为链路R1-R5的路径权重10与链路R5-R3的路径权重10之和(10+10=20),二者的路径权重相等,则将候选路径对应的邻接节点R3保留在候选列表中,并生成邻接节点R3在当前路径上的下一跳,即为下表3中的NH3(2)。由于R3在当前链路R2-R3上的父节点R2的下一跳表不为空,则R3的下一跳NH3(2)中远端地址为R2在链路R2-R3上对应的地址192.168.21.10,本端地址为R3在链路R2-R3上对应的地址192.168.21.20,最大带宽为当前链路R2-R3的带宽65MB与父节点R2的下一跳的最大带宽100MB中的最大值,即为100MB,最小带宽为当前链路R2-R3的带宽65MB与父节点R2的下一跳的最小带宽100MB的最小值,即为65MB,跳数为节点R2的下一跳的跳数1与1之和,即跳数为2,下一跳列表成员为节点的下一跳本身NH3(2)以及父节点R2的下一跳的下一跳列表成员NH2。 
表3下一跳表三 
  名称   远端地址   本端地址   最大  带宽   最小  带宽   跳  数   下一跳  列表成  员
  NH3(2)   192.168.21.10   192.168.21.20   100   65   2   NH3(2)  NH2
(7)经过上述(6)的处理之后,当前的路径表中路径节点包括R1、R5、R2,候选列表中候选节点包括R3、R4,然后处理候选列表中的成员,其中,NH3的路径权重为链路R1-R5的路径权重10与R5-R3的路径权重10之和(10+10=20),NH4的路径权重为链路R1-R5的路径权重10与R5-R4的路 径权重10之和(10+20=30),NH3(2)的路径权重为链路R1-R2的路径权重10与R2-R3的路径权重10之和(10+10=20)。此时,将当前候选列表中位于第一个的节点R3添加到路径表中,并将R3从候选列表候中删除,更新后的路径表中路径节点包括R1、R5、R2、R3,更新后的候选列表中候选节点包括R4。 
(8)处理刚加入路径表中的最新路径节点R3的邻接节点,R3的邻接节点包括R2、R5、R4,由于R2和R5已经在路径表中,则只处理邻接节点R4。由于R3到R4的可用带宽为70MB,符合约束条件,但R4已经在候选列表中,且由于R3的下一跳表中有两个成员,分别是NH3和NH3(2),则分别根据R3的两个下一跳生成两个R4的下一跳NH4(2)和NH4(3)。当前路径R1-R5-R3-R4上根节点到邻接节点R4的路径权重为链路R1-R5的路径权重10、链路R5-R3的路径权重10以及链路R3-R4的路径权重10之和(10+10+10=30),而候选路径R1-R5-R4上根节点到邻接节点R4的路径权重为链路R1-R5的路径权重10与链路R5-R4的路径权重20之和(10+20=30),二者的路径权重相等,则将候选路径对应的邻接节点R4保留在候选列表候中,并生成邻接节点R4在当前路径上的下一跳,即为下表4中的NH4(2)。由于R4在当前链路R3-R4上的父节点R3的下一跳表不为空,则R4的下一跳中远端地址为R3在链路R3-R4上对应的地址192.168.22.10,本端地址为R4在链路R3-R4上对应的地址192.168.22.20,最大带宽为当前链路R3-R4的带宽70MB与父节点R3的下一跳的最大带宽90MB中的最大值,即为90MB,最小带宽为当前链路R3-R4的带宽70MB与父节点R3的下一跳的最小带宽80MB的最小值,即为70MB,跳数为节点R3的下一跳的跳数2与1之和,即跳数为3,下一跳列表成员为节点的下一跳本身NH4(2)以及父节点R3的下一跳的下一跳列表成员NH3、NH5。同理,可以得到NH3(2)对应的节点R4的另一个下一跳,如下表4所示的NH4(3),此处不再赘述。 
表4下一跳表四 
  名称   远端地址   本端地址   最大  带宽   最小  带宽   跳  数   下一跳列  表成员
  NH4(2)   192.168.22.10   192.168.22.20   90   70   3   NH4(2)  NH3  NH5
  NH4(3)   192.168.22.10   192.168.22.20   80   60   2   NH4(3)  NH3(2)  NH2
(9)经过上述(8)的处理之后,当前的路径表中路径节点包括R1、R5、R2、R3,候选列表中候选节点包括R4,将当前候选列表中位于第一个的节点R4添加到路径表中。由于目的节点R4已经添加到路径表中,则本实施的计算结束,还可以通过判断候选列表是否为空,如果是,则计算也结束。从上述表1-表4所示可知,目的节点R4包括三个下一跳,分别为NH4、NH4(2)和NH4(3),则此时从根节点R1到目的节点R4存在三条等价约束路径。根据R4的三个下一跳中的下一跳列表成员便可以分别获知每条等价约束路径所经过的节点,而再根据每个下一跳中的远端地址和本端地址便可以直接获取到三条等价约束路径的链路地址。由NH4得到一条约束路径为R1-R5-R4,其对应的链路地址为(192.168.20.25,192.168.20.100,192.168.24.10,192.168.24.20);由NH4(2)得到一条约束路径为R1-R5-R3-R4,其对应的链路地址为(192.168.20.25,192.168.20.100,192.168.23.10,192.168.23.20,192.168.22.10,192.168.22.20);由NH4(3)得到一条约束路径为R1-R2-R3-R4,其对应的链路地址为(192.168.201.102,192.168.201.150,192.168.21.10,192.168.21.20,192.168.22.10,192.168.22.20)。由于在计算过程中,每个节点的下一跳均已经计算出来,其中包括了带宽信息、跳数信息等,在从三条等价约束路径中进行选择时,只需进行简单的比较便可以选出用户期望的满足等价约束路径选取规则的路径,在选择过程中,用户可以对后续TE隧道的建立条件进行充分考虑,因此,通过本实施例提供的方法选择路径时不 会影响下一条TE隧道的建立。 
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。 
图7为本发明路径选择装置实施例一的结构示意图,如图7所示,本实施例提供了一种路径选择装置,本实施例可以具体执行上述图3所示的方法实施例一的各个步骤,此处不再赘述。本实施例提供的路径选择装置可以包括路径表生成模块1和路径选择模块2,其中,路径表生成模块1用于根据节点的路径权重生成根节点到目的节点的路径表,所述路径表中的路径节点携带各自的下一跳表。路径选择模块2用于根据等价约束路径选取规则从所述目的节点的下一跳表指示的等价约束路径中选择最优的约束路径。 
本实施例提供了一种路径选择装置,通过设置路径表生成模块和路径选择模块,根据节点的路径权重生成根节点到目的节点的路径表,根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
图8为本发明路径选择装置实施例二的结构示意图,如图8所示,本实施例提供了一种路径选择装置,本实施例可以具体执行上述图5所示的方法实施例二的各个步骤,此处不再赘述。本实施例在上述图7所示的实施例的基础之上,其中,路径表生成模块1可以具体包括获取子模块11、更新子模 块12和转移子模块13。其中获取子模块11用于获取加入路径表的最新路径节点的满足约束条件的所有邻接节点。更新子模块12用于根据邻接节点的路径权重判断是否将所述邻接节点添加到所述候选列表中,并根据判断结果更新所述候选列表。转移子模块13用于将更新子模块12更新后的候选列表中路径权重最低的候选节点转移到所述路径表中,直到将目的节点添加到所述路径表中。 
本实施例提供了一种路径选择装置,通过设置候选列表和路径表,对每个加入路径表中的最新路径节点的邻接节点进行分析,根据邻接节点的路径权重判断是否将该邻接节点添加到候选列表中,并更新候选列表,每次从候选列表中选择路径权重最低的候选节点,转移到路径表中,并重复上述步骤,直到将目的节点也添加到路径表中,然后根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
图9为本发明路径选择装置实施例三的结构示意图,如图9所示,本实施例提供了一种路径选择装置,本实施例可以具体执行上述图6所示的方法实施例三的各个步骤,此处不再赘述。本实施例在上述图8所示的实施例的基础之上,其中,更新子模块12可以具体包括第一节点添加单元121和生成单元124,或者第二节点添加单元122和生成单元124,或者第三节点添加单元123和生成单元124。第一节点添加单元121用于当所述邻接节点不在候选列表和所述路径表中时,将所述邻接节点添加到候选列表中,并生成所述邻接节点的下一跳表。第二节点添加单元122用于当所述邻接节点在候选列 表中,且当前路径上根节点到所述邻接节点的路径权重小于候选路径上根节点到所述邻接节点的路径权重时,则从所述候选列表中删除所述候选路径对应的所述邻接节点和所述邻接节点的下一跳表,将所述当前路径对应的所述邻接节点添加到所述候选列表中,并生成所述邻接节点在当前路径上的下一跳表。第三节点添加单元123用于当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重等于候选路径上根节点到所述邻接节点的路径权重时,将所述当前路径对应的所述邻接节点添加到所述候选列表中,并生成所述邻接节点在当前路径上的下一跳表。生成单元124用于生成第一节点添加单元121、第二节点添加单元122或第三节点添加单元123添加到候选列表中的邻接节点在当前路径上的下一跳表,其中,候选路径为根节点到作为候选列表中候选节点的所述邻接节点的路径。 
本实施例提供了一种路径选择装置,通过设置候选列表和路径表,对每个加入路径表中的最新路径节点的邻接节点进行分析,根据邻接节点的路径权重判断是否将该邻接节点添加到候选列表中,并更新候选列表,每次从候选列表中选择路径权重最低的候选节点,转移到路径表中,并重复上述步骤,直到将目的节点也添加到路径表中,然后根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
图10为本发明路径选择装置实施例四的结构示意图,如图10所示,本实施例提供了一种路径选择装置,本实施例可以具体执行上述图6所示的方法实施例三的各个步骤,此处不再赘述。本实施例在上述图9所示的实施例 的基础之上,其中,生成单元124可以具体包括第一生成子单元1241和第二生成子单元1242。其中,第一生成子单元1241用于当邻接节点在所述当前链路上的父节点的下一跳表为空时,将所述邻接节点的下一跳表的本端地址和远端地址分别设置为所述当前链路中所述邻接节点的地址和所述父节点的地址,将所述邻接节点的下一跳表的跳数设置为1,将所述邻接节点的下一跳表的最大带宽和最小带宽均设置为所述当前链路的带宽,将所述邻接节点设置为所述邻接节点的下一跳表的下一跳成员。第二生成子单元1242用于当邻接节点在当前链路上的父节点的下一跳表不为空时,根据所述父节点的下一跳表生成所述邻接节点的下一跳,将所述邻接节点的下一跳表的本端地址和远端地址分别设置为所述当前链路中所述邻接节点的地址和所述父节点的地址,将所述邻接节点的下一跳表的跳数设置为所述父节点的下一跳表的跳数与1之和,将所述邻接节点的下一跳表的最大带宽设置为所述当前链路的带宽与所述父节点的下一跳表的最大带宽中的最大值,将所述邻接节点的下一跳表的最小带宽设置为所述当前链路的带宽与所述父节点的下一跳表的最小带宽的最小值,将所述邻接节点和所述父节点的下一跳表的下一跳成员设置为所述邻接节点的下一跳表的下一跳成员。 
进一步地,本实施例提供的路径选择装置还可以包括设置模块3,设置模块3用于将所述根节点设置为所述路径表中的首路径节点,将所述首路径节点的路径权重设置为0,将所述首路径节点的下一跳表设置为空。 
本实施例提供了一种路径选择装置,通过设置候选列表和路径表,对每个加入路径表中的最新路径节点的邻接节点进行分析,根据邻接节点的路径权重判断是否将该邻接节点添加到候选列表中,并更新候选列表,每次从候选列表中选择路径权重最低的候选节点,转移到路径表中,并重复上述步骤,直到将目的节点也添加到路径表中,然后根据等价约束路径选取规则,从目的节点的下一跳表所指示的多条等价约束路径中选择一条最优的约束路径,本实施例解决了现有技术中通过CSPF计算得到多条等价约束路径时造成的 隧道建立失败、链路性能低等缺陷,实现了当出现多条等价约束路径时,在不增加计算复杂度的前提下,可以从中快速选择一条符合要求的路径,提高了链路的整体性能,从而避免了在出现多条等价约束路径时,需要逐个遍历各等价约束路径上的链路才能选择出用户所需的最优的约束路径,无疑大大降低了路径选择的复杂度,提高了路径选择的效率。 
本实施例还提供了一种网络设备,可以包括上述路径选择装置实施例一~实施例四中任一实施例所述的路径选择装置,该网络设备可以为具体为路由器、交换机,或者其他本领域技术人员熟知的应用于通信领域中的通信设备。 
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。 

Claims (7)

1.一种路径选择方法,其特征在于,包括:
根据节点的路径权重生成根节点到目的节点的路径表,所述路径表中的路径节点携带各自的下一跳表;
根据等价约束路径选取规则从所述目的节点的下一跳表指示的等价约束路径中选择最优的约束路径;
其中,所述根据节点的路径权重生成根节点到目的节点的路径表包括:
获取加入路径表的最新路径节点的满足约束条件的所有邻接节点;
根据所述邻接节点的路径权重判断是否将所述邻接节点添加到候选列表中,并根据判断结果更新所述候选列表;
将更新后的候选列表中路径权重最低的候选节点转移到所述路径表中;
重复执行上述步骤,直到将目的节点添加到所述路径表中;
其中,所述根据所述邻接节点的路径权重判断是否将所述邻接节点添加到候选列表中,并根据判断结果更新所述候选列表包括:
当所述邻接节点不在候选列表和所述路径表中时,将所述邻接节点添加到候选列表中,并生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中;
当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重小于候选路径上根节点到所述邻接节点的路径权重时,则从所述候选列表中删除所述候选路径对应的所述邻接节点和所述邻接节点的下一跳表,将所述当前路径对应的所述邻接节点添加到所述候选列表中,并生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中;
当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重等于候选路径上根节点到所述邻接节点的路径权重时,保留所述候选列表中的所述邻接节点和所述邻接节点在所述候选路径上的下一跳,并生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中;
其中,所述候选路径为所述根节点到作为候选列表中的候选节点的所述邻接节点的路径,所述当前路径为所述根节点到所述邻接节点的除所述候选路径之外的路径,节点的下一跳表中存储有到达所述节点的所有下一跳信息,所述下一跳信息表示父节点到达所述节点的链路信息,以及根节点经过所述节点的父节点到达所述节点所经过的所有链路信息。
2.根据权利要求1所述的方法,其特征在于,生成所述邻接节点在当前链路上的下一跳的步骤包括:
当所述邻接节点在所述当前链路上的父节点的下一跳表为空时,将所述邻接节点的下一跳的本端地址和远端地址分别设置为所述当前链路中所述邻接节点的地址和所述父节点的地址,将所述邻接节点的下一跳的跳数设置为1,将所述邻接节点的下一跳的最大带宽和最小带宽均设置为所述当前链路的带宽,将所述邻接节点的下一跳本身设置为所述邻接节点的下一跳的下一跳列表成员;
当所述邻接节点在所述当前链路上的父节点的下一跳表不为空时,根据所述父节点的下一跳表生成所述邻接节点的下一跳,将所述邻接节点的下一跳的本端地址和远端地址分别设置为所述当前链路中所述邻接节点的地址和所述父节点的地址,将所述邻接节点的下一跳的跳数设置为所述父节点的下一跳的跳数与1之和,将所述邻接节点的下一跳表的最大带宽设置为所述当前链路的带宽与所述父节点的下一跳的最大带宽中的最大值,将所述邻接节点的下一跳的最小带宽设置为所述当前链路的带宽与所述父节点的下一跳的最小带宽的最小值,将所述邻接节点的下一跳本身和所述父节点的下一跳的下一跳列表成员设置为所述邻接节点的下一跳的下一跳列表成员。
3.根据权利要求1或2所述的方法,在所述根据节点的路径权重生成根节点到目的节点的路径表之前,还包括:将所述根节点设置为所述路径表中的首路径节点,将所述首路径节点的路径权重设置为0,将所述首路径节点的下一跳表设置为空。
4.一种路径选择装置,其特征在于,包括:
路径表生成模块,用于根据节点的路径权重生成根节点到目的节点的路径表,所述路径表中的路径节点携带各自的下一跳表;
路径选择模块,用于根据等价约束路径选取规则从所述目的节点的下一跳表指示的等价约束路径中选择最优的约束路径;
其中,所述路径表生成模块包括:
获取子模块,用于获取加入路径表的最新路径节点的满足约束条件的所有邻接节点;
更新子模块,用于根据所述邻接节点的路径权重判断是否将所述邻接节点添加到候选列表中,并根据判断结果更新所述候选列表;
转移子模块,用于将所述更新子模块更新后的候选列表中路径权重最低的候选节点转移到所述路径表中,直到将目的节点添加到所述路径表中;
其中,所述更新子模块包括:
第一节点添加单元,用于当所述邻接节点不在候选列表和所述路径表中时,将所述邻接节点添加到候选列表中;
第二节点添加单元,用于当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重小于候选路径上根节点到所述邻接节点的路径权重时,则从所述候选列表中删除所述候选路径对应的所述邻接节点和所述邻接节点在候选列表中的下一跳,将所述当前路径对应的所述邻接节点添加到所述候选列表中;
第三节点添加单元,用于当所述邻接节点在候选列表中,且当前路径上根节点到所述邻接节点的路径权重等于候选路径上根节点到所述邻接节点的路径权重时,保留所述候选路径对应的邻接节点和所述邻接节点在所述候选路径上的下一跳;
生成单元,用于生成所述邻接节点在当前路径上的下一跳,将所述下一跳添加到所述邻接节点的下一跳表中;
其中,所述候选路径为所述根节点到作为候选列表中的候选节点的所述邻接节点时的路径,所述当前路径为所述根节点到所述邻接节点的除所述候选路径之外的路径,节点的下一跳表中存储有到达所述节点的所有下一跳信息,所述下一跳信息表示父节点到达所述节点的链路信息,以及根节点经过所述节点的父节点到达所述节点所经过的所有链路信息。
5.根据权利要求4所述的装置,其特征在于,所述生成单元包括:
第一生成子单元,用于当所述邻接节点在所述当前链路上的父节点的下一跳表为空时,将所述邻接节点的下一跳的本端地址和远端地址分别设置为所述当前链路中所述邻接节点的地址和所述父节点的地址,将所述邻接节点的下一跳的跳数设置为1,将所述邻接节点的下一跳的最大带宽和最小带宽均设置为所述当前链路的带宽,将所述邻接节点的下一跳本身设置为所述邻接节点的下一跳表的下一跳列表成员;
第二生成子单元,用于当所述邻接节点在所述当前链路上的父节点的下一跳表不为空时,根据所述父节点的下一跳表生成所述邻接节点的下一跳,将所述邻接节点的下一跳的本端地址和远端地址分别设置为所述当前链路中所述邻接节点的地址和所述父节点的地址,将所述邻接节点的下一跳的跳数设置为所述父节点的下一跳的跳数与1之和,将所述邻接节点的下一跳的最大带宽设置为所述当前链路的带宽与所述父节点的下一跳的最大带宽中的最大值,将所述邻接节点的下一跳的最小带宽设置为所述当前链路的带宽与所述父节点的下一跳的最小带宽的最小值,将所述邻接节点的下一跳本身和所述父节点的下一跳的下一跳列表成员设置为所述邻接节点的下一跳的下一跳列表成员。
6.根据权利要求4或5所述的装置,其特征在于,还包括:
设置模块,用于将所述根节点设置为所述路径表中的首路径节点,将所述首路径节点的路径权重设置为0,将所述首路径节点的下一跳表设置为空。
7.一种网络设备,其特征在于,包括上述权利要求4-6中任一项所述的路径选择装置。
CN2009102660382A 2009-12-31 2009-12-31 路径选择方法、装置和网络设备 Expired - Fee Related CN101778041B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102660382A CN101778041B (zh) 2009-12-31 2009-12-31 路径选择方法、装置和网络设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102660382A CN101778041B (zh) 2009-12-31 2009-12-31 路径选择方法、装置和网络设备

Publications (2)

Publication Number Publication Date
CN101778041A CN101778041A (zh) 2010-07-14
CN101778041B true CN101778041B (zh) 2012-07-18

Family

ID=42514372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102660382A Expired - Fee Related CN101778041B (zh) 2009-12-31 2009-12-31 路径选择方法、装置和网络设备

Country Status (1)

Country Link
CN (1) CN101778041B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103036791B (zh) * 2012-11-30 2015-08-19 福建星网锐捷网络有限公司 一种确定点到多点路径的方法和装置
CN106851769A (zh) * 2015-12-03 2017-06-13 电信科学技术研究院 生成路由信息及确定传输路径的方法、装置
WO2018054197A1 (en) * 2016-09-21 2018-03-29 Huawei Technologies Co., Ltd. Method and apparatus for path selecting
CN109218190B (zh) 2017-06-29 2020-08-07 华为技术有限公司 一种传输路径的确定方法及节点
CN107844527A (zh) * 2017-10-13 2018-03-27 平安科技(深圳)有限公司 网页地址去重方法、电子设备及计算机可读存储介质
CN110365585B (zh) * 2018-03-26 2021-08-03 武汉大学 一种基于多代价指标的路由裁剪优化方法
CN110062301B (zh) * 2019-01-23 2021-12-14 中通服咨询设计研究院有限公司 路由选择方法、装置、设备以及存储介质
CN114039863B (zh) * 2021-10-19 2022-06-28 广州鲁邦通物联网科技股份有限公司 一种远程控制的多路由器vpn自动组网方法及系统

Also Published As

Publication number Publication date
CN101778041A (zh) 2010-07-14

Similar Documents

Publication Publication Date Title
CN101778041B (zh) 路径选择方法、装置和网络设备
CN101965715B (zh) 最短路径确定中的打破平局
Banner et al. Bottleneck routing games in communication networks
US10193796B2 (en) Modeling a border gateway protocol network
CN103036792B (zh) 一种最大化最小公平多数据流传输调度方法
CN103269315B (zh) 标签分配方法、装置、系统和网络设备
CN103098426A (zh) 使用分层标记栈改进ldp收敛的方法和设备
CN104396198A (zh) 在最短路径确定中打破平局
CN1984495B (zh) 根据服务质量级进行路由选择决策的方法和装备
CN100428736C (zh) 一次路由计算实现层次路由的拓扑方法
US20060215660A1 (en) Device and a method for generating routing messages for a GMPLS control plane communications network
CN101719868B (zh) 一种lsp承载于te隧道的方法及装置
CN101764728B (zh) 一种网络拓扑的发现方法和设备
CN101980487B (zh) 一种路由选择出口的方法和装置
CN111865789B (zh) 一种基于段路由的sr路径约束方法
CN104285412A (zh) 对数据单元进行路由的方法和计算机程序产品
CN102025632A (zh) Mpls网络中数据分组的标签分配方法及系统
CN103220217A (zh) 一种路由生成方法和设备
CN102143076B (zh) 一种多重保护叠加的保护组实现方法和装置
Solano et al. Label space reduction in MPLS networks: How much can a single stacked label do?
CN113810276B (zh) 一种段路由故障处理方法、装置、电子设备及存储介质
CN100490440C (zh) 一种实现路由器外部路由计算的方法
CN105939265B (zh) 路由处理方法和装置
CN100525252C (zh) 一种报文转发路径搜索方法、路由器和网络
CN103036791B (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120718

Termination date: 20141231

EXPY Termination of patent right or utility model