基于自定义模板的按照带宽分担数据流量的方法及系统与流程

文档序号:16630582发布日期:2019-01-16 06:32阅读:290来源:国知局
基于自定义模板的按照带宽分担数据流量的方法及系统与流程

本发明涉及数据流量的负载分担领域,具体涉及一种基于自定义模板的按照带宽分担数据流量的方法及系统。



背景技术:

数据流经网元的多端口输出的方法为:按照带宽的负载分担方式,将数据流输入至对应的端口输出。

带宽的负载分担方式包括ecmp(equal-costmultiplepath,等价负载分担)和ucmp(unequal-costmultiplepath,非等价负载分担):

ecmp是指如果到达目的地有多条等价物理链路(每条物理链路对应1个端口),则数据流量在所有物理链路上平均分配(即在所有端口上平均分配数据流量),不会考虑链路带宽的差异,这容易使带宽较小的物理链路造成拥塞。

ucmp是指如果到达目的地有多条带宽不同的等价物理链路,则数据流量会根据带宽按比例分担到每条物理链路上,这样所有链路可根据带宽不同而分担不同比例的流量,使负载分担更合理。

与此同时,ecmp和ucmp使用的端口都可能包括lag(linkaggregationgroupprotection,链路聚合组保护)端口,lag端口是指将多个以太口聚合起来组成一个逻辑上的端口,聚合后的端口带宽是所有聚合的以太口带宽的总和。

但是,按照ecmp或ucmp的方式分担数据流量时,分别会存在以下缺陷:

对于ecmp而言,若出现端口故障,则会将故障端口承载的数据流,全部倒换至1个已经使用的端口。例如参见图1所示,总共有4个端口(端口1至4),参见图1和图2所示,当端口4故障时,会将端口4的数据流全部倒换至端口1。此时端口1实际需要分担的流量为总流量的1/2,端口1理论上需要分担的流量应为总流量的1/3(端口4故障后,还剩3个端口,所以每个端口应分担1/3的流量);由此可知,端口1的数据流量分担比例误差为1/2-1/3≈16.7%,这不仅无法满足数据流量分担比例误差要求(要求中规定误差在10%以内),而且会急剧增大端口1数据流量,进而造成端口1的堵塞。

对于ucmp而言,因为不同的端口的数据流量比例不同,所以若出现端口故障时,无法按照ecmp的方式将故障端口承载的数据流,全部倒换至1个已经使用的端口。例如总共有3个端口:1个10ge端口和2个1ge端口,即3个端口的数据流量比例为:10:1:1,此时若10ge端口故障,是不能将10ge端口承载的数据流量全部倒换至1个1ge端口上的,因此这样的话,剩余2个ge端口的数据流量比例会变为:11:1,这很明显不符合上述10:1:1的数据流量比例要求。有鉴于此,ucmp在端口发生故障时,无法对故障端口承载的数据流进行引流,故障端口承载的数据流会产生丢包现象。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:在端口发生故障时,如何将故障端口所承载的数据流,按照带宽分担要求分配至剩余可用的端口。本发明无论是在ecmp还是ucmp场景,均能够按照对应的带宽分担要求分配数据流,分配后的端口的数据流量分担比例误差可忽略不计。

为达到以上目的,本发明提供的基于自定义模板的按照带宽分担数据流量的方法,包括以下步骤:创建与网元所有的使用端口情形对应的端口分流模板,端口分流模板中包括网元的端口信息、以及每个端口关联的成员信息;每个端口关联的成员数量的比例,与每个端口的带宽比例相同;进行数据分流时,根据与网元的使用端口情形对应的端口分流模板,将数据流分配至对应成员所属的端口。

在上述技术方案的基础上,该方法具体包括以下流程:

s1:创建端口分流模板,每一份端口分流模板的端口信息,对应一种网元的使用端口情形,所有创建的端口分流模板对应网元所有的使用端口情形,转到s2;

s2:将与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口信息后,将数据流分配至该端口。

在上述技术方案的基础上,s1中创建1份端口分流模板的流程包括:在端口分流模板中添加端口信息,以及每个端口的成员数量,每个端口的成员数量的比例,与每个端口的带宽比例相同;根据每个端口的成员数量,按照端口信息的排列顺序,将网元支持的所有成员依次循环关联管理至对应的端口。

