1 高效捕包技术的重要性

高性能系统需要在很短的时间内,成功的收集和处理大量的数据,目标系统的实时数据需要被收集,管里和控制。

2 传统的数据包捕获机制

  Inter指出,影响数据包捕获性能主要原因是系统开销,内存访问和tcp/ip协议栈三个方面,另外系统开销也是非常大的影响因素。另外出现大量的丢包现像的主要原因还有频繁的网络中断,系统调用和多次内存的拷贝。

(1)BPF数据包捕获机制

  A:数据链路层的一种原始接口,提供原始链路层封包的过滤和转发。

  B:它的实现分为两部分。

    一部分是数据包的过滤,

      根据过滤规则决定数据包的接受和丢弃。通过内核的NetFilter模块实现,通过用户空间的itables控制。

    另一部分是数据包的转发

      在链路层捕获数据包,然后发给数据包过滤部分

  缺陷:

    虽然过滤一部分数据包在一定的程度上降低了系统的开销,提高了效率。但它的捕获和过滤都是在linux内核中完成。这样一来只要linux内核一更新,它也需要更新,降低了它的可移植性和通用性。

(2) libpcap数据包捕获机制

  先看看哪些应用是通过这个库写出来的吧,snort,tcpdump。wireshark用的winpcap。可见还是非常的强大的,它同样支持BPF信息过滤机制

  libpcap工作机制:

    A:本地网卡设置为混杂模式(这种模式能够接受所有流经本机所在网络得数据包)

    B:数据包经过BPF过滤

    C:交给linux内核层数据包缓冲区,用户层应用程序通过系统调用将数据包从内核缓冲区取出并放入用户空间内存区

    缺陷:

    数据包经过了linux得内核网络协议栈,从网卡到用户空间的传递过程,存在多次的拷贝和中断相应,消耗大量得cpu时间片,降低系统整体的数据分析能力。

(3)pf_ring数据包捕获机制

  在linux内核层添加了一种新的带缓存得协议族,结合网卡得内存访问模式DMA以及中断模式NAPI技术,减少cpu得中断次数。位于用户层得应用程序通过mmap技术直接访问linux内核层得网络数据包,减少数据拷贝。它是一种独立模块的形式,能够进行模块的卸载和加载。

  缺陷:

    数据从网卡内存缓存区到内核sk_buf数据存储,进行一次拷贝,并没有实现真正意义得零拷贝。f另外它得预处理和数据包的捕获仍然在内核层完成。

3 DPDK

(1)dpdk的四个技术点

  A:hugetlbpage:通过大内存提高内存使用效率

  B:UIO:驱动的很少一部分在内核中完成,在用户空间完成大部分功能。

  C:cpu affinity:将控制面线程以及各个数据面线程绑定在不同的cpu核

  D:zero copy:

(2) 数据包捕获基本流程

  rte_eal_init对dpdk参数的处理,初始化EAL环境

  inti_mbuf_pools:初始化mbuf和pool队列

  init_port:初始化端口配置

  ret_burst_rx_burst:从端口接收数据包,如果是多端口可以for循环抓包

  通过自定义的函数对每个数据包的初步处理并进行队列的分发

内容出自论文基于dpdk的高效数据不获技术分析与应用 计算机工程与科学 第38卷第11期

