问题标签 [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.

0 投票
2 回答
3274 浏览

linux - 在虚拟化环境中使用 DPDK 内核 NIC 接口

我打算在笔记本电脑上开发一个DPDK Linux 应用程序,但是 DPDK 不支持笔记本电脑的硬件。幸运的是,DPDK支持半虚拟化设备,包括QEMUvirtio-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应用程序?

0 投票
1 回答
1299 浏览

c - 具有高日志级别的 dpdk mbuf 和 mempool 消息

是否有任何线索,如何在 DPDK 中启用所有 mempool、mbuf 调试。我正在使用 DPDK 2.2.0。,我找到了一些对这个版本没有多大帮助的答案。

0 投票
2 回答
646 浏览

dpdk - DPDK - 数据包修改

我一直在尝试从 rx 队列接收数据包,修改它们并将它们发送到 tx 队列。目前我被困在数据包修改中。

我的观察和问题:

1)

我发现有一些函数可以操作 mbufs,其中包含 pkt 数据:

添加数据:

删除数据:

这些功能可以用来修改数据包数据,意思是改变大小吗?

2)

包数据的大小会自动更新吗?

非常感谢

0 投票
1 回答
646 浏览

c - 从 Rust FFI 访问 DPDK 中的静态 C 函数

我是一个相当新手的程序员,我遇到了一个我认为我理解但不知道如何解决的问题。我正在尝试使用 Rust FFI 与英特尔的 DPDK进行交互,这一切都在 C 中。我的第一次尝试是重新创建 helloworld 示例应用程序。

我遇到了一个编译错误,我认为这是由于 DPDK 中的函数是静态的,不能直接从库中获得。我的 FFI 接口在这里:

我还有一个引用它并包装函数的库:

还有一个用于链接库的 build.rs 文件 -

当我尝试针对 FFI 接口编译我自己的应用程序时,我不断收到有关未定义引用rte_lcore_idrte_get_next_lcore. 根据 DPDK 的 API 文档,这些函数是 librte_eal 库的一部分,但在 rte_lcore.h 中定义为静态函数。我假设这些是静态函数,我将无法从 Rust 中看到它们。

在与 DPDK 捆绑的 helloworld 示例应用程序中,它们直接导入 rte_lcore.h。我认为这就是为什么他们可以访问这些函数而无需仅引用 librte_eal?

是否有一种方法可以在 Rust 中访问它,或者在 C 中是否必须有类似 shim 的东西让我包装这些函数并通过 FFI 使它们可用?

0 投票
1 回答
888 浏览

nic - DPDK 是否需要超过 1 个 NIC?

我对 DPDK 完全陌生,并且有一些我自己无法弄清楚的奇怪问题。

  1. DPDK 在我的物理设备上是否需要 1 个以上的 NIC?我看到一些示例(l2fwd,l3fwd)需要 2 个 NIC,一个用于接收数据包,另一个用于传输数据包。
  2. 由于 DPDK 控制了 NIC,如果我将唯一的 NIC 绑定到 DPDK,我是否仍然可以正常访问 Internet?我的意思是做一些普通的事情,比如用 Firefox 上网。
  3. 绑定网卡后,只有DPDK应用可以访问这些网卡,还是有什么普通应用可以访问的方法?

这些天来,我一直对这些问题感到困惑。请净化我的心灵。

提前致谢 :)

0 投票
1 回答
1401 浏览

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?
0 投票
0 回答
914 浏览

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)是否给出错误信息?

0 投票
3 回答
1899 浏览

linux - 无法使用 Linux perf,因为您的 Linux 内核不支持 PERF_COUNT_HW_REF_CPU_CYCLES 事件

我只想了解有关虚拟环境的 linux“性能”的信息。我试图让 perf stat -e 循环“我的进程”,所以当我在我的虚拟机(在 Vmware5.1 之上运行)上运行这个命令时,我得到了这样的消息。

/不支持>循环

我可以理解 VMware 虚拟机管理程序可能存在权限问题或配置错误,有人可以指出这些吗?另外,我已经阅读了内核标志“PERF_COUNT_HW_REF_CPU_CYCLES”,我应该如何检查我的内核是否启用了这个标志?有什么命令吗?

0 投票
1 回答
825 浏览

compiler-errors - 无法在archlinux上编译dpdk

我正在尝试编译dpdk 16.04-14.6.2-1-ARCH以下输出用于尝试安装 AUR 包,但按照 dpdk 的快速入门指南从源代码编译自己给了我完全相同的错误。我收到以下错误:

0 投票
1 回答
2540 浏览

packets - DPDK - rte_mbuf 有效载荷/数据初始化或更新/修改

我试图了解 DPDK 的 basicfwd 示例的转发机制。任何人都可以帮助我初始化和编辑有效载荷rte_mbuf吗?是课程。我计划使用tcpdumprte_pktmbuf_dump查看数据包内容。

这是rte_mbuf我希望将自己的有效负载添加到:

这是rte_mbuf收到的:

这是rte_mbuf正在传输的:

我修改了 DPDK 示例中的示例应用程序basicfwd.c以在文件中打印转发的数据包:

这些是我在输出文件中看到的数据包: 循环前三个迭代的转储 我希望能够修改内容以便更好地理解。我已经尝试过rte_pktmbuf_initbufs->userdata =*(unsigned short*) 0xAAAAAAAA但它对我不起作用。