一种网络数据包的存储方法及装置制造方法及图纸

技术编号:20181775 阅读:28 留言:0更新日期:2019-01-23 02:04
本发明专利技术提出一种网络数据包的存储方法,包括以下步骤:在主存中设置一个数据包存储区并初始化数据包存储队列,建立所述数据包存储区与上层应用程序的映射关系;网卡驱动程序接收数据包;在所述数据包存储区的存储队列中,在每个数据包的开头预留第一存储空间并在末尾预留第二存储空间;上层应用程序修改原数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;网卡驱动程序发送所述修改后的数据包。本发明专利技术还提供一种数据包存储装置,包括映射模块、接收模块、存储模块、修改模块、发送模块。本发明专利技术直接在数据包的原始地址处修改数据包的结构和内容,避免了数据包在内存中的拷贝,提高数据包的转发效率。本发明专利技术涉及网络数据领域。

A Storage Method and Device of Network Packet

The invention provides a method for storing network data packets, which includes the following steps: setting up a data packet storage area in main memory and initializing the data packet storage queue, establishing the mapping relationship between the data packet storage area and the upper application program, receiving data packets by the network card driver, and reserving the first memory at the beginning of each data packet in the storage queue of the data packet storage area. Storage space and reserve a second storage space at the end; when the upper application modifies the original data packet, the original data packet is modified and saved at the storage address of the data packet storage area; and the network card driver sends the modified data packet. The invention also provides a data packet storage device, including a mapping module, a receiving module, a storage module, a modification module and a transmission module. The invention modifies the structure and content of the data packet directly at the original address of the data packet, avoids the copy of the data packet in memory, and improves the transmission efficiency of the data packet. The invention relates to the field of network data.

【技术实现步骤摘要】
一种网络数据包的存储方法及装置
本专利技术专利涉及网络数据领域,尤其涉及一种的网络数据包存储方法及装置。
技术介绍
随着社会信息化的迅猛发展,网络设备常常需要对数据包进行存储、修改并转发。网络设备存储、修改、转发的效率直接影响到网络数据包的传输,提高网络设备的转发效率,有益于降低网络数据包的延迟。传统的网络数据包修改并转发方法是在数据包修改后,重新开辟一块内存,先对数据包进行内存拷贝,并将原来包的内容和修改的内容全部写到新的内存地址上,这种方法保存的数据包体积较大,写入的过程比较耗时,网络数据包的转发效率不高,特别当数据包的内容比较大时,拷贝的过程更费时。因此,如果能够采用好的数据包存储方法减少这种内存拷贝,就能的提高数据包的修改速率,从而提高系统的整体转发效率。
技术实现思路
本专利技术提出了一种网络数据包的存储方法及装置,解决网络数据包转发效率低的问题。本专利技术实施例的第一方面,提出了一种网络数据包存储方法,包括如下技术方案:S1、在主存储器中设置一个数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;S2、网卡驱动程序接收数据包;S3、将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;S4、上层应用程序修改原数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;S5、将修改后的数据包的起始地址发送给网卡驱动程序,网卡驱动程序发送所述修改后的数据包。在上述技术方案中,步骤S3中所述第一存储空间、所述原数据包的存储空间和所述第二存储空间为连续空间。在上述技术方案中,步骤S4中所述在所述数据包存储区的存储地址处修改所述原数据包之前还包括:根据数据指针判断上层应用程序需要修改的数据包的具体修改位置。在上述技术方案中,步骤S4中所述在所述数据包存储区的存储地址处修改所述原数据包的过程包括:若需要在所述原数据包的开头额外增加新的内容,直接将新增数据写入所述第一存储空间;若需要在所述原数据包的包头部分插入新的内容,将所述原数据包中所述修改位置之前的数据段向所述第一存储空间挪动,将新增数据写入挪动后留出的空白区域;若需要在所述原数据包的末尾额外增加新的内容,将新增数据写入所述第二存储空间;在上述技术方案中,所述将所述原数据包中所述修改位置之前的数据段向所述第一存储空间挪动还包括:保持所述数据包内数据的原存储顺序不变,挪动距离根据新增数据的大小决定。本专利技术实施例的第二方面,提供了一种网络数据包存储装置,该装置包括如下内容:映射模块:在主存储器中设置一个数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;接收模块:网卡驱动程序接收数据包;存储模块:将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;修改模块:上层应用程序修改原数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;发送模块:将修改后的数据包的起始地址发送给网卡驱动程序,网卡驱动程序发送所述修改后的数据包。在上述装置中,所述修改模块具体包括:开头新增单元:若需要在所述原数据包的开头额外增加新的内容,直接将新增数据写入所述第一存储空间;包头插入单元:若需要在所述原数据包的包头部分插入新的内容,将所述原数据包中所述修改位置之前的数据段向所述第一存储空间挪动,将新增数据写入挪动后留出的空白区域;末尾新增单元:若需要在所述原数据包的末尾额外增加新的内容,将新增数据写入所述第二存储空间;本专利技术通过建立数据包和上层应用程序的映射关系,以及采用新的数据包存储方式,使得上层应用程序处理数据包时可直接在数据包的原始地址处进行,避免的传统数据包处理时的内存拷贝。在数据包存储区为每个数据包额外预留了一定长度的头部空间和尾部空间,上层应用程序修改数据包时直接在数据包存储区的原始地址处修改数据包的结构和内容,将新增内容向预留的头部空间或尾部空间写入,或将原数据包包头中的部分数据段向预留的头部空间挪动,以便插入新增内容,避免了在收发数据包时在内存中的拷贝,从而提高了数据包的转发效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提出的网络数据包存储方法示意图;图2为本专利技术实施例提出的网络数据包存储结构示意图;图3为本专利技术实施例提供的网络数据包存储装置示意图。具体实施方式本专利技术实施例提供了一种网络数据包存储方法及装置,用于网络数据包的收发过程中,提高网络数据包转发效率。以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路、以及方法的详细说明,以免不必要的细节妨碍本申请的描述。应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。请参阅图1,本专利技术实施例提出了一种网络数据包的存储方法,该方法包括以下步骤:S1、在主存储器中申请数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;通过建立数据包存储区与用户空间上层应用程序的映射关系,上层应用程序可以直接与数据包存储区的数据包交互,即上层应用程序可以在数据包的原存储地址对数据包做分析、修改等处理,避免在数据包的收发过程中使用操作系统的IP栈对数据包进行操作系统内核空间与用户空间的来回拷贝,能提高网络设备转发效率。S2、网卡驱动程序接收数据包;数据包从外面的网络进入物理网卡,如果目的地址不是该网卡,且该网卡没有开启混杂模式,该包会被网卡丢弃。当网卡成功接收到数据包后,产生硬件中断,调动网卡软件中断服务程序并通知网卡驱动程序接收数据包,S3、将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;所述第一存储空间和第二存储空间是为数据包额外留存的留白区,其长度均可以根据实际情况来配置,常用配置是设置为128个字节。S4、上层应用程序修改原数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;可选的,步骤S4中所述在所述数据包存储区的存储地址处修改所述数据包之前还包括:根据数据指针判断上层应用程序需要修改的数据包具体修改位置。可选的,步骤S4中所述在所述数据包存储区本文档来自技高网...

