dpdk - dpdk 接口上的 pktgen 流量活动
问题描述
我有两台物理机(主机 1 和主机 2),每台都有两个 DPDK 配置的 10G Intel NIC(端口 0 和端口 1)。两台机器的端口0和端口1直接相连。在主机 2 上,l3fwd 正在运行以启用 dpdk NIC 之间的流量转发。在主机 1 上,pktgen 作为数据包生成器运行。
当我启动 pktgen 时,两个端口都开始接收流量(见附件),我无法弄清楚从哪里来。即使在通过“停止”或更改 Mac 地址和 IP 地址后,它也会继续发生。
解决方案
如果默认启用 LLDP 协议(Intel X710),一旦 DPDK 应用程序启动,您将收到发现数据包。我相信这就是您在 pkt-gen 上看到的虚假数据包。
我修改了主 DPDK 应用程序以调用 rte_pdump_init 并在另一个控制台中运行 dpdk-pdump 实用程序。
# tcpdump -r /tmp/rx.pcap
reading from file /tmp/rx.pcap, link-type EN10MB (Ethernet)
18:40:29.405996 LLDP, length 69
18:40:30.402803 LLDP, length 69
18:40:31.399615 LLDP, length 69
18:40:32.396427 LLDP, length 69
DPDK Pktgen 还允许在运行时从所需端口或多个端口捕获数据包。为了达到同样的目的,请遵循以下步骤
- 以交互模式启动 Pktgen 工具
- 启用捕获选项执行 enable [portlist] capture
- 接口上接收到的所有数据包都将被捕获,并带有唯一的文件名(附加端口号)
- 要禁用/停止捕获,请执行 disable [portlist] capture
使用上述任何一种方法,我们都可以捕获进来的默认数据包,在我的 X710 系统中,它是从其他设备发送的 LLDP 数据包。我们可以通过以下方式禁用 LLDP 数据包ethtool -set-priv-flags <interface name> disable-fw-lldp on
推荐阅读
- java - 使用模块时从资源加载文件
- python - 我可以使用 windows 7 的 python windows 图像创建 dockerfile 吗?
- database - 如何使用 vb.net 更新 MSAccess 数据库
- mysql - Opengts docker image - mysql 通信链接失败
- c# - 将文本文件加载回列表
- excel - 我的 For 循环不会删除与嵌套 If 要求匹配的单元格
- graph-databases - 如何编写 Gremlin 查询以查找具有指定边的父顶点?
- asp.net - 根据查询结果填充一个TextBox,并在DetailsView插入前绑定
- heroku - '--name' CLI 选项指的是什么名称?
- reactjs - 如何指定端口以在 Azure Web 应用程序中运行多个 ReactJS 应用程序?