网卡的 TX/RX 缓冲区中的数据如何传输到 dpdk 环形缓冲区而不是内核环形缓冲区

How is the data in TX/RX buffer of NIC is transferred to dpdk ring buffer rather than kernel ring buffer?

本文关键字:缓冲区 dpdk 内核 传输 RX TX 数据 网卡 何传输      更新时间:2023-10-16

我想知道dpdk是如何绕过内核的。用户空间应用程序如何访问 NIC 空间。dpdk 使用什么工具来访问网卡?我知道,dpdk 使用 uio_pci_generic 或 igb_uio 或 vfio-pci 驱动程序。它如何连接到 NIC 空间。轮询模式驱动程序如何知道在哪里轮询?

我知道网卡的 RX 被重定向到 dpdk 环形缓冲区而不是内核环形缓冲区。

DPDK 使用 uio_pci_generic 或 igb_uio 或 VFIO-PCI

这正是 DPDK 连接到 NIC 的方式 - 通过将兼容 DPDK 的驱动程序绑定到 NIC PCI 地址(在大多数情况下,例如使用 Mellanox,使用 RDMA(。好吧,实际上,您必须绑定驱动程序。

然后,正如您所说,DPDK 将 NIC 缓冲区映射到用户空间内存(大页(,并通过 PCI 与 NIC 接口,直接"对话"到寄存器。

如果你想更深入地了解架构,我认为这些幻灯片做得很好。