【技术保护点】
1.一种网络数据包的存储方法,其特征在于,包括如下步骤:S1、在主存储器中设置一个数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;S2、网卡驱动程序接收数据包;S3、将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;S4、上层应用程序修改数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;S5、将修改后的数据包的起始地址发送给网卡驱动程序,网卡驱动程序发送所述修改后的数据包。

【技术特征摘要】
1.一种网络数据包的存储方法,其特征在于,包括如下步骤:S1、在主存储器中设置一个数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;S2、网卡驱动程序接收数据包;S3、将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;S4、上层应用程序修改数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;S5、将修改后的数据包的起始地址发送给网卡驱动程序,网卡驱动程序发送所述修改后的数据包。2.根据权利要求1所述的一种网络数据包的存储方法,其特征在于,步骤S3中所述第一存储空间、所述原数据包的存储空间和所述第二存储空间为连续空间。3.根据权利要求1所述的一种网络数据包的存储方法,其特征在于,步骤S4中所述在所述数据包存储区的存储地址处修改所述原数据包之前还包括:根据数据指针判断上层应用程序需要修改的数据包的具体修改位置。4.根据权利要求3所述的一种网络数据包的存储方法,其特征在于,步骤S4中所述在所述数据包存储区的存储地址处修改所述原数据包的过程包括:若需要在所述原数据包的开头额外增加新的内容,直接将新增数据写入所述第一存储空间;若需要在所述原数据包的包头部分插入新的内容,将所述原数据包中所述修改位置之前的数据段向所述第一存储空间挪动,将新增数据写入挪动后留出的空白区域;若需要在所述原数据包...

【专利技术属性】
技术研发人员:陈志华
申请(专利权)人:湖北微源卓越科技有限公司
类型:发明
国别省市:湖北,42

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

1