本发明涉及网络通信技术,尤其涉及一种路径计算的方法和装置。
背景技术:
随着软件定义网络(Software Defined Network,SDN)、网络功能虚拟化(Network Function Virtualization,NFV)等新技术的出现,集中控制的应用越来越广。
集中控制要求集中控制器对全网资源有很强的调度处理能力,特别是当网络发生故障时,需要集中控制器给出快速的响应,尽量多地恢复受损的业务。现有技术中,当网络发生故障时,集中控制器仍沿用分布式的约束最短路径优先(Constrained Shorest Path Tree,CSPF)路径计算方法,为每个受故障影响的业务单独算路。在网络利用率较高、网络资源比较紧张的情况下,这种CSPF路径计算方法容易造成资源竞争,导致算路失败,算路成功率低。
技术实现要素:
本发明的实施例提供了一种路径计算的方法和装置,解决现有路径计算不能有效利用全网资源、算路成功率低的问题。
本发明的实施例采用如下技术方案:
本发明第一方面提供了一种路径计算的方法,包括:
检测到网络发生故障后,确定所有受故障影响的业务;
获取每个所述受故障影响的业务的源宿节点之间的最大流在所述网络中每条链路上分摊的流量;
获取所述每条链路的代价值,其中,任一链路的代价值为所述任一链路的流量和除以所述任一链路的剩余带宽的结果的向上取整值,所述任一链路的流量和为所有所述受故障影响的业务的源宿节点之间的最大流在所述任一链路上分摊的流量之和;
根据所述每条链路的代价值为所述受故障影响的业务计算满足带宽需求的最短路径。
在第一种可能的实现方式中,所述检测到网络发生故障之前,所述方法还包括:
根据所述网络中链路的剩余带宽计算所述网络中每个业务的源宿节点之间的最大流,确定所述每个业务的源宿节点之间的最大流在所述每条链路上分摊的流量。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定所述每个业务的源宿节点之间的最大流在所述每条链路上分摊的流量,具体包括:
如果任一业务的源宿节点之间承载最大流的链路不唯一,将所述任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;计算所述任一业务的源宿节点之间的最大流在所述每条链路上分摊的流量。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上,具体包括:
将所述任一业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上。
结合第一方面的第一种可能的实现方式、第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,所述检测到网络发生故障之前,所述方法还包括:
如果所述网络中链路的剩余带宽发生变化,重新计算所述每个业务的源宿节点之间的最大流。
本发明第二方面提供了一种路径计算的装置,包括:
业务确定单元,用于检测到网络发生故障后,确定所有受故障影响的业务;
获取单元,用于获取所述业务确定单元确定的每个所述受故障影响的业务的源宿节点之间的最大流在所述网络中每条链路上分摊的流量;获取所述每条链路的代价值,其中,任一链路的代价值为所述任一链路的流量和除以所述任一链路的剩余带宽的结果的向上取整值;所述任一链路的流量和为所有所述受故障影响的业务的源宿节点之间的最大流在所述任一链路上分摊的流量之和;
路径计算单元,根据所述获取单元获取的所述每条链路的代价值为所述受故障影响的业务计算满足带宽需求的最短路径。
在第一种可能的实现方式中,所述装置还包括:
最大流计算单元,用于所述业务确定单元检测到网络发生故障之前,根据所述网络中链路的剩余带宽计算所述网络中每个业务的源宿节点之间的最大流;
流量确定单元,用于确定所述最大流计算单元计算得到的所述每个业务的源宿节点之间的最大流在所述每条链路上分摊的流量。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述流量确定单元具体用于,如果任一业务的源宿节点之间承载最大流的链路不唯一,将所述任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;计算所述任一业务的源宿节点之间的最大流在所述每条链路上分摊的流量。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述流量确定单元具体包括:
第一子单元,用于如果所述任一业务的源宿节点之间承载最大流的链路不唯一,将所述任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;
第二子单元,用于计算所述任一业务的源宿节点之间的最大流在所述每条链路上分摊的流量。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一子单元具体用于,如果所述任一业务的源宿节点之间承载最大流的链路不唯一,将所述任一业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上。
结合第二方面的第一种至第四种可能的实现方式中的任意一种可能的实现方式,在第五种可能的实现方式中,所述最大流计算单元还用于所述业务确定单元检测到网络发生故障之前,如果所述网络中链路的剩余带宽发生变化,重新计算所述每个业务的源宿节点之间的最大流。
本发明实施例提供的一种路径计算的方法和装置,综合考虑所有受故障影响的业务的源宿节点之间的最大流在网络中每条链路上分摊的流量,为受故障影响的业务计算路径,有效利用全网资源、算路成功率高。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例提供的一种路径计算的方法的流程图;
图2为本发明的实施例提供的网络组网示意图;
图3为本发明的实施例提供的节点A和节点C之间的最大流在每条链路上分摊的流量示意图;
图4为本发明的实施例提供的节点A和节点D之间的最大流在每条链路上分摊的流量示意图;
图5为本发明的实施例提供的一种路径计算的装置的一结构框图;
图6为本发明的实施例提供的一种路径计算的装置的另一结构框图。
图7为本发明的实施例提供的另一种路径计算的装置的结构框图。
具体实施方式
本发明实施例提供了一种路径计算的方法和装置。为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种路径计算的方法的流程如图1所示,该方法包括以下步骤:
步骤S101,检测到网络发生故障后,确定所有受故障影响的业务。
步骤S102,获取每个受故障影响的业务的源宿节点之间的最大流在网络中每条链路上分摊的流量。
步骤S103,获取每条链路的代价值,其中,任一链路的代价值为该任一链路的流量和除以该任一链路的剩余带宽的结果的向上取整值,该任一链路的流量和为所有受故障影响的业务的源宿节点之间的最大流在该任一链路上分摊的流量之和。
步骤S104,根据每条链路的代价值为受故障影响的业务计算满足带宽需求的最短路径。
进一步地,检测到网络发生故障之前,该方法还可以包括步骤S100:根据网络中链路的剩余带宽计算网络中每个业务的源宿节点之间的最大流,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量。
具体地,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量,可以具体包括:如果任一业务的源宿节点之间承载最大流的链路不唯一,将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;计算该任一业务的源宿节点之间的最大流在每条链路上分摊的流量。
具体地,将任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上,可以具体包括:将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上。
进一步地,步骤S100还可以包括:如果网络中链路的剩余带宽发生变化,重新计算每个业务的源宿节点之间的最大流。
下面结合附图对本发明实施例提供的一种路径计算的方法和装置进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例中的执行主体可以为集中控制的装置,该集中控制的装置可以为集中控制器,例如网管、路径计算单元、网络控制器、SDN控制器等,该集中控制的装置也可以为内置于上述集中控制器中的装置。
本发明实施例提供了一种路径计算的方法,执行主体以集中控制器为例。如图2所示的网络组网示意图,网络中共有5个节点A、B、C、D和E,由一个集中控制器控制。网络中的业务有:业务1,其路由为A-E-D-C;业务2,其路由为A-E-D;业务3,其路由为A-B。
图2所示网络中各链路的剩余带宽为:
链路A-B的剩余带宽为3个带宽单位;
链路A-D的剩余带宽为3个带宽单位;
链路A-E的剩余带宽为6个带宽单位;
链路E-D的剩余带宽为6个带宽单位;
链路D-C的剩余带宽为3个带宽单位;
链路B-C的剩余带宽为3个带宽单位。
其中,链路的剩余带宽为相对值,表示多少个带宽单位。例如,剩余带宽值为3,表示3个带宽单位;剩余带宽值为6,表示6个带宽单位。可以分别表示3MHz带宽和6MHz带宽,也可以分别表示30MHz带宽和60MHz带宽。
该路径计算的方法具体包括如下步骤:
步骤S201,检测到网络发生故障后,确定所有受故障影响的业务。
本实施例中,检测到网络中链路A-E发生故障后,确定受故障影响的业务为业务1和业务2。
步骤S202,获取每个受故障影响的业务的源宿节点之间的最大流在该网络中每条链路上分摊的流量,其中,最大流为源节点到宿节点之间能够承载的最大流量。
本实施例中,获取业务1和业务2的源宿节点之间的最大流在该网络中每条链路上分摊的流量。业务1的源宿节点分别为节点A和节点C,业务2的源宿节点分别为节点A和节点D。
网络中每条业务的源宿节点之间的最大流在每条链路上分摊的流量,可以在网络发生故障之前预先配置,也可以在网络发生故障之前预先计算获得,本实施例对此不做限定。
因此,本实施例中,可以在预先获得的网络中每条业务的源宿节点之间的最大流在每条链路上分摊的流量中,直接获取节点A和节点C之间的最大流在每条链路上分摊的流量,以及节点A和节点D之间的最大流在每条链路上分摊的流量。
节点A和节点C之间的最大流在每条链路上分摊的流量,如图3所示:
链路A-B上分摊的流量为3个带宽单位;
链路A-D上分摊的流量为3个带宽单位;
链路A-E上分摊的流量为0个带宽单位;
链路E-D上分摊的流量为0个带宽单位;
链路D-C上分摊的流量为3个带宽单位;
链路B-C上分摊的流量为3个带宽单位。
节点A和节点D之间的最大流在每条链路上分摊的流量,如图4所示:
链路A-B上分摊的流量为0个带宽单位;
链路A-D上分摊的流量为3个带宽单位;
链路A-E上分摊的流量为6个带宽单位;
链路E-D上分摊的流量为6个带宽单位;
链路D-C上分摊的流量为0个带宽单位;
链路B-C上分摊的流量为0个带宽单位。
步骤S203,获取每条链路的代价(Metric)值。
对于网络中的任一链路,该链路的Metric值为该链路的流量和除以该链路的剩余带宽的结果的向上取整值;该链路的流量和为所有受故障影响业务的源宿节点之间的最大流在该链路上分摊的流量之和。
本实施例中,以链路A-B为例,业务1的源宿节点A和C之间的最大流在链路A-B上分摊的流量为3个带宽单位,业务2的源宿节点A和D之间的最大流在链路A-B上分摊的流量为0,则受故障影响的业务1和业务2的源宿节点之间的最大流在链路A-B上分摊的流量之和为3个带宽单位,即链路A-B的流量和为3个带宽单位。
其它链路与链路A-B类似,受故障影响的业务1和业务2的源宿节点之间的最大流在各链路上分摊的流量之和,即各链路的流量和为:
链路A-B的流量和为3个带宽单位;
链路A-D的流量和为6个带宽单位;
链路A-E的流量和为6个带宽单位;
链路E-D的流量和为6个带宽单位;
链路D-C的流量和为3个带宽单位;
链路B-C的流量和为3个带宽单位。
以链路A-B为例,链路A-B的流量和为3个带宽单位,剩余带宽值为3个带宽单位,则链路A-B的代价值为3除以3的结果的向上取整值,即1。
其它链路与链路A-B类似,根据上述各链路的流量和以及各链路的剩余带宽值,获得各链路的代价值:链路A-B的代价值为1;链路A-D的代价值为2,链路A-E的代价值为1,链路E-D的代价值为1,链路D-C的代价值为1,链路B-C的代价值为1。
步骤S204,根据每条链路的代价值对受故障影响的业务计算满足带宽需求的最短路径。
本实施例中,根据步骤S203中获取的每条链路的代价值对受故障影响的业务1和业务2计算满足带宽需求的最短路径。
根据链路的代价值计算最短路径可以采用dijkstra算法、Bellman-Ford算法或Floyd-Warshall算法等方法,本实施例不做限定。
计算得到链路A-E故障后业务1节点A到节点C的路径为A-B-C;计算得到链路A-E故障后业务2节点A到节点D的路径为A-D。
另一实施例中,在上述实施例的步骤S201之前,即检测到该网络发生故障之前,该方法还可以包括:
步骤S200,根据该网络中链路的剩余带宽计算该网络中每个业务的源宿节点之间的最大流,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量。
本实施例中,根据各链路的剩余带宽值,获得业务1的源宿节点A和C之间的最大流为6个带宽单位,业务2的源宿节点A和D之间的最大流为9个带宽单位,以及业务3的源宿节点A和B之间的最大流为3个带宽单位。最大流的计算方法为现有技术,本实施例中不再赘述。
而后,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量。
具体地,如果业务的源宿节点之间承载最大流的链路不唯一,将该业务的源宿节点之间的最大流分配在承载最大流的多条链路上,计算该业务的源宿节点之间的最大流在每条链路上分摊的流量;如果业务的的源宿节点之间承载的最大流的链路唯一,直接将该业务的源宿节点之间的最大流分配在该链路上,计算该业务的源宿节点之间的最大流在每条链路上分摊的流量。
具体地,将该业务的源宿节点之间的最大流分配在承载最大流的多条链路上,可以将该业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上,也可以采用其它分配方式,例如将最大流平均分配在多条链路上,或者将最大流分配在剩余带宽最多的链路上等,本实施例对此不做限制。
本实施例中,获取业务1、业务2和业务3的源宿节点之间的最大流在每条链路上分摊的流量。
其中,业务1的源宿节点A和C之间的最大流为6个带宽单位,节点A和节点C之间承载最大流的链路不唯一,链路A-D与链路A-E和E-D可以互相替代,即链路A-D可以替代链路A-E和E-D,链路A-E和E-D可以替代链路A-D。
本实施例中,以将该业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最小的链路上为例。将节点A和节点C之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上,链路A-D剩余带宽为3个带宽单位,链路A-E和E-D剩余带宽均为6个带宽单位,在二者之间选择剩余带宽少的链路A-D作为承载最大流的链路。得到如图3所示的节点A和节点C之间的最大流在每条链路上分摊的流量,链路A-E和E-D上分摊的流量为0。
业务2的源宿节点A和D之间的最大流为9个带宽单位,节点A和节点D之间承载最大流的链路唯一,在每条链路上分摊的流量如图4所示。
业务3的源宿节点A和B之间的最大流为3个带宽单位,节点A和节点B之间承载最大流的链路唯一,在链路A-B上分摊的流量为3个带宽单位,其它链路上分摊的流量均为0。
实际应用的网络中经常存在大量业务,网络中的每个节点可能都会上下业务。此种情况下,计算该网络中每个业务的源宿节点之间的最大流,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量,相当于需要计算网络中任意两个节点之间的最大流,确定任意两个节点之间的最大流在每条链路上分摊的流量。
进一步地,在检测到网络发生故障之前,如果该网络中链路的剩余带宽发生变化,则重新计算每个业务的源宿节点之间的最大流,继而重新确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量,以便网络发生故障后,为受故障影响的业务计算满足带宽需求的最短路径。
现有技术中,当检测到链路A-E故障,采用CSPF重新算路。由于CSPF没有有效利用全网资源,而是为每个受故障影响的业务单独算路。如果业务1先计算路径,根据最短路规则,计算的路径为A-D-C,那么业务2算路失败,业务2无法恢复。
本发明实施例提供的一种路径计算的方法,综合考虑所有受故障影响的业务的源宿节点之间的最大流在网络中每条链路上分摊的流量,为受故障影响的业务计算路径,有效利用全网资源、算路成功率高。
此外,本发明实施例提供的路径计算的方法,还可以在网络发生故障之前预先计算获得每个业务的源宿节点之间的最大流在每条链路上分摊的流量,且根据链路的剩余带宽的变化,实时刷新分摊的流量,使得路径计算更准确、有效。
本发明实施例提供了一种路径计算的装置500,如图5所示,包括业务确定单元510、获取单元520和路径计算单元530:
业务确定单元510,用于检测到网络发生故障后,确定所有受故障影响的业务;
获取单元520,用于获取业务确定单元510确定的每个受故障影响的业务的源宿节点之间的最大流在网络中每条链路上分摊的流量;获取每条链路的代价值,其中,任一链路的代价值为该任一链路的流量和除以该任一链路的剩余带宽的结果的向上取整值;该任一链路的流量和为所有受故障影响的业务的源宿节点之间的最大流在该任一链路上分摊的流量之和;
路径计算单元530,根据获取单元520获取的每条链路的代价值为受故障影响的业务计算满足带宽需求的最短路径。
进一步地,如图6所示,该路径计算的装置500还可以包括:
最大流计算单元540,用于业务确定单元510检测到网络发生故障之前,根据网络中链路的剩余带宽计算网络中每个业务的源宿节点之间的最大流;
流量确定单元550,用于确定最大流计算单元540计算得到的每个业务的源宿节点之间的最大流在每条链路上分摊的流量。
进一步地,流量确定单元550可以具体用于,如果任一业务的源宿节点之间承载最大流的链路不唯一,将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;计算该任一业务的源宿节点之间的最大流在每条链路上分摊的流量。
进一步地,流量确定单元550可以具体包括:
第一子单元551,用于如果任一业务的源宿节点之间承载最大流的链路不唯一,将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;
第二子单元552,用于计算该任一业务的源宿节点之间的最大流在每条链路上分摊的流量。
进一步地,第一子单元552可以具体用于,如果任一业务的源宿节点之间承载最大流的链路不唯一,将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上。
进一步地,最大流计算单元540还可以用于:业务确定单元510检测到网络发生故障之前,如果网络中链路的剩余带宽发生变化,重新计算每个业务的源宿节点之间的最大流。
本发明另一实施例提供了一种路径计算的装置700,如图7所示,包括发送器710、存储器720和处理器730:
发送器710,用于发送受故障影响的业务计算满足带宽需求的最短路径;
存储器720,用于存储包括程序例程的信息;
处理器730,与存储器720和发送器710耦合,用于控制程序例程的执行,具体包括:
检测到网络发生故障后,确定所有受故障影响的业务;
获取每个受故障影响的业务的源宿节点之间的最大流在网络中每条链路上分摊的流量;
获取每条链路的代价值,其中,任一链路的代价值为该任一链路的流量和除以该任一链路的剩余带宽的结果的向上取整值,该任一链路的流量和为所有受故障影响的业务的源宿节点之间的最大流在该任一链路上分摊的流量之和;
根据每条链路的代价值为受故障影响的业务计算满足带宽需求的最短路径。
进一步地,检测到网络发生故障之前,处理器730还可以用于控制程序例程执行:
根据网络中链路的剩余带宽计算网络中每个业务的源宿节点之间的最大流,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量。
其中,确定每个业务的源宿节点之间的最大流在每条链路上分摊的流量,可以具体包括:如果任一业务的源宿节点之间承载最大流的链路不唯一,将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上;计算该任一业务的源宿节点之间的最大流在每条链路上分摊的流量。
其中,将任一业务的源宿节点之间的最大流分配在承载最大流的多条链路上,可以具体包括:将该任一业务的源宿节点之间的最大流分配在承载最大流的多条链路中剩余带宽最少的链路上。
进一步地,检测到网络发生故障之前,处理器730还可以用于控制程序例程执行:
如果网络中链路的剩余带宽发生变化,重新计算每个业务的源宿节点之间的最大流。
上述实施例中的路径计算的装置可以为集中控制的装置,该集中控制的装置可以为集中控制器,例如网管、路径计算单元、网络控制器、SDN控制器等,该集中控制的装置也可以为内置于上述集中控制器中的装置。
上述实施例中,一种路径计算的装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
采用本发明实施例提供的一种路径计算的装置,综合考虑所有受故障影响的业务的源宿节点之间的最大流在网络中每条链路上分摊的流量,为受故障影响的业务计算路径,有效利用全网资源、算路成功率高。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。