[发明专利]数据包捕获、处理和发送方法及系统有效
| 申请号: | 201310517176.X | 申请日: | 2013-10-28 |
| 公开(公告)号: | CN103581181B | 公开(公告)日: | 2017-02-15 |
| 发明(设计)人: | 赵有健;裴昶华;全成斌 | 申请(专利权)人: | 清华大学 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06 |
| 代理公司: | 北京清亦华知识产权代理事务所(普通合伙)11201 | 代理人: | 张大威 |
| 地址: | 100084 北京*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 数据包 捕获 处理 发送 方法 系统 | ||
技术领域
本发明涉及互联网网络安全技术领域,尤其涉及一种数据包捕获、处理和发送的方法及系统。
背景技术
随着互联网的快速发展,对互联网内容进行安全审计越来越重要,网络安全技术也得以快速的发展。现有的基于内容的安全审计主要分为数据包的捕获、过滤和处理。快速的数据包捕获机制是安全审计的前提,捕获数据包的速率直接影响整个系统的性能。
现有的数据包捕获机制有的基于软件实现,也有的基于硬件实现。随着千兆网卡的普及,虽然硬件的性能得以快速提升,但从性价比的角度,人们更多地考虑从软件的角度来实现高速的数据包的捕获。
现阶段比较成熟的软件实现方案有传统的libpcap数据包捕获机制、基于RF_RING的数据包捕获机制和基于零拷贝的快速数据包捕获。随着零拷贝的提出,千兆网络数据包的捕获已经得以实现,但是网络安全系统处理数据包的速率能否跟上捕获数据包的速率成为影响整个安全系统性能的关键。现有零拷贝技术的实现大多是基于nopage的内存映射方法,而这种机制很难满足并行处理数据包的要求,一旦系统无法及时地处理捕获的数据包,系统的内存很快就被耗尽。与此同时,现有的捕获机制都修改了网卡驱动程序,影响了系统正常的协议栈使用,使得捕获的数据包只能由特定的程序使用,系统其他的用户程序无法通过网卡正常收发数据包。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的第一个目的在于提出一种数据包捕获、处理和发送方法。
本发明的第二个目的在于提出一种数据包捕获、处理和发送系统。
为了实现上述目的,本发明第一方面实施例的数据包捕获、处理和发送方法包括以下步骤:根据系统的页面大小分配一个预定大小的内存空间;将内存从内核空间映射到用户地址空间以使用户程序与所述内核空间的内存相关联;将接收到的数据包通过直接内存存取方式依次存储到所述内存空间中连续的多个DMA缓冲区;所述用户程序通过m个线程对N个DMA缓冲区中的数据包进行并行处理,其中m为处理器的内核数;依次将所述N个DMA缓冲区中处理完成的数据包向外发送。
根据本发明实施例的数据包捕获、处理和发送方法,实现了快速捕获、并行处理、线速发送的有机结合,从而解决了零拷贝技术不能及时处理捕获的数据包的缺点,为网络安全审计提供一定的技术支持。
在本发明的一个实施例中,所述根据系统的页面大小分配一个预定大小的内存空间,具体包括:初始化网卡驱动程序并创建字符设备;通过所述字符设备分配连续的多个整页内存以得到所述内存空间。
在本发明的一个实施例中,所述根据系统的页面大小分配一个预定大小的内存空间,还包括:对所述整页内存设置预留位以使所述整页内存不被置换。
在本发明的一个实施例中,在所述将接收到的数据包通过直接内存存取方式依次存储到所述内存空间中连续的多个DMA缓冲区之前,还包括:对所述多个DMA缓冲区建立流式DMA映射。
在本发明的一个实施例中,所述多个DMA缓冲区具有标志位,以便所述用户程序通过m个线程对N个DMA缓冲区中的数据包进行并行处理时,根据所述多个DMA缓冲区具有标志位对所述N个DMA缓冲区进行读、写操作。
为了实现上述目的,本发明第二方面实施例的数据包捕获、处理和发送系统,包括:分配模块,用于根据系统的页面大小分配一个预定大小的内存空间;映射模块,用于将内存从内核空间映射到用户地址空间以使用户程序与所述内核空间的内存相关联;存储控制模块,用于将接收到的数据包通过直接内存存取方式依次存储到所述内存空间中连续的多个DMA缓冲区;处理器,用于执行用户程序,以通过m个线程对N个DMA缓冲区中的数据包进行并行处理,其中m为处理器的内核数;发送模块,用于依次将所述N个DMA缓冲区中处理完成的数据包向外发送。
根据本发明实施例的数据包捕获、处理和发送系统,有效地解决了现有使用零拷贝技术的系统,在捕获数据包后无法在有限的时间内进行处理和发送,从而导致的丢包、内存资源消耗等问题。
在本发明的一个实施例中,所述分配模块用于对网卡驱动程序继续并初始化并创建字符设备,以及通过所述字符设备分配连续的多个整页内存以得到所述内存空间。
在本发明的一个实施例中,所述分配模块还包括:所述处理器还用于对所述整页内存设置预留位以使所述整页内存不被置换。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310517176.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种网络摄像机
- 下一篇:一种车载显示器的视频信号输入匹配电路





