CN106953774A - 一种基于用户自定义的网络抓包系统 - Google Patents
一种基于用户自定义的网络抓包系统 Download PDFInfo
- Publication number
- CN106953774A CN106953774A CN201610009502.XA CN201610009502A CN106953774A CN 106953774 A CN106953774 A CN 106953774A CN 201610009502 A CN201610009502 A CN 201610009502A CN 106953774 A CN106953774 A CN 106953774A
- Authority
- CN
- China
- Prior art keywords
- packet
- user
- network interface
- message
- interface card
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/028—Capturing of monitoring data by filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于用户自定义的网络抓包系统,包括网卡系统优化系统、无锁列队系统和制定自定义找条件;所述的网卡系统优化系统为绕过Linux系统自带的协议栈,通过mmap的ring直接把packet从内核传递到用户空间去,采取了基于NAPI的零拷贝设计;所述的无锁列队系统为判断头尾指针是否相等;所述的制定自定义找条件为源目IP、源目端口、协议类型、端口号的各种复杂条件的组合,内部程序在抓包存储的过程中,实时对这些过滤条件进行检查。本发明可以解决万兆流量下使用传统抓包方法抓包掉包率过高的问题,同时自定义抓包过滤算法有效的优化抓包性能,减少抓包文件的大小,提高分析效率。
Description
技术领域
本发明涉及网络安全技术,尤其涉及一种基于用户自定义的网络抓包系统。
背景技术
随着互联网技术的快速发展,网络连接面临越来越多的各种连接异常或攻击事件,网络抓包(packet capture)技术就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。通过对抓取的报文进行分析和理解,可以帮助运维人员或其他工程师快速定位问题,分析故障原因等。
传统的网络抓包通过调用Libpcap库函数(或WinPcap库函数)来完成抓包任务,这种抓包方法在高流量的网络环境中存在很高的丢包率(高达60%)左右。这种处理方法首先通过调用PacketRecievePackt()函数,从内核缓冲区中把一组数据包读取到用户缓冲区;然后根据bpf_hdr结构提供的该数据包的定位信息,把用户缓冲区的多个数据包逐个提取出来,并依次送入回调函数进行进一步处理(把数据包封装成标准的pcap格式后存放到硬盘上)。由于用户缓冲区对数据包的处理方式过于复杂,当网络流量比较大时,用户缓冲区处理数据包的速度跟不上内核缓冲区从网卡复制数据的速度,所以新的数据包就会因为内核缓冲区满而被丢弃。传统的开源抓包工具软件如wireshark/tshark大多采用这样的抓包方法,无法应对百兆(100Mbps)以上流量的应用。
此外,对于一个万兆(10Gbps)的链路来说,如果做到实时的线速抓包存储,每秒钟耗费的磁盘容量也是非常惊人的,约需要1.25GB,这样存储一天的数据量就需要4.5TB的磁盘空间。而且如果后续的分析过程,需要从这海量的数据中进行检索和分析也是一项非常耗时的工作。频繁和持续的读写操作对于磁盘IO的性能消耗是巨大的挑战。如果可以在抓包任务执行之前,允许用户输入自定义的抓包条件(如源目IP、端口号、协议类型等等),则可以在在线抓包存储过程中进行实时的过滤,达到只存储用户关心的原始数据报文,这样可以大大减少抓包任务的执行效率和对磁盘IO的压力,同时也为后续的分析和定位问题,节省了宝贵的时间。
发明内容
本发明的目的在于:针对现有技术中存在的上述技术问题,通过在万兆网卡驱动优化技术和x86多核并行技术方面的技术优势,发明了一种可以解决万兆流量下使用传统抓包方法抓包掉包率过高的问题,同时优化抓包性能,减少抓包文件的大小,提高分析效率的基于用户自定义的网络抓包系统。
本发明是通过以下技术方案实现的:一种基于用户自定义的网络抓包系统,包括网卡系统优化系统、无锁列队系统和制定自定义找条件;所述的网卡系统优化系统为绕过Linux系统自带的协议栈,通过mmap的ring直接把packet从内核传递到用户空间去,采取了基于NAPI的零拷贝设计;所述的无锁列队系统为判断头尾指针是否相等;所述的制定自定义找条件为源目IP、源目端口、协议类型、端口号的各种复杂条件的组合,内部程序在抓包存储的过程中,实时对这些过滤条件进行检查,符合过滤条件的报文被保存到磁盘,不符合条件的报文则被丢弃。
进一步,所述网卡系统优化系统的流程如下:
(1)外部数据包到达NIC网卡,报文直接存入NIC FIFO队列;
(2)硬件DMA将报文导入到DMA Ring中;
(3)如果中断开启,NIC触发接收中断;
(4)CPU处理中断服务例程,关闭中断;
(5)CPU将DMA Ring放入用户程序Poll队列;
(6)终端通知用户程序执行取报文。
进一步,所述的网卡系统优化系统的流程中,CPU被此中断服务例程占用,只有此处理执行,如果此时关闭中断,NIC继续接收的数据包,放入FIFO队列,不执行其他操作。
进一步,所述的用户空间中起一个while循环,从mmap pkt buffer获取数据包,如果此时中断开启,执行中断例程;如果此时中断关闭,执行用户服务例程,While循环执行取包操作,取完后,开启中断。
综上所述,由于采用了上述技术方案,本发明的有益效果是:通过在万兆网卡驱动优化技术、x86多核并行技术方面的技术优势,本发明的基于用户自定义的网络抓包系统,可以解决万兆流量下使用传统抓包方法抓包掉包率过高的问题,同时支持的自定义抓包过滤算法可以有效的优化抓包性能,减少抓包文件的大小,提高分析效率。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为本发明的网卡系统优化系统的流程图;
图2为本发明的自定义抓包界面示意图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
如图1所示的,一种基于用户自定义的网络抓包系统,网卡驱动程序的优化,网卡驱动是数据包进入系统的第一个环节,也是系统能够达到高速处理的关键环节。设计的思想是绕过Linux系统自带的协议栈,通过mmap的ring直接把packet从内核传递到用户空间去,采取了基于NAPI的零拷贝设计。外部数据包到达NIC网卡,报文直接存入NIC FIFO队列,硬件DMA将报文导入到DMA Ring中;如果此时中断开启,NIC触发接收中断,CPU处理中断服务例程,关闭中断,将DMA Ring放入用户程序Poll队列,之后终端通知用户程序执行取报文;此过程中,CPU被此中断服务例程占用,只有此处理执行。如果此时关闭中断,NIC继续接收的数据包,放入FIFO队列,不执行其他操作。在用户空间起一个while循环,从mmap pkt buffer获取数据包,如果此时中断开启,执行中断例程;如果此时中断关闭,执行用户服务例程,While循环执行取包操作,取完后,开启中断。
多核并行,无锁队列技术。对一个高速网络(例如10GbE)来说,留给设备处理一个书包包的时间时很短的,如果是64-byte的最小包,则平均一个包的处理时间不到67ns。多核平台上进行并行编程中常用的API,例如POSIXthreads(Pthreads)中的线程同步(Thread ynchronization)技术,例如Mutex,Spin lock,已经不适用了。无锁队列技术主要针对单生产者单消费者的场景,可以免掉锁的开销,大大降低了系统消耗。基本原理:就是判断头尾指针是否相等。
自定义抓包条件如图2所示的,允许用户设置自定义的抓包条件,如源目IP、源目端口、协议类型、端口号等等各种复杂条件的组合。内部程序在抓包存储的过程中,实时对这些过滤条件进行检查,符合过滤条件的报文被保存到磁盘,不符合条件的报文则被丢弃。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
Claims (4)
1.一种基于用户自定义的网络抓包系统,其特征在于:包括网卡系统优化系统、无锁列队系统和制定自定义找条件;所述的网卡系统优化系统为绕过Linux系统自带的协议栈,通过mmap的ring直接把packet从内核传递到用户空间去,采取了基于NAPI的零拷贝设计;所述的无锁列队系统为判断头尾指针是否相等;所述的制定自定义找条件为源目IP、源目端口、协议类型、端口号的各种复杂条件的组合,内部程序在抓包存储的过程中,实时对这些过滤条件进行检查,符合过滤条件的报文被保存到磁盘,不符合条件的报文则被丢弃。
2.根据权利要求1所述的基于用户自定义的网络抓包系统,其特征在于,所述网卡系统优化系统的流程如下:
(1)外部数据包到达NIC网卡,报文直接存入NIC FIFO队列;
(2)硬件DMA将报文导入到DMA Ring中;
(3)如果中断开启,NIC触发接收中断;
(4)CPU处理中断服务例程,关闭中断;
(5)CPU将DMARing放入用户程序Poll队列;
(6)终端通知用户程序执行取报文。
3.根据权利要求2所述的基于用户自定义的网络抓包系统,其特征在于,所述的网卡系统优化系统的流程中,CPU被此中断服务例程占用,只有此处理执行,如果此时关闭中断,NIC继续接收的数据包,放入FIFO队列,不执行其他操作。
4.根据权利要求1所述的基于用户自定义的网络抓包系统,其特征在于,所述的用户空间中起一个while循环,从mmap pkt buffer获取数据包,如果此时中断开启,执行中断例程;如果此时中断关闭,执行用户服务例程,While循环执行取包操作,取完后,开启中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610009502.XA CN106953774A (zh) | 2016-01-07 | 2016-01-07 | 一种基于用户自定义的网络抓包系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610009502.XA CN106953774A (zh) | 2016-01-07 | 2016-01-07 | 一种基于用户自定义的网络抓包系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106953774A true CN106953774A (zh) | 2017-07-14 |
Family
ID=59466008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610009502.XA Withdrawn CN106953774A (zh) | 2016-01-07 | 2016-01-07 | 一种基于用户自定义的网络抓包系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106953774A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112565338A (zh) * | 2020-11-10 | 2021-03-26 | 中国人民解放军战略支援部队信息工程大学 | 一种以太网报文捕获、过滤、存储、实时解析方法及系统 |
CN117527654A (zh) * | 2024-01-05 | 2024-02-06 | 珠海星云智联科技有限公司 | 一种用于网络流量抓包分析的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090092057A1 (en) * | 2007-10-09 | 2009-04-09 | Latis Networks, Inc. | Network Monitoring System with Enhanced Performance |
CN102055653A (zh) * | 2009-11-10 | 2011-05-11 | 中兴通讯股份有限公司 | 高速互联系统中的抓包方法及装置 |
CN103441941A (zh) * | 2013-08-13 | 2013-12-11 | 广东睿江科技有限公司 | 一种基于Linux的高性能数据报文捕获方法和装置 |
CN103731364A (zh) * | 2014-01-16 | 2014-04-16 | 赛特斯信息科技股份有限公司 | 基于x86平台实现万兆大流量快速收包的方法 |
CN103763150A (zh) * | 2014-01-02 | 2014-04-30 | 中国人民解放军装甲兵工程学院 | 数据采集系统 |
-
2016
- 2016-01-07 CN CN201610009502.XA patent/CN106953774A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090092057A1 (en) * | 2007-10-09 | 2009-04-09 | Latis Networks, Inc. | Network Monitoring System with Enhanced Performance |
CN102055653A (zh) * | 2009-11-10 | 2011-05-11 | 中兴通讯股份有限公司 | 高速互联系统中的抓包方法及装置 |
CN103441941A (zh) * | 2013-08-13 | 2013-12-11 | 广东睿江科技有限公司 | 一种基于Linux的高性能数据报文捕获方法和装置 |
CN103763150A (zh) * | 2014-01-02 | 2014-04-30 | 中国人民解放军装甲兵工程学院 | 数据采集系统 |
CN103731364A (zh) * | 2014-01-16 | 2014-04-16 | 赛特斯信息科技股份有限公司 | 基于x86平台实现万兆大流量快速收包的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112565338A (zh) * | 2020-11-10 | 2021-03-26 | 中国人民解放军战略支援部队信息工程大学 | 一种以太网报文捕获、过滤、存储、实时解析方法及系统 |
CN117527654A (zh) * | 2024-01-05 | 2024-02-06 | 珠海星云智联科技有限公司 | 一种用于网络流量抓包分析的方法及系统 |
CN117527654B (zh) * | 2024-01-05 | 2024-04-09 | 珠海星云智联科技有限公司 | 一种用于网络流量抓包分析的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105721535B (zh) | 用于对服务功能链中的服务功能进行并行处理的计算设备、方法以及机器可读存储介质 | |
US8014295B2 (en) | Parallel packet processor with session active checker | |
US8176300B2 (en) | Method and apparatus for content based searching | |
CN105323185B (zh) | 用于与交换机结构相关的流控制的方法和装置 | |
US10104043B2 (en) | Method and system for analyzing a data flow | |
EP2868045B1 (en) | A method of and network server for detecting data patterns in an input data stream | |
CN107566206A (zh) | 一种流量测量方法、设备及系统 | |
CN107124286A (zh) | 一种海量数据高速处理、交互的系统及方法 | |
US20130097608A1 (en) | Processor With Efficient Work Queuing | |
US8903866B2 (en) | Handling out-of-sequence data in a streaming environment | |
US20120287782A1 (en) | Programmable and high performance switch for data center networks | |
CN109525495B (zh) | 一种数据处理装置、方法和fpga板卡 | |
CN114327833A (zh) | 一种基于软件定义复杂规则的高效流量处理方法 | |
CN107133231A (zh) | 一种数据获取方法和装置 | |
CN105847179B (zh) | 一种dpi系统中数据并发上报的方法及装置 | |
CN111600852A (zh) | 一种基于可编程数据平面的防火墙设计方法 | |
US20200259751A1 (en) | Metadata extraction | |
CN106953774A (zh) | 一种基于用户自定义的网络抓包系统 | |
Moreno et al. | Packet storage at multi-gigabit rates using off-the-shelf systems | |
EP3101843B1 (en) | Capturing network data to provide to a data analyser | |
CN105516016B (zh) | 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法 | |
CN107819697A (zh) | 数据传输方法、交换机及数据中心 | |
Dong et al. | Multi-dimensional detection of Linux network congestion based on eBPF | |
CN109408246A (zh) | 一种工控网络自适应审计方法 | |
KR100864889B1 (ko) | Tcp 상태 기반 패킷 필터 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170714 |