被NFV的论文折磨了两天,今天上午看了两篇DPDK的综述。

传统的包捕获机制


1. BPF

  • 两个组成部分:转发部分过滤部分
  • 转发部分负责从链路层提取数据包并转发给过滤部分。
  • 过滤部分根据过滤规则,决定包的转发或者丢弃,然后交给应用层。
  • 缺点:所有动作都在内核中完成。可移植性差。

2. libpcap

  • 将网卡设置为混杂模式,拷贝所有流经网卡的数据包。
  • 用BPF过滤后交付内核中的数据包缓冲区
  • 应用程序通过系统调用的方式,从数据包缓冲区来获取数据包。
  • 缺点:浪费CPU周期。

2. pf_ring

  • 应用程序直接访问内核。
  • 内核中添加用socket区分的环形缓冲区。网卡中的数据包直接拷贝到对应socket的缓冲区中。
  • 应用程序通过接口函数直接获得相应缓冲区的数据包。
  • 缺点:预处理仍然在内核中。

Intel DPDK

  • 用户空间的进程直接访问网卡。
  • 不是协议栈。

DPDK的四个技术点

  • hugetlbpage:大页内存,提高内存利用率,重点了解。
  • uio:大部分驱动程序都在用户空间,少部分程序在内核。
  • CPU亲和:线程绑定到cpu的某一个核心上。
  • Zero copy:零拷贝,数据包从NIC直接到用户空间。

关于DPDK的一些部件以后会深入了解在此就不赘述了。

基于DPDK的高效数据包捕获技术分析与应用的更多相关文章

  1. dpdk数据包捕获技术笔记1

    1 高效捕包技术的重要性 高性能系统需要在很短的时间内,成功的收集和处理大量的数据,目标系统的实时数据需要被收集,管里和控制. 2 传统的数据包捕获机制 Inter指出,影响数据包捕获性能主要原因是系 ...

  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. 基于TILE-GX实现快速数据包处理框架-netlib实现分析【转】

    最近在研究suricata源码,在匹配模式的时候,有tilegx mpipe mode,转载下文,了解一下. 原文地址:http://blog.csdn.net/lhl_blog/article/de ...

  6. 捕获网络数据包并进行分析的开源库-WinPcap

    什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets.  这是一种简单的 ...

  7. 基于DPDK的高效包处理系统

    一.概念 Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用 ...

  8. Bluetooth数据包捕获

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

  9. 【转】Bluetooth数据包捕获

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

随机推荐

  1. Innodb和Mysiam引擎的区别

    一:区别 Mysiam: 1.是非事务安全型. 2.是表级锁. 3.如果执行大量的select,Mysiam是更好的选择. 4.select count(*)from table.Mysiam只简单的 ...

  2. td内的所有数字格式化保留两位小数

    $("td").each(function(i,el){ var td = parseFloat($(el).text()); if(!isNaN(td)){ $(el).text ...

  3. node.js(二)

    今天我们学习如何运行起来一个项目,我还不会新建项目,所以我们打开一个小伙伴创建的项目,我用的开发工具是vscode 选择项目所在文件夹就好了. 打开后是这样子的 我们还要安装一下npm, 在这里安装, ...

  4. Git 创建并管理局域网仓库

    Git 作为当前比较流行的代码管理工具,可以实现多人协作,不同版本代码管理. 本文内容基于Ubuntu. 0. 配置git信息 git config --global user.name XXX # ...

  5. 20155321 2016-2017-2《Java程序设计》课堂实践项目2

    20155321 2016-2017-2<Java程序设计>课堂实践项目2 实践内容 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: ...

  6. CH03 课下作业

    CH03 课下作业 缓冲区溢出漏洞实验 缓冲区溢出攻击:通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的. 缓冲区溢出 ...

  7. 20145207李祉昂《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

    1.0 实践内容 Return-to-libc攻击是一种特殊的缓冲区溢出攻击,通常用于攻击有“栈不可执行”保护措施的目标系统.本实验中我们放弃了让漏洞程序执行堆栈中的shellcode,将用syste ...

  8. day 1 异常基本功能

    1.什么是异常?程序出现的错误 In [1]: open('xxx.txt') ------------------------------------------------------------ ...

  9. 【LG4841】城市规划

    [LG4841]城市规划 题面 洛谷 题解 记\(t_i\)表示\(i\)个点的无向图个数,显然\(t_i=2^{C_i^2}\). 设\(f_i\)表示\(i\)个点的无向连通图个数,容斥一下,枚举 ...

  10. HDU 6086 Rikka with String

    Rikka with String http://acm.hdu.edu.cn/showproblem.php?pid=6086 题意: 求一个长度为2L的,包含所给定的n的串,并且满足非对称. 分析 ...