DPDK编程指南(翻译)( 十九)

19.Librte_pdump库

librte_pdump库为DPDK中的数据包捕获提供了一个框架。该库将Rx和Tx mbufs的完整复制到新的mempool,因此会降低应用程序的性能,故建议只使用该库进行调试。

该库提供以下API来初始化数据包捕获框架,启用或禁用数据包捕获,或者对其进行反初始化:

  • rte_pdump_init():初始化数据包捕获框架。
  • rte_pdump_enable():在给定的端口和队列上进行数据包捕获。注意:API中的过滤器选项是用于未来增强功能的占位符。
  • rte_pdump_enable_by_deviceid():启用在给定设备ID(vdev名称或pci地址)和队列上的数据包捕获。 注意:API中的过滤器选项是用于未来增强功能的占位符。
  • rte_pdump_disable():禁用给定端口和队列上的数据包捕获。
  • rte_pdump_disable_by_deviceid():禁用给定设备ID(vdev名称或pci地址)和队列上的数据包捕获。
  • rte_pdump_uninit():反初始化数据包捕获框架。
  • rte_pdump_set_socket_dir():设置服务器和客户端套接字路径。注意:此API不是线程安全的。

19.1.操作

librte_pdump库适用于客户端/服务器型号。服务器负责启用或禁用数据包捕获,客户端负责请求启用或禁用数据包捕获。

数据包捕获框架作为程序初始化的一部分,在pthread中创建pthread和服务器套接字。调用框架初始化的应用程序将创建服务器套接字,可能是在应用程序传入的路径,也可能是默认路径(root用户的/var/run/.dpdk,非root用户~/.dpdk)下创建。

请求启用或禁用数据包捕获的应用程序将在应用程序传入的路径下或默认路径(root用户的/var/run/.dpdk,非root用户~/.dpdk)下创建客户机套接字,用户将请求发送到服务器。服务器套接字将监听用于启用或禁用数据包捕获的客户端请求。

19.2.实现细节

库API rte_pdump_init()通过创建pthread和服务器套接字来初始化数据包捕获框架。pthread上下文中的服务器套接字将监听客户端请求以启用或禁用数据包捕获。

库API rte_pdump_enable()和rte_pdump_enable_by_deviceid()启用数据包捕获。每次调用这些API时,库创建一个单独的客户端套接字,生成“pdump enable”请求,并将请求发送到服务器。在套接字上监听的服务器将通过对给定的端口或设备ID和队列组合的以太网Rx/TX注册回调函数来接收请求并启用数据包捕获。然后,服务器将镜像数据包到新的mempool并将它们入队到客户端传递给这些API的rte_ring。服务器还将响应发送回客户端,以了解处理过的请求的状态。从服务器收到响应后,客户端套接字关闭。

库API rte_pdump_disable()和rte_pdump_disable_by_deviceid()禁用数据包捕获。每次调用这些API时,库会创建一个单独的客户端套接字,生成“pdump disable”请求,并将请求发送到服务器。正在监听套接字的服务器将通过对给定端口或设备ID和队列组合的以太网RX和TX删除回调函数来执行请求并禁用数据包捕获。服务器还将响应发送回客户端,以了解处理过的请求的状态。从服务器收到响应后,客户端套接字关闭。

库API rte_pdump_uninit()通过关闭pthread和服务器套接字来初始化数据包捕获框架。

库API rte_pdump_set_socket_dir()根据API的类型参数将给定路径设置为服务器套接字路径或客户端套接字路径。如果给定路径为NULL,则将选择默认路径(即root用户的/var/run/.dpdk或非root用户的~/.dpdk)。如果服务器套接字路径与默认路径不同,客户端还需要调用此API来设置其服务器套接字路径。

19.3.用例:抓包

DPDK应用程序/pdump工具是基于此库开发的,用于捕获DPDK中的数据包。用户可以用它来开发自己的数据包捕获工具。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,282评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,267评论 25 708
  • 在今天的功课里的“我是富足”,意思不单只是我拥有富足,而是意味着我就是富足本身。我慷慨给予是因为我知道自己是无限的...
    英杰旺姆阅读 152评论 0 0
  • 豆子9岁时,我们全家到雁西湖玩。 看到有开卡丁车的,一次是4辆车一起开。看了别人开了几次,豆爸就问豆子想不想开,豆...
    近馨阅读 303评论 4 5

友情链接更多精彩内容