DPDK pdump抓包说明

2023-05-16

一.环境与编译

pdump库是在16.07版本引入的,提供了一个抓包调试功能。在$(RTE_SDK)/app目录下就有一个dpdk-pdump的工具。配置这个这个工具可以用于抓取指定接口、队列的数据包。

1.1 库及依赖

Pdump依赖于libpcap库及libpcap-dev等相关库,要预先安装。

1.2 编译选项

Pdump依赖于基于libpcap的PMD驱动,需要开启两个设置,来生成运行pdump工具

  1. CONFIG_RTE_LIBRTE_PMD_PCAP=y ($(RTE_SDK)/config/common_base文件)
  2. CONFIG_RTE_LIBRTE_PDUMP=y ($(RTE_SDK)/config/common_base文件)

1.3 编译dpdk-pdump

这里以17.02版本为例说明。按照官方文档,在$(RTE_SDK)目录下,

  1. 设置编译的目录 export RTE_SDK=XXX ,XXX就是dpdk的源码包的目录
  2. 设置编译后的安装目录(主要就是拷贝生成的库,头文件等) export DESTDIR=XXX,这个安装目录可以自行设置。推荐自己建一个目录,好找就行,生成的pdump工具就在这个目录里。
  3. 执行编译安装 make install T=x86_64-native-linuxapp-gcc;这里的T是指编译的TARGET,根据机器和编译器选择组合,具体可参考官方文档——《Getting started Guide For Linux》

二. 测试与使用

在编译安装后,就会在安装目录的bin目录中发现dpdk-pdump可执行文件。可以拷贝出来后续运行。

2.1 运行原理

dpdk-pdump使用时,作为secondary进程依附于primary进程。primary进程中启动server端,初始化pdump抓包框架任务;dpdk-pdump进程是作为client端向primary进程发送开始/停止抓包请求,然后primary进程拷贝一份数据包到ring中,secondary进程从ring中读取出来,并保存为pcap文件。因此,可以看出在primary进程中需要初始化pdump server。

2.2 简单示例

  1. 在示例中,使用l3fd来当primary进程,但是需要做些小修改,在rte_eal_init()后,初始化pdump框架,添加如下代码:
#ifdef RTE_LIBRTE_PDUMP
    /* initialize packet capture framework */
    rte_pdump_init(NULL);
#endif
然后编译l3fd生成l3fd可执行文件,就以官方例子参数运行。
  1. 运行dpdk-pdump,作为secondary进程,依附于前面启动的l3fd。执行如下参数命令: ./dpdk-pdump -- --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap'
    这里需要注意port的取值,一定是DPDK绑定的网卡,如绑定了3张网卡,那port取值范围就是0-2,对应于每个网卡。自然,也可以使用PCI号来传参,指明抓哪个网卡。Dev=/tmp/rx.pcap就指明了最后抓的包存放的路径。

更详细的dpdp-pdump运行参数可以根据情况设置,格式如下:

usage: %s [EAL options] -- --pdump "
            "'(port=<port id> | device_id=<pci id or vdev name>),"
            "(queue=<queue_id>),"
            "(rx-dev=<iface or pcap file> |"
            " tx-dev=<iface or pcap file>,"
            "[ring-size=<ring size>default:16384],"
            "[mbuf-size=<mbuf data size>default:2176],"
            "[total-num-mbufs=<number of mbufs>default:65535]'\n"
            "[--server-socket-path=<server socket dir>"
                "default:/var/run/.dpdk/ (or) ~/.dpdk/]\n"
            "[--client-socket-path=<client socket dir>"
                "default:/var/run/.dpdk/ (or) ~/.dpdk/]\n"
注意:参数中注意单引号那个字符,还有指定server-socket-path的路径时的”\n”字符。

