CN107277062A - 数据包的并行处理方法及装置 - Google Patents
数据包的并行处理方法及装置 Download PDFInfo
- Publication number
- CN107277062A CN107277062A CN201710675999.3A CN201710675999A CN107277062A CN 107277062 A CN107277062 A CN 107277062A CN 201710675999 A CN201710675999 A CN 201710675999A CN 107277062 A CN107277062 A CN 107277062A
- Authority
- CN
- China
- Prior art keywords
- packet
- group
- pending
- preextraction
- grouping module
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种数据包的并行处理方法及装置,涉及计算机的技术领域,该方法包括:读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;对第一组数据包进行分析,得到分析结果,并将第二数据包进行缓存,以在下一时刻对第二组数据包进行分析;其中,第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在第一数组中预提取的多个相邻数据包,第二组数据包为第一数组中位于第一组数据包之后的数据包缓解了现有的数据包处理方法处理效率较慢的技术问题。
Description
技术领域
本发明涉及计算机的技术领域,尤其是涉及一种数据包的并行处理方法及装置。
背景技术
网络流量分析技术一直广泛应用于网络管理、防火墙、负载均衡、流量控制、网络审计等领域。随着网络技术的发展,网络链路带宽激增,互联网应用也越来越多样化,给高性能网络数据包处理带来了极大的挑战,同时也制约了网络流量分析的应用发展。
为了提高基于纯软件方案的数据包处理性能,近年来提出的一种数据平面开发工具集DPDK,提供了一个用户空间小的高效数据包处理库函数,通过环境抽象层旁路内核协议栈、轮询模式的数据包无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了X86处理器架构下的高性能数据包处理。
但是由于网络业务的多样化,使得网络流量分析本身除了2-3层的网络转发处理需求之外,更多的需要满足上千种协议的DPI识别、TCP重组还原以及上百种应用协议的解析。通常情况下,单个数据包的超长处理过程是串行进行的,每个数据包需要经历一长串的协议处理过程,业务种类比较多的情况下,数据包的处理过程超过上千种协议,指令过程不计其数,具体处理过程如图1所示。因此,在复杂网络流量分析的情况下,这种处理方式使得CPU指令集缓存Miss的概率极高,额外增加了指令切换的开销,也极大影响了数据包处理性能。
发明内容
有鉴于此,本发明的目的在于提供一种数据包的并行处理方法及装置,以缓解了现有的数据包处理方法处理效率较慢的技术问题。
第一方面,本发明实施例提供了一种数据包的并行处理方法,包括:读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;对所述第一组数据包进行分析,得到分析结果,并将所述第二数据包进行缓存,以在所述下一时刻对所述第二组数据包进行分析;其中,所述第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在所述第一数组中预提取的多个相邻数据包,所述第二组数据包为所述第一数组中位于所述第一组数据包之后的数据包。
进一步地,在读取当前时刻待处理的第一组数据包之前,所述方法还包括:获取待处理的所述第一数组,其中,所述第一数组中包括待处理的数据包的指针;将所述第一数组的指针添加至协议分组模块中待处理的指针数组中,其中,所述协议分组模块包括以下至少之一:IP协议分组模块,TCP协议分组模块,应用识别分组模块。
进一步地,读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:在第一时刻,调用所述IP协议分组模块,以使所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;在第二时刻,调用所述TCP协议分组模块,以使所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第二时刻为所述第一时刻之后的时刻;在第三时刻,调用所述应用识别分组模块,以使所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第三时刻为所述第二时刻之后的时刻。
进一步地,所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:所述IP协议分组模块判断缓存器中是否包含预提取的数据包;在判断出是的情况下,所述IP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
进一步地,所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:在所述IP协议分组模块对所述第一数组中的数据包分析完成之后,判断缓存器中是否包含预提取的数据包;在判断出是的情况下,所述TCP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在TCP指针数组中报文数量不为零的情况下,所述TCP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
进一步地,所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:在所述TCP协议分组模块对所述第一数组中的数据包分析完成之后,判断缓存器中是否包含预提取的数据包;在判断出是的情况下,所述应用识别分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在应用识别指针数组中报文数量不为零的情况下,所述应用识别分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
第二方面,本发明实施例还提供一种数据包的并行处理装置,包括:读取单元,用于读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;分析单元,用于对所述第一组数据包进行分析,得到分析结果,并将所述第二数据包进行缓存,以在所述下一时刻对所述第二组数据包进行分析;其中,所述第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在所述第一数组中预提取的多个相邻数据包,所述第二组数据包为所述第一数组中位于所述第一组数据包之后的数据包。
进一步地,所述装置还包括:获取单元,用于在读取当前时刻待处理的第一组数据包之前,获取待处理的所述第一数组,其中,所述第一数组中包括待处理的数据包的指针;添加单元,用于将所述第一数组的指针添加至协议分组模块中待处理的指针数组中,其中,所述协议分组模块包括以下至少之一:IP协议分组模块,TCP协议分组模块,应用识别分组模块。
进一步地,所述读取单元包括:第一读取模块,用于在第一时刻,调用所述IP协议分组模块,以使所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;第二读取模块,用于在第二时刻,调用所述TCP协议分组模块,以使所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第二时刻为所述第一时刻之后的时刻;第三读取模块,用于在第三时刻,调用所述应用识别分组模块,以使所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第三时刻为所述第二时刻之后的时刻。
进一步地,所述第一读取模块用于:所述IP协议分组模块判断缓存器中是否包含预提取的数据包;在判断出是的情况下,所述IP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
在本发明实施例中,首先读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;然后,对第一组数据包进行分析,得到分析结果,并将第二组数据包进行缓存,以在下一时刻对第二组数据包进行分析。在本发明实施例中,提出了一种高效并行数据包处理方法,通过该并行处理方法能够减少数据包处理过程中的指令缓存丢失的概率,进一步提高纯软件和模式网络数据包处理的性能,进而缓解了现有的数据包处理方法处理效率较慢的技术问题,从而实现了提高了数据包的数据效率的技术效果。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的一种数据包的处理方法的示意图;
图2是根据本发明实施例的一种数据包的并行处理方法的流程图;
图3是根据本发明实施例的一种数据包的并行处理方法的示意图;
图4是根据本发明实施例的一种IP协议分组模块的处理流程的示意图;
图5是根据本发明实施例的一种数据包的并行处理装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
根据本发明实施例,提供了一种数据包的并行处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本发明实施例的一种数据包的并行处理方法的流程图,如图2所示,该方法包括如下步骤:
步骤S102,读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
步骤S104,对所述第一组数据包进行分析,得到分析结果,并将所述第二数据包进行缓存,以在所述下一时刻对所述第二组数据包进行分析;
其中,所述第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在所述第一数组中预提取的多个相邻数据包,所述第二组数据包为所述第一数组中位于所述第一组数据包之后的数据包。
众所周知,指令与数据是程序运行的基本要素,现代CPU运行时要从CPU缓存加载指令和数据,CPU缓存器(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,当CPU调用大量数据时,就可先缓存中调用,从而加快读取速度。
在本发明实施例中,具体程序处理单元中一次调用时多次重复同样指令,多个数据包循环使用同一个处理单元,高效利用指令缓存。通过预测要处理的组内数据包,并预取几个数据包到缓存,其中,预取的数据包个数与并行的处理指令个数及处理单元的复杂度相关。该处理单元指令周期总和大于等于预取完成的花费时间,从而在下一次处理时,CPU要处理数据已经在缓存中就绪,从而达到数据的快速读取。综上所述,该方案减少数据包处理过程中的指令缓存miss的概率,通过处理的数据预测并预取,从而加速网络数据包的处理。
在本发明实施例中,首先读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;然后,对第一组数据包进行分析,得到分析结果,并将第二组数据包进行缓存,以在下一时刻对第二组数据包进行分析。在本发明实施例中,提出了一种高效并行数据包处理方法,通过该并行处理方法能够减少数据包处理过程中的指令缓存丢失的概率,进一步提高纯软件和模式网络数据包处理的性能,进而缓解了现有的数据包处理方法处理效率较慢的技术问题,从而实现了提高了数据包的数据效率的技术效果。
在一个可选实施方式中,在读取当前时刻待处理的第一组数据包之前,该方法还包括如下步骤:
步骤S1,获取待处理的所述第一数组,其中,所述第一数组中包括待处理的数据包的指针;
步骤S2,将所述第一数组的指针添加至协议分组模块中待处理的指针数组中,其中,所述协议分组模块包括以下至少之一:IP协议分组模块,TCP协议分组模块,应用识别分组模块。
在本发明实施例中,在读取当前时刻待处理的第一组数据包之前,需要获取待处理的数据包,首先,需要在每个CPU上建立任务线程,该线程调用dpdk poll收包函数,该收包函数一直轮询网卡的收包队列。当收到100个数据包后或者经过t0时间后,把收到的数据包的指针编进一个100个元素的数组(如图3中数据缓冲区所示的指针),然后,通过该指针遍历数组,执行读取数据包的过程,并预提取下一组数据包,并执行协议分组工作任务,该协议分组工作任务是初始化报文描述结构,其中,报文描述结构包含当前报文长度,报文内容的起始位置,收到该数据包的网卡索引及队列序号,二层头开始位置等信息。
任务线程在t1时间段调用ethernet协议分组模块,执行读取数据包,预取下一组数据包,处理多播及广播,vlan,qinq等信息,并根据数据包的下一层协议标识,把该数据包的指针添加到该协议要处理的数据包指针数组中,例如,IP指针数组,TCP指针数组,应用识别指针数组。如图3所示,将该数据包的指针添加至IP协议要处理的IP指针分组中,将该数据包的指针添加至TCP协议要处理的TCP指针分组中。
之后,就可以执行上述步骤S102,即,读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,该步骤S102的具体过程描述如下:
首先,在第一时刻,调用所述IP协议分组模块,以使所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
然后,在第二时刻,调用所述TCP协议分组模块,以使所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第二时刻为所述第一时刻之后的时刻;
最后,在第三时刻,调用所述应用识别分组模块,以使所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第三时刻为所述第二时刻之后的时刻。
具体地,如图3所示,在t2时刻(即,上述第一时刻)调用IP协议分组模块,执行读取数据包(即,第一组数据包),预取下一组数据包(即,第二组数据包)的操作,并该模块内建立连接跟踪表,维护系统内的连接数量,连接数据统计。接下来,在t3时刻(即,上述第二时刻)调用TCP协议分组模块,执行读取数据包(即,第一组数据包),预取下一组数据包(即,第二组数据包)的操作,产生TCP性能数据。在t4时刻(即,上述第三时刻)调用应用识别分组模块,执行读取数据包(即,第一组数据包),预取下一组数据包(即,第二组数据包)的操作,执行统计策略,统计数据,应用性能分析。在t5时刻调用统计输出处理模块。
在一个可选的实施方式中,所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括如下步骤:
步骤S11,所述IP协议分组模块判断所述缓存器中是否包含预提取的数据包;
步骤S12,在判断出是的情况下,所述IP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
步骤S13,在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
在本发明实施例中,各协议分组模块遍历有100个数据包指针的数组(即,第一数组)的同时对每个数组元素执行数据处理。首先,定义k为数组元素的索引,令k=0,读取2个报文v(k),v(k+1),一次处理2个报文,保证单次循环处理中的时间大于预取下一组数据包的时间。再预取v(k+2),v(k+3)数据包到缓存器中,内存中数据包预取到缓存是慢速过程,对CPU将要操作的数据提前就绪,预取数据是异步过程,避免CPU等待,当单次循环程序执行完成,预取的数据已经就位。依据v(k),v(k+1)的报文内容,执行协议分组工作任务,然后,把报文的指针推进到下一层协议分组模块的数组里,以备下一级协议处理单元使用,然后k增加1,这时v(k+2),v(k+3)已经在高速缓存了,再读取即v(k+2)和v(k+3),重复以上步骤,直到数组内的所有数据包都处理完成。
具体处理过程如图4所示,IP协议分组模块首先判断IP指针数组中的报文数是否为零,其中,如果为零,则表示IP指针数组中不包含待处理数据包,如果不为零,则表示IP指针数组中还包含待处理的数据包。
如图4所示,如果判断出IP指针数组中报文数不为零,则获取报文v(k)和报文v(k+1)所对应的数据包(即,第一组数据包),并预提取v(k+2)所对应的数据包和v(k+3)所对应的数据包(即,第二组数据包)。并在获取到第一组数据包之后,对第一组数据包进行分析,得到分析结果。在对其进行分析之后,还可以执行其他处理过程,具体处理过程对此不做具体限定。
如图4所示,在对第一组数据包进行分析之后,还可以解析报文v(k)和报文v(k+1)的下一层协议,并执行v(k)分发下一层协议分组处理缓冲区(即,将报文的指针推进到下一层协议分组模块的数组里),以及,v(k+1)分发下一层协议分组处理缓冲区的步骤(即,将报文的指针推进到下一层协议分组模块的数组里)。并在执行该步骤之后,读取v(k+2)所对应的数据包和v(k+3)所对应的数据包。
具体地,IP协议分组模块在读取第一组数据包时,首先判断缓存器中是否包含预提取的数据包,如果是的话,IP协议分组模块从缓存器中提取预提取的数据包作为第一组数据包,并在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器;如果否的话,表明数据包还未开始处理,或者,数据包已经处理完,其中,如果还未开始处理,则开始读取第一个数据包和第二个数据包,并将第三个数据包和第四个数据包缓存至缓存器中,并依此通过上述流程对下述数据包执行相应的处理。
在一个可选的实施方式中,所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包如下步骤:
步骤S21,在所述IP协议分组模块对所述第一数组中的数据包分析完成之后,判断所述缓存器中是否包含预提取的数据包;
步骤S22,在判断出是的情况下,所述TCP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
步骤S23,在TCP指针数组中报文数量不为零的情况下,所述TCP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
需要说明的是,在本发明实施例中,TCP协议分组模块的处理流程与IP协议分组模块的处理流程相同,此处不再赘述。
在一个可选的实施方式中,所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包如下步骤:
步骤S31,在所述TCP协议分组模块对所述第一数组中的数据包分析完成之后,判断所述缓存器中是否包含预提取的数据包;
步骤S32,在判断出是的情况下,所述应用识别分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
步骤S33,在应用识别指针数组中报文数量不为零的情况下,所述应用识别分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
需要说明的是,在本发明实施例中,应用识别分组模块的处理流程与IP协议分组模块的处理流程相同,此处不再赘述。
综上所述,在本发明实施例中,具体程序处理单元中一次调用时多次重复同样指令,多个数据包循环使用同一个处理单元,高效利用指令缓存。通过预测要处理的组内数据包,并预取几个数据包到缓存,其中,预取的数据包个数与并行的处理指令个数及处理单元的复杂度相关。该处理单元指令周期总和大于等于预取完成的花费时间,从而在下一次处理时,CPU要处理数据已经在缓存中就绪,从而达到数据的快速读取。综上所述,该方案减少数据包处理过程中的指令缓存miss的概率,通过处理的数据预测并预取,从而加速网络数据包的处理。
实施例二:
本发明实施例还提供了一种数据包的并行处理装置,该数据包的并行处理装置主要用于执行本发明实施例上述内容所提供的数据包的并行处理方法,以下对本发明实施例提供的数据包的并行处理装置做具体介绍。
图5是根据本发明实施例的一种数据包的并行处理装置的示意图,如图5所示,该数据包的并行处理装置主要包括:读取单元51和分析单元52,其中:
读取单元,用于读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
分析单元,用于对所述第一组数据包进行分析,得到分析结果,并将所述第二数据包进行缓存,以在所述下一时刻对所述第二组数据包进行分析;
其中,所述第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在所述第一数组中预提取的多个相邻数据包,所述第二组数据包为所述第一数组中位于所述第一组数据包之后的数据包。
在本发明实施例中,首先读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;然后,对第一组数据包进行分析,得到分析结果,并将第二组数据包进行缓存,以在下一时刻对第二组数据包进行分析。在本发明实施例中,提出了一种高效并行数据包处理方法,通过该并行处理方法能够减少数据包处理过程中的指令缓存丢失的概率,进一步提高纯软件和模式网络数据包处理的性能,进而缓解了现有的数据包处理方法处理效率较慢的技术问题,从而实现了提高了数据包的数据效率的技术效果。
可选地,所述装置还包括:获取单元,用于在读取当前时刻待处理的第一组数据包之前,获取待处理的所述第一数组,其中,所述第一数组中包括待处理的数据包的指针;添加单元,用于将所述第一数组的指针添加至协议分组模块中待处理的指针数组中,其中,所述协议分组模块包括以下至少之一:IP协议分组模块,TCP协议分组模块,应用识别分组模块。
可选地,所述读取单元包括:第一读取模块,用于在第一时刻,调用所述IP协议分组模块,以使所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;第二读取模块,用于在第二时刻,调用所述TCP协议分组模块,以使所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第二时刻为所述第一时刻之后的时刻;第三读取模块,用于在第三时刻,调用所述应用识别分组模块,以使所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第三时刻为所述第二时刻之后的时刻。
可选地,所述第一读取模块用于:所述IP协议分组模块判断所述缓存器中是否包含预提取的数据包;在判断出是的情况下,所述IP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
可选地,所述第二读取模块用于:在所述IP协议分组模块对所述第一数组中的数据包分析完成之后,判断所述缓存器中是否包含预提取的数据包;在判断出是的情况下,所述TCP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在TCP指针数组中报文数量不为零的情况下,所述TCP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
可选地,所述第三读取模块用于:在所述TCP协议分组模块对所述第一数组中的数据包分析完成之后,判断所述缓存器中是否包含预提取的数据包;在判断出是的情况下,所述应用识别分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;在应用识别指针数组中报文数量不为零的情况下,所述应用识别分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据包的并行处理方法,其特征在于,包括:
读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
对所述第一组数据包进行分析,得到分析结果,并将所述第二组数据包进行缓存,以在所述下一时刻对所述第二组数据包进行分析;
其中,所述第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在所述第一数组中预提取的多个相邻数据包,所述第二组数据包为所述第一数组中位于所述第一组数据包之后的数据包。
2.根据权利要求1所述的方法,其特征在于,在读取当前时刻待处理的第一组数据包之前,所述方法还包括:
获取待处理的所述第一数组,其中,所述第一数组中包括待处理的数据包的指针;
将所述第一数组的指针添加至协议分组模块中待处理的指针数组中,其中,所述协议分组模块包括以下至少之一:IP协议分组模块,TCP协议分组模块,应用识别分组模块。
3.根据权利要求2所述的方法,其特征在于,读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:
在第一时刻,调用所述IP协议分组模块,以使所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
在第二时刻,调用所述TCP协议分组模块,以使所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第二时刻为所述第一时刻之后的时刻;
在第三时刻,调用所述应用识别分组模块,以使所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第三时刻为所述第二时刻之后的时刻。
4.根据权利要求3所述的方法,其特征在于,所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:
所述IP协议分组模块判断缓存器中是否包含预提取的数据包;
在判断出是的情况下,所述IP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
5.根据权利要求3所述的方法,其特征在于,所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:
在所述IP协议分组模块对所述第一数组中的数据包分析完成之后,判断缓存器中是否包含预提取的数据包;
在判断出是的情况下,所述TCP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
在TCP指针数组中报文数量不为零的情况下,所述TCP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
6.根据权利要求3所述的方法,其特征在于,所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包包括:
在所述TCP协议分组模块对所述第一数组中的数据包分析完成之后,判断缓存器中是否包含预提取的数据包;
在判断出是的情况下,所述应用识别分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
在应用识别指针数组中报文数量不为零的情况下,所述应用识别分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
7.一种数据包的并行处理装置,其特征在于,包括:
读取单元,用于读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
分析单元,用于对所述第一组数据包进行分析,得到分析结果,并将所述第二组数据包进行缓存,以在所述下一时刻对所述第二组数据包进行分析;
其中,所述第一组数据包为第一数组中初始时刻待处理的多个相邻的数据包或者前一时刻在所述第一数组中预提取的多个相邻数据包,所述第二组数据包为所述第一数组中位于所述第一组数据包之后的数据包。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
获取单元,用于在读取当前时刻待处理的第一组数据包之前,获取待处理的所述第一数组,其中,所述第一数组中包括待处理的数据包的指针;
添加单元,用于将所述第一数组的指针添加至协议分组模块中待处理的指针数组中,其中,所述协议分组模块包括以下至少之一:IP协议分组模块,TCP协议分组模块,应用识别分组模块。
9.根据权利要求8所述的装置,其特征在于,所述读取单元包括:
第一读取模块,用于在第一时刻,调用所述IP协议分组模块,以使所述IP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包;
第二读取模块,用于在第二时刻,调用所述TCP协议分组模块,以使所述TCP协议分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第二时刻为所述第一时刻之后的时刻;
第三读取模块,用于在第三时刻,调用所述应用识别分组模块,以使所述应用识别分组模块读取当前时刻待处理的第一组数据包,并预提取下一时刻待处理的第二组数据包,所述第三时刻为所述第二时刻之后的时刻。
10.根据权利要求9所述的装置,其特征在于,所述第一读取模块用于:
所述IP协议分组模块判断缓存器中是否包含预提取的数据包;
在判断出是的情况下,所述IP协议分组模块从所述缓存器中提取所述预提取的数据包,并将所述预提取的数据包作为所述第一组数据包;
在IP指针数组中报文数量不为零的情况下,所述IP协议分组模块基于添加的指针预提取所述第二组数据包,并将所述第二组数据包缓存至所述缓存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710675999.3A CN107277062B (zh) | 2017-08-09 | 2017-08-09 | 数据包的并行处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710675999.3A CN107277062B (zh) | 2017-08-09 | 2017-08-09 | 数据包的并行处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107277062A true CN107277062A (zh) | 2017-10-20 |
CN107277062B CN107277062B (zh) | 2019-12-24 |
Family
ID=60079690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710675999.3A Active CN107277062B (zh) | 2017-08-09 | 2017-08-09 | 数据包的并行处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107277062B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111740947A (zh) * | 2020-05-11 | 2020-10-02 | 深圳震有科技股份有限公司 | 一种数据包批量处理方法、智能终端及存储介质 |
CN113360448A (zh) * | 2021-06-04 | 2021-09-07 | 展讯通信(上海)有限公司 | 数据包处理方法及装置 |
CN115632948A (zh) * | 2022-12-19 | 2023-01-20 | 无锡沐创集成电路设计有限公司 | 应用于网卡的中断调控方法、装置、存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636480B1 (en) * | 1999-09-08 | 2003-10-21 | Riverstone Networks, Inc. | Method and system for controlling data flow through a multiport switch |
CN101488960A (zh) * | 2009-03-04 | 2009-07-22 | 哈尔滨工程大学 | 基于并行处理的tcp协议及其数据还原装置及方法 |
CN103141050A (zh) * | 2011-12-28 | 2013-06-05 | 华为技术有限公司 | 快速通道互联系统中数据包重传方法、节点 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN105337888A (zh) * | 2015-11-18 | 2016-02-17 | 华为技术有限公司 | 基于多核转发的负载均衡方法、装置及虚拟交换机 |
CN105450653A (zh) * | 2015-12-07 | 2016-03-30 | 中国电子科技集团公司第十研究所 | 减少空间信息网络中tcp报文丢失的方法 |
-
2017
- 2017-08-09 CN CN201710675999.3A patent/CN107277062B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636480B1 (en) * | 1999-09-08 | 2003-10-21 | Riverstone Networks, Inc. | Method and system for controlling data flow through a multiport switch |
CN101488960A (zh) * | 2009-03-04 | 2009-07-22 | 哈尔滨工程大学 | 基于并行处理的tcp协议及其数据还原装置及方法 |
CN103141050A (zh) * | 2011-12-28 | 2013-06-05 | 华为技术有限公司 | 快速通道互联系统中数据包重传方法、节点 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN105337888A (zh) * | 2015-11-18 | 2016-02-17 | 华为技术有限公司 | 基于多核转发的负载均衡方法、装置及虚拟交换机 |
CN105450653A (zh) * | 2015-12-07 | 2016-03-30 | 中国电子科技集团公司第十研究所 | 减少空间信息网络中tcp报文丢失的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111740947A (zh) * | 2020-05-11 | 2020-10-02 | 深圳震有科技股份有限公司 | 一种数据包批量处理方法、智能终端及存储介质 |
CN113360448A (zh) * | 2021-06-04 | 2021-09-07 | 展讯通信(上海)有限公司 | 数据包处理方法及装置 |
CN115632948A (zh) * | 2022-12-19 | 2023-01-20 | 无锡沐创集成电路设计有限公司 | 应用于网卡的中断调控方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107277062B (zh) | 2019-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105577567B (zh) | 基于Intel DPDK的网络数据包并行处理方法 | |
US9465662B2 (en) | Processor with efficient work queuing | |
CN108809854B (zh) | 一种用于大流量网络处理的可重构芯片架构 | |
CN105393240B (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
Underwood et al. | A hardware acceleration unit for MPI queue processing | |
CN106537858B (zh) | 一种队列管理的方法和装置 | |
CN102299843B (zh) | 一种基于gpu和缓冲区的网络数据处理方法及系统 | |
Pourhabibi et al. | Cerebros: Evading the rpc tax in datacenters | |
CN108710535A (zh) | 一种基于智能处理器的任务调度系统 | |
CN102195874A (zh) | 数据分组的预提取 | |
CN107277062A (zh) | 数据包的并行处理方法及装置 | |
US11502967B2 (en) | Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment | |
Hsieh et al. | A high-throughput DPI engine on GPU via algorithm/implementation co-optimization | |
CN116627892B (zh) | 一种数据近存储计算方法、装置和存储介质 | |
CN103440213B (zh) | 一种应用于具有多cpu和网卡的系统的网卡驱动方法 | |
CN108762810B (zh) | 一种基于并行微引擎的网络报文头处理器 | |
CN110324204A (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
US20060029088A1 (en) | Reducing latency in a channel adapter by accelerated I/O control block processing | |
CN111653317B (zh) | 基因比对加速装置、方法及系统 | |
CN108494705A (zh) | 一种网络报文高速处理系统和方法 | |
CN111475205B (zh) | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 | |
CN102521042A (zh) | 基于哈佛结构dsp的快速正文切换方法 | |
CN107566316A (zh) | 一种报文解析方法、装置及网络处理器 | |
CN113553279B (zh) | 一种rdma通信加速集合通信的方法及系统 | |
CN109150591A (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 |