CN104142867A - 数据处理装置及数据处理方法 - Google Patents
数据处理装置及数据处理方法 Download PDFInfo
- Publication number
- CN104142867A CN104142867A CN201310169222.1A CN201310169222A CN104142867A CN 104142867 A CN104142867 A CN 104142867A CN 201310169222 A CN201310169222 A CN 201310169222A CN 104142867 A CN104142867 A CN 104142867A
- Authority
- CN
- China
- Prior art keywords
- packet
- protocol stack
- pointer
- protocol
- memory headroom
- 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
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/546—Message passing systems or structures, e.g. queues
-
- 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/12—Protocol engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明涉及一种数据处理装置及数据处理方法,所述装置包括M个协议栈、至少一个分发服务模块,其中,所述M个协议栈,分别运行于处理器的不同逻辑核,用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;所述分发服务模块,从网络接口上接收输入的数据包,并将所述数据包发送给所述M个协议栈中的一个协议栈进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口向外部发送。本发明可以实现在多核的环境下,利用多核系统并行处理的特性,在操作系统用户空间实现多进程并行协议处理的功能,并减少数据包拷贝造成的资源消耗。
Description
技术领域
本发明涉及计算机领域,具体涉及一种数据处理装置及数据处理方法。
背景技术
Linux操作系统自身分为两部分,一部分为核心软件,也称作内核空间,另一部分为普通应用程序,也称为用户空间。现有技术中,Linux系统中仅有一个协议栈实例,其运行在内核空间,单个实施例协议栈无法实现对数据并行地进行协议处理,处理效率较低。同时,在开发人员在开发应用时,需要在用户态开发应用,因此,当用户态的应用需要访问内核态的内存空间时,需要将内存空间拷贝到用户空间,用户态的应用再对相应的数据进行访问。这导致了较大的资源消耗。
发明内容
本发明的目的是提供一种数据处理装置,以实现在多核的环境下,利用多核系统并行处理的特性,在操作系统用户空间实现多进程并行协议处理的功能,并通过内存映射技术,减少数据包拷贝造成的资源消耗。
第一方面,本发明实施例提供了一种数据处理装置,所述装置包括M个协议栈和至少一个分发服务模块,所述M个协议栈和至少一个分发服务模块设置在操作系统的用户空间,M为大于1的正整数,其中,
所述M个协议栈,分别运行于处理器的不同逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;
所述分发服务模块,用于根据预配置规则,从至少一个网络接口上的至少一个输入端口接收数据包,并将所述数据包存储至内存空间,以便于所述M个协议栈中的一个协议栈对所述数据包进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口上的输出端口向外部发送,其中,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问。
结合第一方面,在第一种可能的实施方式中,所述装置还包括在所述操作系统的用户空间设置的内存管理模块;
所述内存管理模块,包括用于存储数据包的所述内存空间,与所述M个协议栈对应的M个输入队列,以及与所述网络接口上的所述输出端口对应的输出队列;所述M个输入队列用于存储需要所述M个协议栈处理的数据包的指针,所述输出队列用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址;
所述分发服务模块具体用于:从所述网络接口上的所述输入端口接收到的数据包存储在所述内存空间;读取所述数据包的包头,根据所述包头确定需要对该数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述确定的所述协议栈对应的所述输入队列;
所述协议栈具体用于:
根据该协议栈对应的所述输入队列中的指针在所述内存空间中读取数据包,并对所述数据包进行协议处理;
若经过所述协议处理后的数据包需要提交给用户应用,则将所述数据包拷贝给所述用户应用;
若经过所述协议处理后的数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块的输出队列;
所述分发服务模块具体用于:根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送。
结合第一方面或第一种可能的实施方式,在第二种可能的实施方式中,所述分发服务模块数目为M个,分别与所述M个协议栈对应,所述M个分发服务模块分别运行在处理器不同的逻辑核。
结合第一方面或第一种可能的实施方式,或第二种可能的实施方式,在第三种可能的实施方式中,所述装置还包括:
协议配置模块,用于对所述协议栈进行协议处理规则的配置。
结合第一方面或第一种可能的实施方式,或第二种可能的实施方式,或第三种可能的实施方式,在第四种可能的实施方式中,所述装置还包括:
通用协议处理模块,用于对需要通用协议处理的数据包进行通用协议处理;
所述分发服务模块还用于:根据接收到的数据包的所述包头确定需要对该数据包需要进行通用协议处理时,将所述数据包的指针发送给所述通用协议处理模块,以便于所述通用协议处理模块对所述指针对应的数据包进行通用协议处理。
结合第一方面或第一种可能的实施方式,或第二种可能的实施方式,或第三种可能的实施方式,或第四种可能的实施方式,在第五种可能的实施方式中,所述装置还包括设置在所述操作系统的内核空间的网络输入/输出模块;
所述分发服务模块具体用于:通过所述网络输入/输出模块从所述网络接口的输入端口上接收数据包,通过所述网络输入/输出模块从所述网络接口的输出端口上向外部发送数据包。
结合第一方面的第五种可能的实施方式,在第六种可能的实施方式中,所述分发服务模块采用轮询的方式通过所述网络输入/输出模块从所述网络接口的不同输入端口接收数据包。
第二方面,本发明实施例提供了一种数据处理方法,应用于操作系统的用户空间,所述方法包括:
从网络接口的输入端口接收数据包;
将接收到的所述数据包存储到内存空间,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问;
根据所述数据包的属性,确定需要对所述数据包进行协议处理的第一协议栈,所述第一协议栈为M个协议栈中的一个,所述M个协议栈设置在操作系统的用户空间,M为大于1的正整数;
将所述数据包的指针插入与所述第一协议栈对应的输入队列,所述数据包的指针指向所述数据包在所述内存空间中的地址,以便于所述第一协议栈根据所述输入队列中的所述指针,从所述内存空间中取出所述指针对应的数据包,根据协议处理规则对所述数据包进行协议处理。
结合第二方面,在第一种实施方式中,如果所述协议处理后的数据包需要用户应用程序处理,则所述第一协议栈将所述协议处理后的数据包拷贝给所述用户应用程序;如果所述协议处理后的所述数据包需要向外部发送,则所述第一协议栈将所述数据包的指针插入输出队列;
所述方法还包括:
若所述第一协议栈将所述数据包的指针插入输出队列,则根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口的输出端口发送。
第三方面,本发明实施例提供了一种数据处理方法,所述方法包括:
第一协议栈将协议处理后的数据包存储到内存空间,并根据所述数据包的属性将所述数据包的指针插入输出队列,以便于分发服务模块从所述输出队列读取所述指针对应的所述数据包,通过与所述输出队列对应的所述网络接口上的输出端口将所述指针对应的数据包向外部发送;
所述第一协议栈为位于用户空间的M个协议栈中的一个,所述M个协议栈分别运行在处理器一个逻辑核,所述M个协议栈和所述分发服务模块设置在操作系统的用户空间;所述输出队列与网络接口上的输出端口对应,所述数据包的指针指向所述数据包在所述内存空间中的地址,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问,M为大于1的正整数。
结合第三方面,在第一种可能的实施方式中,所述的通过与所述输出队列对应的所述网络接口上的输出端口将所述指针对应的数据包向外部发送,具体包括:
通过网络输入/输出模块将所述内存空间中与所述指针对应的数据包发送到与所述输出队列对应的所述网络接口上的输出端口;
所述网络输入/输出模块设置在所述操作系统的内核空间。
第四方面,本发明实施例提供了一种计算机主机,所述计算机主机包括硬件层、运行在硬件层之上的操作系统层,所述硬件层包括至少一个网络接口和至少一个处理器,所述处理器包括至少M个逻辑核,M为大于1的正整数,所述操作系统分为内核空间和用户空间,在所述用户空间设置有:
M个协议栈,分别运行于处理器的M个逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;
分发服务模块,用于根据预配置规则,从至少一个网络接口上的至少一个输入端口接收数据包,并将所述数据包存储至内存空间,以便于所述M个协议栈中的一个协议栈对所述数据包进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口上的输出端口向外部发送,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问。
基于第四方面,在第一种可能的实施方式中,在所述用户空间还设置有:
内存管理模块,包括用于存储数据包的所述内存空间,与所述M个协议栈对应的M个输入队列,以及与所述网络接口上的所述输出端口对应的输出队列;所述M个输入队列用于存储需要所述M个协议栈处理的数据包的指针,所述输出队列用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址;
所述分发服务模块具体用于:将从所述网络接口上的所述输入端口接收到的数据包存储在所述内存空间;读取所述数据包的包头,根据所述包头确定需要对该数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述协议栈对应的所述输入队列;
所述协议栈具体用于:
根据该协议栈对应的所述输入队列中的指针在所述内存空间中读取数据包,并对所述数据包进行协议处理。
若经过所述协议处理后的数据包需要提交给用户应用,则将所述数据包拷贝给所述用户应用;
若经过所述协议处理后的数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块的输出队列,。
所述分发服务模块具体用于:根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送。
基于第四方面或第四方面的第一种可能的实施方式,在第二种可能的实施方式中,所述分发服务模块数目为M个,分别与所述M个协议栈对应,所述M个分发服务模块分别运行在处理器的M个逻辑核。
本发明实施例提供的数据处理装置,通过设置在操作系统用户空间并且分别运行处理器不同逻辑核的M个协议栈对至少一个分发服务模块从外部接收到的数据包,根据预配置规则,各自独立地对待处理数据包进行协议处理、可以在提高协议处理效率,并且应用在用户空间,可以方便开发人员开发应用,并且,本发明实施例中的几乎全部数据处理过程都集中在用户态操作,内核态只需要通过内存映射即可使用户态直接读取数据,不需要数据从内核态拷贝到用户态,从而避免资源消耗。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据处理装置一种实施例的结构图;
图2为本发明实施例提供的数据处理装置一种实施例的结构图;
图3为本发明实施例提供的数据处理装置中内存管理模块的工作原理示意图;
图4为本发明实施例提供的数据处理装置再一种实施例的结构图;
图5为本发明实施例提供的数据处理装置再一种实施例的结构图;
图6本发明实施例提供的数据处理装置再一种实施例的结构图;
图7为本发明实施例提供的数据处理方法一种实施例的流程图;
图8为本发明实施例提供的数据处理方法又一种实施例的流程图;
图9为本发明实施例提供的计算机主机的一种实施例的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,本发明实施例提供了一种数据处理装置,包括M个协议栈和至少一个分发服务模块,所述M个协议栈和至少一个分发服务模块设置在操作系统的用户空间,M为大于1的正整数,其中,
所述M个协议栈,分别运行于处理器的不同逻辑核,用于根据协议处理规则,各自独立地对待处理数据包进行协议处理
所述分发服务模块,根据预配置规则,从至少一个网络接口上的至少一个输入端口接收输入的数据包,并将所述数据包存储至内存空间,以便于所述M个协议栈中的一个协议栈对所述数据包进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口上的输出端口向外部发送,其中,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问。
其中,所述的分发服务模块可以只有一个也可以与M个协议栈一一对应,设置M个,分别运行在处理器的不同逻辑核。
处理器的不同逻辑核(multicore chips)是指在一枚处理器(chip)中集成多个完整的计算引擎,每个计算引擎称为一个逻辑核。
更具体的,所述的M个用户态协议栈分别在CPU的一个独立的逻辑核上执行,在多核系统中并行运行。M个协议栈独立进行协议处理,相互之间并行,没有交集。
如图2所示,在一种可能的实施方式中,所述装置还包括位于内核空间的网络输入/输出模块,所述分发服务模块通过所述网络输入/输出模块从所述网络接口的输入端口上接收数据包,通过所述网络输入/输出模块从所述网络接口的输出端口上向外部发送数据包。
所述装置还包括设置在用户空间的内存管理模块,如图2和图3所示,所述内存管理模块包括用于存储数据包的内存空间,与所述M个协议栈对应的M个输入队列,用于存储需要所述M个协议栈处理的数据包的指针,与所述网络接口上的n个输出端口对应的n个输出队列,用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址,n为大于1的正整数。
更具体的,所述的内存空间所述内存空间是经过内存映射后的存储空间,用户态和内核态都可以访问。
可选的,所述内存管理模块还可以包括i个进程间通信队列,i为大于0的正整数,用于存储在进程之间传递的数据包的指针,避免系统资源损耗。
所述网络输入/输出模块将从所述网络接口接收到的数据包存储在所述内存空间,所述分发服务模块读取所述数据包的包头,根据所述包头确定需要对该数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述协议栈对应的输入队列,所述协议栈根据该协议栈对应的输入队列中的指针在所述内存空间中读取数据包,并对所述数据包进行协议处理。
所述的协议栈对所述数据包进行协议处理后,根据数据包的目的地址等属性判断该数据包是否需要提交给用户应用,如果处理后的所述数据包需要提交给用户应用,则将所述数据包拷贝给所述用户应用;如果处理后的所述数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块中的输出队列,所述分发服务模块根据所述输出队列中的指针,通过所述网络输入/输出模块将所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送,所述的数据包的指针指向所述数据包在所述内存空间的地址。
在本实施例中,所述M个协议栈中遵循的协议处理规则,可以根据系统默认配置,也可以通过如图4所示的实施例中另外设置的协议配置模块进行配置,协议配置模块可对系统相关参数进行配置。包括协议栈运行参数配置、CPU逻辑核资源分配、数据分发策略配置等内容。
在一种可能的实施方式中,如图4所示,还可以在用户空间设置通用协议处理模块,用于对需要通用协议处理的数据包进行通用协议处理,所述分发服务模块根据接收到的数据包的所述包头确定需要对该数据包需要进行通用协议处理时,并将所述数据包的指针发送给所述通用协议处理模块对所述指针对应的数据包进行通用协议处理。例如ARP(Address Resolution Protocol,地址解析协议)或者ICMP(Internet Control Message Protocol,Internet控制报文协议)等处理较为简单的协议,可以通过通用协议处理模块进行协议处理。
该通用协议处理模块实现较为简单的、通用的协议处理过程,在整个系统中可有一个通用协议处理模块,并可根据系统的负载,将特定的协议从所述协议栈中卸载至通用协议处理模块,或将本模块处理的特定协议卸载到协议栈模块进行处理。通用协议处理模块也位于操作系统的用户空间。
通过上述实施例,在操作系统用户空间设置并且分别运行处理器不同逻辑核的M个协议栈对至少一个分发服务模块从外部接收到的数据包,根据预配置规则,各自独立地对待处理数据包进行协议处理、可以在提高协议处理效率,并且应用在用户空间,可以方便开发人员开发应用,并且,本发明实施例中的几乎全部数据处理过程都集中在用户态操作,内核态只需要通过内存映射,将数据通过内存映射透传到用户态,从而避免资源消耗。
如图5所示,在本发明实施例提供的数据处理装置的一种实施例中,本发明技术实现的具体实施例中,在用户空间只包含一个分发处理模块,所述分发处理模块可以运行于多核操作系统中处理器的任何一个逻辑核,
分发服务模块采用轮询(poll)方式从多个网络接口的不同输入端口抓取数据包,并通过网络输入/输出(I/O)模块采用内存映射的方式将接收到的数据包直接存储在内存管理模块的内存空间中,并通过内存映射的方式将该区域内存映射至用户空间。
网络输入/输出模块将接收到的数据包存储在内存空间后,分发服务模块到内存空间读取这些数据包,并根据数据包的包头等属性,确定该些数据包需要哪个协议栈处理,之后,根据分发策略,将数据包指针插入该协议栈对应的输入队列。每个用户态协议栈对应一个输入队列,分发至该协议栈的数据包指针均插入该接收队列。协议栈根据该输入队列中的指针在内存空间读取数据包,并进行协议处理。
在进行协议处理之后,如果协议处理后的数据包需要用户应用处理,则协议栈将处理后的数据包拷贝给对应的用户应用,反之则根据需要将数据包丢弃,或者将数据包存储到内存空间。
如果协议处理后的数据包需要向外部发送,则协议栈根据数据包的目的地址等属性,将数据包的指针插入到内存管理模块中的输出队列中,输出队列与网络接口上的输出端口具有配置的对应关系。之后,由于分发服务模块与网络接口上的输出端口具有配置好的对应关系,因此分发服务模块,在输出队列中取出与对应的输出端口相应的指针,并读取指针对应的数据包,通过网络输入/输出模块会将该输出队列中指针对应的数据发送给相应的网络接口上的输出端口。
通过上述实施例,通过上述实施例,在操作系统用户空间设置并且分别运行处理器不同逻辑核的M个协议栈对一个分发服务模块从外部接收到的数据包,根据配置好的协议处理规则,各自独立地对待处理数据包进行协议处理、可以在提高协议处理效率,并且应用在用户空间,可以方便开发人员开发应用,并且,本发明实施例中的几乎全部数据处理过程都集中在用户态操作,内核态只需要通过内存映射,将数据通过内存映射透传到用户态,从而避免资源消耗。
图6为本发明实施例提供的另外一种数据处理装置的结构图,与图5所示的实施例的区别在于,在用户空间包含M个分发服务模块,每个分发服务模块分别与一个协议栈对应。
在一种可能的是实施方式中,每个分发服务模块对应一个网络接口,只负责该网络接口的数据收发。
在另一种实施方式中,如果网络接口具有RSS功能,也就是说,具有RSS功能的网络接口可将从网络接口收到的数据包,根据其包头内容,将其分发至不同的硬件队列。则在该种模式下,一个分发服务模块可对应一个或多个接口卡上的一个或多个硬件队列,从这些硬件队列上收取数据包,并进行分发。类似的,发送数据包的过程也具有相似的过程。与网络接口硬件RSS功能配合使用的多分发服务模块配置方式示意图,如图6所示。
在系统配置多分发服务模块的情况下,分发服务模块从一个或多个队列抓取数据包。分发服务模块采用轮询模式,通过网络输入/输出模块依次从多个网络接口的多接收队列抓取数据包,将抓取的数据包存储在内存管理模块的内存空间中。分发服务模块根据抓取的数据包,根据其数据包头或数据包其他部分的值,将数据包的指针发送至特定协议栈对应的输入队列。
分发服务模块识别特定的通用协议,如ARP、ICMP等,可将此类数据包发送至通用协议处理模块处理。当然,可根据配置的不同,也可将ARP等协议放在协议栈模块进行处理。
通过上述实施例,在操作系统用户空间设置并且分别运行处理器不同逻辑核的M个协议栈对与M个协议栈一一对应的分发服务模块从外部接收到的数据包,根据预配置规则,各自独立地对待处理数据包进行协议处理、可以在提高协议处理效率,并且应用在用户空间,可以方便开发人员开发应用,并且,本发明实施例中的几乎全部数据处理过程都集中在用户态操作,内核态只需要通过内存映射,将数据通过内存映射透传到用户态,从而避免资源消耗。
相应的,如图7所示,本发明实施例还提供了一种数据处理方法,应用于操作系统的用户空间,所述方法包括:
701,从网络接口的输入端口接收数据包;
具体的,分发服务模块采用轮询的方式向网络接口的硬件输入端口抓取数据包,每个分发服务模块之间抓取数据包彼此独立并行。
702,将接收到的所述数据包存储到内存管理模块的内存空间;
具体的,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问;网络输入/输出模块通过内存映射的方式将接收到的数据包存储到内存管理模块的内存空间,每个数据包具有不同的地址。
703,根据所述数据包的属性,确定需要对所述数据包进行协议处理的第一协议栈;
具体的,如果只有一个分发服务模块,则该分发服务模块需要将读取每个接收到的数据包的包头,并根据包头中携带的属性,确定该数据包需要哪个协议栈处理,所述第一协议栈为M个协议栈中的一个,所述M个协议栈和所述分发服务模块设置在操作系统的用户空间,M为大于1的正整数;
如果系统存在多个分发服务模块,并且所述分发服务模块分别与一个网络接口对应,则一个分发服务模块只读取其对应的网络接口的输入端口上接收到的数据包,并根据该数据包的包头中的信息判断该数据包需要哪个协议栈处理。
704,将所述数据包的指针插入与所述第一协议栈对应的输入队列,所述数据包的指针指向所述数据包在所述内存空间中的地址,以便于所述第一协议栈根据所述输入队列中的所述指针,从所述内存空间中取出所述指针对应的数据包,根据协议处理规则对所述数据包进行协议处理。
具体的,在分发服务模块为接收到的数据包确定完需要哪个协议栈进行协议处理后,将指向该数据包在所述内存空间中的地址的指针插入到该协议栈对应的输入队列。
所述第一协议栈,根据所述输入队列中的所述指针,从所述内存空间中取出所述指针对应的数据包,根据协议处理规则对所述数据包进行协议处理。
更具体的,每个协议栈只关注自身对应的输入队列中的指针,在输入队列中取出指针,并根据指针到内存空间中获取数据包,进行协议处理。
所述第一协议栈在对所述数据包协议处理后,如果所述协议处理后的数据包需要用户应用程序处理,则所述第一协议栈将所述协议处理后的数据包拷贝给所述用户应用程序。
如果不需要应用程序处理,根据所述数据包的种类,需要保存的数据包,继续存储在内存空间,不需要保存的数据包,被协议栈丢弃。
如果所述协议处理后的所述数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块的输出队列,以便于所述分发服务模块根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口输出端口发送。
通过上述实施例,在操作系统用户空间设置并且分别运行处理器不同逻辑核的M个协议栈对至少一个分发服务模块从外部接收到的数据包,根据预配置规则,各自独立地对待处理数据包进行协议处理、可以在提高协议处理效率。
相应的,如图8所示,本发明实施例还提供了一种数据处理方法,所述的方法包括:
801.第一协议栈将协议处理后的数据包存储到内存空间,并根据所述数据包的属性将所述数据包的指针插入输出队列,以便于分发服务模块从所述输出队列读取所述指针对应的所述数据包,通过与所述输出队列对应的所述网络接口上的输出端口将所述指针对应的数据包向外部发送;
所述第一协议栈为位于用户空间的M个协议栈中的一个,所述M个协议栈分别运行在处理器一个逻辑核,所述M个协议栈和所述分发服务模块设置在操作系统的用户空间;所述输出队列与网络接口上的输出端口对应,所述数据包的指针指向所述数据包在所述内存空间中的地址,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问,M为大于1的正整数。
具体而言,被协议栈处理后的数据包,在不需要被用户应用处理时,直接被存储在内存空间,如果该数据包,需要向外部发送,则所述的第一协议栈还需要将该数据包的指针根据数据包的目的地址等属性,插入到相应的输出端口对应的输出队列。
分发服务模块根据数据包的指针,在内存空间中读取数据包。如果系统中存在多个分发服务模块,每个分发服务模块与网络接口上的网络输出端口具有配置好的对应关系,则每个分发服务模块只需要读取与其对应的输出队列中的指针对应的数据包。
分发服务模块通过所述网络接口上的输出端口将所述指针对应的数据包向外部发送;在确定该数据包需要在哪个网络接口的输出端口输出之后,通过网络输入/输出模块将所述内存空间中与所述指针对应的数据包发送到所述网络接口上的所述输出端口,所述输出端口与所述输出队列对应。
通过上述实施例,在操作系统用户空间设置并且分别运行处理器不同逻辑核的M个协议栈对至少一个分发服务模块从外部接收到的数据包,根据预配置规则,各自独立地对待处理数据包进行协议处理、可以在提高协议处理效率。并且,在需要发送数据包时,用户态的各功能实体之间只需要传递指向数据包的指针,而无需数据包拷贝,从而降低了资源消耗。
相应的,如图9所示,本发明实施例还提供了一种计算机主机,所述计算机主机包括硬件层、运行在硬件层之上的操作系统层,所述硬件层包括至少一个网络接口和至少一个处理器,所述处理器包括至少M个逻辑核,M为大于1的正整数,所述操作系统分为内核空间和用户空间,在所述用户空间设置有:
M个协议栈,分别运行于处理器的M个逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;
所述分发服务模块,用于根据预配置规则,从至少一个网络接口上的至少一个输入端口接收输入的数据包,并将所述数据包存储至内存空间,以便于所述M个协议栈中的一个协议栈对所述数据包进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口上的输出端口向外部发送,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问。
在一种可选的是实施例中,在所述用户空间还设置有:
内存管理模块,包括用于存储数据包的所述内存空间,与所述M个协议栈对应的M个输入队列,以及与所述网络接口上的所述输出端口对应的输出队列;所述M个输入队列用于存储需要所述M个协议栈处理的数据包的指针,所述输出队列用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址,所述内存空间是经过内存映射后的存储空间,所述存储空间用户态和内核态都可以访问;
所述分发服务模块具体用于:将从所述网络接口上的所述输入端口接收到的数据包存储在所述内存空间;读取所述数据包的包头,根据所述包头确定需要对该数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述协议栈对应的所述输入队列;
所述协议栈具体用于:
根据该协议栈对应的所述输入队列中的指针在所述内存空间中读取数据包,并对所述数据包进行协议处理。
若经过所述协议处理后的数据包需要提交给用户应用,则将所述数据包拷贝给所述用户应用;
若经过所述协议处理后的数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块的输出队列;
所述分发服务模块具体用于:根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送。
在一种可选的是实施例中,所述分发服务模块数目为M个,分别与所述M个协议栈对应,所述M个分发服务模块分别运行在处理器的M个逻辑核。
需说明的是,本发明实施例采用递进描述,各个实施例的相同或相似的部分可以相互借鉴。
通过上述实施例提供的计算机主机,可以实现在多核的环境下,利用多核系统并行处理的特性,在操作系统用户空间实现多进程并行协议处理的功能,并减少数据包拷贝造成的资源消耗。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据处理装置,其特征在于,包括M个协议栈和至少一个分发服务模块,所述M个协议栈和至少一个分发服务模块设置在操作系统的用户空间,M为大于1的正整数,其中,
所述M个协议栈,分别运行于处理器的不同逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;
所述分发服务模块,用于根据预配置规则,从至少一个网络接口上的至少一个输入端口接收数据包,并将所述数据包存储至内存空间,以便于所述M个协议栈中的一个协议栈对所述数据包进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口上的输出端口向外部发送,其中,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问。
2.如权利要求1所述的数据处理装置,其特征在于,还包括在所述操作系统的用户空间设置的内存管理模块;
所述内存管理模块,包括用于存储数据包的所述内存空间,与所述M个协议栈对应的M个输入队列,以及与所述网络接口上的所述输出端口对应的输出队列;所述M个输入队列用于存储需要所述M个协议栈处理的数据包的指针,所述输出队列用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址;
所述分发服务模块具体用于:从所述网络接口上的所述输入端口接收到的数据包存储在所述内存空间;读取所述数据包的包头,根据所述包头确定需要对该数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述确定的所述协议栈对应的所述输入队列;
所述协议栈具体用于:
根据该协议栈对应的所述输入队列中的指针在所述内存空间中读取数据包,并对所述数据包进行协议处理;
若经过所述协议处理后的数据包需要提交给用户应用,则将所述数据包拷贝给所述用户应用;
若经过所述协议处理后的数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块的输出队列;
所述分发服务模块具体用于:根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送。
3.如权利要求1或2任一项所述的数据处理装置,其特征在于,所述分发服务模块数目为M个,分别与所述M个协议栈对应,所述M个分发服务模块分别运行在处理器不同的逻辑核。
4.如权利要求1至3任一项所述的数据处理装置,其特征在于,还包括:
协议配置模块,用于对所述协议栈进行协议处理规则的配置。
5.如权利要求1至4任一项所述的数据处理装置,其特征在于,还包括:
通用协议处理模块,用于对需要通用协议处理的数据包进行通用协议处理;
所述分发服务模块还用于:根据接收到的数据包的所述包头确定需要对该数据包需要进行通用协议处理时,将所述数据包的指针发送给所述通用协议处理模块,以便于所述通用协议处理模块对所述指针对应的数据包进行通用协议处理。
6.如权利要求1至5任一项所述的数据处理装置,其特征在于,还包括设置在所述操作系统的内核空间的网络输入/输出模块;
所述分发服务模块具体用于:通过所述网络输入/输出模块从所述网络接口的输入端口上接收数据包,通过所述网络输入/输出模块从所述网络接口的输出端口上向外部发送数据包。
7.如权利要求6所述的数据处理装置,其特征在于,所述分发服务模块采用轮询的方式通过所述网络输入/输出模块从所述网络接口的不同输入端口接收数据包。
8.一种数据处理方法,其特征在于,应用于操作系统的用户空间,所述方法包括:
从网络接口的输入端口接收数据包;
将接收到的所述数据包存储到内存空间,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问;
根据所述数据包的属性,确定需要对所述数据包进行协议处理的第一协议栈,所述第一协议栈为M个协议栈中的一个,所述M个协议栈设置在操作系统的用户空间,M为大于1的正整数;
将所述数据包的指针插入与所述第一协议栈对应的输入队列,所述数据包的指针指向所述数据包在所述内存空间中的地址,以便于所述第一协议栈根据所述输入队列中的所述指针,从所述内存空间中取出所述指针对应的数据包,根据协议处理规则对所述数据包进行协议处理。
9.如权利要求8所述的数据处理方法,其特征在于,如果所述协议处理后的数据包需要用户应用程序处理,则所述第一协议栈将所述协议处理后的数据包拷贝给所述用户应用程序;如果所述协议处理后的所述数据包需要向外部发送,则所述第一协议栈将所述数据包的指针插入输出队列;
所述方法还包括:
若所述第一协议栈将所述数据包的指针插入输出队列,则根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口的输出端口发送。
10.一种数据处理方法,其特征在于,所述方法包括:
第一协议栈将协议处理后的数据包存储到内存空间,并根据所述数据包的属性将所述数据包的指针插入输出队列,以便于分发服务模块从所述输出队列读取所述指针对应的所述数据包,通过与所述输出队列对应的所述网络接口上的输出端口将所述指针对应的数据包向外部发送;
所述第一协议栈为位于用户空间的M个协议栈中的一个,所述M个协议栈分别运行在处理器一个逻辑核,所述M个协议栈和所述分发服务模块设置在操作系统的用户空间;所述输出队列与网络接口上的输出端口对应,所述数据包的指针指向所述数据包在所述内存空间中的地址,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问,M为大于1的正整数。
11.如权利要求10所述的数据处理方法,其特征在于,通过与所述输出队列对应的所述网络接口上的输出端口将所述指针对应的数据包向外部发送,具体包括:
通过网络输入/输出模块将所述内存空间中与所述指针对应的数据包发送到与所述输出队列对应的所述网络接口上的输出端口;
所述网络输入/输出模块设置在所述操作系统的内核空间。
12.一种计算机,其特征在于,包括硬件层、运行在硬件层之上的操作系统层,所述硬件层包括至少一个网络接口和至少一个处理器,所述处理器包括至少M个逻辑核,M为大于1的正整数,所述操作系统分为内核空间和用户空间,在所述用户空间设置有:
M个协议栈,分别运行于处理器的M个逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;
分发服务模块,用于根据预配置规则,从至少一个网络接口上的至少一个输入端口接收数据包,并将所述数据包存储至内存空间,以便于所述M个协议栈中的一个协议栈对所述数据包进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口上的输出端口向外部发送,所述内存空间是经过内存映射后的存储空间,所述内存空间用户态和内核态都可以访问。
13.如权利要求12所述的计算机,其特征在于,在所述用户空间还设置有内存管理模块:
所述内存管理模块,包括用于存储数据包的所述内存空间,与所述M个协议栈对应的M个输入队列,以及与所述网络接口上的所述输出端口对应的输出队列;所述M个输入队列用于存储需要所述M个协议栈处理的数据包的指针,所述输出队列用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址;
所述分发服务模块具体用于:将从所述网络接口上的所述输入端口接收到的数据包存储在所述内存空间;读取所述数据包的包头,根据所述包头确定需要对该数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述协议栈对应的所述输入队列;
所述协议栈具体用于:
根据该协议栈对应的所述输入队列中的指针在所述内存空间中读取数据包,并对所述数据包进行协议处理。
若经过所述协议处理后的数据包需要提交给用户应用,则将所述数据包拷贝给所述用户应用;
若经过所述协议处理后的数据包需要向外部发送,则所述协议栈将所述数据包的指针插入所述内存管理模块的输出队列,
所述分发服务模块具体用于:根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送。
14.如权利要求12或13所述的计算机,其特征在于,所述分发服务模块数目为M个,分别与所述M个协议栈对应,所述M个分发服务模块分别运行在处理器的M个逻辑核。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310169222.1A CN104142867B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及数据处理方法 |
CN201711354589.5A CN108268328B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及计算机 |
PCT/CN2013/087107 WO2014180110A1 (zh) | 2013-05-09 | 2013-11-14 | 数据处理装置及数据处理方法 |
US14/936,118 US10241830B2 (en) | 2013-05-09 | 2015-11-09 | Data processing method and a computer using distribution service module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310169222.1A CN104142867B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及数据处理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711354589.5A Division CN108268328B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及计算机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104142867A true CN104142867A (zh) | 2014-11-12 |
CN104142867B CN104142867B (zh) | 2018-01-09 |
Family
ID=51852048
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310169222.1A Active CN104142867B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及数据处理方法 |
CN201711354589.5A Active CN108268328B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及计算机 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711354589.5A Active CN108268328B (zh) | 2013-05-09 | 2013-05-09 | 数据处理装置及计算机 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10241830B2 (zh) |
CN (2) | CN104142867B (zh) |
WO (1) | WO2014180110A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106339435A (zh) * | 2016-08-19 | 2017-01-18 | 中国银行股份有限公司 | 一种数据分发方法、装置及系统 |
CN106469168A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 数据集成系统中多类型数据处理的方法及装置 |
CN106502806A (zh) * | 2016-10-31 | 2017-03-15 | 华为技术有限公司 | 一种总线协议命令处理装置及相关方法 |
CN106850565A (zh) * | 2016-12-29 | 2017-06-13 | 河北远东通信系统工程有限公司 | 一种高速的网络数据传输方法 |
CN107153527A (zh) * | 2017-05-17 | 2017-09-12 | 北京环境特性研究所 | 一种基于消息队列的并行雷达数据处理方法 |
CN108366018A (zh) * | 2017-01-26 | 2018-08-03 | 普天信息技术有限公司 | 一种基于dpdk的网络数据包处理方法 |
CN109343977A (zh) * | 2018-09-21 | 2019-02-15 | 新华三技术有限公司成都分公司 | 跨态通信方法和通道驱动装置 |
CN109547580A (zh) * | 2019-01-22 | 2019-03-29 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN111600833A (zh) * | 2019-07-30 | 2020-08-28 | 新华三技术有限公司 | 网络操作系统及报文转发方法 |
WO2020224300A1 (zh) * | 2019-05-06 | 2020-11-12 | 创新先进技术有限公司 | 基于用户态协议栈的报文分流方法、装置及系统 |
US10904719B2 (en) | 2019-05-06 | 2021-01-26 | Advanced New Technologies Co., Ltd. | Message shunting method, device and system based on user mode protocol stack |
CN112437032A (zh) * | 2019-08-24 | 2021-03-02 | 北京希姆计算科技有限公司 | 数据收发装置及方法、存储介质和电子设备 |
US11196677B2 (en) | 2016-12-30 | 2021-12-07 | Huawei Technologies Co., Ltd. | Heterogeneous multi-protocol stack method, apparatus, and system |
CN115001874A (zh) * | 2022-08-04 | 2022-09-02 | 成都卫士通信息产业股份有限公司 | 一种数据传输方法、装置、设备及介质 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10332235B1 (en) | 2018-05-01 | 2019-06-25 | At&T Intellectual Property I, L.P. | Direct memory access for graphics processing unit packet processing |
CN109379303A (zh) * | 2018-08-22 | 2019-02-22 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于提升万兆以太网性能的并行化处理框架系统和方法 |
US11489791B2 (en) * | 2018-10-31 | 2022-11-01 | Intel Corporation | Virtual switch scaling for networking applications |
US10795840B2 (en) | 2018-11-12 | 2020-10-06 | At&T Intellectual Property I, L.P. | Persistent kernel for graphics processing unit direct memory access network packet processing |
CN111752604A (zh) * | 2019-03-27 | 2020-10-09 | 阿里巴巴集团控股有限公司 | 一种具有多个运行模式的处理器 |
CN110209434B (zh) * | 2019-04-23 | 2022-04-22 | 努比亚技术有限公司 | 一种内存管理方法、装置及计算机可读存储介质 |
CN110557369A (zh) * | 2019-07-25 | 2019-12-10 | 中国航天系统科学与工程研究院 | 基于国产操作系统内核态的高速数据处理平台 |
CN110417791A (zh) * | 2019-08-02 | 2019-11-05 | 成都卫士通信息产业股份有限公司 | 一种密码设备及处理网络数据方法、装置 |
CN111182063B (zh) * | 2019-12-30 | 2022-09-09 | 奇安信科技集团股份有限公司 | 应用于电子设备的数据处理方法、电子设备及介质 |
CN111404818B (zh) * | 2020-03-12 | 2022-04-15 | 深圳市风云实业有限公司 | 一种面向通用多核网络处理器的路由协议优化方法 |
CN113225257B (zh) * | 2021-04-27 | 2022-04-12 | 深圳星耀智能计算技术有限公司 | 一种upf数据处理的方法、系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387279B1 (en) * | 2002-07-31 | 2008-05-14 | Texas Instruments Inc. | Cache coherency in a multi-processor system |
CN101867558A (zh) * | 2009-04-17 | 2010-10-20 | 深圳市永达电子股份有限公司 | 用户态网络协议栈系统及处理报文的方法 |
US20120216216A1 (en) * | 2011-02-21 | 2012-08-23 | Universidade Da Coruna | Method and middleware for efficient messaging on clusters of multi-core processors |
CN102662910A (zh) * | 2012-03-23 | 2012-09-12 | 浙江大学 | 基于嵌入式系统的网络交互体系及网络交互方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6246683B1 (en) * | 1998-05-01 | 2001-06-12 | 3Com Corporation | Receive processing with network protocol bypass |
US6675218B1 (en) | 1998-08-14 | 2004-01-06 | 3Com Corporation | System for user-space network packet modification |
GB2353676A (en) * | 1999-08-17 | 2001-02-28 | Hewlett Packard Co | Robust encryption and decryption of packetised data transferred across communications networks |
FI115940B (fi) * | 2002-06-10 | 2005-08-15 | First Hop Oy | Menetelmä ja laitteisto palvelulaadun toteuttamiseksi tiedonsiirrossa |
JP4211374B2 (ja) * | 2002-12-09 | 2009-01-21 | ソニー株式会社 | 通信処理装置、および通信処理方法、並びにコンピュータ・プログラム |
US7319670B2 (en) * | 2003-02-08 | 2008-01-15 | Hewlett-Packard Development Company, L.P. | Apparatus and method for transmitting data to a network based on retransmission requests |
US20040176942A1 (en) * | 2003-03-04 | 2004-09-09 | International Business Machines Corporation | Method, system and program product for behavioral simulation(s) of a network adapter within a computing node or across multiple nodes of a distributed computing environment |
US8130633B2 (en) * | 2004-10-22 | 2012-03-06 | Research In Motion Limited | Method for transferring data in a wireless network |
JP4492618B2 (ja) * | 2007-01-18 | 2010-06-30 | トヨタ自動車株式会社 | 車両用制御システム |
CN101030975B (zh) * | 2007-02-15 | 2010-05-26 | 重庆重邮信科通信技术有限公司 | 一种提高协议栈at指令响应速度的处理方法 |
US7992153B2 (en) * | 2007-05-30 | 2011-08-02 | Red Hat, Inc. | Queuing for thread pools using number of bytes |
CN101170511B (zh) * | 2007-11-20 | 2010-11-24 | 中兴通讯股份有限公司 | 嵌入式操作系统中实现多核处理器通信的装置及方法 |
EP2232791B1 (en) * | 2007-12-28 | 2013-07-10 | Bytemobile, Inc. | Tcp packet spacing |
US8141084B2 (en) * | 2008-04-07 | 2012-03-20 | International Business Machines Corporation | Managing preemption in a parallel computing system |
US20090296685A1 (en) | 2008-05-29 | 2009-12-03 | Microsoft Corporation | User-Mode Prototypes in Kernel-Mode Protocol Stacks |
US20100135179A1 (en) * | 2008-11-28 | 2010-06-03 | International Business Machines Corporation | Communication device |
CN101951378B (zh) * | 2010-09-26 | 2013-09-18 | 北京品源亚安科技有限公司 | 用于ssl vpn的协议栈系统及数据处理方法 |
CN102158414B (zh) * | 2011-04-12 | 2015-12-16 | 中兴通讯股份有限公司 | 中间设备的协议处理方法及装置 |
CN102801695B (zh) * | 2011-05-27 | 2015-10-14 | 华耀(中国)科技有限公司 | 虚拟专用网通信设备及其数据包传输方法 |
CN102339234B (zh) | 2011-07-12 | 2013-04-17 | 迈普通信技术股份有限公司 | 一种协议栈运行装置和方法 |
-
2013
- 2013-05-09 CN CN201310169222.1A patent/CN104142867B/zh active Active
- 2013-05-09 CN CN201711354589.5A patent/CN108268328B/zh active Active
- 2013-11-14 WO PCT/CN2013/087107 patent/WO2014180110A1/zh active Application Filing
-
2015
- 2015-11-09 US US14/936,118 patent/US10241830B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387279B1 (en) * | 2002-07-31 | 2008-05-14 | Texas Instruments Inc. | Cache coherency in a multi-processor system |
CN101867558A (zh) * | 2009-04-17 | 2010-10-20 | 深圳市永达电子股份有限公司 | 用户态网络协议栈系统及处理报文的方法 |
US20120216216A1 (en) * | 2011-02-21 | 2012-08-23 | Universidade Da Coruna | Method and middleware for efficient messaging on clusters of multi-core processors |
CN102662910A (zh) * | 2012-03-23 | 2012-09-12 | 浙江大学 | 基于嵌入式系统的网络交互体系及网络交互方法 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469168A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 数据集成系统中多类型数据处理的方法及装置 |
CN106469168B (zh) * | 2015-08-19 | 2019-11-26 | 阿里巴巴集团控股有限公司 | 数据集成系统中多类型数据处理的方法及装置 |
CN106339435A (zh) * | 2016-08-19 | 2017-01-18 | 中国银行股份有限公司 | 一种数据分发方法、装置及系统 |
CN106502806A (zh) * | 2016-10-31 | 2017-03-15 | 华为技术有限公司 | 一种总线协议命令处理装置及相关方法 |
CN106502806B (zh) * | 2016-10-31 | 2020-02-14 | 华为技术有限公司 | 一种总线协议命令处理装置及相关方法 |
CN106850565B (zh) * | 2016-12-29 | 2019-06-18 | 河北远东通信系统工程有限公司 | 一种高速的网络数据传输方法 |
CN106850565A (zh) * | 2016-12-29 | 2017-06-13 | 河北远东通信系统工程有限公司 | 一种高速的网络数据传输方法 |
US11196677B2 (en) | 2016-12-30 | 2021-12-07 | Huawei Technologies Co., Ltd. | Heterogeneous multi-protocol stack method, apparatus, and system |
CN108366018A (zh) * | 2017-01-26 | 2018-08-03 | 普天信息技术有限公司 | 一种基于dpdk的网络数据包处理方法 |
CN108366018B (zh) * | 2017-01-26 | 2020-11-27 | 普天信息技术有限公司 | 一种基于dpdk的网络数据包处理方法 |
CN107153527A (zh) * | 2017-05-17 | 2017-09-12 | 北京环境特性研究所 | 一种基于消息队列的并行雷达数据处理方法 |
CN109343977A (zh) * | 2018-09-21 | 2019-02-15 | 新华三技术有限公司成都分公司 | 跨态通信方法和通道驱动装置 |
CN109343977B (zh) * | 2018-09-21 | 2021-01-01 | 新华三技术有限公司成都分公司 | 跨态通信方法和通道驱动装置 |
CN109547580B (zh) * | 2019-01-22 | 2021-05-25 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN109547580A (zh) * | 2019-01-22 | 2019-03-29 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
WO2020224300A1 (zh) * | 2019-05-06 | 2020-11-12 | 创新先进技术有限公司 | 基于用户态协议栈的报文分流方法、装置及系统 |
US10904719B2 (en) | 2019-05-06 | 2021-01-26 | Advanced New Technologies Co., Ltd. | Message shunting method, device and system based on user mode protocol stack |
CN111600833A (zh) * | 2019-07-30 | 2020-08-28 | 新华三技术有限公司 | 网络操作系统及报文转发方法 |
CN111600833B (zh) * | 2019-07-30 | 2022-08-26 | 新华三技术有限公司 | 网络操作系统及报文转发方法 |
CN112437032A (zh) * | 2019-08-24 | 2021-03-02 | 北京希姆计算科技有限公司 | 数据收发装置及方法、存储介质和电子设备 |
CN112437032B (zh) * | 2019-08-24 | 2023-04-18 | 北京希姆计算科技有限公司 | 数据收发装置及方法、存储介质和电子设备 |
CN115001874A (zh) * | 2022-08-04 | 2022-09-02 | 成都卫士通信息产业股份有限公司 | 一种数据传输方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104142867B (zh) | 2018-01-09 |
US20160077872A1 (en) | 2016-03-17 |
CN108268328B (zh) | 2022-04-22 |
US10241830B2 (en) | 2019-03-26 |
WO2014180110A9 (zh) | 2015-02-12 |
CN108268328A (zh) | 2018-07-10 |
WO2014180110A1 (zh) | 2014-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104142867A (zh) | 数据处理装置及数据处理方法 | |
Le et al. | UNO: Uniflying host and smart NIC offload for flexible packet processing | |
WO2023087938A1 (zh) | 数据处理方法、可编程网卡设备、物理服务器及存储介质 | |
Mauch et al. | High performance cloud computing | |
US9300578B2 (en) | Large receive offload functionality for a system on chip | |
García-Dorado et al. | High-performance network traffic processing systems using commodity hardware | |
Moreno et al. | Commodity packet capture engines: Tutorial, cookbook and applicability | |
TW201340663A (zh) | 伺服器系統及其管理方法 | |
US11593136B2 (en) | Resource fairness enforcement in shared IO interfaces | |
CN106571978B (zh) | 数据包捕获方法及装置 | |
CN108366018A (zh) | 一种基于dpdk的网络数据包处理方法 | |
Lockwood et al. | Implementing ultra low latency data center services with programmable logic | |
US11902184B2 (en) | Methods and systems for providing a virtualized NVMe over fabric service | |
JP5479710B2 (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
CN102811127A (zh) | 云计算应用层的加速网卡 | |
Bansal et al. | Disaggregating stateful network functions | |
US20210216484A1 (en) | Processing task deployment in adapter devices and accelerators | |
CN102495764A (zh) | 数据分流的实现方法和装置 | |
Tang et al. | Towards high-performance packet processing on commodity multi-cores: current issues and future directions | |
US20220291928A1 (en) | Event controller in a device | |
US20220278946A1 (en) | Programmable packet processing pipeline with offload circuitry | |
CN116132369A (zh) | 云网关服务器中多网口的流量分发方法及相关设备 | |
CN109617833A (zh) | 多线程用户态网络协议栈系统的nat数据审计方法和系统 | |
Ploumidis et al. | The ExaNeSt Prototype: Evaluation of Efficient HPC Communication Hardware in an ARM-based Multi-FPGA Rack | |
CN113297567A (zh) | 网络过滤方法、装置、设备和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |