一种基于驱动零拷贝模式系统下的tcpdump抓包实现方法和装置的制造方法

文档序号:9870157阅读:875来源:国知局
一种基于驱动零拷贝模式系统下的tcpdump抓包实现方法和装置的制造方法
【技术领域】
[0001]本发明涉及信息安全领域,具体涉及一种基于驱动零拷贝模式系统下的传输控制协议捕获tcpdump抓包实现方法和装置。
【背景技术】
[0002]随着高速网络迅猛发展,作为网络服务器,特别是路由器和网关,数据的采集和分析是必不可少的,可以及时反映服务器网络状况。专利(公开号CN101170491A)实现了一种网络接口板的抓包方法,专利(公开号CN103885813A)实现了一种在虚拟机环境下的抓包方法。这两种方式都未使用传输控制协议捕获tcpdump工具,是网络设备普通驱动模块下实现的抓包方式,功能较弱,无法提供数据包过滤、输入输出等功能。而tcpdump工具是对网络上的数据包进行截获、采集和分析最常用工具之一,支持多种参数、数据过滤、解码等功能。
[0003]tcpdump在普通驱动工作模式下抓包的流程为:网卡驱动收包并放入内核协议栈的收包队列;内核协议栈从收包队列异步地取包并递交给AF_PACKET协议族模块;AF_PACKET协议族模块将包递交给用户空间的tcpdump进程,如图1所示。
[0004]然而在这种普通驱动工作模式下处理数据报文时,由网卡驱动到用户空间需要经过多次拷贝,容易产生性能瓶颈。而零拷贝(zero-copy)模式通过应用程序和驱动共享内存,消除了数据包经由内核协议栈处理带来的开销,大大提高了应用程序的收包效率。为此零拷贝技术被大量用于网络高速服务器中,它能有效提高设备通信性能,实现高速数据传输。
[0005]在当前基于驱动零拷贝模式系统下,数据包的处理路径与普通驱动模式相比,最大的区别在于数据包不会经过内核协议栈,而是直接通过共享内存被应用程序获取,这可以实现高速网络数据包捕获,具有系统开销小,捕获效率高的优点。
[0006]但是基于驱动零拷贝模式下的数据包处理方式,由于所述数据包不会经过内核协议栈,导致基于内核协议栈AF_PACKET协议族模块的tcpdump无法得到数据包,如图2所
/Jn ο
[0007]因此,在基于驱动零拷贝模式下,实现抓取数据包存在如下缺点:(I)无法使用tcpdump成功抓取到数据包;(2)在不使用tcpdump工具的情况下,需要开发新的工具,来重复实现类似tcpdump抓包工具过滤、输出等接口功能。

【发明内容】

[0008]为了解决上述问题,本发明提出了一种基于驱动零拷贝模式系统下的传输控制协议捕获tcpdump抓包实现方法和装置,能够使得数据包处理过程中既能完全复用tcpdump工具的过滤、输出等全部功能,为网络数据包采集和分析提供有力工具,降低改造成本,还可以保证不影响系统其他功能模块的正常工作。
[0009]为了达到上述目的,本发明提出了一种基于驱动零拷贝模式系统下的传输控制协议捕获tcpdump抓包实现方法,该方法包括以下步骤:
[0010]系统加载零拷贝网卡驱动。
[0011]控制工具控制网卡驱动开启tcpdump抓包工作模式。
[0012]当网卡驱动将所述数据包放入到应用收包队列后,拷贝所述数据包并进行标记,然后将拷贝的数据包发送给内核协议栈的收包队列。
[0013]该数据包经过内核协议栈,tcpdump工具捕获该数据包。
[0014]优选地,应用收包队列为共享内存。
[0015]优选地,该方法还包括:当控制工具关闭网卡驱动的tcpdump抓包工作模式时,不执行tcpdump抓包工作模式,仅执行零拷贝模式。
[0016]优选地,该方法还包括:在tcpdump抓包工作模式期间,该数据包仅被tcpdump捕
-M-犾。
[0017]本发明还提出一种基于驱动零拷贝模式系统下的传输控制协议捕获tcpdump抓包实现装置,该装置包括:网卡驱动、控制工具、tcpdump工具。
[0018]网卡驱动,用于当开启tcpdump抓包工作模式时,将数据包放入到应用收包队列,同时拷贝所述数据包并对其进行标记,然后将所述拷贝的数据包发送给内核协议栈的收包队列。
[0019]控制工具,用于控制所述网卡驱动启动或关闭tcpdump抓包工作模式。
[0020]tcpdump工具,用于该数据包经过内核协议栈时,捕获该数据包。
[0021]优选地,应用收包队列为共享内存。
[0022]优选地,tcpdump工具还用于,当控制工具未开启tcpdump抓包工作模式时,不执行tcpdump抓包模式,仅执行零拷贝模式。
[0023]与现有技术相比,本发明包括:系统加载零拷贝网卡驱动;控制工具控制网卡驱动开启或关闭tcpdump抓包工作模式;当开启tcpdump抓包工作模式时,网卡驱动将数据包放入到应用收包队列后,拷贝该数据包并进行标记,然后将拷贝的数据包发送给内核协议栈的收包队列;数据包经过内核协议栈,tcpdump工具捕获数据包。本发明方案能够使得数据包处理过程中既能完全复用tcpdump工具的过滤、输出等全部功能,为网络数据包采集和分析提供有力工具,降低改造成本,还可以保证不影响系统其他功能模块的正常工作,并且在不开启tcpdump抓包工作模式时,对系统的功能和性能没有任何影响。另外本发明中设计了控制工具,通过控制tcpdump抓包工作模式的开启和关闭,使得用户可以根据需求来自行决定是否开始tcpdump抓包工作模式,提高了数据包的处理过程的灵活性,在一定程度上进一步减小了系统开销,提高了数据包处理效率。
【附图说明】
[0024]下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
[0025]图1为现有的tcpdump抓包流程示意图;
[0026]图2为现有的基于驱动零拷贝的包处理流程示意图;
[0027]图3为本发明的基于驱动零拷贝系统下的tcpdump抓包处理流程示意图;
[0028]图4为本发明的基于驱动零拷贝系统下的tcpdump抓包实现方法步骤图;
[0029]图5为本发明的基于驱动零拷贝系统下的tcpdump抓包实现装置框图。
【具体实施方式】
[0030]为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
[0031]本发明提出了一种基于驱动零拷贝模式系统下的传输控制协议捕获tcpdump抓包实现方法,如图3和图4所示,该方法包括以下步骤:
[0032]S101
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1