问题标签 [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.
linux - 在虚拟化环境中使用 DPDK 内核 NIC 接口
我打算在笔记本电脑上开发一个DPDK Linux 应用程序,但是 DPDK 不支持笔记本电脑的硬件。幸运的是,DPDK支持半虚拟化设备,包括QEMU的virtio-net
.
所以我正在尝试配置一个 QEMU 来宾以在设备上运行内核 NIC 接口(KNI)virtio-net-pci
。问题是 KNI 示例应用程序不接受virtio-net-pci
驱动程序。
QEMU 命令
在来宾中运行 KNI 示例应用程序
lspci
来宾中的命令输出
我注意到pci_scan_one()
功能设置dev->kdrv = RTE_KDRV_NONE
,而驱动程序被检测为virtio-pci
(来自/sys/bus/pci/devices/0000:00:03.0/driver
)。
TAP 网络
TAP 网络仍然存在相同的问题。在主机上,我从 Wi-Fi 接口配置了一个网桥,并将其连接到 TAP 接口:
QEMU 命令:
ifconfig
来宾中的输出:
以下命令的失败方式与上述“用户”网络的情况相同:
问题
甚至可以使用设备运行KNI吗?virtio-net-pci
如果不可能,是否有其他选择可以在虚拟化环境中开发DPDK KNI应用程序?
c - 具有高日志级别的 dpdk mbuf 和 mempool 消息
是否有任何线索,如何在 DPDK 中启用所有 mempool、mbuf 调试。我正在使用 DPDK 2.2.0。,我找到了一些对这个版本没有多大帮助的答案。
dpdk - DPDK - 数据包修改
我一直在尝试从 rx 队列接收数据包,修改它们并将它们发送到 tx 队列。目前我被困在数据包修改中。
我的观察和问题:
1)
我发现有一些函数可以操作 mbufs,其中包含 pkt 数据:
添加数据:
删除数据:
这些功能可以用来修改数据包数据,意思是改变大小吗?
2)
包数据的大小会自动更新吗?
非常感谢
c - 从 Rust FFI 访问 DPDK 中的静态 C 函数
我是一个相当新手的程序员,我遇到了一个我认为我理解但不知道如何解决的问题。我正在尝试使用 Rust FFI 与英特尔的 DPDK进行交互,这一切都在 C 中。我的第一次尝试是重新创建 helloworld 示例应用程序。
我遇到了一个编译错误,我认为这是由于 DPDK 中的函数是静态的,不能直接从库中获得。我的 FFI 接口在这里:
我还有一个引用它并包装函数的库:
还有一个用于链接库的 build.rs 文件 -
当我尝试针对 FFI 接口编译我自己的应用程序时,我不断收到有关未定义引用rte_lcore_id
和rte_get_next_lcore
. 根据 DPDK 的 API 文档,这些函数是 librte_eal 库的一部分,但在 rte_lcore.h 中定义为静态函数。我假设这些是静态函数,我将无法从 Rust 中看到它们。
在与 DPDK 捆绑的 helloworld 示例应用程序中,它们直接导入 rte_lcore.h。我认为这就是为什么他们可以访问这些函数而无需仅引用 librte_eal?
是否有一种方法可以在 Rust 中访问它,或者在 C 中是否必须有类似 shim 的东西让我包装这些函数并通过 FFI 使它们可用?
nic - DPDK 是否需要超过 1 个 NIC?
我对 DPDK 完全陌生,并且有一些我自己无法弄清楚的奇怪问题。
- DPDK 在我的物理设备上是否需要 1 个以上的 NIC?我看到一些示例(l2fwd,l3fwd)需要 2 个 NIC,一个用于接收数据包,另一个用于传输数据包。
- 由于 DPDK 控制了 NIC,如果我将唯一的 NIC 绑定到 DPDK,我是否仍然可以正常访问 Internet?我的意思是做一些普通的事情,比如用 Firefox 上网。
- 绑定网卡后,只有DPDK应用可以访问这些网卡,还是有什么普通应用可以访问的方法?
这些天来,我一直对这些问题感到困惑。请净化我的心灵。
提前致谢 :)
tcp - How to direct packets belonging to a TCP connection to a specific lcore in DPDK?
We want a specific lcore to receive packets belonging to the both sides of a TCP connection. I.e. packets going from client to Server (CtoS) and those which going from Server to Client (StoC), both be directed to a single lcore. It seems that the RSS guarantees the packets belonging to a stream (one way data flow) to be directed to the same lcore. To direct both side of a direction to the same lcore we need a symmetric RSS.
- How we can configure a NIC (e.g. Intel 82599) to direct packets belonging to connection to a specific lcore?
- Is there any way to direct packets belonging to a connection to a specific lcore when the CtoS traffic and StoC traffic are on different ports on the same NIC?
- How about different ports on different NICs?
linux - 为什么我读 glibc 版本 >= 2.7 而当前 glibc 的稳定版本是 2.23
我正在阅读Linux 入门指南 (Release 16.04.0)的第 2.3.1 章,我刚刚看到:
必需的:
glibc >= 2.7(用于与 cpuset 相关的功能)
可以使用 ldd --version 命令检查版本。
当我跑步时,ldd --version
我得到了
ldd (Ubuntu EGLIBC 2.19-0ubuntu6.9) 2.19
版权所有 (C) 2014 Free Software Foundation, Inc.
这是免费软件;查看复制条件的来源。没有保修;甚至不考虑适销性或特定用途的适用性。
由 Roland McGrath 和 Ulrich Drepper 撰写。
这是否意味着我的 glibc 版本是 2.19?
我尝试了一些方法来升级版本,但没有任何新东西。
实际上,在The GNU Library上,我注意到
最新消息
2016-02-19:glibc 2.23 发布。
那么我怎样才能获得2.7的版本呢?Linux 入门指南(版本 16.04.0)是否给出错误信息?
linux - 无法使用 Linux perf,因为您的 Linux 内核不支持 PERF_COUNT_HW_REF_CPU_CYCLES 事件
我只想了解有关虚拟环境的 linux“性能”的信息。我试图让 perf stat -e 循环“我的进程”,所以当我在我的虚拟机(在 Vmware5.1 之上运行)上运行这个命令时,我得到了这样的消息。
/不支持>循环
我可以理解 VMware 虚拟机管理程序可能存在权限问题或配置错误,有人可以指出这些吗?另外,我已经阅读了内核标志“PERF_COUNT_HW_REF_CPU_CYCLES”,我应该如何检查我的内核是否启用了这个标志?有什么命令吗?
compiler-errors - 无法在archlinux上编译dpdk
我正在尝试编译dpdk 16.04-1
。4.6.2-1-ARCH
以下输出用于尝试安装 AUR 包,但按照 dpdk 的快速入门指南从源代码编译自己给了我完全相同的错误。我收到以下错误:
packets - DPDK - rte_mbuf 有效载荷/数据初始化或更新/修改
我试图了解 DPDK 的 basicfwd 示例的转发机制。任何人都可以帮助我初始化和编辑有效载荷rte_mbuf
吗?这是课程。我计划使用tcpdump
并rte_pktmbuf_dump
查看数据包内容。
这是rte_mbuf
我希望将自己的有效负载添加到:
这是rte_mbuf
收到的:
这是rte_mbuf
正在传输的:
我修改了 DPDK 示例中的示例应用程序basicfwd.c以在文件中打印转发的数据包:
这些是我在输出文件中看到的数据包:
我希望能够修改内容以便更好地理解。我已经尝试过rte_pktmbuf_init
,bufs->userdata =*(unsigned short*) 0xAAAAAAAA
但它对我不起作用。