一种基于零拷贝技术的无线网络数据包捕获方法技术

技术编号:19067440 阅读:29 留言:0更新日期:2018-09-29 14:45
本发明专利技术公开了一种基于零拷贝技术的无线网络数据包捕获方法,在Linux系统中安装Libpcap库来捕获无线网络数据包,在捕包时,采用零拷贝技术将数据包由网卡寄存器直接送入用户缓冲区;在存储时,通过零拷贝技术将用户缓冲区内捕获的数据包直接存放到硬盘上。本发明专利技术方法基于双零拷贝技术简化抓包流程,解决了Tshark的高丢包率的问题,该方法简单易行,大大增强了抓包软件应对实际应用环境的能力,对网络行为监控有着很重要作用。

【技术实现步骤摘要】
一种基于零拷贝技术的无线网络数据包捕获方法
本专利技术具体涉及一种针对Linux环境下基于零拷贝技术的无线网络数据包捕获方法,属于网络数据分析和信息安全

技术介绍
随着无线局域网(WLAN:WirelessLocalAreaNetwork)技术的发展,全球的无线局域网市场呈现着如火如荼的扩张态势,WLAN的应用领域也扩展到军事和金融、交通等涉及国民经济的各行各业,人们越来越倾向于使用这种方便快捷的网络。但是,由于无线网络传输媒介固有的开放性,无线网络暴露出越来越多的安全问题,为了应对这些潜在的安全威胁,对无线网络数据进行捕获和分析就变得十分重要。在无线数据包的捕获中,由于Windows把802.11帧转为以太网的帧交给内核,Windows通常需要特定网卡或软件才能捕获完整的802.11数据帧。而Linux相比Windows,可以使用常见的无线网卡捕获完整的802.11数据帧,因此在Linux环境下,使用Wireshark(现有的一种网络分析工具)捕获无线数据包具有更好的通用性。Wireshark是世界上最重要和最广泛使用的网络协议分析器,可以对数百个协议进行深入的检查,并不断添加更多的协议。它拥有实时捕获和离线分析并且有强大的显示过滤器、读/写许多不同的捕获文件格式。对许多协议的解密支持。它用简洁的可视化图形界面清晰地将监听和分析的数据包的内容显示给使用者。而Tshark作为Wireshark的终端模式(命令行工具),更方便用在脚本中,也可以通过SSH连接用在远程计算机上,方便远程调用。Tshark是一种高效的抓包分析软件,但是在高速网络流量的环境下,抓包过程中的高丢包率成为了难以解决的问题。高丢包率容易引发丢失重要信息的问题从而影响结果的准确度。Tshark的抓包技术还在不断成熟的过程中,当前最核心的问题是如何提高在实际环境下它的抓包率,这里的环境包括系统使用环境和系统应用环境。在实际应用中,各种环境因素对Tshark的抓包率都有一定的影响,系统内核缓冲区的空间有限以及传输数据包时的流程复杂且内存拷贝次数多会严重影响抓包率,增加丢包率。因此,在现在无线网络环境条件下,一种针对Linux环境的基于零拷贝技术的数据包捕获方法至关重要。
技术实现思路
本专利技术的目的在于克服现有技术中Tshark在高速网络环境下的高丢包率问题,提出了一种基于零拷贝技术的无线网络数据包捕获方法,采用基于Libpcap的双零拷贝技术方法,简化Libpcap的抓包流程方法,能够有效降低丢包率。为解决上述技术问题,本专利技术提供了一种基于零拷贝技术的无线网络数据包捕获方法,在Linux系统中安装Libpcap库来捕获无线网络数据包,其特征是,包括以下步骤;步骤S1,在捕包时,采用零拷贝技术将数据包由网卡寄存器直接送入用户缓冲区;步骤S2,在存储时,通过零拷贝技术将用户缓冲区内捕获的数据包直接存放到硬盘上。进一步的,步骤S1,在接收数据包时,网卡驱动程序通过DMA方式从网卡内部寄存器读取数据包,然后将接收到的数据封装成LWIP协议的格式写到网卡接收缓冲区中;通过把网卡内部寄存器指针映射到LWIP内核内存空间,ERXST为接收缓冲区起始地址,ERXND为接收缓冲区结束地址,ETXST为发送缓冲区起始地址,ETXND为发送缓冲区结束地址,ERDPT为MCU读缓冲器指针,EWRPT为MCU写缓冲器指针,将ERDPT映射到LWIP协议缓存包中的数据指针,实现直接对网卡寄存器内的数据包进行存储操作。进一步的,通过半轮询中断方式,读取数据包到用户缓冲区。进一步的,在捕获数据包的时候,通过Tshark工具包中-s参数设置抓取数据包的长度。进一步的,对Linux内核socket参数更改SO_RCVBUF参数,以增加Libpcap缓冲区长度。进一步的,将数据包拷贝到用户缓冲区和硬盘上时,多组数据包一起拷贝。进一步的,调用开发包packet32中的PacketReceivePacket()函数实现多组数据包拷贝。与现有技术相比,本专利技术所达到的有益效果是:本专利技术使用双零拷贝技术和半轮询方法对抓包过程进行优化,减少了数据拷贝次数,降低了系统资源的消耗,有效提高了系统利用效率,提高抓包性能。本专利技术针对Linux系统的内核利用情况,通过协议栈和开发包优化系统,有效地提高了系统使用效率。本专利技术方法简单易行,大大增强了抓包软件应对实际应用环境的能力,对网络行为监控有着很重要作用。附图说明图1为本专利技术数据包捕获方法的流程图;图2为传统拷贝方式和零拷贝方式的对比;图3为网卡内部寄存器指针映射;图4为Libpcap传统抓包流程;图5为本专利技术实施例中抓包流程改进前后的效率对比。具体实施方式下面结合附图对本专利技术作进一步描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,而不能以此来限制本专利技术的保护范围。本专利技术包含的技术术语如下:内核:是一个操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。内核缓冲区:内核的一部分,为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要时就可用)优化了对物理设备的访问。零拷贝技术:通过减少或消除关键通信路径影响速率的操作,减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。数据拷贝受制于传统的操作系统或通信协议,限制了通信性能。采用零拷贝技术,通过减少数据拷贝次数,简化协议处理的层次,在应用和网络间提供更快的数据通路,可以有效地降低通信延迟,增加网络吞吐率。LWIP:是瑞典计算机科学院(SICS)的AdamDunkels开发的用于嵌入式系统的开源TCP/IP协议栈。LWIP的含义是轻量级的TCP/IP协议,专注于减少资源消耗。远程直接内存存取(RDMA):它允许网络中的计算机在主存贮器里交换数据,而不用涉及任何一台计算机的处理器、高速缓冲存贮器或者操作系统。像本地直接内存存取(DMA)一样,远程直接内存存取改进了吞吐量和性能,因为它释放了资源。远程直接内存存取同时也让一个更快的数据传输率变得容易。半轮询方式:是一种中断和轮询方式的集成。在高负载时使用轮询,在轻负载时使用中断驱动。很好的解决了低负载时,轮询方式响应时间和处理器资源消耗的问题,高负载时,中断方式的接收活锁问题,同时利用了两种方式的特点。回调函数:回调函数就是一个通过函数指针调用的函数。如果一个函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,这就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。本专利技术的应用环境是Linux下基于Libpcap库来捕获无线网络数据包。现有技术中,Libpcap传统抓包流程可见图4,Libpcap函数库中采用循环截包函数pcap_loop()来捕获数据包,pcap_loop函数每抓一个数据包之后就调用callback函数pcap_call本文档来自技高网
...