转载于:https://www.cnblogs.com/yhp-smarthome/p/7102557.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DPDK pdump抓包说明 的相关文章

  • 一次DPDK-L3FWD-ACL的问题排查

    其实说起来不是什么大问题 xff0c 所有的配置按照下面这个来的 包括写入arp和配置默认路由 xff0c 不过我用的单文件那个l3fwd acl https blog csdn net sinat 20184565 article det
  • dpdk探究1-理解dpdk的运行逻辑

    DPDK介绍 DPDK主要功能 xff1a 利用IA xff08 intel architecture xff09 多核处理器进行高性能数据包处理 Linux下传统的网络设备驱动包处理的动作可以概括如下 xff1a 数据包到达网卡设备网卡设
  • dpvs入门实践1--概念及编译安装

    DPVS是一种基于DPDK的高性能四层负载均衡器 它来源于Linux Virtual Server LVS及其修改后的alibaba LVS 那LVS是什么呢 Linux Virtual Server是构建在实服务器集群上的高度可伸缩和高可
  • ovs+dpdk 三级流表(microflow/megaflow/openflow)

    本文介绍在ovs dpdk下 三级流表的原理及其源码实现 普通模式ovs的第一和二级流表原理和ovs dpdk下的大同小异 三级流表完全一样 基本概念 microflow 最开始openflow流表是在kernel中实现的 但是因为在ker
  • 网络性能测试工具:iperf3

    一 iperf3简介 iperf3是一个网络性能测试工具 iperf3下载地址 iperf可以测试TCP和UDP带宽质量 iperf可以测量最大TCP带宽 具有多种参数和UDP特性 iperf可以报告带宽 延迟抖动和数据包丢失 iperf3
  • docker存储管理及实例

    一 Docker存储概念 1 容器本地存储与Docke存储驱动 容器本地存储 每个容器都被自动分配了内部存储 即容器本地存储 采用的是联合文件系统 通过存储驱动进行管理 存储驱动 控制镜像和容器在 docker 主机上的存储和管理方式 容器
  • openssl生成椭圆曲线的私钥是如何做到每次不同的?

    目录 例子 排查 随机算法 小结 例子 生成一个私钥只需要3步 1 获得指定曲线的group 如比特币的secp256k1 2 group和key绑定 3 用key来生成私钥 先上一段代码例子 key1 EC KEY new if key1
  • 杂项记录

    2019 07 14 查看一些基础的信息 比如CPU 逻辑核等系你 查看某个网卡在哪个numa节点上https blog csdn net jpmsdn article details 84561294 DPDK最大支持核数 128 在rt
  • SPDK块设备

    SPDK视角每个App由多个子系统 subsystem 构成 同时每个子系统又包含多个模块 module 子系统和模块的注入都是可插拔的 通过相关的宏定义声明集成到SPDK组件容器里 其中子系统的注入可通过声明SPDK SUBSYSTEM
  • Linux内核网络结构,和收发数据基本流程

    不管是大型虚拟化云网络 还是嵌入式物联网系统 Linux网络都扮演着重要的角色 借用一句话说 如果说网络是信息系统的基石 那么Linux网络系统就是基石中的钢筋 它经过几十年的发展 它千锤百炼 几乎包含了市面上所有的网络通讯功能 要想一下子
  • 网络性能评估

    在Linux中常见的网络性能指标如下 l 带宽 表示链路的最大传输速率 单位是b s 比特 秒 在位服务器选网卡时 带宽就是最核心的参考指标 常用的带宽有1000M 10G 40G 100G等 网络带宽测试 测试的不是带宽 而是网络吞吐量
  • TCP参数参数调优

    前言 TCP 性能的提升不仅考察 TCP 的理论知识 还考察了对于操心系统提供的内核参数的理解与应用 TCP 协议是由操作系统实现 所以操作系统提供了不少调节 TCP 的参数 如何正确有效的使用这些参数 来提高 TCP 性能是一个不那么简单
  • ARP协议

    一 ARP概述 如果要在TCP IP协议栈中选择一个 最不安全的协议 那我会毫不犹豫把票投给ARP协议 我们经常听到的这些术语 包括 网络扫描 内网渗透 中间人拦截 局域网流控 流量欺骗 基本都跟ARP脱不了干系 大量的安全工具 例如大名鼎
  • DPDK+Pktgen 高速发包测试

    Pktgen概述 Pktgen Packet Gen erator 是一个基于DPDK的软件框架 发包速率可达线速 提供运行时管理 端口实时测量 可以控制 UDP TCP ARP ICMP GRE MPLS and Queue in Que
  • DPDK-流分类与多队列

    1 前言 多队列与流分类技术基本被应用到所有DPDK网关类项目中 比如开源的DPVS 美团的四层网关等等 利用多队列及分流技术可以使得网卡更好地与多核处理器 多任务系统配合 从而达到更高效IO处理的目的 这章节以英特尔的网卡为例 介绍多队列
  • DPDK RX/TX 回调示例应用程序中没有流量出现

    我是DPDK领域的新生 我从 DPDK 主页给出的示例应用程序开始 我被这个例子困住了 DPDK RX TX 回调示例应用程序 https doc dpdk org guides sample app ug rxtx callbacks h
  • 在 SR-IOV 虚拟功能 (VF) NIC 之间转发数据包

    我有一个支持 Intel SR IOV 的 Intel 82599ES 10G NIC 我已成功创建了 8 个虚拟功能 VF 并将其分配给 2 个 qemu kvm VM 每个 VM 2 个 VF 两台虚拟机都使用分配的 VF 运行 DPD
  • 您可以以非 root 用户身份在非特权容器中运行 DPDK 吗?

    我正在尝试在非特权 Docker 容器中运行 DPDK 虽然我可以限制容器的权限并将容器指定为非特权容器 但我仍然需要以 root 身份运行 dpdk 应用程序 例如 testpmd 我还可以以非 root 身份运行容器并使用 sudo 启
  • ubuntu 18.04 中 dpdk 和 ovs 上的 testpmd 出现问题

    我有一个 X520 SR2 10G 网卡 我将用它来创建 2 个使用 dpdk 编译的 OpenvSwitch 虚拟接口 从 ubuntu 18 04 的存储库安装 并使用 testpmd 测试这个虚拟接口 我做了以下工作 创建桥梁 ovs
  • 如何通过 Pktgen-DPDK 生成随机流量?

    I use range

随机推荐