DPDK 如何将不可信任的用户与设备隔离开来?

How does DPDK isolate the untrustworthy user from a device?

DPDK将设备的IO映射到用户空间,比如设备的控制寄存器等,如果用户是恶意的,那么DPDK如何保证设备在这种情况下的安全性呢? DPDK如何将用户与设备隔离?

这种情况下DPDK是如何保证设备安全的? [答]有none个。与任何库一样,DPDK 需要访问设备的 UIO 实例以配置和从设备(NIC 或加密)接收-发送或出队-入队数据包

它具有 UIO_library 从用户空间访问的所有优点和缺点。参考

  1. async I/O
  2. userspace I/O

DPDK如何将用户与设备隔离? [Answer] 实现相同功能的功能之一是使用 SRIOV VF 或 Adaptive VF。 PF(内核签名驱动程序)维护核心设备(NIC 或 Crypto)。所有配置请求都通过 VF 通过每个 VF 分配的邮箱从用户空间发送。硬件或 PF 驱动程序验证每个请求并针对每个请求发回成功或失败。

在NIC TX 的情况下,任何恶意数据包描述符都可以注入(它将通过邮箱)路径。但是由于它 运行 在特定队列(VF 的专用队列)上,恶意数据包只会破坏分配给它的 VF 设备。

建议是

  1. 在 bios 中启用 SRIOV
  2. 使用 iommu=pt,如果是英特尔,则使用 intel_iommu=on
  3. 不要使用驱动程序noiommu。
  4. 创建 VF 或 IAVF
  5. 将 VF 设备(NIC 或加密)分配给应用程序。