CN101707565A - 零拷贝网络报文发送、接收方法和装置 - Google Patents

零拷贝网络报文发送、接收方法和装置 Download PDF

Info

Publication number
CN101707565A
CN101707565A CN200910242100A CN200910242100A CN101707565A CN 101707565 A CN101707565 A CN 101707565A CN 200910242100 A CN200910242100 A CN 200910242100A CN 200910242100 A CN200910242100 A CN 200910242100A CN 101707565 A CN101707565 A CN 101707565A
Authority
CN
China
Prior art keywords
contiguous memory
address
address space
memory
array
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
Application number
CN200910242100A
Other languages
English (en)
Other versions
CN101707565B (zh
Inventor
邵宗有
聂华
历军
李永成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dawning Information Industry Beijing Co Ltd
Dawning Information Industry Co Ltd
Original Assignee
Dawning Information Industry Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN2009102421004A priority Critical patent/CN101707565B/zh
Publication of CN101707565A publication Critical patent/CN101707565A/zh
Application granted granted Critical
Publication of CN101707565B publication Critical patent/CN101707565B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种零拷贝网络报文发送、接收方法和装置,其中发送方法包括下列步骤:使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至网卡驱动程序中空闲的内存空间不足够申请;从申请到的连续内存中确定一块连续内存地址空间;使用连续内存地址空间进行网络报文发送。本发明的发送方法通过在网卡驱动程序中申请连续内存,发送的数据报文连续存储在报文DMA缓冲区中,因此网卡硬件在进行DMA操作时不受页面大小限制,网卡不需要采用中断方式通知网卡驱动程序数据报文发送完成的情况,不占用CPU资源。

Description

零拷贝网络报文发送、接收方法和装置
技术领域
本发明涉及零拷贝网络报文发送、接收领域,尤其涉及一种在内核空间申请可映射到用户空间的连续内存空间作为发送、接收报文DMA缓冲区的零拷贝网络报文发送、接收方法和装置。
背景技术
零拷贝(zero-copy)是指在某节点的网络报文收发过程中不会出现任何内存间的拷贝,发送时数据包由应用程序的用户缓冲区直接经过网络接口到达外部网络。中国专利文献CN101150487A公开了一种零拷贝网络报文发送方法,包括如下操作步骤:A.应用程序调用接口库提供的函数打开设备接口;B.打开设备接口函数在用户空间内存中申请一片连续的内存作为报文缓冲区,并把报文缓冲区首地址传送给内核驱动;C.内核驱动根据缓冲区首地址及缓冲区大小,构造缓冲区控制结构,并把控制结构的物理地址传送给接口函数,结构包括报文缓冲区队列的信息及队列中每个缓冲区的物理地址;D.接口函数根据缓冲区控制结构的地址,通过内存映射得到缓冲区控制结构中的信息;E.网卡驱动程序从缓冲区队列中取空闲缓冲区作为发送报文的DMA缓冲区,并把发送的报文数据不经内核空间直接DMA传送到报文缓冲区中;F.应用程序处理用户内存中报文发送缓冲区的报文数据。
中国专利文献CN101150488A公开了一种零拷贝网络报文接收方法,包括如下操作步骤:A.应用程序调用接口库提供的函数打开设备接口;B.打开设备接口函数在用户空间内存中申请一片连续的内存作为报文缓冲区,并把报文缓冲区首地址传送给内核驱动;C.内核驱动根据缓冲区首地址及缓冲区大小,构造缓冲区控制结构,并把控制结构的物理地址传送给接口函数,所述结构包括报文缓冲区队列的信息及队列中每个缓冲区的物理地址;D.接口函数根据缓冲区控制结构的地址,通过内存映射得到缓冲区控制结构中的信息;E.网卡驱动程序从缓冲区队列中取空闲缓冲区作为接收报文的DMA缓冲区,并把接收到的报文数据不经内核空间直接DMA传送到报文缓冲区中;F.应用程序处理用户内存中报文接收缓冲区的报文数据。
上述现有技术存在的共同问题是:在步骤B中,打开设备接口函数在用户空间内存申请的连续的内存可能在内核空间中并不是连续的内存地址,这样就需要将内存地址按页面(内存空间被分为若干个长度相等的区域,每个区域即本申请文件中所说的页面)大小转换成DMA(直接存储器访问)操作所需的物理地址;而且网卡硬件在进行DMA操作时,数据报文长度受页面大小限制,比如页面大小为4K字节,那么数据报文长度将被限制在4K字节内.此外,中国专利文献CN101150487A公开的一种零拷贝网络报文发送方法还存在的问题是,驱动程序需要使用中断方式与网卡硬件通讯以获得网卡进行报文传输后的硬件状态,为后续的报文接收准备报文DMA缓冲区,占用CPU资源.中国专利文献CN101150488A公开的一种零拷贝网络报文接收方法还存在的问题是,在网卡驱动程序中,需要使用中断或轮询方式进行数据报文接收,造成CPU资源使用率过高;特别是在接收大流量64字节短数据报文情况下,应用程序无法快速处理这些报文;这样网卡无法接收后续的数据报文,就出现了报文丢弃的现象.
发明内容
针对现有技术在零拷贝网络报文发送、接收过程中需要将内存地址进行转换、网卡硬件在进行DMA操作时数据报文长度受页面大小限制、占用CPU资源的问题,本发明的目的是提供一种零拷贝网络报文发送、接收方法和装置,以解决上述问题中的至少之一。
为实现上述目的,根据本发明的一个方面,提供了一种零拷贝网络报文发送方法,包括下列步骤:使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至网卡驱动程序中空闲的内存空间不足够申请;从申请到的连续内存中确定一块连续内存地址空间;以及使用连续内存地址空间进行网络报文发送。其中,从申请到的连续内存中确定一块连续内存地址空间的具体步骤包括:将申请到的每片连续内存的首地址存储到地址数组;将地址数组中的连续内存的首地址根据大小进行排序;在地址数组中根据排序后的首地址确定一块连续内存地址空间。
根据本发明,特定大小是指内存分配函数所能申请的连续内存的最大值;连续内存地址空间大于或等于用户指定的发送报文DMA缓冲区的大小;地址数组包括用于存储小于4G的首地址的低端地址数组和用于存储4G以上的首地址的高端地址数组,排序是根据连续内存的首地址的大小,在确定连续内存地址空间时首先选择在低端地址数组中进行。
根据本发明,在确定了连续内存空间之后将连续内存地址空间的首地址及大小保存至网卡驱动程序中,并按照页面大小将连续内存地址空间标记为保留页面,将其他申请的未使用的连续内存释放。
相应地,本发明提供了一种零拷贝网络报文发送装置,包括:申请模块,用于在网卡驱动程序中申请连续内存;确定模块,用于从申请到的连续内存中确定一块连续内存地址空间;以及发送模块,用于使用连续内存地址空间进行网络报文发送。其中,确定模块包括:地址数组模块,用于存储申请到的连续内存的首地址;排序模块,用于对首地址进行排序;以及查找模块,用于查找连续内存地址空间。
根据本发明的另一个方面,提供了一种零拷贝网络报文接收方法,包括下列步骤:使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至网卡驱动程序中空闲的内存空间不足够申请;从申请到的连续内存中确定一块连续内存地址空间;以及使用连续内存地址空间进行网络报文接收。其中,从申请到的连续内存中确定一块连续内存地址空间的具体步骤包括:将申请到的每片连续内存的首地址存储到地址数组;将地址数组中的连续内存的首地址根据大小进行排序;在地址数组中根据排序后的首地址确定一块连续内存地址空间。
根据本发明,特定大小是指内存分配函数所能申请的连续内存的最大值;连续内存地址空间大于或等于用户指定的接收报文DMA缓冲区的大小;地址数组包括用于存储小于4G的首地址的低端地址数组和用于存储4G以上的首地址的高端地址数组;在确定连续内存地址至间时首先选择在低端地址数组中进行。
根据本发明,在确定了连续内存空间之后将连续内存地址空间的首地址及大小保存至网卡驱动程序中,并按照页面大小将连续内存地址空间标记为保留页面,将其他申请的未使用的连续内存释放.
相应地,本发明提供了一种零拷贝网络报文接收装置,包括:申请模块,用于在网卡驱动程序中申请连续内存;确定模块,用于从申请到的连续内存中确定一块连续内存地址空间;以及接收模块,用于使用连续内存地址空间进行网络报文接收。其中,确定模块包括:地址数组模块,用于存储申请到的连续内存的首地址;排序模块,用于对首地址进行排序;以及查找模块,用于查找连续内存地址空间。
本发明的零拷贝网络报文发送方法和装置,通过在网卡驱动程序中申请连续内存,发送的数据报文连续存储在报文DMA缓冲区中,因此网卡硬件在进行DMA操作时不受页面大小限制,网卡不需要采用中断方式通知网卡驱动程序数据报文发送完成的情况,不占用CPU资源。
本发明的零拷贝网络报文接收方法和装置,通过在网卡驱动程序中申请连续内存,接收的数据报文连续存储在报文DMA缓冲区中,不需要将用户空间内存地址按页面大小转换成DMA操作所需的物理地址,因此网卡硬件在进行DMA操作时不受页面大小限制,即使接收大流量64字节短数据报文也不会出现报文丢弃现象,而且网卡驱动程序也不需要采用中断或轮询方式接收数据报文,不占用CUP资源。
附图说明
图1是本发明的零拷贝网络报文发送方法的流程图;
图2是本发明的的零拷贝网络报文发送方法中确定一块连续内存地址空间的具体操作流程图;
图3是本发明的零拷贝网络报文发送装置的结构示意图;
图4是本发明的零拷贝网络报文接收方法的流程图;
图5是本发明的零拷贝网络报文接收装置的结构示意图。
具体实施方式
参见图1所示,本实施例的一种零拷贝网络报文发送方法,具体包括以下操作步骤:S110,使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至网卡驱动程序中空闲的内存空间不足够申请;S120,从申请到的连续内存中确定一块连续内存地址空间;以及S130,使用连续内存地址空间进行网络报文发送。
在步骤S110中,特定大小是指内存分配函数所能申请的最大的连续内存的值,举例来说,在某些Linux操作系统中,利用内存分配函数能申请的最大连续内存为4M字节,内存分配函数不断地在网卡驱动程序中进行申请直至网卡驱动程序中空闲的内存空间小于内存分配函数所要申请的最大的连续内存,也即直至内存分配函数返回错误值时停止申请,在这个过程中内存分配函数会申请到多片连续内存。
在步骤S120中,从申请到的多片连续内存中确定一块连续内存地址空间,连续内存地址空间大于或等于用户指定的发送报文DMA缓冲区的大小。当需要确定的一块连续内存地址空间较小时,可能只需要一片申请到的连续内存即可,但是当需要确定的一块连续内存地址空间较大时,就会需要多片申请到的连续内存才能满足。
在步骤S130中,使用连续内存地址空间进行网络报文发送是指,网卡硬件将接收到的数据报文连续地存储在连续内存地址空间中,用户编写的应用程序通过接口函数接收存储在连续内存地址空间中的数据报文.
参见图2所示,从申请到的多片连续内存中确定一块连续内存地址空间具体包括以下步骤:
S120A,将申请到的每片连续内存的首地址存储到地址数组;
S120B,将地址数组中的连续内存的首地址根据大小进行排序;
S120C,在地址数组中根据排序后的首地址确定一块连续内存地址空间。
在步骤S120A中,每片连续内存的首地址是以数值形式表示,地址数组分为低端地址数组和高端地址数组,首地址小于4G的存储到低端地址数组,首地址大于或等于4G的存储到高端地址数组。低端地址数组和高端地址数组的划分,是因为Linux内核以4G为界将内存空间分为低端内存区域和高端内存区域。
在步骤S120B中,在多片连续内存的首地址存储到地址数组中之后,在地址数组中根据每片连续内存的首地址的大小将首地址进行排序。对首地址进行排序的目的是便于确定连续内存地址空间,因为所申请的每片连续内存大小是一样的,每个首地址对应一片连续内存,在连续内存地址空间的大小确定了之后也就确定了所需要的连续内存的片数。
当然在其他的实施例中,也可以在多片连续内存的首地址存储到地址数组过程中,边进行存储,边进行排序,排序不是等到存储结束之后才进行。过程虽然稍有差异,但效果是一样的,都可以方便确定连续内存地址空间。
在确定了连续内存地址空间之后,将需要用到的连续内存地址空间的首地址及大小保存至网卡驱动程序中,并按照页面大小将连续内存地址空间标记为保留页面。之所以将连续内存地址空间标记为保留页面,是因为在计算机操作系统内是按照页面大小来管理内存空间的。然后,将其他申请的而未使用的内存释放。在确定连续内存地址空间时首先选择在低端地址数组中确定,只有当低端地址数组对应的全部连续内存仍不足时才继续选择在高端地址数组中确定。由于Linux内核针对高端内存区域,需要建立映射表来完成物理地址和虚拟地址之间的映射。软、硬件都需要直接对连续内存地址空间进行操作,因此低端数组能更好地满足需求。
参见图3所示,本发明的一种零拷贝网络报文发送装置包括:申请模块210,用于在网卡驱动程序中申请连续内存;确定模块220,用于从申请模块210所申请到的连续内存中确定一块连续内存地址空间;以及发送模块230,用于使用确定模块220确定的连续内存地址空间进行网络报文发送。具体地说,网卡硬件将接收到的数据报文连续地存储在连续内存地址空间中,用户编写的应用程序通过接口函数接收存储在连续内存地址空间中的数据报文。其中,确定模块220具体包括:地址数组模块220-1,用于存储从申请模块210申请到的连续内存的首地址;排序模块220-2,用于对申请模块210申请到的连续内存的首地址进行排序;以及查找模块220-3,用于查找连续内存地址空间。
申请模块210在网卡驱动程序中申请特定大小的连续内存直至剩余的内存空间不足申请。
在确定模块220中,地址数组模块220-1储存申请到的多片连续内存的每一片连续内存的首地址,排序模块220-2对地址数组模块220-1中的首地址根据大小进行排序,查找模块220-3根据用户指定的发送报文DMA缓冲区的大小在地址数组模块220-1中查找一片或多片连续内存作为连续地址内存空间,连续地址内存空间大于或等于用户指定的发送报文DMA缓冲区的大小.
因为本发明的零拷贝网络报文发送方法和装置都是在网卡驱动程序中申请连续内存,从而使发送的数据报文连续存储在报文DMA缓冲区中,因此不需要将内存地址按页面大小转换成DMA操作所需的物理地址,网卡硬件在进行DMA操作时不受页面大小限制,网卡也不需要采用中断方式通知网卡驱动程序数据报文发送完成的情况,不占用CPU资源。
参见图4所示,本实施例的一种零拷贝网络报文接收方法,具体包括以下操作步骤:S310,使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至网卡驱动程序中空闲的内存空间不足够申请;S320,从申请到的连续内存中确定一块连续内存地址空间;S330,使用连续内存地址空间进行网络报文接收。
在步骤S310中,特定大小是指内存分配函数所能申请的最大的连续内存的值,举例来说,在某些Linux操作系统中,利用内存分配函数能申请的最大连续内存为4M字节,内存分配函数不断地在网卡驱动程序中进行申请直至网卡驱动程序中空闲的内存空间小于内存分配函数所要申请的最大的连续内存,也即直至内存分配函数返回错误值时停止申请,在这个过程中内存分配函数会申请到多片连续内存。
在步骤S320中,从申请到的连续内存中确定一块连续内存地址空间,连续内存地址空间大于或等于用户指定的接收报文DMA缓冲区的大小。当需要确定的一块连续内存地址空间较小时,可能只需要一片申请到的连续内存即可,但是当需要确定的一块连续内存地址空间较大时,就会需要多片申请到的连续内存才能满足。
在步骤S330中,使用连续内存地址空间进行网络报文接收是指,用户编写的应用程序通过接口函数将预发送的数据报文连续地存储在连续内存地址空间中。当需要进行报文发送时,应用程序通过接口函数通知网卡硬件进行报文发送。
从申请到的多片连续内存中确定一块连续内存地址空间具体步骤如下:将申请到的每一片连续内存的首地址(实际上是以数值形式表示)存储到地址数组,地址数组分为低端地址数组和高端地址数组,首地址小于4G的存储到低端地址数组,首地址大于或等于4G的存储到高端地址数组;将地址数组中的连续内存的首地址根据大小进行排序,对首地址进行排序的目的是便于确定一块连续内存地址空间,因为所申请的每片连续内存大小是一样的,每个首地址对应一片连续内存,在需要确定的连续内存地址空间的大小确定了之后,也就确定了所需要的连续内存的片数;在低端地址数组中根据排序后首地址确定一块连续内存地址空间。
在确定了连续内存地址空间之后,将需要用到的连续内存地址空间的首地址及大小保存至网卡驱动程序中,并按照页面大小将连续内存地址空间标记为保留页面,并且将将其他申请的未使用的内存释放。在确定连续内存地址空间时首先选择在低端地址数组中确定,只有当低端地址数组对应的全部连续内存仍不足时才继续选择在高端地址数组中确定。由于Linux内核针对高端内存区域,需要建立映射表来完成物理地址和虚拟地址之间的映射。软、硬件都需要直接对连续内存地址空间进行操作,因此低端数组能更好地满足需求。
当然在其他的实施例中,也可以在多片连续内存的首地址存储到地址数组过程中,边进行存储,边进行排序,排序不是等到存储结束之后才进行.过程虽然稍有差异,但效果是一样的,都可以方便确定连续内存地址空间.
而在另外一个实施例中,从申请到的连续内存中确定一块连续内存地址空间的具体步骤包括:将连续内存作为报文DMA缓冲区,将报文DMA缓冲区的首地址和尾地址写入网卡相关寄存器中。网卡相关寄存器是64位大小的寄存器。
参见图5所示,本实施例的零拷贝网络报文接收装置包括:申请模块410,用于在网卡驱动程序中申请多块连续内存;确定模块420,用于从申请模块410所申请到的多片连续内存中确定一块连续内存地址空间;以及接收模块430,用于使用确定模块420确定的连续内存地址空间进行网络报文接收。
其中,确定模块420具体包括:地址数组模块420-1,用于存储从申请模块410申请到的连续内存的首地址;排序模块420-2,用于对首地址进行排序;以及查找模块420-3,用于查找连续内存地址空间。
申请模块410在网卡驱动程序中申请特定大小的连续内存直至剩余的内存空间不足申请。
在确定模块420中,地址数组模块420-1储存申请到的多片连续内存的每一片连续内存的首地址,排序模块420-2对地址数组模块420-1中的首地址根据大小进行排序,查找模块420-3根据用户指定的接收报文DMA缓冲区的大小在地址数组模块420-1中查找一片或多片连续内存作为连续地址内存空间,连续地址内存空间大于或等于用户指定的接收报文DMA缓冲区的大小。
因为本发明的零拷贝网络报文接收方法和装置都是在网卡驱动程序中申请连续内存,接收的数据报文连续存储在报文DMA缓冲区中,所以不需要将用户空间内存地址按页面大小转换成DMA操作所需的物理地址,因此网卡硬件在进行DMA操作时不受页面大小限制,这样即使进行大流量64字节短数据报文接收也不会出现报文丢弃的情况,而且网卡驱动程序不需要采用中断或轮询方式接收数据报文,不占用CUP资源。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种零拷贝网络报文发送方法,其特征在于,包括下列步骤:
使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至所述网卡驱动程序中空闲的内存空间不足够申请;
从申请到的所述连续内存中确定一块连续内存地址空间;以及
使用所述连续内存地址空间进行网络报文发送。
2.根据权利要求1所述的发送方法,其特征在于,所述从申请到的所述连续内存中确定一块连续内存地址空间的具体步骤包括:
将申请到的每片连续内存的首地址存储到地址数组;
将所述地址数组中的所述连续内存的所述首地址根据大小进行排序;
在所述地址数组中根据排序后的所述首地址确定一块所述连续内存地址空间。
3.根据权利要求2所述的发送方法,其特征在于,所述特定大小是指所述内存分配函数所能申请的连续内存的最大值;所述连续内存地址空间大于或等于用户指定的发送报文DMA缓冲区的大小;所述地址数组包括用于存储小于4G的首地址的低端地址数组和用于存储4G以上的首地址的高端地址数组;在确定所述连续内存地址空间时首先选择在所述低端地址数组中进行。
4.根据权利要求2或3所述的发送方法,其特征在于,在确定了所述连续内存空间之后将所述连续内存地址空间的首地址及大小保存至所述网卡驱动程序中,并按照页面大小将所述连续内存地址空间标记为保留页面,将其他申请的未使用的所述连续内存释放。
5.一种零拷贝网络报文发送装置,其特征在于,包括:
申请模块,用于在网卡驱动程序中申请连续内存;
确定模块,用于从申请到的所述连续内存中确定一块连续内存地址空间;以及
发送模块,用于使用所述连续内存地址空间进行网络报文发送。
6.根据权利要求5所述的发送装置,其特征在于,所述确定模块包括:地址数组模块,用于存储申请到的所述连续内存的首地址;排序模块,用于对所述首地址进行排序;以及查找模块,用于查找所述连续内存地址空间。
7.一种零拷贝网络报文接收方法,其特征在于,包括下列步骤:
使用内存分配函数在网卡驱动程序中不断地申请特定大小的连续内存直至所述网卡驱动程序中空闲的内存空间不足够申请;
从申请到的所述连续内存中确定一块连续内存地址空间;以及
使用所述连续内存地址空间进行网络报文接收。
8.根据权利要求7所述的接收方法,其特征在于,所述从申请到的所述连续内存中确定一块连续内存地址空间的具体步骤包括:
将申请到的每片连续内存的首地址存储到地址数组;
将所述地址数组中的所述连续内存的所述首地址根据大小进行排序;
在所述地址数组中根据排序后的所述首地址确定一块所述连续内存地址空间。
9.根据权利要求7所述的接收方法,其特征在于,所述从申请到的所述连续内存中确定一块连续内存地址空间的具体步骤包括将所述连续内存作为报文DMA缓冲区,以及将所述报文DMA缓冲区的首地址和尾地址写入网卡相关寄存器中。
10.根据权利要求8所述的接收方法,其特征在于,所述特定大小是指所述内存分配函数所能申请的连续内存的最大值;所述连续内存地址空间大于或等于用户指定的接收报文DMA缓冲区的大小;所述地址数组包括用于存储小于4G的首地址的低端地址数组和用于存储4G以上的首地址的高端地址数组;在确定所述连续内存地址空间时首先选择在所述低端地址数组中进行.
11.根据权利要求8至10之一所述的接收方法,其特征在于,在确定了所述连续内存空间之后将所述连续内存地址空间的首地址及大小保存至所述网卡驱动程序中,并按照页面大小将所述连续内存地址空间标记为保留页面,将其他申请的未使用的所述连续内存释放。
12.一种零拷贝网络报文接收装置,其特征在于,包括:
申请模块,用于在网卡驱动程序中申请连续内存;
确定模块,用于从申请到的所述连续内存中确定一块连续内存地址空间;以及
接收模块,用于使用所述连续内存地址空间进行网络报文接收。
13.根据权利要求12所述的接收装置,其特征在于,所述确定模块包括:地址数组模块,用于存储申请到的所述连续内存的首地址;排序模块,用于对所述首地址进行排序;以及查找模块,用于查找所述连续内存地址空间。
CN2009102421004A 2009-12-04 2009-12-04 零拷贝网络报文发送、接收方法和装置 Active CN101707565B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102421004A CN101707565B (zh) 2009-12-04 2009-12-04 零拷贝网络报文发送、接收方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102421004A CN101707565B (zh) 2009-12-04 2009-12-04 零拷贝网络报文发送、接收方法和装置

Publications (2)

Publication Number Publication Date
CN101707565A true CN101707565A (zh) 2010-05-12
CN101707565B CN101707565B (zh) 2012-04-25

Family

ID=42377760

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102421004A Active CN101707565B (zh) 2009-12-04 2009-12-04 零拷贝网络报文发送、接收方法和装置

Country Status (1)

Country Link
CN (1) CN101707565B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917350A (zh) * 2010-09-13 2010-12-15 南京中兴特种软件有限责任公司 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法
CN102088406A (zh) * 2010-12-17 2011-06-08 天津曙光计算机产业有限公司 一种采用轮询机制的高速报文发送方法
CN102098214A (zh) * 2010-12-17 2011-06-15 天津曙光计算机产业有限公司 一种采用轮询机制的高速报文接收方法
CN102750245A (zh) * 2012-05-29 2012-10-24 中国人民解放军国防科学技术大学 报文接收方法、报文接收模块、装置及系统
CN103617125A (zh) * 2013-11-27 2014-03-05 曙光信息产业(北京)有限公司 内存空间的管理方法和装置
CN104394099A (zh) * 2014-12-08 2015-03-04 福建星网锐捷网络有限公司 一种报文传输方法及装置
WO2016033718A1 (zh) * 2014-09-01 2016-03-10 华为技术有限公司 访问文件的方法、装置和存储系统
CN105721241A (zh) * 2016-01-25 2016-06-29 汉柏科技有限公司 一种网卡收发报文的统计调试方法及系统
CN107124286A (zh) * 2016-02-24 2017-09-01 深圳市知穹科技有限公司 一种海量数据高速处理、交互的系统及方法
CN107135189A (zh) * 2016-02-26 2017-09-05 华为技术有限公司 一种报文发送方法及物理机
CN111200594A (zh) * 2019-12-20 2020-05-26 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质
CN111817818A (zh) * 2019-04-11 2020-10-23 中国移动通信集团四川有限公司 一种传输数据包的方法和装置
CN113098955A (zh) * 2021-03-30 2021-07-09 山东英信计算机技术有限公司 一种数据传输方法、装置、设备及计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7330862B1 (en) * 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
CN100490435C (zh) * 2006-10-09 2009-05-20 北京航空航天大学 一种降低并行多数字信号处理器之间消息传递开销的方法
CN101150487A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝网络报文发送方法

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917350B (zh) * 2010-09-13 2012-08-15 南京中兴特种软件有限责任公司 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法
CN101917350A (zh) * 2010-09-13 2010-12-15 南京中兴特种软件有限责任公司 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法
CN102088406A (zh) * 2010-12-17 2011-06-08 天津曙光计算机产业有限公司 一种采用轮询机制的高速报文发送方法
CN102098214A (zh) * 2010-12-17 2011-06-15 天津曙光计算机产业有限公司 一种采用轮询机制的高速报文接收方法
CN102750245B (zh) * 2012-05-29 2015-11-18 中国人民解放军国防科学技术大学 报文接收方法、报文接收模块、装置及系统
CN102750245A (zh) * 2012-05-29 2012-10-24 中国人民解放军国防科学技术大学 报文接收方法、报文接收模块、装置及系统
CN103617125A (zh) * 2013-11-27 2014-03-05 曙光信息产业(北京)有限公司 内存空间的管理方法和装置
WO2016033718A1 (zh) * 2014-09-01 2016-03-10 华为技术有限公司 访问文件的方法、装置和存储系统
US10157143B2 (en) 2014-09-01 2018-12-18 Huawei Technologies Co., Ltd. File access method and apparatus, and storage system
CN104394099A (zh) * 2014-12-08 2015-03-04 福建星网锐捷网络有限公司 一种报文传输方法及装置
CN104394099B (zh) * 2014-12-08 2017-09-19 福建星网锐捷网络有限公司 一种报文传输方法及装置
CN105721241A (zh) * 2016-01-25 2016-06-29 汉柏科技有限公司 一种网卡收发报文的统计调试方法及系统
CN107124286A (zh) * 2016-02-24 2017-09-01 深圳市知穹科技有限公司 一种海量数据高速处理、交互的系统及方法
CN107135189A (zh) * 2016-02-26 2017-09-05 华为技术有限公司 一种报文发送方法及物理机
CN107135189B (zh) * 2016-02-26 2020-02-14 华为技术有限公司 一种报文发送方法及物理机
CN111817818A (zh) * 2019-04-11 2020-10-23 中国移动通信集团四川有限公司 一种传输数据包的方法和装置
CN111200594A (zh) * 2019-12-20 2020-05-26 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质
CN111200594B (zh) * 2019-12-20 2021-07-16 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质
CN113098955A (zh) * 2021-03-30 2021-07-09 山东英信计算机技术有限公司 一种数据传输方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN101707565B (zh) 2012-04-25

Similar Documents

Publication Publication Date Title
CN101707565B (zh) 零拷贝网络报文发送、接收方法和装置
CN111679921B (zh) 内存共享方法、内存共享装置及终端设备
US7733892B2 (en) Buffer management method based on a bitmap table
CN101304373B (zh) 一种实现局域网内高效传输大块数据的方法及系统
CN104796337A (zh) 一种转发报文的方法及装置
CN101150488B (zh) 一种零拷贝网络报文接收方法
CN101150487A (zh) 一种零拷贝网络报文发送方法
CN101877666B (zh) 基于零拷贝方式的多应用程序报文接收方法和装置
CN111177025B (zh) 数据存储方法、装置及终端设备
CN104424122B (zh) 一种电子设备及内存划分方法
CN115080455B (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
US7974190B2 (en) Dynamic queue memory allocation with flow control
CN105630424A (zh) 数据处理方法、装置及系统
CN112698959A (zh) 一种多核通信方法和装置
CN102291298B (zh) 一种高效的面向长消息的计算机网络通信方法
US7865632B2 (en) Memory allocation and access method and device using the same
US5923852A (en) Method and system for fast data transmissions in a processing system utilizing interrupts
CN102750245B (zh) 报文接收方法、报文接收模块、装置及系统
CN112311696B (zh) 网络封包接收装置及方法
US7113516B1 (en) Transmit buffer with dynamic size queues
CN102117261A (zh) 一种芯片内部处理器之间的通信方法
CN112463027B (zh) 一种i/o处理方法、系统、设备及计算机可读存储介质
CN110765044B (zh) 数据包传输装置及系统
CN115129459A (zh) 一种内存管理的方法及设备
CN112770356B (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
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: 100193 Beijing, Haidian District, northeast Wang West Road, building 8, No. 36

Patentee after: Dawning Information Industry (Beijing) Co.,Ltd.

Address before: 100084 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing

Patentee after: Dawning Information Industry (Beijing) Co.,Ltd.

Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd.

Address before: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing

Patentee before: Dawning Information Industry (Beijing) Co.,Ltd.