整体框架介绍
启动虚拟机时,前后端网络会进行feature协商。前端指的是guest内部的驱动,后端指的是dpdk中的vhost-user。但guest驱动不能直接和vhost_user协商,中间需要通过qemu这个中介。如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/335d4c7e5b50415289ee17f3eb8c485f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Vuc2hpbmUwMDg=,size_8,color_FFFFFF,t_70,g_se,x_16)
如果qemu要完成一个中介的角色,那么qemu一定要实现两个代理。一个代理和dpdk进行沟通,另一个用来和guest沟通。如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b062ca21f5e44352a3ecc0bd2431457c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3Vuc2hpbmUwMDg=,size_20,color_FFFFFF,t_70,g_se,x_16)
和dpdk协商,本质上是与dpdk中的vhost_user协商; 和qemu协商本质上是与guest中的virtio-net驱动协商。因此把qemu中用于和dpdk vhost_user协商的代理称为qemu:vhost_user,把qemu中用于和guest virtio-net协商的代理称为qemu:virtio_net。
所以整个协商过程涉及的核心是:dpdk vhost_user, qemu:vhost_user, qemu:virtio-net, guest virtio-net,共4个模块,每个模块都有自己的f