【技术实现步骤摘要】
数据包捕获、处理和发送方法及系统
本专利技术涉及互联网网络安全
,尤其涉及一种数据包捕获、处理和发送的方法及系统。
技术介绍
随着互联网的快速发展,对互联网内容进行安全审计越来越重要,网络安全技术也得以快速的发展。现有的基于内容的安全审计主要分为数据包的捕获、过滤和处理。快速的数据包捕获机制是安全审计的前提,捕获数据包的速率直接影响整个系统的性能。现有的数据包捕获机制有的基于软件实现,也有的基于硬件实现。随着千兆网卡的普及,虽然硬件的性能得以快速提升,但从性价比的角度,人们更多地考虑从软件的角度来实现高速的数据包的捕获。现阶段比较成熟的软件实现方案有传统的libpcap数据包捕获机制、基于RF_RING的数据包捕获机制和基于零拷贝的快速数据包捕获。随着零拷贝的提出,千兆网络数据包的捕获已经得以实现,但是网络安全系统处理数据包的速率能否跟上捕获数据包的速率成为影响整个安全系统性能的关键。现有零拷贝技术的实现大多是基于nopage的内存映射方法,而这种机制很难满足并行处理数据包的要求,一旦系统无法及时地处理捕获的数据包,系统的内存很快就被耗尽。与此同时,现有的捕 ...
【技术保护点】
一种数据包捕获、处理和发送方法,包括以下步骤:根据系统的页面大小分配一个预定大小的内存空间;将内存从内核空间映射到用户地址空间以使用户程序与所述内核空间的内存相关联;将接收到的数据包通过直接内存存取方式依次存储到所述内存空间中连续的多个DMA缓冲区;所述用户程序通过m个线程对N个DMA缓冲区中的数据包进行并行处理,其中m为处理器的内核数;依次将所述N个DMA缓冲区中处理完成的数据包向外发送。
【技术特征摘要】
1.一种数据包捕获、处理和发送方法,包括以下步骤:分配模块:根据系统的页面大小分配一个预定大小的内存空间;映射模块:将内存从内核空间映射到用户地址空间以使用户程序与所述内核空间的内存相关联;存储控制模块:将接收到的数据包通过直接内存存取方式依次存储到所述内存空间中连续的多个DMA缓冲区;在DMA缓冲区在建立流式DMA映射后,网卡驱动程序通过调用dma_unmap_single函数,访问所述DMA缓冲区的内容;在数据包被发往上层协议栈之前调用dma_unmap_single函数,同时在所述函数被调用后设置DMA缓冲区的标志位,通知用户程序读取该DMA缓冲区的内容;在为每个DMA缓冲区设置标志位的同时对每一个DMA缓冲区进行编号,指示其:(1)可写:全部的用户程序处理完毕,清空DMA缓冲区,接收新的数据;(2)可读:网卡数据接收完毕,应用层程序进行处理;(3)可发:经过所述处理通过的数据包加入到发送队列中;管理网卡驱动程序分配的skb,在网卡驱动程序初始化后创建了一个可用skb池和一个在用skb池,所述可用skb池,为所述网卡驱动程序的rx_ring环提供skb,当rx_ring环的节点需要关联一个新的skb时,所述网卡驱动程序会从所述可用skb池中取出一个skb关联给rx_ring的节点;若在所述skb池创建后为空,当所述网卡驱动程序从所述可用skb池中取出skb时,将把skb放入所述在用skb池中,所述网卡驱动程序在运行中,若所述可用skb池的skb被分配完,所述网卡驱动程序将从所述在用skb池中查找skb->data被处理过的skb,并将其重新初始化后放入所述可用skb池中,当所述网卡驱动程序向上层协议栈提交数据包时,所述网卡驱动程序还要通过检查skb的users计数和skb->data的dataref计数判断skb是否仍被所述上层协议栈使用,在判断skb被上层协议栈使用完后,再将skb重新初始化放入所述可用skb池中,保证了...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。