dpdk数据包捕获技术笔记1的更多相关文章

  1. 基于DPDK的高效数据包捕获技术分析与应用

    被NFV的论文折磨了两天,今天上午看了两篇DPDK的综述. 传统的包捕获机制 1. BPF 两个组成部分:转发部分和过滤部分. 转发部分负责从链路层提取数据包并转发给过滤部分. 过滤部分根据过滤规则, ...

  2. 基于tcpdump的Android智能移动终端数据包捕获完整解决方案

    如何在Android智能手机上捕获数据包? 本文由CSDN-蚍蜉撼青松[主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 当前Android系统越来越流行,无 ...

  3. Wireshark入门与进阶---数据包捕获与保存的最基本流程

    Wireshark入门与进阶系列(一) "君子生非异也.善假于物也"---荀子 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原 ...

  4. Linux 中的网络数据包捕获

    Linux 中的网络数据包捕获 Ashish Chaurasia, 工程师 简介: 本教程介绍了捕获和操纵数据包的不同机制.安全应用程序,如 VPN.防火墙和嗅探器,以及网络应用程序,如路由程序,都依 ...

  5. Bluetooth数据包捕获

    目录 1. 前提 2. 开启功能 3. 抓包 这里介绍一种在Android上捕获蓝牙数据包的方法 1. 前提 首先你要有一部Android手机 然后你的Android系统版本要在4.4及以上 我没有做 ...

  6. 【转】Bluetooth数据包捕获

    原文网址:http://www.cnblogs.com/hzl6255/p/3887013.html 这里介绍一种在Android上捕获蓝牙数据包的方法 1. 前提 首先你要有一部Android手机  ...

  7. linux简单的数据包捕获分析

    有时我们会遇到一些问题,需要捕捉数据包分析,当手头有没有专业的抓图工具,您可以使用tcpdump相反,看看(一般版本附带这个工具) 比如,我们要分析eth0与接口192.168.7.188 这个对象I ...

  8. OVS+DPDK Datapath 包分类技术

    本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath class ...

  9. 使用 gopacket 进行数据包捕获,注入和分析

    原文链接:https://www.devdungeon.com/content/packet-capture-injection-and-analysis-gopacket 接口文档:https:// ...

随机推荐

  1. EasyPlayerPro(Windows)流媒体播放器功能介绍及应用场景

    EasyPLyerPro(Windows)经过为期一个月的开发已经基本完成,虽然目前仍存在一些小问题,但是总体功能还是趋于比较稳定和强大的,下面对其功能和应用场景做简要介绍. 一.EasyPlayer ...

  2. 九度OJ 1063:整数和 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3456 解决:2254 题目描述: 编写程序,读入一个整数N. 若N为非负数,则计算N到2N之间的整数和: 若N为一个负数,则求2N到N之间 ...

  3. Kafka核心思想

    Kafka是2010年12月份开源的项目,采用Scala语言编写,使用了多种效率优化机制,整体架构比较新颖(push/pull),更适合异构集群. 设计目标: (1) 数据在磁盘上的存取代价为O(1) ...

  4. 【题解】[Ghd]

    [题解]Ghd 一道概率非酋题? 题目很有意思,要我们选出大于\(\frac{n}{2}\)个数字使得他们的最大公约数最大. 那么我们若随便选择一个数字,他在答案的集合里的概率就大于\(0.5\)了. ...

  5. 我的Android进阶之旅------>Android使用AlarmManager全局定时器实现定时更换壁纸

    该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...

  6. oracle-jforum论坛链接Oracle

    问题描述 jforum论坛链接Oracle jforum论坛链接Oracle数据库 论坛主题页面不显示 是权限引起的吗 解决方案 页面不显示,你需要看一下错误,估计是配置不对引起的 参考一下这个 jf ...

  7. PAT天梯赛 L2-002. 链表去重 【STL】

    题目链接 https://www.patest.cn/contests/gplt/L2-002 思路 用结构体 存储 一个结点的地址 值 和下一个地址 然后从首地址开始 往下走 并且每个值的绝对值 都 ...

  8. 一次react滚动列表的实践---兼容ios安卓

    一.背景 近期项目改版,对原有的h5页面进行了重新设计,数据呈现变成了瀑布流.希望新版兼容ios和安卓两端的情况下,无限制的刷新加载数据.大致效果如下: 整个页面分4部分: 顶部导航 步数状态卡片 用 ...

  9. LightOJ - 1284 Lights inside 3D Grid —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1284 1284 - Lights inside 3D Grid    PDF (English) Statistic ...

  10. linux应用之Lamp(apache+mysql+php)的源码安装(centos)

    Linux+Apache+Mysql+Php源码安装 一.安装环境: 系统:Centos6.5x64 Apache: httpd-2.4.10.tar.gz Mysql: mysql-5.6.20-l ...