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

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. Linux查看日志命令- more、less、tail、head命令的区别

    参考:https://blog.csdn.net/caib1109/article/details/52195942 1.more 2.tail 3.less 4.cat 5.head

  2. SP1043 GSS1 - Can you answer these queries I(线段树,区间最大子段和(静态))

    题目描述 给出了序列A[1],A[2],…,A[N]. (a[i]≤15007,1≤N≤50000).查询定义如下: 查询(x,y)=max{a[i]+a[i+1]+...+a[j]:x≤i≤j≤y} ...

  3. 洛谷P2052 [NOI2011]道路修建(树形DP)

    题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...

  4. ABAP术语-Application

    Application 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/15/995737.html Set of work processe ...

  5. PostgreSQL数据库的安装

    1 总体规划 操作系统 CentOS Linux release 7.5.1804 处理器 1 内存 4G 硬盘 38G 主机名称 chenzx IP地址 192.168.56.8 1.1 用户组和用 ...

  6. Python核心框架tornado的异步协程的2种方式

    什么是异步? 含义 :双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位 现象:没有共同的时钟,不考虑顺序来了 ...

  7. vue服务端渲染提取css

    vue服务端渲染,提取css单独打包的好处就不说了,在这里主要说的是抽取css的方法 要从 *.vue 文件中提取 CSS,可以使用 vue-loader 的 extractCSS 选项(需要 vue ...

  8. C#中在WebClient中使用post发送数据实现方法

    很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...

  9. Hadoop(4)-Hadoop集群环境搭建

    准备工作 开启全部三台虚拟机,确保hadoop100的机器已经配置完成 分发脚本 操作hadoop100 新建一个xsync的脚本文件,将下面的脚本复制进去 vim xsync #这个脚本使用的是rs ...

  10. http一些常见知识记录

    HTTP请求包(浏览器信息) 我们先来看看Request包的结构, Request包分为3部分,第一部分叫Request line(请求行), 第二部分叫Request header(请求头),第三部 ...