问题标签 [dpdk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - DPDK发送自定义pkt收不到
我正在尝试使用 dpdk 发送自定义包,但我发现某些包结构会使其无法接收。例如,我这样定义包结构:
我运行 dpdk 的服务器只能接收第一批 pkts,但是 rte_eth_tx_burst() 的返回值显示了更多已发送的包。
但是,如果我修改结构如下:
发送和接收都正常工作。两个结构之间的唯一区别是 uint64_t 时间戳被替换为由 2 个项目组成的 uint32_t 数组。我调试到 i40e 驱动程序代码,但不明白哪里出错了。
有谁能够帮我?谢谢!
linux - 在 Linux 系统上保留大页面
我的 VMWare 来宾系统详细信息:
我的应用程序在启动时需要尽可能多地抓取大页面,但 HugePages_Free 等于 HugePages_Rsvd 的事实意味着它无法保留任何内容。
这是什么原因,如果有的话,如何禁用其他应用程序对大页面的保留?
谢谢
nic - 在什么情况下 NIC 会报告 rx_length_error?
我用dpdk做包传输实验。但是,接收方应用程序根本没有收到任何数据包。从 rte_eth_stats_get() 得到的统计数据显示,所有端口都报告了很多“rx_error”。调试后我发现所有这些错误都是名为“rx_length_error”的错误。谷歌的解释说,如果 MAC 标头中的传入数据包长度字段与数据包长度不匹配,则会发生长度错误。但是,据我所知,MAC 标头中没有长度字段。
所以我的问题是 NIC 如何在没有长度字段的情况下报告这个长度错误?
谢谢您的帮助!
dpdk - dpdk-pdump “没有找到 net_pcap_rx_0 的驱动程序”
Ubuntu 16,DPDK 16
我有几个基于 DPDK 的应用程序在两台机器之间发送数据包,并希望使用dpdk-pdump
. 我正在运行它sudo ./build/app/pdump/dpdk-pdump -c 0x00f -- --pdump 'port=0,queue=*,rx-dev=/tmp/rx.pcap'
,我看到了这个输出和一个崩溃:
EAL: no driver found for eth_pcap_rx_0
EAL: Driver, cannot attach the device
EAL: Error - exiting with code: 1
Cause: vdev creation failed:create_mp_ring_vdev:736
我的 DPDK 是这样编译的:(之前hostname:~/dpdk-stable-16.07.1/x86_64-native-linuxapp-gcc# CONFIG_RTE_LIBRTE_PMD_PCAP=y make
也这样做过export CONFIG_RTE_LIBRTE_PMD_PCAP=y
)以便它在 libpcap 支持下构建,正如文档所说的那样。我的系统安装了 libpcap。make 脚本输出显示== Build lib/librte_pdump
. 在网上四处寻找,我只发现一个人有类似的问题,建议的解决方法是我尝试过的。我还有其他事情要做吗?
我尝试安装DPDK Ubuntu 软件包版本的工具并使用dpdk-pdump
命令,结果相同。
centos - VM 中的 Hugepagesize 不会增加到 1G
我在 ESXi Server 中使用 CentOS VM。我想将巨大的页面大小增加到 1G。
我点击了链接: http ://dpdk-guide.gitlab.io/dpdk-guide/setup/hugepages.html
我执行了这个小脚本来检查是否支持 1 GB 的大小:
- 我添加
default_hugepagesz=1GB hugepagesz=1G hugepages=4
到 /etc/default/grub. grub2-mkconfig -o /boot/grub2/grub.cfg
- 重新启动虚拟机。
但是我仍然可以看到巨大的页面大小为 2048 KB (2MB)。
以下是VM的详细信息:
8GB 内存和 2 个 CPU 分配给 VM。
networking - 基于 DPDK 的流量生成器 Warp17
试图让warp17工作。我按照文档进行构建和安装,但是我无法生成流量——看起来它根本没有发送任何东西,计数器为 0。
我的网卡是 Intel 82599ES 10-Gigabit,dpdk-16.11 很好支持。
如果比我更成功的人可以分享他/她的经验,我会很高兴。谢谢。
c - 如何将基于 DPDK 的应用程序移植到 Netmap?
我有一个基于 linux 系统的基于 DPDK 的网络应用程序。我想将它移植到 netmap 以克服我使用基于 Intel 的 NIC 的限制。在我基于 DPDK 的应用程序中,我使用了 DPDK 提供的一些库(如 rte_ring、rte_mempool、rte_hash 等)。有什么办法我仍然可以使用它们,还是必须用非 DPDK 库替换它们。将应用程序移植到 Netmap 的最快和最好的方法是什么?
deep-copy - DPDK mbuf 深拷贝
我对 DPDK 很陌生。
我有一个需要多次复制的数据包,这意味着我想深度复制mbuf
我找到的唯一 mbuf api 命令:
deep-copy
仅仅指向相同的数据有效负载似乎并没有。我的问题是我怎样才能正确地deep copy
mbuf
linux - Docker容器与其他机器之间的连接问题
我正在使用 open vSwitch(带有 DPDK)来与我的机器通信。我有 2 台物理 PC。Nginx 正在研究其中之一,其 ip=10.10.10.6/24。打开 vSwitch,Docker 正在另一台机器上工作。我通过这个命令创建了一个桥:
我通过这个命令将一个端口添加到物理端口,该命令使用 DPDK 驱动程序并通过电缆连接到 Ngnix 机器:
并为 br0 分配一个 IP:
在此之后,我使用我的图像创建了一个容器:
Dockerfile:
并使用以下命令运行容器:
在此之后,我使用以下命令为容器分配一个端口:
在所有这些步骤之后,我的 nginx 机器 ping 容器和容器 ping nginx。
但是当我尝试时wget 10.10.10.6:80
,容器无法连接。但另一方面,我的物理机(ip:10.10.10.11)可以。当我运行相同的命令 (wget) 时,它会从 10.10.10.6:80 获取页面。
我究竟做错了什么?
c - 如何在 DPDK 代码中解释这个 C 代码
我是 DPDK 的新手,所以在阅读代码时我会有些疑问。kni_misc.c 中 DPDK 中的代码如下
...
...
switch之后,定义一个宏RTE_PCI_DEV_ID_DECL_IGB(怎么用?)case之后,包括rte_pci_dev_ids.h,我也在h文件中找到了这个宏。
**
switch 和 case 之间的一个不完整的宏定义,以及在 case 后面包含的 h 文件中找到的宏。我不明白。
**
谁能帮我理解这段代码。
这段代码的语法?编译过程?工作过程?</p>
谢谢。