DPDK将设备的IO映射到用户空间,例如设备的控制寄存器等。如果用户是恶意的,DPDK如何保证设备的安全?DPDK如何将用户与设备隔离?
在这种情况下DPDK如何保证设备的安全?[答]没有。DPDK像任何库一样需要访问设备的io实例来配置和接收来自设备(NIC或加密)的x-tx或dequeue-enqueue数据包
它具有UIO_library从用户空间访问的所有优点和缺点。请参阅
- 异步I/O
- 用户空间的I/O
DPDK如何将用户与设备隔离?[答案]实现相同的功能之一是使用SRIOV VF或自适应VF。其中PF(内核签名驱动程序)维护核心设备(NIC或Crypto)。所有配置请求都是从用户空间通过VF通过每个VF分配的邮箱发送的。硬件或PF驱动程序验证每个请求并返回每个请求的成功或失败。
在NIC TX的情况下,任何恶意数据包描述符都可以被注入(它将通过邮箱)路径。但是由于它运行在一个特定的队列上(VF专用队列),恶意数据包只会使分配给它的VF设备瘫痪。
建议是
- 在bios中启用SRIOV
- 使用
iommu=pt
, Intel使用intel_iommu=on
。 - 不使用驱动程序noiommu
- 创建VF或IAVF
- 为应用程序分配VF设备(网卡或加密)。