CN111193668B - 流量分配方法、装置、计算机设备及存储介质 - Google Patents
流量分配方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111193668B CN111193668B CN201911258501.9A CN201911258501A CN111193668B CN 111193668 B CN111193668 B CN 111193668B CN 201911258501 A CN201911258501 A CN 201911258501A CN 111193668 B CN111193668 B CN 111193668B
- Authority
- CN
- China
- Prior art keywords
- hash value
- queues
- data packet
- queue
- value
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种流量分配方法、装置、计算机设备及存储介质,包括下述步骤:获取待处理的网络流量数据包的接收端调节值;对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列并将所述网络流量数据包加入到所述目标队列中,其中,所述散列值的数值在所述多个队列的个数的数值范围内。通过对接收端调解值进行散列运算得到网络数据包的散列值,并利用散列值在预先设置的多个队列中查找目标队列,可以确保网络流量数据包被均匀的分配多个队列中,避免了处理器核的过度负载或者空闲导致的系统处理性能下降的问题。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其是一种流量分配方法、装置、计算机设备及存储介质。
背景技术
RSS(receive side scaling)是由微软提出的一种负载分流方法,通过计算网络数据报文中的网络层和传输层二/三/四元组HASH值,取HASH值的最低有效位(LSB)用于索引间接寻址表RETA(Redirection Table),间接寻址表RETA中的保存索引值用于分配数据报文到不同的CPU CORE接收处理。现阶段RSS基本已有硬件实现,通过这项技术能够将网络流量分载到多个CPU CORE上,降低操作系统单个CPU的占用率。
为实现数据面网络流量高性能处理,软转发数据面通常会采用多核并行化处理,把流量处理分为三个阶段,流量接收流程、流量处理流程、流量发送流程,流量处理流程会消耗大量CPU计算资源,因此需要加速此流程的报文处理。加速报文处理需要开启网卡RSS功能,并配置网卡多队列模式。目前主流网卡支持硬件队列最大数目不同,如82571系列网卡RX和TX支持配置2个硬件队列,82599EB系列网卡RX和TX可以支持配置128个硬件队列。
然而,发明人发现,每张网卡的每个硬件队列对应一个处理CORE,当网卡硬件队列数少,而CPU CORE很多时,空闲cpu资源太多;如果设备既有队列数多的网卡NIC_A又有队列数少的网卡NIC_B,此时流量处理占用的CORE数目以NIC_A为标准,这时会出现NIC_A和NIC_B的流量被hash到相同的CORE,导致这些CORE负载加重,而有些CORE仅仅处理NIC_A的流量,流量无法被均匀的hash到不同的CPU CORE上,从而导致系统整机性能无法提升。而且实验中还发现,当网卡硬件队列数目配置过多时,系统性能反而会出现下降。因此,上述情形会导致需要解决网卡硬件队列数目与并行化处理CORE数目不匹配,流量无法被均匀hash到多个CORE,导致系统性能下降问题。
发明内容
本发明实施例提供一种流量分配方法、装置、计算机设备及存储介质。
为解决上述技术问题,本发明创造的实施例采用的一个技术方案是:提供一种流量分配方法,包括:
获取待处理的网络流量数据包的接收端调节值;
对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;
根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列并将所述网络流量数据包加入到所述目标队列中,其中,所述散列值的数值在所述多个队列的个数的数值范围内。
可选地,所述根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列之前,还包括:
获取用于配置所述多个队列的配置文件,其中,所述配置文件包括用于分配所述网络流量数据包的网卡中处理器的个数,所述处理器为多个;
解析所述配置文件并按照所述处理器的个数设置所述多个队列。
可选地,所述根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列,包括:
对所述配置文件进行解析获取间接寻址表;
从所述间接寻址表中查找与所述散列值具有映射关系的队列识别码;
在所述预先设置的多个队列中查找所述队列识别码所表征的目标队列。
可选地,所述对所述配置文件进行解析获取间接寻址表之前,还包括:
获取所述网络流量数据包的寻址算法;
通过所述寻址算法对所述散列值进行计算得到所述队列识别码;
将所述散列值与所述队列识别码进行映射得到所述间接寻址表。
可选地,所述散列运算的公式为:f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n,其中,h为对所述接收端调解值进行取余运算得到的散列值,m为网卡中处理器个数,n为所述预先设置的多个队列的个数。
可选地,所述取余运算的公式为:h=rss&(m*m-1),其中,rss为所述接收端调节值。
可选地,所述将所述网络流量数据包加入到所述目标队列中之后,还包括:
从所述目标队列中提取待处理的网络流量数据包;
对所述待处理的网络流量数据包进行解析并在解析完成后插入到发送队列中以发送给物理线路。
为解决上述技术问题,本发明实施例还提供一种流量分配装置,包括:
获取模块,用于获取待处理的网络流量数据包的接收端调节值;
处理模块,用于对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;
执行模块,用于根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列并将所述网络流量数据包加入到所述目标队列中,其中,所述散列值的数值在所述多个队列的个数的数值范围内。
可选地,还包括:第一获取子模块,用于获取用于配置所述多个队列的配置文件,其中,所述配置文件包括用于分配所述网络流量数据包的网卡中处理器的个数,所述处理器为多个;
第一处理子模块,用于解析所述配置文件并按照所述处理器的个数设置所述多个队列。
可选地,所述处理模块包括:
第二获取子模块,用于对所述配置文件进行解析获取间接寻址表;
第二处理子模块,用于从所述间接寻址表中查找与所述散列值具有映射关系的队列识别码;
第三处理子模块,用于在所述预先设置的多个队列中查找所述队列识别码所表征的目标队列。
可选地,还包括:
第三获取子模块,用于获取所述网络流量数据包的寻址算法;
第四处理子模块,用于通过所述寻址算法对所述散列值进行计算得到所述队列识别码;
第五处理子模块,用于将所述散列值与所述队列识别码进行映射得到所述间接寻址表。
可选地,所述散列运算的公式为:f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n,其中,h为对所述接收端调解值进行取余运算得到的散列值,m为网卡中处理器个数,n为所述预先设置的多个队列的个数。
可选地,所述取余运算的公式为:h=rss&(m*m-1),其中,rss为所述接收端调节值。
可选地,还包括:
第四获取子模块,用于从所述目标队列中提取待处理的网络流量数据包;
第六处理子模块,用于对所述待处理的网络流量数据包进行解析并在解析完成后插入到发送队列中以发送给物理线路。
为解决上述技术问题,本发明实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述流量分配方法的步骤。
为解决上述技术问题,本发明实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述流量分配方法的步骤。
本发明实施例的有益效果是:通过对接收端调解值进行散列运算得到网络数据包的散列值,并利用散列值在预先设置的多个队列中查找目标队列,由于散列值中的数值在队列的个数的数值范围内,如此,对每个网络流量数据包计算得到的散列值均可以在多个队列中查找到与之对应的目标队列,从而确保了网络流量数据包被均匀的分配多个队列中,避免了处理器核的过度负载或者空闲导致的系统处理性能下降的问题。
另外,通过寻址算法对散列值进行计算得到队列识别码并将散列值与队列识别码进行映射得到间接寻址表,间接寻址表的生成可以确保每个计算得到的散列值均可在间接寻址表中查找到对应的队列识别码,便于将网络流量数据包分配到该队列识别码所表征的队列中。
另外,散列运算公式f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n是对接收端调节值rss取余后的散列值进行进一步的散列运算,通过该散列运算公式对取余后的散列值计算得到的数值与队列的识别码一致,即每一个得到的数值均可以作为队列识别码(例如队列序号)去查找目标队列使流量尽可能的均匀分配。
另外,取余运算公式为h=rss&(m*m-1),通过取余运算截取接收端调解值的部分字段,一个实施例中,以处理器核的个数作为最大值对接收端调解值进行取余,可以确保取得的散列值足够小,在队列的个数范围之内,以便于对将网络流量数据包按照队列数进行分配。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本实施例提供的一种流量分配方法的基本流程示意图;
图2为本发明实施例提供一种生成预先设置的多个队列的方法的基本流程示意图;
图3为本发明实施例提供的一种根据散列值在预先设置的多个队列中查找散列值对应的目标队列的方法的基本流程示意图;
图4为本发明实施例提供的一种间接寻址表的生成方法的基本流程示意图;
图5为本发明实施例提供的一种流量分配方法的基本流程示意图;
图6为本发明实施例提供的一种流量分配装置基本结构框图;
图7为本发明实施例提供的计算机设备基本结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本实施方式中的客户终端即为上述的终端。本发明实施例提供一种流量分配方法,请参阅图1,图1为本实施例提供的一种流量分配方法的基本流程示意图。
具体地,如图1所示,流量分配方法包括下述步骤:
S1100、获取待处理的网络流量数据包的接收端调节值;
接收端调解(RSS,receive side scaling)是一种负载分流方法,即通过计算网络数据包,即报文的网络层和传输层中的二、三或四元组数据的hash值,并取hash值得最低有效位(LSB)作为索引值在RSS的间接寻址表RETA(Redirection Table)中查找队列编号,并将报文插入到该队列编号所表示的队列中。其中,RSS间接寻址表中记载有hash最低有效位LSB与队列编号的映射关系。
本实施例中,在网卡通过系统的内存和处理器配置网卡队列数以及配置hashkey和RSS需要解析的数据包字段,例如,源IP、目的IP、源端口和目的端口等,如此网卡通过预置的RSS算法对网络数据包进行计算得到接收端调解值。
S1200、对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;
在实际应用中,为了实现数据面网络流量高性能处理,通常采用多核并行化处理,通常网卡中每个队列对应一个处理器核。但是,目前的网卡支持硬件处理的队列的数目各不相同,一般会出现如下问题:当网卡队列少,处理器核较多时,会出现大量空闲的处理器核造成资源浪费;当网卡中既有队列数目较多的第一网卡又有队列数较少的第二网卡且流量处理占用的处理器核数目以较多的第一网卡为标准时会出现所有的流量均被分配到第一网卡的队列中,造成第一网卡的负载加重而第二网卡被闲置的问题。
本实施例中,为了将网络数据包均匀的分配到每个队列中,对接收端调解值进行散列运算,例如进行二次hash计算,得到网络数据包的哈希值,并利用哈希值对网络数据包进行均匀分配。
在一个实施方式中,由于接收端调解值为一个较大的值,为了减少数据计算量以及便捷的分配流量,可以对接收端调解值进行取余运算,一个实施例中,取余运算公式可以为h=rss&(m*m-1),其中,m为系统配置的所有队列的个数,rss为接收端调解值,m为处理器核的个数。通过取余运算截取接收端调解值的部分字段,一个实施例中,以处理器核的个数作为最大值对接收端调解值进行取余,可以确保取得的散列值足够小,在队列的个数范围之内,以便于对将网络流量数据包按照队列数进行分配。
S1300、根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列并将所述网络流量数据包加入到所述目标队列中,其中,所述散列值的数值在所述多个队列的个数的数值范围内。
本实施例中,预先设置的多个队列是网卡系统在初始化时根据系统硬件配置的内存和cpu生成配置文件,并对配置文件进行解析从而生成多个队列,其中,多个队列为支持不同队列数目的网卡所配置的多个队列,该多个网卡包含支持较多队列的网卡,也包含支持较少队列的网卡,具体不作限定。
在本实施例中,预先设置有间接寻址表,其中,间接寻址表中包括散列值与队列识别码的映射关系,队列识别码用于识别网卡中预先设置的队列。本实施例通过散列值在间接寻址表中查找与散列值具有映射关系的队列识别码,并在多个队列中查找该队列识别码表征的目标队列,以及将网络数据包插入到目标队列中。
在一些实施方式中,可以利用寻址算法对散列值进行计算得到队列识别码,该寻址算法可以为:f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n,其中,h为散列值,m为网卡中处理器个数,n为所述预先设置的多个队列的个数,本实施例中的寻址算法与前述的散列运算的公式相同。
上述实施例方式中,通过对接收端调解值进行散列运算得到网络数据包的散列值,并利用散列值在预先设置的多个队列中查找目标队列,可以确保网络流量数据包被均匀的分配多个队列中,避免了处理器核的过度负载或者空闲导致的系统处理性能下降的问题。
一个流量分配方法的实施例,如图2所示,图2为本发明实施例提供一种生成预先设置的多个队列的方法的基本流程示意图。
具体地,如图2所示,步骤S1300之前还包括下述步骤:
S1301、获取用于配置所述多个队列的配置文件,其中,所述配置文件包括用于分配所述网络流量数据包的网卡中处理器的个数,所述处理器为多个;
S1302、解析所述配置文件并按照所述处理器的个数设置所述多个队列。
本实施例中,在初始化过程中软件根据系统硬件配置内存和处理器来生成配置文件,其中,配置文件为用户在使用软件时,系统为用户所要加载所需环境的设置和文件的集合。本实施例中,为配置多个队列,配置文件中记载了网卡中处理器核的个数,每个处理器核分配的内存等信息。需要说明的是,本实施例中的网卡包含了多个支持不同队列数目的网卡,因此,为了提高流量并行处理的能力,可以在配置文件中配置网卡支持的最大数目的队列。
本实施例中,可以从系统中直接提取配置文件,并提取配置文件中队列参数,例如,队列数目,在解析配置文件后对软件队列进行配置,在其它实施方式中在配置软件队列后生成重定向表配置网卡RSS。
一个流量分配方法实施例,如图3所示,图3为本发明实施例提供的一种根据散列值在预先设置的多个队列中查找散列值对应的目标队列的方法的基本流程示意图。
具体地,如图3所示,步骤S1300包括下述步骤:
S1310、对所述配置文件进行解析获取间接寻址表;
S1320、从所述间接寻址表中查找与所述散列值具有映射关系的队列识别码;
本实施例中,间接寻址表记载有散列值与预先设置的多个队列的队列识别码的列表。需要说明的是,间接寻址表在系统初始化的过程中根据配置文件中所设置的寻址算法以及对接收端调解值进行散列运算后的散列值来进行映射从而生成间接寻址表。
本实施例中,在接收到网络流量数据包后对网络流量数据包的包头进行解析得到接收端调解值,进而根据配置的散列算法得到网络流量数据包的散列值,以散列值作为索引在间接寻址表中查找与该散列值具有映射关系的队列识别码。
举例说明,网卡驱动在收到网络流量数据包后,从网卡硬件队列中读取数据得到该网络流量数据包的接收端调解值RSS,对RSS进行散列运算,通过hash&(m*(m-1))作为索引在间接寻址表中查找得到目标队列的队列编号。
S1330、在所述预先设置的多个队列中查找所述队列识别码所表征的目标队列。
本实施例中,每个队列均设置有队列识别码,例如,队列编号。按照队列编号在多个队列中查找该队列编号所表示的目标队列。本实施例中,通过上述方法轮训所有队列,处理所有的网络流量数据包,并查找到对该网络流量数据包进行处理的队列,完成流量的分配。
该实施例中,为了均匀分配,在设置间接寻址表时,可以参照配置的所有的队列的数目来设置间接寻址表中的队列识别码,确保队列识别码的个数与队列的数目可以匹配一致。
一个流量分配方法的实施例,如图4所示,图4为本发明实施例提供的一种间接寻址表的生成方法的基本流程示意图。
具体地,如图4所示,步骤S1310之前还包括下述步骤:
S1311、获取所述网络流量数据包的寻址算法;
本实施例中,可从配置文件中提取寻址算法。该过程可以在系统初始化的时候进行。需要说明的是,本实施例中的寻址算法与散列运算的公式相同。
S1312、通过所述寻址算法对所述散列值进行计算得到所述队列识别码;
本实施例中,寻址算法为对网络流量数据包的接收端调解值进行散列运算后得到的散列值进行寻址运算得到队列识别码的运算方法。该方法为了确保将网络流量数据包均匀分配到每一个队列中,即不会出现队列空闲或负载,本实施例提供的寻址算法为:f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n,其中,h为对接收端调解值进行取余运算得到的散列值,m为网卡中处理器个数,n为所述预先设置的多个队列的个数,散列算法为:h=rss&(m*m-1)。其中,在物理网卡中配置的硬件队列数目为1,系统的处理器核的数目为m,m的值为2的幂次方,系统所配置的软件队列数目为n,n<m,软件重定向表的大小为:m*m。
本实施例中,取余运算公式h=rss&(m*m-1)是对接收端调节值rss进行取余运算,其中,可以按照队列数目进行取余,例如,队列数目为10,则进行取余后得到的散列值在0-10的范围内。该算法可以确保得到的散列值的数值足够小,在处理器所支持的队列个数的最大范围之内。
本实施例通过寻址算法即散列运算公式f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n对散列值计算得到的队列识别码的映射过程描述如下:
先对h按照处理器核的数目m做一次hash,h1=h%/m,再对一次hash的结果h1按照队列数n做二次hash,其中,一次hash的结果h1可以转换为h1=x*n+y,x>=0,n>y>=0。x*n部分可以均匀hash到n个队列中,为保证y也被均匀hash到n个队列,把y转换为y=y+h/m,保证相同的y被hash到不同的队列中进而使其均匀分配。
该算法表达式,可以用如下伪代码表示:
//一次hash值
h1=h%/m
//一次hash值可以直接hash到n个队列
If(m/n*n-h1>=0)
{
F(h)=h%/m/%n
}
//一次hash值需要进行转换后计算二次hash
else
{
F(h)=(h1-m/n*n+h/m)%n
}
S1313、将所述散列值与所述队列识别码进行映射得到所述间接寻址表。
需要说明的是,本实施例中间接寻址表的生成方法与图3所示的多个队列的配置方法可以同时进行,即在系统初始化过程时即可完成。
本发明提供一种流量分配方法的实施例,如图5所示,图5为本发明实施例提供的一种流量分配方法的基本流程示意图。
具体地,步骤S1300之后还包括下述步骤:
S1321、从所述目标队列中提取待处理的网络流量数据包;
S1322、对所述待处理的网络流量数据包进行解析并在解析完成后插入到发送队列中以发送给物理线路。
一个实施例,将网络流量数据包插入到目标队列之后,对网络流量数据包进行解析处理所有的报文,并将处理完的报文放到发送队列中,流量发送模块从发送队列中提取数据进行封装后发送给驱动模块,以使驱动模块将封装的数据包发送到物理线路,从而完成整个流量的处理过程。
为解决上述技术问题本发明实施例还提供一种流量分配装置。具体请参阅图6,图6为本实施例流量分配装置基本结构框图。
如图6所示,一种流量分配装置,包括:获取模块2100、处理模块2200和执行模块2300。其中,获取模块2100,用于获取待处理的网络流量数据包的接收端调节值;处理模块2200,用于对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;执行模块2300,用于根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列并将所述网络流量数据包加入到所述目标队列中,其中,所述散列值的数值在所述多个队列的个数的数值范围内。
上述流量分配装置,通过对接收端调解值进行散列运算得到网络数据包的散列值,并利用散列值在预先设置的多个队列中查找目标队列,可以确保网络流量数据包被均匀的分配多个队列中,避免了处理器核的过度负载或者空闲导致的系统处理性能下降的问题。
在一些实施方式中,第一获取子模块,用于获取用于配置所述多个队列的配置文件,其中,所述配置文件包括多用于分配所述网络流量数据包的网卡中处理器的个数,所述处理器为多个;第一处理子模块,用于解析所述配置文件并按照所述处理器的个数设置所述多个队列。
在一些实施方式中,所述处理模块包括:第二获取子模块,用于对所述配置文件进行解析获取间接寻址表;第二处理子模块,用于从所述间接寻址表中查找与所述散列值具有映射关系的队列识别码;第三处理子模块,用于在所述预先设置的多个队列中查找所述队列识别码所表征的目标队列。
在一些实施方式中,还包括:第三获取子模块,用于获取所述网络流量数据包的寻址算法;第四处理子模块,用于通过所述寻址算法对所述散列值进行计算得到所述队列识别码;第五处理子模块,用于将所述散列值与所述队列识别码进行映射得到所述间接寻址表。
在一些实施方式中,所述散列运算的公式为:f(h)=(h/m*(h%/m/n>1?0:1)+h%/m)%n,其中,h为对所述接收端调解值进行取余运算得到的散列值,m为网卡中处理器个数,n为所述预先设置的多个队列的个数。
在一些实施方式中,所述取余运算的公式为:h=rss&(m*m-1),其中,rss为所述接收端调节值。
在一些实施方式中,还包括:第四获取子模块,用于从所述目标队列中提取待处理的网络流量数据包;第六处理子模块,用于对所述待处理的网络流量数据包进行解析并在解析完成后插入到发送队列中以发送给物理线路。
为解决上述技术问题,本发明实施例还提供计算机设备。具体请参阅图7,图7为本实施例计算机设备基本结构框图。
如图7所示,计算机设备的内部结构示意图。如图7所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种流量分配方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种流量分配方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图6中获取模块2100、处理模块2200和执行模块2300的具体内容,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有流量分配方法中执行所有子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
计算机设备通过对接收端调解值进行散列运算得到网络数据包的散列值,并利用散列值在预先设置的多个队列中查找目标队列,可以确保网络流量数据包被均匀的分配多个队列中,避免了处理器核的过度负载或者空闲导致的系统处理性能下降的问题。
本发明还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例所述流量分配方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种流量分配方法,其特征在于,包括:获取待处理的网络流量数据包的接收端调节值;
对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;
根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列,具体包括:从预先设置的所述间接寻址表中查找与所述散列值具有映射关系的队列识别码,在预先设置的所述多个队列中查找所述队列识别码所表征的目标队列;其中,预先设置多个队列,包括:获取网卡系统生成的配置文件,所述配置文件包括用于分配网络流量数据包的网卡中处理器的个数,解析所述配置文件并按照所述处理器的个数设置多个队列;预先设置间接寻址表,包括:获取网络流量数据包的寻址算法;通过所述寻址算法对散列值进行计算得到队列识别码;将所述散列值与所述队列识别码进行映射得到间接寻址表,其中,所述间接寻址表中包括散列值与队列识别码的映射关系,队列识别码用于识别网卡中的队列;
将所述网络流量数据包加入到所述目标队列中;
其中,所述散列值的数值在所述多个队列的个数的数值范围内。
3.根据权利要求2所述的流量分配方法,其特征在于,所述散列值计算的公式为:h=rss&(m*m-1),其中,rss为所述接收端调节值。
4.根据权利要求1至3任意一项所述的流量分配方法,其特征在于,所述将所述网络流量数据包加入到所述目标队列中之后,还包括:
从所述目标队列中提取待处理的网络流量数据包;
对所述待处理的网络流量数据包进行解析并在解析完成后插入到发送队列中以发送给物理线路。
5.一种流量分配装置,其特征在于,包括:
获取模块,用于获取待处理的网络流量数据包的接收端调节值;
处理模块,用于对所述接收端调节值进行散列运算得到所述网络流量数据包的散列值;
执行模块,用于根据所述散列值在预先设置的多个队列中查找所述散列值对应的目标队列;
所述执行模块,还用于将所述网络流量数据包加入到所述目标队列中;
其中,所述散列值的数值在所述多个队列的个数的数值范围内;
所述装置还包括:
第一获取子模块,用于获取用于配置所述多个队列的配置文件,其中,所述配置文件包括多用于分配所述网络流量数据包的网卡中处理器的个数,所述处理器为多个;第一处理子模块,用于解析所述配置文件并按照所述处理器的个数设置所述多个队列;
第二获取子模块,用于对所述配置文件进行解析获取间接寻址表;第二处理子模块,用于从所述间接寻址表中查找与所述散列值具有映射关系的队列识别码;第三处理子模块,用于在所述预先设置的多个队列中查找所述队列识别码所表征的目标队列;
第三获取子模块,用于获取所述网络流量数据包的寻址算法;第四处理子模块,用于通过所述寻址算法对所述散列值进行计算得到所述队列识别码;第五处理子模块,用于将所述散列值与所述队列识别码进行映射得到所述间接寻址表。
6.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至4中任一项权利要求所述流量分配方法的步骤。
7.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至4中任一项权利要求所述流量分配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911258501.9A CN111193668B (zh) | 2019-12-10 | 2019-12-10 | 流量分配方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911258501.9A CN111193668B (zh) | 2019-12-10 | 2019-12-10 | 流量分配方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111193668A CN111193668A (zh) | 2020-05-22 |
CN111193668B true CN111193668B (zh) | 2022-05-10 |
Family
ID=70710967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911258501.9A Active CN111193668B (zh) | 2019-12-10 | 2019-12-10 | 流量分配方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111193668B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880955A (zh) * | 2020-08-04 | 2020-11-03 | 北京立通智联科技有限公司 | 对物联网设备的消息处理方法、装置、终端及介质 |
CN111949403B (zh) * | 2020-08-11 | 2024-01-26 | 北京天融信网络安全技术有限公司 | 一种数据包的分配方法、装置及电子设备 |
CN114640630B (zh) * | 2022-03-31 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 一种流量管控方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022671A (zh) * | 2015-07-20 | 2015-11-04 | 中国科学院计算技术研究所 | 一种用于流式数据并行处理的负载均衡方法 |
CN108768873A (zh) * | 2018-05-29 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 一种流量控制方法及相关设备 |
CN110022330A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 用于网络数据包的处理方法、装置及电子设备 |
CN110019205A (zh) * | 2017-10-30 | 2019-07-16 | 杭州海康威视数字技术股份有限公司 | 一种数据存储、还原方法、装置及计算机设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9992113B2 (en) * | 2015-06-30 | 2018-06-05 | Vmware, Inc. | Virtual network interface controller performance using physical network interface controller receive side scaling offloads |
CN109165100A (zh) * | 2018-09-06 | 2019-01-08 | 郑州云海信息技术有限公司 | 一种网卡rss配置装置及方法 |
CN109586965A (zh) * | 2018-12-04 | 2019-04-05 | 郑州云海信息技术有限公司 | 一种网卡rss自动配置方法、装置、终端及存储介质 |
-
2019
- 2019-12-10 CN CN201911258501.9A patent/CN111193668B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022671A (zh) * | 2015-07-20 | 2015-11-04 | 中国科学院计算技术研究所 | 一种用于流式数据并行处理的负载均衡方法 |
CN110019205A (zh) * | 2017-10-30 | 2019-07-16 | 杭州海康威视数字技术股份有限公司 | 一种数据存储、还原方法、装置及计算机设备 |
CN110022330A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 用于网络数据包的处理方法、装置及电子设备 |
CN108768873A (zh) * | 2018-05-29 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 一种流量控制方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111193668A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111193668B (zh) | 流量分配方法、装置、计算机设备及存储介质 | |
US10080158B2 (en) | Providing multiple interfaces for traffic | |
EP3451727A1 (en) | Access scheduling method and device for terminal, and computer storage medium | |
CN110381107B (zh) | 文件下载方法、装置、计算机设备及存储介质 | |
CN111273999B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11075987B1 (en) | Load estimating content delivery network | |
EP2193623A2 (en) | Header structure for resource allocations in an lte system | |
US11196845B2 (en) | Method, apparatus, and computer program product for determining data transfer manner | |
CN106161633A (zh) | 一种基于云计算环境下打包文件的传输方法及系统 | |
WO2016177191A1 (zh) | 一种报文的处理方法及装置 | |
CN112073192B (zh) | 一种数据处理方法、装置及密码机 | |
CN111131050A (zh) | 流表的匹配方法及装置 | |
CN101710864B (zh) | 一种多网口Linux服务器的配置方法及装置 | |
CN109327321B (zh) | 网络模型业务执行方法、装置、sdn控制器及可读存储介质 | |
CN102932269A (zh) | 负载均衡的实现方法和装置 | |
CN101917345A (zh) | 无线局域网中的流量控制方法及设备 | |
US20080118065A1 (en) | Hardware acceleration for large volumes of channels | |
CN111049751B (zh) | 数据传输优化方法、装置、设备及可读存储介质 | |
CN115039507A (zh) | 通信方法和通信设备 | |
CN109150720B (zh) | 业务链报文转发方法、装置、设备及计算机可读存储介质 | |
CN113852555B (zh) | 一种基于网关的多通道路由快速转发和智能选路方法 | |
CN106330504A (zh) | 一种实现应用的方法及业务控制器 | |
CN110661731A (zh) | 一种报文处理方法及其装置 | |
CN115696396B (zh) | 数据通信的处理方法及装置、存储介质、终端 | |
CN116489230B (zh) | 任务调度方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |