原创翻译,转载请注明出处。

DPDK的librte_pdump库,提供了在DPDK框架下抓包的功能。这个库通过完全复制Rx和Tx的mbuf到一个新的内存池,因此它降低应用程序的性能,所以只推荐在调试的时候使用。
pdump库提供了如下的API来初始化这个抓包框架,使能或者停止抓包,以及清理退出抓包框架。

  • rte_pdump_init(): 初始化抓包框架.
  • rte_pdump_enable(): 在一个端口队列开启抓包.注意: 过滤选项将在以后实现,目前只是个占位的.
  • rte_pdump_enable_by_deviceid(): 在一个设备ID(vdev名称或者pci地址)和队列抓包. 注意: 过滤选项将在以后实现,目前只是个占位的.
  • rte_pdump_disable(): 在一个端口队列停止抓包.
  • rte_pdump_disable_by_deviceid(): 停止在一个设备ID(vdev名称或者pci地址)和队列抓包
  • rte_pdump_uninit(): 清理退出抓包框架.
  • rte_pdump_set_socket_dir(): 设置服务端或客户端socket路径.注意: 这个接口是非线程安全的.

1.操作流程
librte_pdump库是客户端/服务端的工作模式。服务端负责开启或者停止抓包,客户端负责请求开启或停止抓包。
抓包框架在初始化的时候,创建了线程和服务端的socket,并把socket放在线程中处理。应用程序在调用这个框架的初始化的时候,通过传入默认的路径参数,

如root用户下,/var/run/.dpdk,非root用户
~/.dpdk,就会创建客户端socket,并发送请求到服务端。服务端会监听客户端的开启或停止抓包请求。

2.实现细节
rte_pdump_init()初始化抓包框架并创建线程和服务端socket。socket在线程里监听客户端的开启或停止抓包的请求。
rte_pdump_enable()
和 rte_pdump_enable_by_deviceid()
开启抓包。每调用一次这些API,pdump库就会创建一个独立的客户端socket,并发送"pdump
enable"的请求到服务端。

服务端监听到这个请求就会通过给定的端口或者设备ID以及队列的组合在Ethernet RX
和TX注册回调函数,之后服务端就会镜像数据包到一个新的内存池,并将让它们在客户端传入的rte_ring队列上入队。

服务端会发送请求回应给客户端关于请求处理的状态。在收到服务端的回应后,客户端的socket就关闭了。

rte_pdump_disable()

rte_pdump_disable_by_deviceid()停止抓包。每调用一次这些API,pdump库就会创建一个独立的客户端socket,并发送"pdump
disable"的请求到服务端。

服务端监听到这个请求就会通过给定的端口或者设备ID以及队列的组合在Ethernet RX
和TX删除回调函数,之后服务端就会镜像数据包到一个新的内存池,并将让它们在客户端传入的rte_ring队列上入队。

服务端会发送请求回应给客户端关于请求处理的状态。在收到服务端的回应后,客户端的socket就关闭了。

rte_pdump_uninit(),结束抓包框架,并关闭线程和服务端的socket。
rte_pdump_set_socket_dir()
通过 type 这个参数来设置指定的路径给服务端或者客户端。如果给定的路径是NULL,那么会使用默认的路径,如:/var/run/.dpdk
(root用户)或者 ~/.dpdk (非root用户)。

客户端需要调用这个API去设置他们服务端socket的不同于默认路径的路径

3.使用举例:
DPDK提供 app/pdump 工具,可以参考它来开发自己的抓包工具。

DPDK如何抓包的更多相关文章

  1. Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!

    目录 01 简介 02 tcpdump 命令选项 03 过滤器 04 常用操作 4.1 抓取某主机的数据包 4.2 抓取某端口的数据包 4.3 抓取某网络(网段)的数据包 4.4 抓取某协议的数据包 ...

  2. android http 抓包

    有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...

  3. charles工具抓包教程(http跟https)

    1.下载charles 可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/    根据自己的操作系统下载对应的版本,然后进行安装,然后打 ...

  4. 从Fiddler抓包到Jmeter接口测试(简单的思路)

    备注:本文为博主的同事总结的文章,未经博主允许不得转载. Fiddler下载和配置安装 从网上下载fiddler的安装包即可,直接默认,一直点击下一步,直至安装完成. 安装完成后直接打开Fiddler ...

  5. 逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等

    目录: 一. iOS 如何做才安全 二.ipa文件 三.沙盒 中的数据 四.Reveal:查看 任何APP 的UI结构 五.反编译工具:IDA 六.反编译工具:Hopper Disassembler ...

  6. CatchPacket网络抓包软件

    CatchPacket网络抓包软件  qq  22945088431.技术特点:基于WinPcap库,c# winform2.实现获取机器所有网卡,可任意选择监听3.可以捕获常见网络协议arp dns ...

  7. mac 抓包工具charles v3.9.3 安装破解步骤

    一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1skTXRIl ...

  8. 运维之网络安全抓包—— WireShark 和 tcpdump

    ------------------------------------------------本文章只解释抓包工具的捕获器和过滤器的说明,以及简单使用,应付日常而已----------------- ...

  9. Jmeter实现登录bugfree、新建bug、解决bug脚本(抓包工具实现)

    环境 Chrome jmeter3.1 fiddler4 win7 32位 Linux CentOs6.4 bugfree3.0.1 链接:http://pan.baidu.com/s/1gfHpbp ...

随机推荐

  1. NEC 框架规范 animation

    /* animation *//* 淡入 */.a-fadein{-webkit-animation-name:fadein;-moz-animation-name:fadein;-ms-animat ...

  2. python2.7打包环境配置

    目前python3.x正大行其道,不过有些公司依然使用python2.x,比如说我现在的公司.网上python2.x解决方案还是有些空缺,需要自己去查找. 公司的电脑安装的python2.7,pip也 ...

  3. Xadmin使用二

    1:修改site-title和site-footer,增加菜单折叠效果 在adminx.py中增加下面代码: class GlobalSetting(object): # 设置Title site_t ...

  4. ABAP术语-LUW (Logical Unit of Work)

    LUW (Logical Unit of Work) 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/04/1089637.html Logi ...

  5. 关于 laravel 集合的使用

    常用的有 count() count方法返回集合中所有项的数目: $collection = collect([1, 2, 3, 4]); $collection->count(); forPa ...

  6. 搭建简单的hadoop集群(译文)

    本文翻译翻译自http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/ClusterSetup.html 具体的实 ...

  7. pyc是个什么鬼?

    1.Python是一门解释型语音? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释型语音,我就这样一直相信下去,知道发现了*.pyc文件的存在.如果是解释型语音,那 ...

  8. 内存泄漏导致程序killed

    示例程序: #include<stdio.h> #include<unistd.h> int main() { ) { *]; } ; } 执行结果: 程序消耗完内存会被kil ...

  9. Kubernetes-深入分析集群安全机制

    Kubernetes过一系列机制来实现集群的安全机制,包括API Server的认证授权.准入控制机制及保护敏感信息的Secret机制等.集群的安全性必须考虑以下的几个目标: 保证容器与其所在宿主机的 ...

  10. phpMyAdmin出现错误 Access denied for user 'root'@'localhost' (using password: NO)

    今天安装wmpp,之后启动后点击phpMyAdmin 报拒绝连接错误:#1045 - Access denied for user 'root'@'localhost' (using password ...