无法在 DPDK 示例应用程序中传输数据包
Can't transmit packets in DPDK sample application
我已经在 Ubuntu 16.04.2 系统上安装了 DPDK 17.08.01。我遵循了涉及 HugePages 设置的指南。我已经设置了 2048 个 HugePages(每个 NUMA 核心 1024 个页面),每个页面为 2048 kB。这可以用命令 cat /proc/meminfo
显示:
HugePages_Total: 2048
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
我认为 HugePages_Free
是 0
因为我已经在 DPDK 上启动了 运行 应用程序。据我所知,他们尝试分配 HugePages
没有问题。
我还附上了我的两个接口所需的相应驱动程序这是usertools/dpdk-devbind.py --status
的输出:
Network devices using DPDK-compatible driver
============================================
0000:01:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=uio_pci_generic
0000:01:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=uio_pci_generic
Network devices using kernel driver
===================================
0000:84:00.0 '82580 Gigabit Network Connection 150e' if=ens2f0 drv=igb unused=igb_uio,uio_pci_generic *Active*
0000:84:00.1 '82580 Gigabit Network Connection 150e' if=ens2f1 drv=igb unused=igb_uio,uio_pci_generic
0000:84:00.2 '82580 Gigabit Network Connection 150e' if=ens2f2 drv=igb unused=igb_uio,uio_pci_generic
0000:84:00.3 '82580 Gigabit Network Connection 150e' if=ens2f3 drv=igb unused=igb_uio,uio_pci_generic
我正在尝试简单的 basicfwd
示例应用程序,它只是从一个端口转发到另一个端口。但是,当我输入调试语句时,我只看到每个端口有两个循环,之后应用程序挂起。我假设转发和诸如此类的东西应该继续下去,直到用户停止它。每个端口收到两个数据包,但不幸的是什么都没有传输。
我知道这个问题有点模糊,并且与 DPDK
设置有关,但是对于用于调试的命令的任何其他帮助,我应该检查的东西,我将不胜感激,因为我是一个初学者DPDK
。我没能在网上找到任何好的诊断技巧。
basicfwd
示例未提供任何统计信息,因此它看起来像是挂起,但实际上它可能运行良好。
选项很少:
可以 运行 应用程序 gdb --args ./basicfwd
并确认它接收帧、发送帧或挂起。
尝试另一个示例应用程序,例如 l2fwd
,它提供一些统计信息。
还请包括日志、调试信息等信息。
我已经在 Ubuntu 16.04.2 系统上安装了 DPDK 17.08.01。我遵循了涉及 HugePages 设置的指南。我已经设置了 2048 个 HugePages(每个 NUMA 核心 1024 个页面),每个页面为 2048 kB。这可以用命令 cat /proc/meminfo
显示:
HugePages_Total: 2048
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
我认为 HugePages_Free
是 0
因为我已经在 DPDK 上启动了 运行 应用程序。据我所知,他们尝试分配 HugePages
没有问题。
我还附上了我的两个接口所需的相应驱动程序这是usertools/dpdk-devbind.py --status
的输出:
Network devices using DPDK-compatible driver
============================================
0000:01:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=uio_pci_generic
0000:01:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=uio_pci_generic
Network devices using kernel driver
===================================
0000:84:00.0 '82580 Gigabit Network Connection 150e' if=ens2f0 drv=igb unused=igb_uio,uio_pci_generic *Active*
0000:84:00.1 '82580 Gigabit Network Connection 150e' if=ens2f1 drv=igb unused=igb_uio,uio_pci_generic
0000:84:00.2 '82580 Gigabit Network Connection 150e' if=ens2f2 drv=igb unused=igb_uio,uio_pci_generic
0000:84:00.3 '82580 Gigabit Network Connection 150e' if=ens2f3 drv=igb unused=igb_uio,uio_pci_generic
我正在尝试简单的 basicfwd
示例应用程序,它只是从一个端口转发到另一个端口。但是,当我输入调试语句时,我只看到每个端口有两个循环,之后应用程序挂起。我假设转发和诸如此类的东西应该继续下去,直到用户停止它。每个端口收到两个数据包,但不幸的是什么都没有传输。
我知道这个问题有点模糊,并且与 DPDK
设置有关,但是对于用于调试的命令的任何其他帮助,我应该检查的东西,我将不胜感激,因为我是一个初学者DPDK
。我没能在网上找到任何好的诊断技巧。
basicfwd
示例未提供任何统计信息,因此它看起来像是挂起,但实际上它可能运行良好。
选项很少:
可以 运行 应用程序
gdb --args ./basicfwd
并确认它接收帧、发送帧或挂起。尝试另一个示例应用程序,例如
l2fwd
,它提供一些统计信息。
还请包括日志、调试信息等信息。