在上述技术方案的基础上,s2的流程包括:网元初始化后,将与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口;网元的端口发生故障后,将与网元剩余的可用端口对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口。

在上述技术方案的基础上,s2中所述确定数据流对应的成员的流程包括:根据数据流的五元组进行哈希计算后,得到五元组哈希值;根据五元组哈希值对s取模后,得到指向成员的偏移值,将端口分流模板中与偏移值对应的成员,作为数据流对应的成员。

本发明提供的基于自定义模板的按照带宽分担数据流量的系统,包括模板创建模块和数据分流模块;

模板创建模块用于:创建与网元所有的使用端口情形对应的端口分流模板,端口分流模板中包括网元的端口信息、以及每个端口关联的成员信息;每个端口关联的成员数量的比例,与每个端口的带宽比例相同;

数据分流模块用于:进行数据分流时,根据模板创建模块中与网元的使用端口情形对应的端口分流模板,将数据流分配至对应成员所属的端口。

在上述技术方案的基础上,所述模板创建模块的工作流程包括:创建端口分流模板,每一份端口分流模板的端口信息,对应一种网元的使用端口情形,所有创建的端口分流模板对应网元所有的使用端口情形;所述数据分流模块的工作流程包括:将模板创建模块中与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口信息后,将数据流分配至该端口。

在上述技术方案的基础上,所述模板创建模块创建1份端口分流模板的流程包括:在端口分流模板中添加端口信息,以及每个端口的成员数量,每个端口的成员数量的比例,与每个端口的带宽比例相同;根据每个端口的成员数量,按照端口信息的排列顺序,将网元支持的所有成员依次循环关联管理至对应的端口。

在上述技术方案的基础上,所述数据分流模块的工作流程具体包括:网元初始化后,将模板创建模块中与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口;网元的端口发生故障后,将模板创建模块中与网元剩余的可用端口对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口。

在上述技术方案的基础上,所述数据分流模块确定数据流对应的成员的工作流程包括:根据数据流的五元组进行哈希计算后,得到五元组哈希值;根据五元组哈希值对s取模后,得到指向成员的偏移值,将端口分流模板中与偏移值对应的成员,作为数据流对应的成员。

与现有技术相比,本发明的优点在于:

参见本发明的方法可知,本发明在进行数据分流前,自定义了包含不同端口信息、以及每个端口对应的成员信息的端口分流模板;在此基础上,本发明能够根据与网元的使用端口情形对应的端口分流模板,将接收的数据流分配至对应的端口。有鉴于此,本发明在网元的端口发生故障时,能够根据端口成员比例与端口带宽比例相同的端口分流模板,将故障端口所承载的数据流,按照带宽分担要求分配至剩余可用的端口。

附图说明

图1为现有技术中ecmp场景的端口故障前的配置示意图;

图2为现有技术中ecmp场景的端口故障后的配置示意图;

图3为本发明实施例五中端口数量为4的端口分流模板的配置示意图;

图4为本发明实施例五中端口数量为3的端口分流模板的配置示意图;

图5为本发明实施例五中ecmp场景的端口故障前的配置示意图;

图6本发明实施例五中ecmp场景的端口故障后的配置示意图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

本发明实施例中的基于自定义模板的按照带宽分担数据流量的方法,包括以下步骤:创建与网元所有的使用端口情形对应的端口分流模板,端口分流模板中包括网元的端口信息、以及每个端口关联的网元支持的成员信息;每个端口关联的成员数量的比例,与每个端口的带宽比例相同;需要进行数据分流时,根据与网元的使用端口情形对应的端口分流模板,将数据流分配至对应成员所属的端口。

由此可知,本发明在进行数据分流前,自定义了包含不同端口信息、以及每个端口关联的成员信息的端口分流模板;在此基础上,本发明能够根据与网元剩余的使用端口对应的端口分流模板,将接收的数据流分配至对应的端口。有鉴于此,本发明在网元的端口发生故障时,能够根据端口成员比例与端口带宽比例相同的端口分流模板,将故障端口所承载的数据流,按照带宽分担要求分配至剩余可用的端口。

下面通过六个实施例说明本发明的方法。

实施例一:

本发明实施例中的基于自定义模板的按照带宽分担数据流量的方法,具体包括以下流程:

