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中所述第一存储空间、所述原数据包的存储空间和所述第二存储空间为连续空间 ...
【技术保护点】
1.一种网络数据包的存储方法,其特征在于,包括如下步骤:S1、在主存储器中设置一个数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;S2、网卡驱动程序接收数据包;S3、将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;S4、上层应用程序修改数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;S5、将修改后的数据包的起始地址发送给网卡驱动程序,网卡驱动程序发送所述修改后的数据包。
【技术特征摘要】
1.一种网络数据包的存储方法,其特征在于,包括如下步骤:S1、在主存储器中设置一个数据包存储区并初始化存储队列,建立所述数据包存储区与上层应用程序的映射关系;S2、网卡驱动程序接收数据包;S3、将接收到的原数据包加入所述数据包存储区的存储队列时,在每个数据包的开头预留第一存储空间,同时在每个数据包的末尾预留第二存储空间;S4、上层应用程序修改数据包时,在所述数据包存储区的存储地址处修改所述原数据包并保存;S5、将修改后的数据包的起始地址发送给网卡驱动程序,网卡驱动程序发送所述修改后的数据包。2.根据权利要求1所述的一种网络数据包的存储方法,其特征在于,步骤S3中所述第一存储空间、所述原数据包的存储空间和所述第二存储空间为连续空间。3.根据权利要求1所述的一种网络数据包的存储方法,其特征在于,步骤S4中所述在所述数据包存储区的存储地址处修改所述原数据包之前还包括:根据数据指针判断上层应用程序需要修改的数据包的具体修改位置。4.根据权利要求3所述的一种网络数据包的存储方法,其特征在于,步骤S4中所述在所述数据包存储区的存储地址处修改所述原数据包的过程包括:若需要在所述原数据包的开头额外增加新的内容,直接将新增数据写入所述第一存储空间;若需要在所述原数据包的包头部分插入新的内容,将所述原数据包中所述修改位置之前的数据段向所述第一存储空间挪动,将新增数据写入挪动后留出的空白区域;若需要在所述原数据包...
【专利技术属性】
技术研发人员:陈志华,
申请(专利权)人:湖北微源卓越科技有限公司,
类型:发明
国别省市:湖北,42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。