vDPA
vDPA 是 RedHat 提出来的,注意不是字节提出的哦。
要理解 vDPA,首先要明白的是什么是 VirtIO 的控制面,什么是数据面(datapath)^。
VirtIO 作为一种半虚拟化的解决方案,其性能一直不如设备的 pass-through。vDPA 是 VirtIO 控制面软件模拟,数据面硬件实现,控制面复杂用硬件实现难,数据面简单用硬件实现容易,厂商自己实现自己的驱动,数据是用 DMA mapping 直接从虚拟机内存到物理硬件上。
A vDPA device means a type of device whose datapath complies with the VirtIO specification, but whose control path is vendor specific. vDPA devices can be both physically located on the hardware or emulated by software.
vDPA 网卡,datapath 遵循 VirtIO 规范,而控制面由厂家驱动提供。这样 datapath 是直接 VM 的 VQ 和 hardware device 直接交互,性能很好。
Redhat 提出的硬件 vDPA 架构,目前在 DPDK 和内核程序中均有实现,基本是未来的标准架构。
这里汇总了一些关于 vDPA 的资料,有时间可以看看:vDPA - virtio Data Path Acceleration - vDPA - virtio Data Path Acceleration
vDPA (virtio data path acceleration) is a kernel framework (vhost) which enables NIC vendors to integrate their vDPA NIC kernel drivers into the framework.
A “vDPA device” means a type of device whose data path complies with the virtio specification, but whose control path is vendor specific.
Without vDPA:
With vDPA:
Achieving network wirespeed in an open standard manner: introducing vDPA
Introduction to vDPA kernel framework
Vhost 也是加速 data path 的,这两者的区别是什么?
- vHost 是把 data path offload 到 kernel。
- vDPA 更倾向于 hardware accelaration,也就是用 hardware 来 offload 并加速 data path。