s1:创建端口分流模板,每一份端口分流模板的端口信息,对应一种网元的使用端口情形,所有创建的端口分流模板对应网元所有的使用端口情形,转到s2。

s2:将与网元的使用端口情形对应的端口分流模板作为当前模板(即模板中的端口信息和数量均与网元的使用端口相同),接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口信息后,将数据流分配至该端口。

实施例二:

在实施例一的基础上,s1中创建1份端口分流模板的流程包括:在端口分流模板中添加端口信息,以及每个端口的成员数量,每个端口的成员数量的比例,与每个端口的带宽比例相同;根据每个端口的成员数量,按照端口信息的排列顺序,将网元支持的所有成员依次循环关联管理至对应的端口。

实施例三:

在实施例一的基础上,s2的流程包括:网元初始化后,将与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口;监测到网元的端口发生故障后,将与网元剩余的可用端口对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口。

实施例四:

在实施例一的基础上,端口分流模板中的成员信息为成员id,网元支持的所有成员的成员id为1至s,s为网元支持的所有成员数(即最大成员数);s2中确定数据流对应的成员的流程包括:根据数据流的五元组(源ip地址、源端口、目的ip地址、目的端口和传输层协议)进行哈希计算后,得到五元组哈希值;根据五元组哈希值对s取模后,得到指向成员的偏移值,将端口分流模板中与偏移值对应的成员(即与偏移值相同的成员id),作为数据流对应的成员。

由此可知,本发明在接收数据流时,根据数据流的五元组来确定对应的成员和分配端口,进而保证了同一个用户的所有数据流均由1个端口发出。

实施例五:本发明应用于ecmp场景,该场景的网元的使用端口为4个,每个端口的带宽比例为1:1:1:1,网元支持的最大成员数为256个。

在该场景下,基于自定义模板的按照带宽分担数据流量的方法的步骤为:

该场景下网元的使用端口情形应该为从单独1个端口使用,到4个端口一起使用,具体数量为:c(4,1)+c(4,2)+c(4,3)+c(4,4)。但是,由于ecmp场景下每个端口的带宽比例相同,因此为了简化模板的数量,可以认为网元的使用端口情形与端口数量相同,即4种。故创建4份端口数量为1至4的端口分流模板,将网元支持256个成员,以成员id(1至256)作为成员信息的方式,依次循环关联管理至对应的端口。

具体为:

参见图3所示,端口数量为4的端口分流模板中,成员1关联至端口1,成员2关联至端口2,成员3关联至端口3,成员4关联至端口4,依次循环关联;每个端口关联的成员数量相同(具体为256/4=64个)。

参见图4所示,端口数量为3的端口分流模板中,成员1关联至端口1,成员2关联至端口2,成员3关联至端口3,成员4关联至端口1,依次循环关联;端口1的关联的成员数量(86个),比端口2和3(85个)都多1个。

参见图5所示,网元初始化后,正常使用的端口数量为4(端口1至4),使用端口数量为4的端口分流模板作为当前模板。接收数据流后,根据数据流的五元组进行哈希计算后,得到五元组哈希值;根据五元组哈希值对256取模后,得到指向成员的偏移值2,在端口分流模板中查找到成员id为2所属的端口为2,则将数据流分配至端口2。

参见图6所示,监测到网元的端口4发生故障后,网元正常使用的端口数量为3(端口1至3),使用端口数量为3的端口分流模板作为当前模板。接收数据流后,根据数据流的五元组进行哈希计算后,得到五元组哈希值;根据五元组哈希值对256取模后,得到指向成员的偏移值4,在端口分流模板中查找到成员id为4所属的端口为1,则将数据流分配至端口1。

当数据流的样本空间足够大时,可以认为取模后的偏移值在网元支持的所有成员数量之间均匀分布(1~256);端口数量为3时,要求的带宽比例为1:1:1,网元支持的所有成员出现在每个端口中的次数为85、85和86,进而可以得出理论数据流量分担比例误差为分担误差值为1/3-85/256≈0.1%。

