DPDK 如何将不可信任的用户与设备隔离开来?
How does DPDK isolate the untrustworthy user from a device?
DPDK将设备的IO映射到用户空间,比如设备的控制寄存器等,如果用户是恶意的,那么DPDK如何保证设备在这种情况下的安全性呢? DPDK如何将用户与设备隔离?
这种情况下DPDK是如何保证设备安全的?
[答]有none个。与任何库一样,DPDK 需要访问设备的 UIO 实例以配置和从设备(NIC 或加密)接收-发送或出队-入队数据包
它具有 UIO_library 从用户空间访问的所有优点和缺点。参考
DPDK如何将用户与设备隔离?
[Answer] 实现相同功能的功能之一是使用 SRIOV VF 或 Adaptive VF。 PF(内核签名驱动程序)维护核心设备(NIC 或 Crypto)。所有配置请求都通过 VF 通过每个 VF 分配的邮箱从用户空间发送。硬件或 PF 驱动程序验证每个请求并针对每个请求发回成功或失败。
在NIC TX 的情况下,任何恶意数据包描述符都可以注入(它将通过邮箱)路径。但是由于它 运行 在特定队列(VF 的专用队列)上,恶意数据包只会破坏分配给它的 VF 设备。
建议是
- 在 bios 中启用 SRIOV
- 使用
iommu=pt
,如果是英特尔,则使用 intel_iommu=on
。
- 不要使用驱动程序noiommu。
- 创建 VF 或 IAVF
- 将 VF 设备(NIC 或加密)分配给应用程序。
DPDK将设备的IO映射到用户空间,比如设备的控制寄存器等,如果用户是恶意的,那么DPDK如何保证设备在这种情况下的安全性呢? DPDK如何将用户与设备隔离?
这种情况下DPDK是如何保证设备安全的? [答]有none个。与任何库一样,DPDK 需要访问设备的 UIO 实例以配置和从设备(NIC 或加密)接收-发送或出队-入队数据包
它具有 UIO_library 从用户空间访问的所有优点和缺点。参考
DPDK如何将用户与设备隔离? [Answer] 实现相同功能的功能之一是使用 SRIOV VF 或 Adaptive VF。 PF(内核签名驱动程序)维护核心设备(NIC 或 Crypto)。所有配置请求都通过 VF 通过每个 VF 分配的邮箱从用户空间发送。硬件或 PF 驱动程序验证每个请求并针对每个请求发回成功或失败。
在NIC TX 的情况下,任何恶意数据包描述符都可以注入(它将通过邮箱)路径。但是由于它 运行 在特定队列(VF 的专用队列)上,恶意数据包只会破坏分配给它的 VF 设备。
建议是
- 在 bios 中启用 SRIOV
- 使用
iommu=pt
,如果是英特尔,则使用intel_iommu=on
。 - 不要使用驱动程序noiommu。
- 创建 VF 或 IAVF
- 将 VF 设备(NIC 或加密)分配给应用程序。