DPDK如何抓包
原创翻译,转载请注明出处。
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如何抓包的更多相关文章
- Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!
目录 01 简介 02 tcpdump 命令选项 03 过滤器 04 常用操作 4.1 抓取某主机的数据包 4.2 抓取某端口的数据包 4.3 抓取某网络(网段)的数据包 4.4 抓取某协议的数据包 ...
- android http 抓包
有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...
- charles工具抓包教程(http跟https)
1.下载charles 可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/ 根据自己的操作系统下载对应的版本,然后进行安装,然后打 ...
- 从Fiddler抓包到Jmeter接口测试(简单的思路)
备注:本文为博主的同事总结的文章,未经博主允许不得转载. Fiddler下载和配置安装 从网上下载fiddler的安装包即可,直接默认,一直点击下一步,直至安装完成. 安装完成后直接打开Fiddler ...
- 逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等
目录: 一. iOS 如何做才安全 二.ipa文件 三.沙盒 中的数据 四.Reveal:查看 任何APP 的UI结构 五.反编译工具:IDA 六.反编译工具:Hopper Disassembler ...
- CatchPacket网络抓包软件
CatchPacket网络抓包软件 qq 22945088431.技术特点:基于WinPcap库,c# winform2.实现获取机器所有网卡,可任意选择监听3.可以捕获常见网络协议arp dns ...
- mac 抓包工具charles v3.9.3 安装破解步骤
一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1skTXRIl ...
- 运维之网络安全抓包—— WireShark 和 tcpdump
------------------------------------------------本文章只解释抓包工具的捕获器和过滤器的说明,以及简单使用,应付日常而已----------------- ...
- Jmeter实现登录bugfree、新建bug、解决bug脚本(抓包工具实现)
环境 Chrome jmeter3.1 fiddler4 win7 32位 Linux CentOs6.4 bugfree3.0.1 链接:http://pan.baidu.com/s/1gfHpbp ...
随机推荐
- Python基础—12-面向对象(02)
面向对象 面向对象三大特点 封装:既可对数据结构进行封装,又可对处理数据的方法进行封装 继承:强调的父子类的关系 多态:不同对象调用相同的方法,会有不同的响应 类的继承 相关概念 继承:父类的属性和方 ...
- iOS之性能的优化
本文转自:http://m.blog.csdn.net/article/details?id=51638925 写在前面 本文来自iOS Tutorial Team 的 Marcelo Fabri,他 ...
- 你不知道的javaScript笔记(7)
异步:现在与将来 分块的程序 可以把JavaScript 程序写在单独的js 文件中,这个程序是由多个块组成的,这些块 中只有一个是现在执行,其余在捡来执行,最常见的块单位是函数. 例如: funct ...
- noip模拟赛 动态仙人掌(并查集,贪心)
思路: 贪心+并查集 因为45‘,所以可以很方便的算出每个仙人掌的最晚起跳(左端点) 右端点自然也能出来 先按左端点排序 如果他右面的和他相交,就更新 用并查集维护这个更新的关系 更新的同时维护高就好 ...
- ABAP术语-Function Builder
Function Builder 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/03/1063196.html Tool for creat ...
- 【原创】os.chdir设置的工作路径和sys.path之间到底是个啥关系?
转载请注明出处:https://www.cnblogs.com/oceanicstar/p/9390455.html 直接放上测试后的结论(测试代码和截图过多,有兴趣的小伙伴可自己测试,未来看情况 ...
- Hadoop(2)--hdfs
Hadoop(2) Hadoop底层封装的的是HDFS和MapReduce两种框架 在Hdfs中采用的是主从结构(Madter-slaver)就像领导和员工一样,领导负责整个公司的管理工作,而员工就负 ...
- while,格式化输出
1. while循环: while 条件: 代码块(循环体) num=1 while num<=5: print(num) num+=1 break:结束循环;停止当前本层循环 continue ...
- STL——泛型编程
1.指针的算术运算 对于一个存储int数据的vector,我们要查找某值是否存在于其中,采用下标操作的做法如下: int* find(const vector<int> &vec, ...
- HyperLedger Fabric 1.4 交易流程(6.3)
区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程. 在Fabric中, ...