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

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

Info

Publication number
CN101707565B
CN101707565B CN2009102421004A CN200910242100A CN101707565B CN 101707565 B CN101707565 B CN 101707565B CN 2009102421004 A CN2009102421004 A CN 2009102421004A CN 200910242100 A CN200910242100 A CN 200910242100A CN 101707565 B CN101707565 B CN 101707565B
Authority
CN
China
Prior art keywords
contiguous memory
address
address space
memory
contiguous
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.)
Active
Application number
CN2009102421004A
Other languages
English (en)
Other versions
CN101707565A (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 (8)

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

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917350B (zh) * 2010-09-13 2012-08-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 中国人民解放军国防科学技术大学 报文接收方法、报文接收模块、装置及系统
CN103617125A (zh) * 2013-11-27 2014-03-05 曙光信息产业(北京)有限公司 内存空间的管理方法和装置
WO2016033718A1 (zh) 2014-09-01 2016-03-10 华为技术有限公司 访问文件的方法、装置和存储系统
CN104394099B (zh) * 2014-12-08 2017-09-19 福建星网锐捷网络有限公司 一种报文传输方法及装置
CN105721241A (zh) * 2016-01-25 2016-06-29 汉柏科技有限公司 一种网卡收发报文的统计调试方法及系统
CN107124286B (zh) * 2016-02-24 2020-05-26 深圳市知穹科技有限公司 一种海量数据高速处理、交互的系统及方法
CN107135189B (zh) * 2016-02-26 2020-02-14 华为技术有限公司 一种报文发送方法及物理机
CN111817818A (zh) * 2019-04-11 2020-10-23 中国移动通信集团四川有限公司 一种传输数据包的方法和装置
CN111200594B (zh) * 2019-12-20 2021-07-16 华为技术有限公司 接收数据的方法、装置、数据接收设备和存储介质
CN113098955B (zh) * 2021-03-30 2022-12-02 山东英信计算机技术有限公司 一种数据传输方法、装置、设备及计算机可读存储介质

Citations (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
CN101150487A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝网络报文发送方法
CN101163129A (zh) * 2006-10-09 2008-04-16 北京航空航天大学 一种降低并行多数字信号处理器之间消息传递开销的方法

Patent Citations (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
CN101163129A (zh) * 2006-10-09 2008-04-16 北京航空航天大学 一种降低并行多数字信号处理器之间消息传递开销的方法
CN101150487A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝网络报文发送方法

Also Published As

Publication number Publication date
CN101707565A (zh) 2010-05-12

Similar Documents

Publication Publication Date Title
CN101707565B (zh) 零拷贝网络报文发送、接收方法和装置
CN104796337A (zh) 一种转发报文的方法及装置
US7733892B2 (en) Buffer management method based on a bitmap table
CN101304373B (zh) 一种实现局域网内高效传输大块数据的方法及系统
US6070194A (en) Using an index and count mechanism to coordinate access to a shared resource by interactive devices
CN101150488B (zh) 一种零拷贝网络报文接收方法
CN110083461B (zh) 一种基于fpga的多任务处理系统及方法
CN101150487A (zh) 一种零拷贝网络报文发送方法
CN101877666B (zh) 基于零拷贝方式的多应用程序报文接收方法和装置
CN102629240A (zh) 一种串口通信方法与装置
CN105068769A (zh) 一种基于消息中间件的消息管理方法及装置
CN102291298B (zh) 一种高效的面向长消息的计算机网络通信方法
US7974190B2 (en) Dynamic queue memory allocation with flow control
CN105630424A (zh) 数据处理方法、装置及系统
CN112698959A (zh) 一种多核通信方法和装置
US7865632B2 (en) Memory allocation and access method and device using the same
CN115080455A (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
CN102750245B (zh) 报文接收方法、报文接收模块、装置及系统
US5923852A (en) Method and system for fast data transmissions in a processing system utilizing interrupts
CN112311696B (zh) 网络封包接收装置及方法
CN100579125C (zh) 一种pci以太网媒体访问控制器传输数据的方法
CN103019975A (zh) 通用串行总线传输控制方法及主机设备
CN102117261A (zh) 一种芯片内部处理器之间的通信方法
CN100530078C (zh) 一种堆栈缓冲区管理方法
CN110765044B (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

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.

TR01 Transfer of patent right