首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行后挂起的dpdk testpmd命令

执行后挂起的dpdk testpmd命令
EN

Stack Overflow用户
提问于 2022-12-01 11:09:01
回答 1查看 43关注 0票数 0

我准备好了与dpdk兼容的环境,然后尝试使用dpdk发送数据包,并希望看到它在另一个服务器中被接收。我正在使用非IOMMU(不安全)模式下的vfio驱动程序.我跑了

代码语言:javascript
复制
$./dpdk-testpmd -l 11-15 -- -i

它的输出就像

代码语言:javascript
复制
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_i40e (8086:1572) device: 0000:01:00.1 (socket 0)
TELEMETRY: No legacy callbacks, legacy socket not created
Interactive-mode selected
testpmd: create a new mbuf pool <mb_pool_1>: n=179456, size=2176, socket=1
testpmd: preferred mempool ops selected: ring_mp_mc
testpmd: create a new mbuf pool <mb_pool_0>: n=179456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc

Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.

Configuring Port 0 (socket 0)
Port 0: E4:43:4B:4E:82:00
Checking link statuses...
Done

然后

代码语言:javascript
复制
$set nbcore 4
Number of forwarding cores set to 4
testpmd> show config fwd
txonly packet forwarding - ports=1 - cores=1 - streams=1 - NUMA support enabled, MP allocation mode: native
Logical Core 12 (socket 0) forwards packets on 1 streams:
  RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=BE:A6:27:C7:09:B4

我的nbcore没有被正确设置,甚至在我设置eth对等地址之前也没有设置'txonly‘模式。但有些参数起作用了。此外,如果我不改变突发延迟,我的服务器一开始通过它传输就会崩溃,它有10G以太网端口(通过计算,可用带宽为80 80MBps)。因此,我没有通过在相应的接收接口上跟踪tcpdump在接收服务器上看到数据包。这里发生了什么,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-03 06:19:59

根据评论中的问题和答案,真正的意图是send packets from DPDK testpmd using Intel Fortville (net_i40e) to the remote server未生成通信量的真正问题不是应用程序命令行,也不是交互式选项,而是通过dpdk-testpmd.创建数据包。

为了生成数据包,testpmd中有两个选项。

  1. 启动tx_first:这将在端口启动后发送32个数据包的默认突发。
  2. 只使用前向模式tx:这将端口置于dpdk-testpmd的传输模式下.端口启动后,它将发送具有默认数据包大小的数据包。

这两个选项都没有被利用,因此我的建议是

  1. 请在关于testpmd的DPDK文档及其配置上散散步
  2. 使用--tx-first或按DPDK Testpmd命令行选项使用--forward-mode=txonly
  3. 在交互模式下使用start txfirstset fwd txonly or set fwd flwogen参考Testpmd运行时函数

使用此方法,将从testpmd生成通信量并发送到设备(远程服务器)。同样的一个快速示例是"dpdk-testpmd -file-前缀=test1 1 -a81:00.0 -l 7,8 -socket-mem=1024-burst=128-txd=8192-mbcache=8192-mbcache=512-nb-rxq=1-nb-核=2 -a --l模式=io-rss-udp-启用-rx-rss无mlockall-不-lsc-中断-启用-下拉-en-rmv中断-i“。

从上面的示例配置参数中

  • rx-tx突发的数据包数由--burst=128设置。
  • --rxq=1 --txq=1配置rx-tx队列的数量。
  • 要用于rx-tx的核数由--nb-cores=2设置。
  • 要设置flowgen、txonly、rxonly或io模式,我们使用--forward-mode=io

因此,在注释中提到了neither set nbcore 4 or there are any configurations in testpmd args or interactive which shows the application is set for TX only

查询的第二部分非常混乱,因为它声明

此外,如果我不改变突发延迟,我的服务器一开始通过它传输就会崩溃,它有10G以太网端口(通过计算,可用带宽为80 80MBps)。因此,我没有通过在相应的接收接口上跟踪tcpdump在接收服务器上看到数据包。这里发生了什么,我做错了什么?

假设my server是由dpdk向其发送数据包的远程服务器。因为提到了I see packets with tcpdump (因为Intel fortville在绑定UIO驱动程序时会删除内核netlink接口)。

提到80 80MBps,大约是0.08Gbps,真是奇怪。如果将远程接口设置为混杂模式,并且配置了AF_XDP应用程序或原始套接字应用程序以以线路速率(10 10Gbps)接收通信量,则可以工作。由于没有远程服务器的日志或崩溃转储,而且从testpmd生成的实际通信量非常不可能,这看起来更像是远程服务器中的配置或设置问题。

基于实时调试的编辑-1,将得到确认。

  1. 使用ninja isntall未安装DPDK。
  2. DPDK端口eno2 -不直接连接到远程服务器。
  3. dpdk网卡端口eno2通过交换机连接。
  4. DPDk应用程序testpmd没有崩溃-使用pgrep testpmd确认。
  5. 相反,当与set fwd txonly一起使用时,数据包淹没交换机,丢弃来自其他端口的SSH数据包。

解决方案:请使用另一个交换机进行数据路径测试,或使用与远程服务器的直接连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74640903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档