本发明涉及网络流量转发领域,尤其是涉及一种流量转发方法、装置、网络设备和计算机可读存储介质。
背景技术:
随着5g技术的不断发展,对网络设备转发处理流量的要求也随之提高。目前,当网络设备进行转发流量时,通常将网络中进入网络设备的流量按照特定负载均衡算法从该聚合组进行转发或丢弃,在进行流量转发时通常对网络流量进行均匀转发。但在实际应用中,一个聚合组中的多个成员口允许通过的最大带宽可能并不相同,将网络流量进行均分后转发,如果均分流量大于某个成员口的最大带宽,将会导致部分流量的丢失。
针对上述由于均分流量导致的部分流量的丢失,目前尚未提出有效的解决方案。
技术实现要素:
本发明的目的在于提供一种流量转发方法、装置、网络设备和计算机可读存储介质,缓解了网络流量在转发时的流量丢包的问题。
第一方面,实施例提供一种流量转发方法,所述方法包括:
当网络设备接收到网络流量时,判断所述网络流量的均分流量是否超过聚合组中某一成员口的最大带宽;其中,所述均分流量为将所述网络流量均匀转发时分配到每个所述成员口的流量;
如果是,基于所述聚合组中每个所述成员口的带宽比例分配目标权重;
根据所述目标权重对所述网络流量进行转发。
在可选的实施方式中,所述方法还包括:
周期性的检测聚合组中每个成员口的使用情况;所述聚合组中的所述成员口包括转发板卡的接口;所述使用情况包括cpu使用率;
如果存在所述cpu使用率超过指定阈值的所述转发板卡,重新分配所述目标权重。
在可选的实施方式中,在当网络设备接收到网络流量时,判断所述网络流量的均分流量是否超过聚合组中某一成员口的最大带宽的步骤,包括:
当网络设备接收到网络流量时,基于用户下发的规则判断所述网络流量的均分流量超过所述聚合组中某一所述成员口的最大带宽;所述用户下发的规则携带有所述聚合组的信息。
在可选的实施方式中,所述基于所述聚合组中每个所述成员口的带宽比例分配目标权重的步骤,包括:
基于所述聚合组中每个所述成员口的带宽比例按照预设算法分配所述目标权重。
在可选的实施方式中,所述预设算法包括哈希负载均衡算法;所述方法还包括:
根据所述哈希负载均衡算法计算得到的目标哈希值查询所述成员口的目的模块和目标接口;
将所述目标哈希值填入交换芯片,以便所述交换芯片对所述网络流量进行转发。
在可选的实施方式中,所述根据所述目标权重对所述网络流量进行转发的步骤,包括:
基于所述目标权重和每个所述成员口的板卡顺序对所述网络流量进行转发。
在可选的实施方式中,所述网络设备的接口包括电接口和光接口。
第二方面,实施例提供一种流量转发装置,所述装置包括:
判断模块,用于当网络设备接收到网络流量时,判断所述网络流量的均分流量是否超过聚合组中某一成员口的最大带宽;其中,所述均分流量为将所述网络流量均匀转发时分配到每个所述成员口的流量;
权重分配模块,用于如果是,基于所述聚合组中每个所述成员口的带宽比例分配目标权重;
流量转发模块,用于根据所述目标权重对所述网络流量进行转发。
第三方面,实施例提供一种网络设备,包括处理器和存储器;
所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现前述实施方式任一项所述的方法的步骤。
第四方面,实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行前述实施方式任一项所述的方法的步骤。
本发明提供的流量转发方法、装置、网络设备和计算机可读存储介质,当网络设备接收到网络流量时,判断网络流量的均分流量是否超过聚合组中某一成员口的最大带宽,其中,均分流量为将网络流量均匀转发时分配到每个成员口的流量,如果是,基于聚合组中每个成员口的带宽比例分配目标权重,并根据目标权重对网络流量进行转发。通过判断均分流量是否超过某一成员口的最大带宽,在超过时聚合组中每个成员口的带宽比例分配目标权重,并根据目标权重对网络流量进行转发,缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。因此,本发明实施例缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流量转发方法的流程示意图;
图2为本发明实施例提供的一种具体的流量转发方法的流程示意图;
图3为本发明实施例提供的一种流量转发装置的结构示意图;
图4为本发明实施例提供的一种网络设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
考虑到当前将网络流量进行均分后转发,如果均分流量大于某个成员口的最大带宽,将会导致部分流量的丢失,本发明实施例提供了一种流量转发方法、装置、网络设备和计算机可读存储介质,缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。
为便于理解,首先对本发明实施例提供的一种流量转发方法进行详细描述,参见如图1所示的一种流量转发方法的流程示意图,该方法主要包括如下步骤s102至步骤s106:
步骤s102:当网络设备接收到网络流量时,判断网络流量的均分流量是否超过聚合组中某一成员口的最大带宽。
网络设备通过网络设备接口接收到网络流量,网络设备接口通常是指指网络设备上外部可见的物理形态,诸如10/100/1000m电接口、1ge/10ge/100ge光接口等。网络流量的均分流量为将网络流量均匀转发时分配到每个成员口的流量,诸如,聚合组中包括4个物理接口,每个物理接口也可称为该聚合组的成员口,每个成员口允许通过的最大带宽分别为20g、10g、10g、20g,当网络流量为60gbps时,在均分流量时应该为每个物理口分配15g才能将网络流量进行完整转发,这时,存在15g的均分流量大于允许通过的最大带宽为10g的聚合组成员口,为了不造成流量的丢失,采用下述步骤s104进行权重分配。
步骤s104:如果是,基于聚合组中每个成员口的带宽比例分配目标权重。
在一种实施方式中,如果存在均分流量大于聚合组成员口允许通过的最大带宽,此时进行网络流量的均分再转发会造成部分流量的丢失,为了能够避免由于均分流量导致的流量丢失问题,基于聚合组中每个成员口的带宽比例分配目标权重,在实际应用中,聚合组中的成员口的允许通过的最大带不完全相同,因此,按照每个成员口的带宽比例分配目标权重,也即每个成员口分担的网络流量的权重。可以通过哈希负载均衡算法按照成员口的带宽比例将哈希值填满哈希格,从而完成目标权重的分配。
步骤s106:根据目标权重对网络流量进行转发。
在一种实施方式中,通过每个成员口分配的目标权重将网络流量进行转发,可以保证流量可以全部进行转发,不会造成流量的丢失。
本发明实施例提供的流量转发方法,当网络设备接收到网络流量时,判断网络流量的均分流量是否超过聚合组中某一成员口的最大带宽,其中,均分流量为将网络流量均匀转发时分配到每个成员口的流量,如果是,基于聚合组中每个成员口的带宽比例分配目标权重,并根据目标权重对网络流量进行转发。通过判断均分流量是否超过某一成员口的最大带宽,在超过时聚合组中每个成员口的带宽比例分配目标权重,并根据目标权重对网络流量进行转发,缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。因此,本发明实施例缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。
优选的,由于聚合组中每个成员口的板卡性能不同,为了减小性能较差的板卡的压力,还可以周期性的检测聚合组中每个成员口的使用情况,诸如板卡的cpu使用率,如果存在cpu使用率超过指定阈值的转发板卡,则重新分配目标权重。可选的,检测周期可以设置为0.5min、1min、2min等时间段,根据实际进入网络设备中的网络流量进行选择,诸如,当流量较多时,可以将周期设置较短,从而可以实时检查板卡的使用情况。
用户可以通过配置,将设备中板卡的多个物理口汇聚在一起,形成一个聚合组,在配置过程中可以指定该聚合组中物理口的权重值,默认是1。并且该配置支持端口复用,即相同的物理端口可以绑定到多个聚合组中。
在一种实施方式中,上述步骤s102可以包括:当网络设备接收到网络流量时,基于用户下发的规则判断网络流量的均分流量超过聚合组中某一成员口的最大带宽,其中,用户下发的规则携带有聚合组的信息,这样在接收进入设备的目标网络流量时,会将目标网络流量经聚合组中的成员中均匀转发,从而可以判断均分流量是否超过聚合组中成员口允许通过的最大带宽。
为了能够判断均分流量是否超过聚合组中成员口允许通过的最大带宽,可以运用哈希(hash)均衡负载算法,诸如,有0-31共32个聚合组,每个聚合组都有自己的hash值,其中hash值为10bit的0-1023范围的一个数字。若某个聚合组添加了3个物理接口,则会按0、1、2的顺序循环去填充1024个hash格,直到hash格填满为止。计算出hash值的方法包括以下5种,分别是按源ip地址、目的ip地址、源ip地址+目的ip地址、源ip地址+目的ip地址+源端口+目的端口和端口轮询这五种算法。
当选用前四种算法中的一种算法会算出一个数字,这个数字会落在0-1023某个hash格上,取到hash格上对应的值,用该值去查端口所对应的目的模块(module)和目的接口(port),fpga将该值填入交换芯片,交换芯片最终完成流量的转发。比如按源/目ip哈希分担的话,如果流经该聚合组的流量都集中在相同的源/目ip,则这些流量都会分到同一物理口,这样势必会出现成员口超负荷的情况,导致流量丢失,这时我们会动态调整hash算法为端口轮询,即进入的流量按端口数量进行均分,保证流量正常转发。诸如,当设备中含有4块板卡board1,board2,board3,board4,它们对应的最大流量转发带宽分别为40g、10g、10g、40g,其中g为gbps。这样会按照0、1、2、3的顺序循环填满1024个hash格,为了达到目标流量可以均分的从接口转出,需要目标流量小于接口最小带宽值,否则会造成流量的丢失。当进入设备的网络流量为40g时,根据端口轮询算法流量会从四个板卡均分出去,每个板卡都会转发10g的流量。但当进入设备的网络流量超过40g时,均分时则会超过10g板卡的最大带宽,此时则通过板卡的带宽比例进行目标权重的分配。
为便于理解,参见图2所示的一种具体的流量转发方法的流程示意图,以进入设备的网络流量为80g为例,板卡仍然为上述board1,board2,board3,board4,它们对应的最大流量转发带宽分别为40g、10g、10g、40g,此时均分流量已经超过接口最小带宽值了,那么就要用到权重来重新分配接口转发的比例,重新划分权重后,流量不会再均分出去,而是按比例进行转发。如让board1和board4的权重值为4,这样会按照0、0、0、0、1、2、3、3、3、3这样的顺序循环重新去填满1024个hash格,此时他们的比例关系变为4:1:1:4,这样board1和board4各转发32g,board2、board3各转发8g,从而在减少board2和board3的压力同时处理更多的流量。优选的,在按照带宽比例分配目标权重时,采用动态检测板卡cpu使用率,也即周期性检测板卡的cpu使用率,可以保证当性能差一些的板卡cpu使用率过高时,重新分配权重值,让转发性能强的板卡承担更多的流量转发,从而减少性能差的板卡的压力,达到动态调整流量转发的目的。
对于上述的流量转发方法,本发明实施例还提供一种流量转发装置,参见如图3所示的一种流量转发装置的结构示意图,该装置主要包括以下部分:
判断模块302,用于当网络设备接收到网络流量时,判断网络流量的均分流量是否超过聚合组中某一成员口的最大带宽;其中,均分流量为将网络流量均匀转发时分配到每个成员口的流量;
权重分配模块304,用于如果是,基于聚合组中每个成员口的带宽比例分配目标权重;
流量转发模块306,用于根据目标权重对网络流量进行转发。
本发明实施例提供的流量转发装置,当网络设备接收到网络流量时,判断网络流量的均分流量是否超过聚合组中某一成员口的最大带宽,其中,均分流量为将网络流量均匀转发时分配到每个成员口的流量,如果是,基于聚合组中每个成员口的带宽比例分配目标权重,并根据目标权重对网络流量进行转发。通过判断均分流量是否超过某一成员口的最大带宽,在超过时聚合组中每个成员口的带宽比例分配目标权重,并根据目标权重对网络流量进行转发,缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。因此,本发明实施例缓解了由于均分流量导致的部分流量丢失的问题,降低了由于板卡性能差异导致成员端口转发流量丢包的问题。
在一种实施方式中,上述装置还包括:周期检测模块,用于周期性的检测聚合组中每个成员口的使用情况;聚合组中的成员口包括转发板卡的接口;使用情况包括cpu使用率;如果存在cpu使用率超过指定阈值的转发板卡,重新分配目标权重。
在一种实施方式中,上述判断模块302,进一步用于当网络设备接收到网络流量时,基于用户下发的规则判断网络流量的均分流量超过聚合组中某一成员口的最大带宽;用户下发的规则携带有聚合组的信息。
在一种实施方式中,上述权重分配模块304,进一步用于基于聚合组中每个成员口的带宽比例按照预设算法分配目标权重。
在一种实施方式中,预设算法包括哈希负载均衡算法;上述装置还包括:查询模块,用于根据哈希负载均衡算法计算得到的目标哈希值查询成员口的目的模块和目标接口;填值模块,用于将目标哈希值填入交换芯片,以便交换芯片对网络流量进行转发。
在一种实施方式中,上述流量转发模块306,进一步用于基于目标权重和每个成员口的板卡顺序对网络流量进行转发。
在一种实施方式中,网络设备的接口包括电接口和光接口。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
该设备为一种网络设备,具体的,该网络设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
图4为本发明实施例提供的一种网络设备的结构示意图,该网络设备100包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的流量转发方法、装置、网络设备和计算机可读存储介质的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。