virtio-net - 网络半虚拟化

virtio-net 一套网络半虚拟化驱动+设备的方案。

guest 里面安装的virtio-net的driver,qemu里加载virtio-net的设备。qemu使用kvm版本的,

然后与内核通过tap虚拟设备通信。

virtio-net driver + device架构图

上图盗图自redhat网站。图中有mmap的映射将vring映射到host用户态,并发送到tap设备。通知路径走的kvm。

这里有个开销是kvm要进行 vmexit操作,将vm 切出cpu。

处理流程

vhost-net

改进版本使用vhost框架的vhost-net,则更加高效:

设备换成了走vhost-net
vhost情形下处理流程

改成用vhost-net,减少vmexit,vhost会启动内核线程,负责处理guest的数据。这里guest的vring也直接映射到了host,但是映射到了内核态,比较高效。


(TODO)

vhost框架

引用

发布于 2020-02-06 21:23