实现加权多路径的方法及系统与流程

文档序号:19247689发布日期:2019-11-27 19:49阅读:313来源:国知局
本发明涉及分组交换领域,具体是涉及一种实现加权多路径的方法及系统。
背景技术
::当今,各类业务日驱ip化和网络化,用户对网络的要求正在达到一个新的水平。随之而来也带来了对网络的新的要求,即减少对不同位置之间单一链路依赖的风险。但是,在全网中建立全面冗余的广域网是非常奢侈的选择。因此,如何有效地利用链路,部署流量策略,实现多路径选择,一直是网络建设考虑的问题。ecmp(equal-costmultipath,等价多路径)存在多条不同链路到达同一目的地址的网络环境中,如果使用传统的路由技术,发往该目的地址的数据包只能利用其中的一条链路,其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间,而等价多路径路由协议可以在该网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。ecmp最大的特点是实现了等价情况下,多路径负载均衡和链路备份的目的,在静态路由和ospf(openshortestpathfirst,开放式最短路径优先)中,基本上都支持ecmp功能。参见图1所示,传统ecmp的实现过程为:对于输入的数据包,进行包解析,提取关键字段;根据配置,对数据包中的相关敏感域进行hash计算,根据hash计算得到的值,对原始转发行为进行修改;根据修改后的转发行为,确定出端口。但是,实际情况是,各路径的带宽、时延和可靠性等不一样,将cost认可成相等,不能很好地利用带宽,尤其在路径间差异大时,效果会非常不理想。例如,路由器有两个出口、两条路径,一条路径的带宽是10g,另一条路径的带宽是1g,如果部署ecmp,则网络总带宽只能达到2g的利用率。因此,传统ecmp无法充分利用网络带宽。为了解决这个问题,出现了wcmp(weight-costmultipath,加权多路径)技术,wcmp能够非常灵活地按照比例在链路上传递数据流量,一般是根据多条链路的出口带宽来决定路由的权重的。wcmp兼容ecmp,ecmp仅是wcmp的一种特例。在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:如何实现wcmp成为本领域亟待解决的技术问题。技术实现要素:本发明的目的是为了克服上述
背景技术
:的不足,提供一种实现加权多路径的方法及系统,能够方便灵活地实现wcmp的功能,灵活地分配数据业务,从而合理利用网络带宽。第一方面,提供一种实现加权多路径的方法,包括以下步骤:对数据包进行包解析,提取关键字段,进行hash计算;根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口。根据第一方面,在第一方面的第一种可能的实现方式中,所述根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口,包括以下步骤:对数据包进行协议处理时,同一个多路径组的数据得到相同的多路径id,根据多路径id得到对应的各条路径的可用流量比例分配情况及下一跳基址值;根据hash计算得到的值,得到相对应的转发行为调整值;根据得到的转发行为调整值,结合下一跳基址值,得到最终的下一跳值,从而得到最终的出端口。根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据多路径id得到对应的各条路径的可用流量分配比例情况及下一跳基址值,包括以下步骤:对数据包进行协议处理,获得其转发所在的wcmp组id;根据wcmp组id,查找wcmp表,获得该wcmp组的基址下一跳值及该wcmp组内所配置的各个端口的权重值区间。根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据hash计算得到的值,得到相对应的转发行为调整值,包括以下步骤:将hash计算得到的值与各个端口的权重值区间进行比较,获得hash值所处的区间分段编号n,将区间分段编号n作为wcmp组的转发行为调整值。根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据得到的转发行为调整值,结合下一跳基址值,得到最终的下一跳值,从而得到最终的出端口,包括以下步骤:将wcmp组的转发行为调整值加上该wcmp组的基址下一跳值,得到最终的下一跳值;根据最终的下一跳值,查找全局下一跳表,得到最终的出端口。第二方面,提供一种实现加权多路径的系统,包括:解析计算单元,用于:对数据包进行包解析,提取关键字段,进行hash计算;转发行为调整单元,用于:根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口。根据第二方面,在第二方面的第一种可能的实现方式中,所述转发行为调整单元具体用于:对数据包进行协议处理时,同一个多路径组的数据得到相同的多路径id,根据多路径id得到对应的各条路径的可用流量比例分配情况及下一跳基址值;根据hash计算得到的值,得到相对应的转发行为调整值;根据得到的转发行为调整值,结合下一跳基址值,得到最终的下一跳值,从而得到最终的出端口。根据第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述转发行为调整单元根据多路径id得到对应的各条路径的可用流量分配比例情况及下一跳基址值,包括以下步骤:对数据包进行协议处理,获得其转发所在的wcmp组id;根据wcmp组id,查找wcmp表,获得该wcmp组的基址下一跳值及该wcmp组内所配置的各个端口的权重值区间。根据第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述转发行为调整单元根据hash计算得到的值,得到相对应的转发行为调整值,包括以下步骤:将hash计算得到的值与各个端口的权重值区间进行比较,获得hash值所处的区间分段编号n,将区间分段编号n作为wcmp组的转发行为调整值。根据第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述转发行为调整单元根据得到的转发行为调整值,结合下一跳基址值,得到最终的下一跳值,从而得到最终的出端口,包括以下步骤:将wcmp组的转发行为调整值加上该wcmp组的基址下一跳值,得到最终的下一跳值;根据最终的下一跳值,查找全局下一跳表,得到最终的出端口。与现有技术相比,本发明的优点如下:本发明实施例根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口,能够方便灵活地实现wcmp的功能,灵活地分配数据业务,从而合理利用网络带宽。附图说明图1是传统ecmp的实现原理框图。图2是本发明实施例中实现加权多路径的基本原理框图。图3是本发明实施例中实现加权多路径的详细流程图。具体实施方式现在将详细参照本发明的具体实施例,在附图中例示了本发明的例子。尽管将结合具体实施例描述本发明,但将理解,不是想要将本发明限于所述的实施例。相反,想要覆盖由所附权利要求限定的在本发明的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。注意:接下来要介绍的示例仅是一个具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。参见图2所示,本发明实施例提供一种实现加权多路径的方法,包括以下步骤:对数据包进行包解析,提取关键字段,进行hash8计算;根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口。作为优选的实施方式,对数据包进行包解析,提取关键字段,进行hash计算,具体包括以下步骤:对于接收到的数据包,可以基于数据包的1个或数个域字段,将其划分为不同的数据流,并将用于区分数据流的关键字段提取出来;将提取出来的关键字段组合在一起,进行hash8计算,得到一个8比特的hash值。通过这种计算,能保证相同数据流的数据得到的hash值一定相同,从而保证其在相同的端口输出。作为优选的实施方式,根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口,具体包括以下步骤:对数据包进行相关的协议处理时,同一个多路径组的数据得到相同的多路径id,根据多路径id得到对应的各条路径的可用流量比例分配情况及下一跳基址值,根据hash计算得到的8比特的hash值,得到相对应的转发行为调整值;根据得到的转发行为调整值,结合下一跳基址值,得到最终的下一跳值,从而得到最终的出端口,数据包可以根据实际的出端口,来封装数据。通过上述方法,本发明实施例可以方便灵活地实现wcmp的功能,灵活地分配数据业务,从而合理利用网络带宽。作为优选的实施方式,实现加权多路径的方法,具体包括以下步骤:参见图3所示,对数据包进行包解析,确定包类型;根据解析的包类型,根据配置,提取关键的字段域,关键字段域可以包括但不限于以下字段:(1)二层封装字段:macda(mac目的地址)、macsa(mac源地址)、ethertype/length(以太网类型/长度域)、svlan、cvlan等;(2)三层封装字段:mplslabel(mpls标签值)、ipsa(ip源地址)、ipda(ip目的地址)、ipversion(ip版本号)、tos(服务类型)、flowlabel(流标签)、nextheader(下一跳头)等;(3)四层封装字段:源端口(sport)、目的端口(dport)等。将提取出来的关键字段域按顺序拼接起来,不关心的字段或没有的字段可以用全0来替代,对拼接后的数据进行hash8运算,得到一个8比特的hash值。通过这种方法,可以保证对于同一条流内的数据包,由于关键字段域值是相等的,因此计算得到的hash值一定相等,从而在进行后续处理时,一定会被分配到同一个端口上。对数据包进行相应的协议处理,获得其转发所在的wcmp组id(wcmp_groupid);相应的协议处理可以包含但不限于二层mac交换,三层ip路由、mpls标签交换、vpn上下话处理、隧道处理等;根据wcmp组id(wcmp_groupid),用于索引查找wcmp表(wcmptable),获得该wcmp组所对应的基址下一跳值(nexthop_base)及该wcmp组内所配置的各个出端口的权重值区间(最小值和最大值)。将计算得到的8比特的hash值,与查找得到该wcmp组所对应的各个端口的权重值区间进行比较,获得hash值所处的区间分段编号n,并将该区间分段编号n作为该wcmp组的转发行为调整值;将wcmp组内的转发行为调整值n加上该wcmp组的基址下一跳值nexthop_base,得到最终的下一跳值nexthop。根据最终的下一跳值nexthop,进行索引查找全局下一跳表nexthoptable,可以得到经过wcmp处理后对应的最终的出端口outport,并根据该出端口outport的封装配置信息,将数据包按照配置进行封装后转发出该出端口。本发明实施例还提供一种实现加权多路径的系统,包括解析计算单元和转发行为调整单元,其中:解析计算单元,用于:对数据包进行包解析,提取关键字段,进行hash计算;转发行为调整单元,用于:根据hash计算得到的值,基于各条路径的可用流量的分配比例情况,调整转发行为,确定出端口。作为优选的实施方式,解析计算单元对于接收到的数据包,可以基于数据包的1个或数个域字段,将其划分为不同的数据流,并将用于区分数据流的关键字段提取出来;将提取出来的关键字段组合在一起,进行hash8计算,得到一个8比特的hash值。通过这种计算,能保证相同数据流的数据得到的hash值一定相同,从而保证其在相同的端口输出。作为优选的实施方式,转发行为调整单元对数据包进行相关的协议处理时,同一个多路径组的数据得到相同的多路径id,根据多路径id得到对应的各条路径的可用流量比例分配情况及下一跳基址值,根据hash计算得到的8比特的hash值,得到相对应的转发行为调整值;根据得到的转发行为调整值,结合下一跳基址值,得到最终的下一跳值,从而得到最终的出端口,数据包可以根据实际的出端口,来封装数据。本发明实施例可以方便灵活地实现wcmp的功能,灵活地分配数据业务,从而合理利用网络带宽。作为优选的实施方式,参见图3所示,解析计算单元对数据包进行包解析,确定包类型;根据解析的包类型,根据配置,提取关键的字段域,关键字段域可以包括但不限于以下字段:(1)二层封装字段:macda(mac目的地址)、macsa(mac源地址)、ethertype/length(以太网类型/长度域)、svlan、cvlan等;(2)三层封装字段:mplslabel(mpls标签值)、ipsa(ip源地址)、ipda(ip目的地址)、ipversion(ip版本号)、tos(服务类型)、flowlabel(流标签)、nextheader(下一跳头)等;(3)四层封装字段:源端口(sport)、目的端口(dport)等。解析计算单元将提取出来的关键字段域按顺序拼接起来,不关心的字段或没有的字段可以用全0来替代,对拼接后的数据进行hash8运算,得到一个8比特的hash值。通过这种方法,可以保证对于同一条流内的数据包,由于关键字段域值是相等的,因此计算得到的hash值一定相等,从而在进行后续处理时,一定会被分配到同一个端口上。作为优选的实施方式,转发行为调整单元对数据包进行相应的协议处理,获得其转发所在的wcmp组id(wcmp_groupid);相应的协议处理可以包含但不限于二层mac交换,三层ip路由、mpls标签交换、vpn上下话处理、隧道处理等;根据wcmp组id(wcmp_groupid),用于索引查找wcmp表(wcmptable),获得该wcmp组所对应的基址下一跳值(nexthop_base)及该wcmp组内所配置的各个出端口的权重值区间(最小值和最大值)。转发行为调整单元将计算得到的8比特的hash值,与查找得到该wcmp组所对应的各个端口的权重值区间进行比较,获得hash值所处的区间分段编号n,并将该区间分段编号n作为该wcmp组的转发行为调整值;将wcmp组内的转发行为调整值加上该wcmp组的基址下一跳值nexthop_base,得到最终的下一跳值nexthop。转发行为调整单元根据最终的下一跳值nexthop,进行索引查找全局下一跳表nexthoptable,可以得到经过wcmp处理后对应的最终的出端口outport,并根据该出端口outport的封装配置信息,将数据包按照配置进行封装后转发出该出端口。注意:上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本发明的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本发明的效果,这种合并和组合而成的实施例也被包括在本发明中,在此不一一描述这种合并和组合。本发明实施例中提及的优点、优势、效果等仅是示例,而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,本发明实施例公开的上述具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明实施例必须采用上述具体的细节来实现。本发明实施例中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子,并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。本发明实施例所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。本发明实施例所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。本发明实施例中的步骤流程图以及以上方法描述仅作为例示性的例子,并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。另外,本发明各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本发明的概念来结合本文中的各个实施例中相关的部分步骤和部分装置,以构思新的实施例,而这些新的实施例也包括在本发明的范围内。本发明实施例中的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、asic(applicationspecificintegratedcircuit,专用集成电路)或处理器。在实际应用中,可以利用被设计用于执行上述功能的通用处理器、dsp(digitalsignalprocessor,数字信号处理器)、asic、fpga(fieldprogrammablegatearray,现场可编程门阵列)或cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合,来实现上述各个例示的逻辑块、模块和电路。其中,通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如dsp和微处理器的组合,多个微处理器、与dsp核协作的一个或多个微处理器或任何其他这样的配置。结合本发明实施例描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括ram(randomaccessmemory,随机存储器)、rom(read-onlymemory,只读存储器)、快闪存储器、eprom(electricallyprogrammableread-onlymemory,可擦除的可编程只读存储器)、eeprom(electrically-erasableprogrammableread-onlymemory,电可擦可编程只读存储器)、寄存器、硬碟、可移动碟、cd-rom(compactdiscread-onlymemory,紧凑型光盘只读储存器)等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。本发明实施例的方法包括用于实现上述的方法的一个或多个动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。本发明实施例中的功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为一个或多个指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(cd)、激光盘、光盘、dvd(digitalversatiledisc,数字多功能光盘)、软碟和蓝光盘,其中碟通过磁再现数据,而盘利用激光光学地再现数据。因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机程序产品可以包括包装的材料。本发明实施例中的软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、dsl(digitalsubscriberline,数字用户线路)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。此外,用于实现本发明实施例中的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此所述的方法的手段的传送。或者,在此所述的各种方法可以经由存储部件(例如ram、rom、诸如cd或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此所述的方法和技术提供给设备的任何其他适当的技术。其他例子和实现方式在本发明实施例和所附权利要求的范围和精神内。例如,由于软件的本质,以上所述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“a、b或c的至少一个”的列举意味着a或b或c,或ab或ac或bc,或abc(即a和b和c)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。本领域技术人员可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1