CN109729024A - 数据包处理系统及方法 - Google Patents
数据包处理系统及方法 Download PDFInfo
- Publication number
- CN109729024A CN109729024A CN201811634989.6A CN201811634989A CN109729024A CN 109729024 A CN109729024 A CN 109729024A CN 201811634989 A CN201811634989 A CN 201811634989A CN 109729024 A CN109729024 A CN 109729024A
- Authority
- CN
- China
- Prior art keywords
- data packet
- queue
- annular
- circle
- handling system
- 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.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种数据包处理系统及方法,数据包处理系统包括:处理模块、设置在网卡的发送端和所述处理模块之间的多个第一环形队列,以及,设置在所述处理模块和网卡接收端之间的多个第二环形队列;所述第一环形队列用于存储所述网卡的发送端发送的数据包;所述第二环形队列用于存储待发送至所述网卡的接收端的数据包;所述处理模块用于根据预设规则自任一所述第一环形队列中获取数据包,并对该数据包进行报文解析,以及,根据所述预设规则将解析后的数据包发送至任一包含有空闲元素块的第二环形队列。本申请能够有效提高对所述网卡的数据包进行报文解析的效率,并能够有效提高报文解析过程中的处理性能和处理灵活性。
Description
技术领域
本申请涉及计算机数据处理技术领域,具体涉及一种数据包处理系统及方法。
背景技术
网卡是计算机与外界局域网的连接媒介,也是是工作在链路层的网络组件,也被称为通信适配器或网络适配器(network adapter)或网络接口卡NIC(Network InterfaceCard),且在网卡的数据传输过程中,需要对网卡中的数据包进行报文解析以尽快获知数据包属性或对数据包进行安全检测等。因此,网卡中的数据包的解析处理技术已成为电子商务领域的当前研究重点之一。
现有技术中,用于对网卡中的数据包进行解析的处理架构通过依赖于上层业务且组成处理架构的各个模块之间的耦合性很大,若需要处理大量数据包时,需要使用大量的锁来实现多线程间数据之间的同步解析,且处理架构中的作业模块与数据包接收端和数据包传输端之间均为一一对应的关系,使得每个作业模块专门处理一个对应队列中的数据包。
然而,基于上述现有的对网卡中的数据包进行解析的处理架构的架构特性,使得该处理架构存在通用性差、耦合性大且性能低的问题,尤其是由于现有处理架构中的每个作业模块仅能够专门处理一个对应队列中的数据包,使得在空闲的作业模块无法处理其他队列的数据包,繁忙的作业模块的处理任务也无法被分担,进而使得现有的对网卡中的数据包进行解析的处理架构存在性能低且灵活性差的问题。
发明内容
针对现有技术中的问题,本申请提供一种数据包处理系统及方法,能够有效提高对所述网卡的数据包进行报文解析的效率,并能够有效提高报文解析过程中的处理性能和处理灵活性。
为解决上述技术问题,本申请提供以下技术方案:
第一方面,本申请提供一种数据包处理系统,包括:处理模块、设置在网卡的发送端和所述处理模块之间的多个第一环形队列,以及,设置在所述处理模块和网卡接收端之间的多个第二环形队列;
所述第一环形队列用于存储所述网卡的发送端发送的数据包;
所述第二环形队列用于存储待发送至所述网卡的接收端的数据包;
所述处理模块用于根据预设规则自任一所述第一环形队列中获取数据包,并对该数据包进行报文解析,以及,根据所述预设规则将解析后的数据包发送至任一包含有空闲元素块的第二环形队列。
进一步地,所述处理模块有多个;
每个所述处理模块均与全部的所述第一环形队列通信连接,且每个所述处理模块均与全部的所述第二环形队列通信连接。
进一步地,所述预设规则包括:
在待获取所述数据包时,以轮询的方式依次访问各个所述第一环形队列,确定当前存储有数据包的第一环形队列;
以及,在待发送所述数据包时,以轮询的方式依次访问各个所述第二环形队列,确定当前包含有空闲元素块的第二环形队列。
进一步地,所述网卡的发送端设有与所述第一环形队列的数量相同且一一对应的发送队列;
所述数据包处理系统还包括:分别连接在各个所述发送队列与唯一对应的各个所述第一环形队列之间的接收模块;
所述接收模块用于自唯一对应的所述发送队列中接收数据包,并将该数据包存储至唯一对应的所述第一环形队列中。
进一步地,所述网卡的接收端设有与所述第二环形队列的数量相同且一一对应的接收队列;
所述数据包处理系统还包括:分别连接在各个所述接收队列与唯一对应的各个所述第二环形队列之间的发送模块;
所述发送模块用于获取唯一对应的所述第二环形队列存储的数据包,并将该数据包发送至唯一对应的所述接收队列。
进一步地,还包括:扩展模块;
所述扩展模块用于建立新增的处理模块分别与各个所述第一环形队列和各个所述第二环形队列之间的连接关系。
进一步地,所述第一环形队列为单生产者多消费者无锁环形队列。
进一步地,所述第二环形队列为多生产者单消费者无锁环形队列。
第二方面,本申请提供一种数据包处理方法,所述数据包处理方法应用所述数据包解析系统实现,包括:
应用预设规则自任一存储有数据包的第一环形队列中获取数据包;
对所述数据包进行报文解析;
基于所述预设规则将解析后的数据包发送至任一有空闲元素块的第二环形队列,使得该第二环形队列将所述解析后的数据包发送至所述网卡。
进一步地,所述预设规则包括:
在待获取所述数据包时,以轮询的方式依次访问各个所述第一环形队列,确定当前存储有数据包的第一环形队列;
以及,在待发送所述数据包时,以轮询的方式依次访问各个所述第二环形队列,确定当前包含有空闲元素块的第二环形队列。
由上述技术方案可知,本申请提供一种数据包处理系统及方法,数据包处理系统包括:处理模块、设置在网卡的发送端和所述处理模块之间的多个第一环形队列,以及,设置在所述处理模块和网卡接收端之间的多个第二环形队列;所述第一环形队列用于存储所述网卡的发送端发送的数据包;所述第二环形队列用于存储待发送至所述网卡的接收端的数据包;所述处理模块用于根据预设规则自任一所述第一环形队列中获取数据包,并对该数据包进行报文解析,以及,根据所述预设规则将解析后的数据包发送至任一包含有空闲元素块的第二环形队列;能够有效提高对所述网卡的数据包进行报文解析的效率,保证数据包传输过程的可靠性,并能够有效提高报文解析过程中的处理性能和处理灵活性,进而有效提高数据包处理过程的可靠性和高效性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为无锁环形队列的架构示意图。
图2为本申请实施例中的第一环形队列的结构示意图。
图3为本申请实施例中的第二环形队列的结构示意图。
图4为本申请实施例中的数据包处理系统的结构示意图。
图5为本申请实施例中的包含有多个处理模块的数据包处理系统的结构示意图。
图6为本申请实施例中的数据包处理系统中的第一环形队列与接收模块之间的连接关系示意图。
图7为本申请实施例中的包含有发送模块的数据包处理系统的结构示意图。
图8为本申请应用实例中的数据包处理系统的结构示意图。
图9为本申请实施例中的数据包处理方法的流程示意图。
图10为本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
考虑到现有的用于对网卡中的数据包进行解析的处理架构存在的数据包处理架构依赖于上层业务而导致不通用、模块之间耦合性大使得改动一个模块往往会影响其他模块、多线程间数据同步使用大量的锁而导致的性能低、每个作业模块仅能够专门处理一个对应队列中的数据而导致解析性能低且灵活性差等问题。本申请实施例提供一种数据包处理系统和应用该数据包处理系统实现的数据包处理方法。其中的数据包处理系统中包含有处理模块、设置在网卡的发送端和所述处理模块之间的多个第一环形队列,以及,设置在所述处理模块和网卡接收端之间的多个第二环形队列;所述第一环形队列用于存储所述网卡的发送端发送的数据包;所述第二环形队列用于存储待发送至所述网卡的接收端的数据包;所述处理模块用于根据预设规则自任一所述第一环形队列中获取数据包,并对该数据包进行报文解析,以及,根据所述预设规则将解析后的数据包发送至任一包含有空闲元素块的第二环形队列,能够有效提高对所述网卡的数据包进行报文解析的效率,保证数据包传输过程的可靠性,并能够有效提高报文解析过程中的处理性能和处理灵活性,进而有效提高数据包处理过程的可靠性和高效性。
基于上述内容,本申请还提供一种计算机设备或服务器设备,该计算机设备或服务器设备中安装有网卡,该服务器中还可以包含有本申请提供一种数据包处理系统,该数据包处理系统与所述网卡之间通信连接。
在本申请的一个或多个实施例中,第一环形队列和第二环形队列均为无锁环形队列,是一种常用的数据结构,这种结构保证了数据是按照“先进先出”的原则进行操作的,即最先进去的元素也是最先出来的元素.环形队列是一种特殊的队列结构,保证了元素也是先进先出的,但与一般队列的区别是,他们是环形的,即队列头部的上个元素是队列尾部,通常是容纳元素数固定的一个闭环。
基于上述内容,所述环形队列在工作时有三种情况,分别为:环形队列的入队速度与出队速度相同,环形队列的入队速度快于出队速度,以及,环形队列的入队速度慢于出队速度。在本申请的一种举例中,所述无锁环形队列如图1所示,入队速度和出队速度大致一样,即使某个突然时刻入队速度陡然变高或者出队速度陡然变低,都能通过队列这个缓冲区把这些数据先存起来,等到能处理的时候再处理。
在本申请的一个或多个实施例中,所述第一环形队列和第二环形队列的结构不同,参见图2,所述第一环形队列为单生产者多消费者无锁环形队列,即该第一环形队列的入队侧仅对应一个数据接收端,而该第一环形队列的出队侧则对应多个数据发送端;参见图3,所述第二环形队列为多生产者单消费者无锁环形队列,即该第二环形队列的入队侧对应多个数据接收端,而该第二环形队列的出队侧仅对应一个数据接收端。
本申请实施例的环形队列存在下述特点:
1)队列头部的上个元素是队列尾部。
2)有2个索引,一个是写入索引,标示了当前可以写入元素的索引,入队时使用。一个是读取索引,标示了当前可以读取元素的索引,出队时使用。
3)在队列中每个元素的头部加一个元素标示字段,标示这个元素是可读还是可写,当这个元素读取完之后,要设置可写状态,当这个元素写入完成之后,要设置可读状态。
为了能够有效提高对所述网卡的数据包进行报文解析的效率,并能够有效提高报文解析过程中的处理性能和处理灵活性,本申请提供一种数据包处理系统的实施例,参见图4,所述数据包处理系统具体包含有如下内容:处理模块1、设置在网卡的发送端和所述处理模块1之间的多个第一环形队列4,以及,设置在所述处理模块1和网卡接收端之间的多个第二环形队列5。
所述第一环形队列4用于存储所述网卡的发送端发送的数据包。
所述第二环形队列5用于存储待发送至所述网卡的接收端的数据包。
所述处理模块1用于根据预设规则自任一所述第一环形队列4中获取数据包,并对该数据包进行报文解析,以及,根据所述预设规则将解析后的数据包发送至任一包含有空闲元素块的第二环形队列5。
可以理解的是,所述处理模块1在多个第一环形队列4中选取一个作为目标第一环形队列4,而后所述处理模块1在目标第一环形队列4中获取数据包;所述处理模块1对所述数据包进行报文解析处理;将经报文解析处理后的数据包发送至目标第二环形队列5,使得该目标第二环形队列5将所述经报文解析处理后的数据包发送至所述网卡。
可以理解的是,所述目标第一环形队列4为多个第一环形队列4中的任一存储有数据包的第一环形队列4,且所述第一环形队列4用于存储接收自网卡的数据包。
可以理解的是,所述目标第二环形队列5为多个第二环形队列5组中的任一有空闲元素块的第二环形队列5,且所述第一环形队列4用于存储待发送至所述网卡的数据包。
在一种举例中,所述预设规则具体可以为:
(1)在待获取所述数据包时,以轮询的方式依次访问各个所述第一环形队列4,确定当前存储有数据包的第一环形队列4。
(2)在待发送所述数据包时,以轮询的方式依次访问各个所述第二环形队列5,确定当前包含有空闲元素块的第二环形队列5。
即,处理模块1专门负责数据包的上测处理逻辑,包括数据包的2-7层报文解析等。每个处理模块1可以轮询每个第一环形队列4取数据包进行处理,处理完数据包的处理模块1轮询每个发送队列6将数据包均匀的放入每个第二环形队列5。解除了数据包处理系统中处理模块1与接收侧队列和发送侧队列之间的唯一对应的关系。
从上述描述可知,本申请实施例提供的数据包处理系统,通过处理模块1、多个第一环形队列4以及多个第二环形队列5的设置,能够有效提高对所述网卡的数据包进行报文解析的效率,保证数据包传输过程的可靠性,并能够有效提高报文解析过程中的处理性能和处理灵活性,进而有效提高数据包处理过程的可靠性和高效性。
为了进一步提高对所述网卡的数据包进行报文解析的效率,本申请还提供所述数据包处理系统的一实施例,参见图5,所述数据包处理系统还具体包含有如下内容:所述处理模块1有多个;每个所述处理模块1均与全部的所述第一环形队列4通信连接,且每个所述处理模块1均与全部的所述第二环形队列5通信连接。
通过多个处理模块1的设置,能够有效提高数据包处理系统的处理能力及效率,进而能够更进一步地提高报文解析过程中的处理性能和处理灵活性。
为了降低各模块之间的耦合性,以避免改动一个模块往往会影响并需要改动其他模块的问题,本申请还提供所述数据包处理系统的一实施例,参见图6,所述网卡的发送端设有与所述第一环形队列4的数量相同且一一对应的发送队列6,所述数据包处理系统还具体包含有如下内容:
分别连接在各个所述发送队列6与唯一对应的各个所述第一环形队列4之间的接收模块3;所述接收模块3用于自唯一对应的所述发送队列6中接收数据包,并将该数据包存储至唯一对应的所述第一环形队列4中。
可以理解的是,通过在各个所述发送队列6与各个唯一对应的第一环形队列4之间分别设置接收模块3,以在所述网卡与多个所述第一环形队列4之间建立连接;各个所述接收模块3分别自各自对应的所述发送队列6中获取数据包;以及,各个所述接收模块3分别将各自接收的数据包存储至对应的所述第一环形队列4中。
从上述描述可知,本申请实施例提供的数据包处理系统,通过降低所述处理模块1与接收模块3之间耦合性,能够有效避免改动一个模块往往会影响并需要改动其他模块的问题,进而能够更进一步地提高报文解析过程中的处理性能和处理灵活性。
为了降低各模块之间的耦合性,以避免改动一个模块往往会影响并需要改动其他模块的问题,本申请还提供所述数据包处理系统的一实施例,参见图7,所述网卡的接收端设有与所述第二环形队列5的数量相同且一一对应的接收队列7,所述数据包处理系统还具体包含有如下内容:
所述数据包处理系统还包括:分别连接在各个所述接收队列7与唯一对应的各个所述第二环形队列5之间的发送模块2;所述发送模块2用于获取唯一对应的所述第二环形队列5存储的数据包,并将该数据包发送至唯一对应的所述接收队列7。
从上述描述可知,本申请实施例提供的数据包处理系统,通过降低所述处理模块1与发送模块2之间耦合性,能够有效避免改动一个模块往往会影响并需要改动其他模块的问题,进而能够更进一步地提高报文解析过程中的处理性能和处理灵活性。
为了提高所述数据包处理系统的数据处理灵活性,以进一步提高报文解析过程中的处理性能和处理灵活性,本申请实施例中的数据包处理系统中还包含有扩展模块;所述扩展模块用于建立新增的处理模块1分别与各个所述第一环形队列4和各个所述第二环形队列5之间的连接关系。
可以理解的是,通过在各个所述接收队列7与各个唯一对应的第二环形队列5之间分别设置发送模块2,以在所述网卡与多个所述第二环形队列5之间建立连接;各个所述发送模块2分别自各自对应的所述接收队列7中获取数据包;以及,各个所述发送模块2分别将各自接收的数据包存储至对应的所述第二环形队列5中。
基于此,若有某一处理模块1对应的处理线程是整个系统处理的瓶颈时,可以增加对应处理模块1的个数,从而提升性能。比如处理模块1处理逻辑比较复杂,可以增加处理模块1的数量,进而使得所述数据包处理系统通过在所述数据包处理系统中增加新的处理模块1,以拓展数据包处理系统的数据处理能力并提高数据包处理系统的性能和应用灵活性。
为进一步地说明本方案,本申请还提供一种数据包处理系统的具体应用实例,参见图8,所述数据包处理系统的具体应用实例具体包含有如下内容:
在图8中,网关举例为目标网关port0;发送队列和接收队列均为同一网卡队列,且发送队列和接收队列举例均包含有第一发送队列Q1、第二发送队列Q2和第三发送队列Q;接收模块举例包含有第一接收模块receiver1、第二接收模块receiver2和第三接收模块receiver3;单生产者多消费者无锁环形队列举例包含有第一单生产者多消费者无锁环形队列R_ring1、第二单生产者多消费者无锁环形队列R_ring2和第三单生产者多消费者无锁环形队列R_ring3;处理模块举例包含有第一处理模块worker1、第二处理模块worker2、第三处理模块worker3和第四处理模块worker4;多生产者单消费者无锁环形队列举例包含有第一多生产者单消费者无锁环形队列S_ring1、第二多生产者单消费者无锁环形队列S_ring2和第三多生产者单消费者无锁环形队列S_ring3;发送模块举例包含有第一发送模块sender1、第二发送模块sender2和第三发送模块sender3。
所述数据包处理系统的具体应用实例提供一个通用性强、各模块之间耦合性小、性能高且性能可根据硬件性能线性增加的数据包处理方案。所述数据包处理系统设置三种基本模块,分别为:接收模块,处理模块和发送模块,每个模块专注处理特定任务,且每种模块均分配有一个线程池,以及,每种模块之间用一个无锁环形队列连接,且每个网卡收发队列对应一个收发线程。其中,接收模块专门从网卡队列中收数据包,每个接收模块对应一个网卡收队列。处理模块专门负责数据包的上测处理逻辑,包括2-7层报文解析等。每个处理模块可以轮询每个接收队列取数据包进行处理,处理完数据包的处理模块轮询每个发送队列将数据包均匀的放入每个发送队列。解除了接收模块、处理模块与发送模块一一对应的关系,当每个处理线程是整个系统处理的瓶颈时,可以增加对应处理线程的个数,从而提升性能。比如处理模块处理逻辑比较复杂,可以增加处理模块的数量。发送模块专门负责将数据包发送到网卡队列,每个发送模块对应一个网卡发送队列。
其中,所述数据包处理流程如下:
1)接收模块的线程从分配给它的网卡收队列中收取数据包,放入接收模块所连接的单生产者多消费者无锁环形队列中。
2)处理模块的线程从多个单生产者多消费者无锁环形队列中取数据包进行解析处理。
3)处理模块的线程将解析处理完的数据包放入多生产者单消费者无锁环形队列中。
4)发送模块的线程从所连接的多生产者单消费者无锁环形队列中取数据包,放入分配给它的网卡发队列中。
从上述描述可知,本申请提供的数据包处理系统的应用实例,架构通用性强,不同的业务逻辑只需要扩展处理模块的处理逻辑。模块之间耦合性低,每个模块负责不同的处理业务,模块之间用无锁环形队列连接。性能高,通过增加不同模块的处理线程个数来解决模块的性能瓶颈。无锁环形队列能够保证元素先进先出;元素空间可重复利用,避免频繁内存分配和释放开销;没有任何锁或者等待,为多进程数据同步及通信提供了一种高效的机制。
为了能够有效提高对所述网卡的数据包进行报文解析的效率,并能够有效提高报文解析过程中的处理性能和处理灵活性,本申请提供一种应用所述数据包处理系统实现的数据包处理方法的实施例,参见图9,所述数据包处理方法具体包含有如下内容:
步骤100:应用预设规则自任一存储有数据包的第一环形队列中获取数据包。
步骤200:对所述数据包进行报文解析。
步骤300:基于所述预设规则将解析后的数据包发送至任一有空闲元素块的第二环形队列,使得该第二环形队列将所述解析后的数据包发送至所述网卡。
其中,所述预设规则包括:
(1)在待获取所述数据包时,以轮询的方式依次访问各个所述第一环形队列,确定当前存储有数据包的第一环形队列。
(2)在待发送所述数据包时,以轮询的方式依次访问各个所述第二环形队列,确定当前包含有空闲元素块的第二环形队列。
从上述描述可知,本申请实施例提供的数据包处理方法,通过处理模块、多个第一环形队列以及多个第二环形队列的设置,能够有效提高对所述网卡的数据包进行报文解析的效率,保证数据包传输过程的可靠性,并能够有效提高报文解析过程中的处理性能和处理灵活性,进而有效提高数据包处理过程的可靠性和高效性。
本申请的实施例还提供能够实现上述实施例中的数据包处理方法中全部步骤的一种电子设备的具体实施方式,参见图10,所述电子设备具体包括如下内容:
处理器(processor)601、存储器(memory)602、通信接口(CommunicationsInterface)603和总线604;
其中,所述处理器601、存储器602、通信接口603通过所述总线604完成相互间的通信;所述通信接口603用于实现网卡、数据包处理系统以及其他参与机构之间的信息传输;
所述处理器601用于调用所述存储器602中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的数据包处理方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤100:应用预设规则自任一存储有数据包的第一环形队列中获取数据包。
步骤200:对所述数据包进行报文解析。
步骤300:基于所述预设规则将解析后的数据包发送至任一有空闲元素块的第二环形队列,使得该第二环形队列将所述解析后的数据包发送至所述网卡。
从上述描述可知,本申请实施例提供的电子设备,通过处理模块、多个第一环形队列以及多个第二环形队列的设置,能够有效提高对所述网卡的数据包进行报文解析的效率,保证数据包传输过程的可靠性,并能够有效提高报文解析过程中的处理性能和处理灵活性,进而有效提高数据包处理过程的可靠性和高效性。
本申请的实施例还提供能够实现上述实施例中的数据包处理方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的数据包处理方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤100:应用预设规则自任一存储有数据包的第一环形队列中获取数据包。
步骤200:对所述数据包进行报文解析。
步骤300:基于所述预设规则将解析后的数据包发送至任一有空闲元素块的第二环形队列,使得该第二环形队列将所述解析后的数据包发送至所述网卡。
从上述描述可知,本申请实施例提供的计算机可读存储介质,通过处理模块、多个第一环形队列以及多个第二环形队列的设置,能够有效提高对所述网卡的数据包进行报文解析的效率,保证数据包传输过程的可靠性,并能够有效提高报文解析过程中的处理性能和处理灵活性,进而有效提高数据包处理过程的可靠性和高效性。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本说明书实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (10)
1.一种数据包处理系统,其特征在于,包括:处理模块、设置在网卡的发送端和所述处理模块之间的多个第一环形队列,以及,设置在所述处理模块和网卡接收端之间的多个第二环形队列;
所述第一环形队列用于存储所述网卡的发送端发送的数据包;
所述第二环形队列用于存储待发送至所述网卡的接收端的数据包;
所述处理模块用于根据预设规则自任一所述第一环形队列中获取数据包,并对该数据包进行报文解析,以及,根据所述预设规则将解析后的数据包发送至任一包含有空闲元素块的第二环形队列。
2.根据权利要求1所述的数据包处理系统,其特征在于,所述处理模块有多个;
每个所述处理模块均与全部的所述第一环形队列通信连接,且每个所述处理模块均与全部的所述第二环形队列通信连接。
3.根据权利要求1所述的数据包处理系统,其特征在于,所述预设规则包括:
在待获取所述数据包时,以轮询的方式依次访问各个所述第一环形队列,确定当前存储有数据包的第一环形队列;
以及,在待发送所述数据包时,以轮询的方式依次访问各个所述第二环形队列,确定当前包含有空闲元素块的第二环形队列。
4.根据权利要求1所述的数据包处理系统,其特征在于,所述网卡的发送端设有与所述第一环形队列的数量相同且一一对应的发送队列;
所述数据包处理系统还包括:分别连接在各个所述发送队列与唯一对应的各个所述第一环形队列之间的接收模块;
所述接收模块用于自唯一对应的所述发送队列中接收数据包,并将该数据包存储至唯一对应的所述第一环形队列中。
5.根据权利要求1所述的数据包处理系统,其特征在于,所述网卡的接收端设有与所述第二环形队列的数量相同且一一对应的接收队列;
所述数据包处理系统还包括:分别连接在各个所述接收队列与唯一对应的各个所述第二环形队列之间的发送模块;
所述发送模块用于获取唯一对应的所述第二环形队列存储的数据包,并将该数据包发送至唯一对应的所述接收队列。
6.根据权利要求1所述的数据包处理系统,其特征在于,还包括:扩展模块;
所述扩展模块用于建立新增的处理模块分别与各个所述第一环形队列和各个所述第二环形队列之间的连接关系。
7.根据权利要求1-6任一项所述的数据包处理系统,其特征在于,所述第一环形队列为单生产者多消费者无锁环形队列。
8.根据权利要求1-6任一项所述的数据包处理系统,其特征在于,所述第二环形队列为多生产者单消费者无锁环形队列。
9.一种数据包处理方法,其特征在于,所述数据包处理方法应用如权利要求1至8任一项所述的数据包处理系统实现,包括:
应用预设规则自任一存储有数据包的第一环形队列中获取数据包;
对所述数据包进行报文解析;
基于所述预设规则将解析后的数据包发送至任一有空闲元素块的第二环形队列,使得该第二环形队列将所述解析后的数据包发送至所述网卡。
10.根据权利要求9所述的数据包处理方法,其特征在于,所述预设规则包括:
在待获取所述数据包时,以轮询的方式依次访问各个所述第一环形队列,确定当前存储有数据包的第一环形队列;
以及,在待发送所述数据包时,以轮询的方式依次访问各个所述第二环形队列,确定当前包含有空闲元素块的第二环形队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811634989.6A CN109729024B (zh) | 2018-12-29 | 2018-12-29 | 数据包处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811634989.6A CN109729024B (zh) | 2018-12-29 | 2018-12-29 | 数据包处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109729024A true CN109729024A (zh) | 2019-05-07 |
CN109729024B CN109729024B (zh) | 2023-05-12 |
Family
ID=66296734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811634989.6A Active CN109729024B (zh) | 2018-12-29 | 2018-12-29 | 数据包处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109729024B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110929297A (zh) * | 2019-11-05 | 2020-03-27 | 郑州信大捷安信息技术股份有限公司 | 一种fpga异步加解密系统及方法 |
CN111030844A (zh) * | 2019-11-14 | 2020-04-17 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
CN111031260A (zh) * | 2019-12-25 | 2020-04-17 | 普世(南京)智能科技有限公司 | 一种基于环形无锁队列的高速影像单向传输系统方法及系统 |
CN111208985A (zh) * | 2020-04-21 | 2020-05-29 | 南京云信达科技有限公司 | 基于生产者消费者模型的数据处理方法、系统及存储介质 |
WO2021063154A1 (zh) * | 2019-09-30 | 2021-04-08 | 华为技术有限公司 | 一种队列通信的方法、系统及相关设备 |
CN113301104A (zh) * | 2021-02-09 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理系统及方法 |
CN113438241A (zh) * | 2021-06-25 | 2021-09-24 | 佳缘科技股份有限公司 | 一种数据传输方法及系统 |
CN113672406A (zh) * | 2021-08-24 | 2021-11-19 | 北京天融信网络安全技术有限公司 | 数据传输处理方法、装置、电子设备及存储介质 |
CN113722070A (zh) * | 2021-09-10 | 2021-11-30 | 北京字节跳动网络技术有限公司 | 基于服务网格架构的微服务系统中的数据处理方法和装置 |
CN114466079A (zh) * | 2022-02-09 | 2022-05-10 | 星环信息科技(上海)股份有限公司 | 请求处理方法、装置、代理服务器及存储介质 |
CN114500403A (zh) * | 2022-01-24 | 2022-05-13 | 中国联合网络通信集团有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN115048376A (zh) * | 2022-06-08 | 2022-09-13 | 北京广利核系统工程有限公司 | 一种应用于核电站的数据处理方法及装置 |
CN115801629A (zh) * | 2023-02-03 | 2023-03-14 | 天翼云科技有限公司 | 双向转发侦测方法、装置、电子设备及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545216A (zh) * | 2003-11-20 | 2004-11-10 | 中兴通讯股份有限公司 | 网络处理器中核心处理器与微引擎之间的通信方法 |
CN101631139A (zh) * | 2009-05-19 | 2010-01-20 | 华耀环宇科技(北京)有限公司 | 基于多核平台的负载均衡软件架构及方法 |
CN102780625A (zh) * | 2012-07-30 | 2012-11-14 | 成都卫士通信息产业股份有限公司 | 一种实现ipsec vpn加解密处理的方法及装置 |
CN105630731A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种多cpu环境下网卡数据处理方法和装置 |
CN106789152A (zh) * | 2016-11-17 | 2017-05-31 | 东软集团股份有限公司 | 基于多队列网卡的处理器扩展方法及装置 |
CN108363618A (zh) * | 2018-01-24 | 2018-08-03 | 华为技术有限公司 | 一种进程处理的方法和装置 |
CN108628684A (zh) * | 2017-03-20 | 2018-10-09 | 华为技术有限公司 | 一种基于dpdk的报文处理方法及计算机设备 |
-
2018
- 2018-12-29 CN CN201811634989.6A patent/CN109729024B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545216A (zh) * | 2003-11-20 | 2004-11-10 | 中兴通讯股份有限公司 | 网络处理器中核心处理器与微引擎之间的通信方法 |
CN101631139A (zh) * | 2009-05-19 | 2010-01-20 | 华耀环宇科技(北京)有限公司 | 基于多核平台的负载均衡软件架构及方法 |
CN102780625A (zh) * | 2012-07-30 | 2012-11-14 | 成都卫士通信息产业股份有限公司 | 一种实现ipsec vpn加解密处理的方法及装置 |
CN105630731A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种多cpu环境下网卡数据处理方法和装置 |
CN106789152A (zh) * | 2016-11-17 | 2017-05-31 | 东软集团股份有限公司 | 基于多队列网卡的处理器扩展方法及装置 |
CN108628684A (zh) * | 2017-03-20 | 2018-10-09 | 华为技术有限公司 | 一种基于dpdk的报文处理方法及计算机设备 |
CN108363618A (zh) * | 2018-01-24 | 2018-08-03 | 华为技术有限公司 | 一种进程处理的方法和装置 |
Non-Patent Citations (3)
Title |
---|
方浪等: "一种网络加速引擎模型的设计与实现", 《计算机安全》 * |
王俊昌等: "基于无锁数据结构的FIFO队列算法", 《计算机工程》 * |
赵长林 等: ""单生产者_单消费者(SPSC)环形缓冲队列算法的改进"", 《 2011年通信与信息技术新进展——第八届中国通信学会学术年会论文集》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021063154A1 (zh) * | 2019-09-30 | 2021-04-08 | 华为技术有限公司 | 一种队列通信的方法、系统及相关设备 |
CN110929297A (zh) * | 2019-11-05 | 2020-03-27 | 郑州信大捷安信息技术股份有限公司 | 一种fpga异步加解密系统及方法 |
CN111030844A (zh) * | 2019-11-14 | 2020-04-17 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
CN111031260B (zh) * | 2019-12-25 | 2024-05-28 | 普世(南京)智能科技有限公司 | 一种基于环形无锁队列的高速影像单向传输系统方法及系统 |
CN111031260A (zh) * | 2019-12-25 | 2020-04-17 | 普世(南京)智能科技有限公司 | 一种基于环形无锁队列的高速影像单向传输系统方法及系统 |
CN111208985A (zh) * | 2020-04-21 | 2020-05-29 | 南京云信达科技有限公司 | 基于生产者消费者模型的数据处理方法、系统及存储介质 |
CN113301104A (zh) * | 2021-02-09 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理系统及方法 |
CN113301104B (zh) * | 2021-02-09 | 2024-04-12 | 阿里巴巴集团控股有限公司 | 数据处理系统及方法 |
CN113438241A (zh) * | 2021-06-25 | 2021-09-24 | 佳缘科技股份有限公司 | 一种数据传输方法及系统 |
CN113438241B (zh) * | 2021-06-25 | 2024-02-13 | 佳缘科技股份有限公司 | 一种数据传输方法及系统 |
CN113672406A (zh) * | 2021-08-24 | 2021-11-19 | 北京天融信网络安全技术有限公司 | 数据传输处理方法、装置、电子设备及存储介质 |
CN113672406B (zh) * | 2021-08-24 | 2024-02-06 | 北京天融信网络安全技术有限公司 | 数据传输处理方法、装置、电子设备及存储介质 |
CN113722070A (zh) * | 2021-09-10 | 2021-11-30 | 北京字节跳动网络技术有限公司 | 基于服务网格架构的微服务系统中的数据处理方法和装置 |
CN113722070B (zh) * | 2021-09-10 | 2023-12-29 | 抖音视界有限公司 | 基于服务网格架构的微服务系统中的数据处理方法和装置 |
CN114500403A (zh) * | 2022-01-24 | 2022-05-13 | 中国联合网络通信集团有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN114466079B (zh) * | 2022-02-09 | 2024-02-06 | 星环信息科技(上海)股份有限公司 | 请求处理方法、装置、代理服务器及存储介质 |
CN114466079A (zh) * | 2022-02-09 | 2022-05-10 | 星环信息科技(上海)股份有限公司 | 请求处理方法、装置、代理服务器及存储介质 |
CN115048376A (zh) * | 2022-06-08 | 2022-09-13 | 北京广利核系统工程有限公司 | 一种应用于核电站的数据处理方法及装置 |
CN115801629B (zh) * | 2023-02-03 | 2023-06-23 | 天翼云科技有限公司 | 双向转发侦测方法、装置、电子设备及可读存储介质 |
CN115801629A (zh) * | 2023-02-03 | 2023-03-14 | 天翼云科技有限公司 | 双向转发侦测方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109729024B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729024A (zh) | 数据包处理系统及方法 | |
US11057313B2 (en) | Event processing with enhanced throughput | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN104050029B (zh) | 一种任务调度系统 | |
JP6692000B2 (ja) | リスク識別方法、リスク識別装置、クラウドリスク識別装置及びシステム | |
US11405259B2 (en) | Cloud service transaction capsulation | |
CN110677277B (zh) | 数据处理方法、装置、服务器和计算机可读存储介质 | |
US8087022B2 (en) | Prevention of deadlock in a distributed computing environment | |
CN110389826B (zh) | 用于处理计算任务的方法、设备和计算程序产品 | |
WO2012037760A1 (zh) | 提升告警处理效率的方法、服务器及系统 | |
CN110392106A (zh) | 一种作业状态的推送方法及装置 | |
CN102457578A (zh) | 一种基于事件机制的分布式网络监控方法 | |
CN107153646A (zh) | 一种数据处理方法和设备 | |
CN109167979A (zh) | 多路监控视频人工智能分析的处理方法及系统 | |
CN110046187A (zh) | 数据处理系统、方法及装置 | |
CN111625422A (zh) | 线程监控方法、装置、电子设备及计算机可读存储介质 | |
CN109995787A (zh) | 一种数据处理方法及相关设备 | |
CN114095537A (zh) | 一种物联网应用中基于Netty的海量数据接入方法及系统 | |
CN109376020A (zh) | 多区块链交互并发下的数据处理方法、装置及存储介质 | |
CN103631665B (zh) | 一种基于消息队列的线程间通信的方法和系统 | |
CN101860486A (zh) | 一种基于漏桶算法的动态负载均衡机制 | |
CN106899504B (zh) | 一种跨集群服务的路由方法以及装置 | |
CN109947798A (zh) | 一种流事件的处理方法及装置 | |
CN114897532A (zh) | 操作日志处理方法、系统、装置、设备和存储介质 | |
CN114237902A (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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 702-2, No. 4811, Cao'an Highway, Jiading District, Shanghai Patentee after: CHINA UNITECHS Address before: 100872 5th floor, Renmin culture building, 59 Zhongguancun Street, Haidian District, Beijing Patentee before: CHINA UNITECHS |