数据处理装置及数据处理方法制造方法及图纸

技术编号:18426069 阅读:53 留言:0更新日期:2018-07-12 01:56
本发明专利技术涉及一种数据处理装置及数据处理方法,所述装置包括M个协议栈、至少一个分发服务模块,其中,所述M个协议栈,分别运行于处理器的不同逻辑核,用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;所述分发服务模块,从网络接口上接收输入的数据包,并将所述数据包发送给所述M个协议栈中的一个协议栈进行协议处理;以及接收所述M个协议栈处理后的数据包,并将所述数据包通过所述网络接口向外部发送。本发明专利技术可以实现在多核的环境下,利用多核系统并行处理的特性,在操作系统用户空间实现多进程并行协议处理的功能,并减少数据包拷贝造成的资源消耗。

Data processing device and data processing method

The invention relates to a data processing device and a data processing method, which includes M protocol stack and at least one distribution service module, in which the M protocol stack runs in different logical cores of the processor, and is used to deal with processing packets independently according to the protocol processing rules. The distribution service module receives the input data packets from the network interface and sends the data packets to one protocol stack in the M protocol stack for protocol processing; and receives the data packets processed by the M protocol stack and sends the data packets outward through the network interface. The invention can realize the function of multi process parallel protocol processing in the user space of the operating system, and reduce the resource consumption caused by the copy of data packet in the multi core environment, using the characteristics of parallel processing of multi core system.

【技术实现步骤摘要】
数据处理装置及数据处理方法
本专利技术涉及计算机领域,具体涉及一种数据处理装置及数据处理方法。
技术介绍
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个协议栈用于根据协议处理规则,各自独立地对待本文档来自技高网...

【技术保护点】
1.一种数据处理装置,其特征在于,包括M个协议栈和至少一个分发服务模块,所述M个协议栈和至少一个分发服务模块设置在操作系统的用户空间,M为大于1的正整数,其中,所述M个协议栈,分别运行于处理器的不同逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;所述分发服务模块,从至少一个网络接口上的至少一个输入端口接收数据包,并将所述数据包存储至内存空间,其中,所述内存空间是经过内存映射后的存储空间,用户态和内核态都可以访问所述内存空间;所述M个协议栈中的一个协议栈,对所述数据包进行协议处理;所述分发服务模块,还用于接收所述M个协议栈中的一个协议栈进行协议处理后的数据包,并将所述处理后的数据包通过所述网络接口上的输出端口向外部发送。

【技术特征摘要】
1.一种数据处理装置,其特征在于,包括M个协议栈和至少一个分发服务模块,所述M个协议栈和至少一个分发服务模块设置在操作系统的用户空间,M为大于1的正整数,其中,所述M个协议栈,分别运行于处理器的不同逻辑核,所述M个协议栈用于根据协议处理规则,各自独立地对待处理数据包进行协议处理;所述分发服务模块,从至少一个网络接口上的至少一个输入端口接收数据包,并将所述数据包存储至内存空间,其中,所述内存空间是经过内存映射后的存储空间,用户态和内核态都可以访问所述内存空间;所述M个协议栈中的一个协议栈,对所述数据包进行协议处理;所述分发服务模块,还用于接收所述M个协议栈中的一个协议栈进行协议处理后的数据包,并将所述处理后的数据包通过所述网络接口上的输出端口向外部发送。2.如权利要求1所述的数据处理装置,其特征在于,还包括在所述操作系统的用户空间设置的内存管理模块;所述内存管理模块,包括用于存储数据包的所述内存空间,与所述M个协议栈对应的M个输入队列,以及与所述网络接口上的所述输出端口对应的输出队列;所述M个输入队列用于存储需要所述M个协议栈处理的数据包的指针,所述输出队列用于存储需要向外部发送的数据包的指针,所述指针指向所述数据包在所述内存空间的地址;所述分发服务模块具体用于:从所述网络接口上的所述输入端口接收到的所述数据包存储在所述内存空间;读取所述数据包的包头,根据所述包头在所述M个协议栈中确定需要对所述数据包进行协议处理的协议栈,并将所述数据包的指针插入与所述确定的所述协议栈对应的所述输入队列;在所述M个协议栈中确定的所述协议栈具体用于:根据该协议栈对应的所述输入队列中的指针在所述内存空间中读取所述数据包,并对所述数据包进行协议处理;若经过所述协议处理后的数据包需要提交给用户应用,则将所述处理后的数据包拷贝给所述用户应用;若经过所述协议处理后的数据包需要向外部发送,则所述协议栈将所述处理后的数据包的指针插入所述内存管理模块的输出队列;所述分发服务模块具体用于:根据所述输出队列中的指针,将与所述指针对应的数据包从与所述输出队列对应的网络接口上的输出端口发送。3.如权利要求1或2任一项所述的数据处理装置,其特征在于,所述分发服务模块数目为M个,分别与所述M个协议栈对应,所述M个分发服务模块分别运行在所述处理器的不同的逻辑核。4.如权利要求1或2所述的数据处理装置,其特征在于,还包括:协议配置模块,用于对所述M个协议栈进行协议处理规则的配置。5.如权利要求1或2所述的数据处理装置,其特征在于,还包括:通用协议处理模块,用于对需要通用协议处理的数据包进行通用协议处理;所述分发服务模块还用于:根据从所述输入端口接收到的所述数据包的包头确定需要对该数据包进行通用协议处理时,将所述数据包的指针发送给所述通用协议处理模块,以便于所述通用协议处理模块对所述指针对应的数据包进行通用协议处理。6.如权利要求1或2所述的数据处理装置,其特征在于,还包括设置在所述操作系统的内核空间的网络输入/输出模块;所述分发服务模块具体用于:通过所述网络输入/输出模块从所述网络接口的输入端口上接收所述数据包,通过所述网络输入/输出模块从所述网络接口的输出端口上向外部发送所述数据包。7.如权利要求6所述的数据处理装置,其特征在于,所述分发服务模块采用轮询的方式通过所述网络输入/输出模块从所述网络接口的不同输入端口接收数据包。8.一种数据处理方法,其特征在于,应用于操作系统的用户空间,所述方法包括:从网络接口的输入端口接收数据包;将接收到的所述数据包存储到内存空间,所述内存空间是经过内存映射后的存储空间,用户态和内核态都可以访问所述内存空间;根据所述数据包的属性,确定需要对所述数据包进行协议处理的第一协议栈,所述第一协议栈为M个协议栈中的一个,所述M个协议栈设置在操作系统的用户空间,M为大于1的正整数;将所述数据包...

【专利技术属性】
技术研发人员:古强文刘飞施广宇
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1