【技术保护点】
1.一种基于零拷贝技术的无线网络数据包捕获方法,在Linux系统中安装Libpcap库来捕获无线网络数据包,其特征是,包括以下步骤;步骤S1,在捕包时,采用零拷贝技术将数据包由网卡寄存器直接送入用户缓冲区;步骤S2,在存储时,通过零拷贝技术将用户缓冲区内捕获的数据包直接存放到硬盘上。

【技术特征摘要】
1.一种基于零拷贝技术的无线网络数据包捕获方法,在Linux系统中安装Libpcap库来捕获无线网络数据包,其特征是,包括以下步骤;步骤S1,在捕包时,采用零拷贝技术将数据包由网卡寄存器直接送入用户缓冲区;步骤S2,在存储时,通过零拷贝技术将用户缓冲区内捕获的数据包直接存放到硬盘上。2.根据权利要求1所述的一种基于零拷贝技术的无线网络数据包捕获方法,其特征是,步骤S1,在接收数据包时,网卡驱动程序通过DMA方式从网卡内部寄存器读取数据包,然后将接收到的数据封装成LWIP协议的格式写到网卡接收缓冲区中;通过把网卡内部寄存器指针映射到LWIP内核内存空间,ERXST为接收缓冲区起始地址,ERXND为接收缓冲区结束地址,ETXST为发送缓冲区起始地址,ETXND为发送缓冲区结束地址,ERDPT为MCU读缓冲器指针,EWRPT为MCU写缓冲器指针,将ERDPT映射到LWIP协议缓存包中的数据指针...

【专利技术属性】
技术研发人员:卢艺陈伟刘栋张楚月
申请(专利权)人:南京邮电大学
类型:发明
国别省市:江苏,32

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

1