由此可知,与现有技术中将故障端口承载的数据流,全部倒换至1个已经使用的端口的ecmp场景相比,因为本发明与ecmp对应的端口分流模板中每个端口对应的成员数量近乎相同(若最大成员无法整除端口数量,则不同端口的数量会多一个或者少一个),所以本发明能够将故障端口承载的数据流平均分配至剩余可用的端口,进而避免了1个端口因数据流量急剧增大而造成数据堵塞的情况。与此同时,经本发明分配后的数据流量分担比例误差为0.1%,该误差基本上可忽略不计(可以认为此时基本近似均匀平担),远远小于现有ecmp场景中的16.7%,完全能够满足用户的要求。

实施例六:本发明应用于ucmp场景,该场景的网元的使用端口为3个:端口1为10ge端口,端口2和3均为1ge端口,每个端口的带宽比例为10:1:1,网元支持的最大成员数为256个。

由于ecmp场景下每个端口的带宽比例会不同,因此端口分流模板的数量必须与网元的使用端口情形相同,具体数量为:c(3,1)+c(3,2)+c(3,3)=7。即创建7份端口分流模板,每份模板与一种使用端口情形对应;将网元支持256个成员,以成员id(1至256)作为成员信息的方式,按照每个端口的成员数量依次循环关联管理至对应的端口。参见图6所示,包含端口1至3的端口分流模板中,3个端口的成员数量比例为10:1:1(端口1的比例为10,端口2和3的比例为1),此时成员1至10关联至端口1,成员11关联至端口2,成员12关联至端口3,依次循环关联。

网元初始化后,获取包含端口1至3的端口分流模板作为当前模板。接收数据流后,根据数据流的五元组进行哈希计算后,得到五元组哈希值;根据五元组哈希值对256取模后,得到指向成员的偏移值1,在端口分流模板中查找到成员id为1所属的端口为1,则将数据流分配至端口1。

监测到网元的端口3发生故障后,网元正常使用的端口为端口1和2,此时使用包含端口1和2的端口分流模板接收后续数据流。

由此可知,本实施例当流的样本空间足够大时,可以认为取模后的偏移值在网元支持的所有成员数量之间均匀分布(1~256);端口数量为3时,要求的带宽比例为10:1:1,网元支持的所有成员出现每个端口中的次数为214、21和21,进而可以得出端口1的理论数据流量分担比例误差为分担误差值为214/256-10/12≈0.2%。该误差基本上可忽略不计。因此,本发明应用在ucmp场景时,能够在端口发生故障时按照带宽分担要求分配至剩余可用的端口;进而实现了对故障端口承载的数据流进行引流,故障端口承载的数据流不会产生丢包现象。

本发明实施例中的基于自定义模板的按照带宽分担数据流量的系统,包括模板创建模块和数据分流模块;

模板创建模块用于:创建与网元所有的使用端口情形对应的端口分流模板,端口分流模板中包括网元的端口信息、以及每个端口关联的成员信息;每个端口关联的成员数量的比例,与每个端口的带宽比例相同;

数据分流模块用于:进行数据分流时,根据模板创建模块中与网元的使用端口情形对应的端口分流模板,将数据流分配至对应成员所属的端口。

模板创建模块的工作流程包括:创建端口分流模板,每一份端口分流模板的端口信息,对应一种网元的使用端口情形,所有创建的端口分流模板对应网元所有的使用端口情形;创建1份端口分流模板的流程包括:在端口分流模板中添加端口信息,以及每个端口的成员数量,每个端口的成员数量的比例,与每个端口的带宽比例相同;根据每个端口的成员数量,按照端口信息的排列顺序,将网元支持的所有成员依次循环关联管理至对应的端口。

数据分流模块的工作流程包括:将模板创建模块中与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口信息后,将数据流分配至该端口;具体为网元初始化后,将模板创建模块中与网元的使用端口情形对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口;网元的端口发生故障后,将模板创建模块中与网元剩余的可用端口对应的端口分流模板作为当前模板,接收数据流后,确定数据流对应的成员,在当前模板中确定成员所属的端口后,将数据流分配至该端口。

数据分流模块确定数据流对应的成员的工作流程包括:根据数据流的五元组进行哈希计算后,得到五元组哈希值;根据五元组哈希值对s取模后,得到指向成员的偏移值,将端口分流模板中与偏移值对应的成员,作为数据流对应的成员。

需要说明的是:本发明实施例提供的系统在进行模块间通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1