虚拟化之设备虚拟化

  • 简单介绍
技术路线分三种(其中第二种有个改进版)
	1.全模拟/传统模拟
		通常指由虚拟化层(通常是Qemu)完全模拟一个设备给虚拟机用。
		虚拟机中的系统完全不知道自己在虚拟机中
		以网络为例,发包涉及到3套代码(虚拟机中的网卡驱动e1000,qemu中的网卡驱动e1000,host机中的tap0及其驱动)
		此种情况下,虚拟机中的os 不需要更改任何东西, 只需要 在 qemu 中 适配 "虚拟机os的网卡驱动"
	2.virtio/半虚拟化
		在 guest os 中 新建一个 virtio 驱动 作为前端 , 前端 通过  Vring协议 与 后端通信 
		在 qemu 新建 一套 代码 作为 后端 , 后端 通过 Vring 协议 与 前端通信, 后端通过 host 上的 tap接口 发送 实际网络包
		以网络为例,发包涉及四套代码(虚拟机中的virtio驱动,vring协议,qemu代码,host机中的tap0及其驱动)
		此种情况下,虚拟机中的os 必须以 virtio驱动 为 网卡驱动
	2.1 vhost (virtio/半虚拟化的改进版)
		在 guest os 中 新建一个 virtio 驱动 作为前端 , 前端 通过  Vring协议 与 后端通信 
		在 host os 新建 一套 代码 作为 后端 , 后端 通过 Vring 协议 与 前端通信, 后端通过 host 上的 tap接口 发送 实际网络包
		以网络为例,发包涉及四套代码(虚拟机中的virtio驱动,vring协议,host os 代码 ,host机中的tap0及其驱动)
		此种情况下,虚拟机中的 os 必须以 virtio驱动 为 网卡驱动
		此种情况基于 ioeventfd 
	2.2 vhost-user
		在 guest os 中 新建一个 virtio 驱动 作为前端 , 前端 通过  Vring协议 与 后端通信 
		在 qemu 新建 一套 代码 作为 后端 , 后端 通过 Vring 协议(mmap) 与 前端通信, 后端通过 host 上的 tap接口 发送 实际网络包
		以网络为例,发包涉及四套代码(虚拟机中的virtio驱动,vring协议,qemu代码,host机中的tap0及其驱动)
		此种情况下,虚拟机中的os 必须以 virtio驱动 为 网卡驱动
	3. 设备直通(VFIO)
		借助硬件技术,如intel的VT-d技术实现PCI设备直接挂载给虚拟机。
		

1.全模拟/传统模拟


前端 -net nic,model=e1000
后端 -netdev ifname=tap0

发包流程
----------------------------
虚拟机os e1000 驱动 -> 				(虚拟机OS)
----------------------
qemu 截获
qemu e1000 驱动						(QEMU)
write(tap0)
------------------------
tap0 驱动							(HOST OS)
------------------------

2.virtio/半虚拟化


前端 -device virtio-net-device,netdev=bsnet0,mac=E0:FE:D0:3C:2E:EE 
后端 -netdev tap,id=bsnet0,ifname=bsTap0 

发包流程
----------------------------
虚拟机os virtio 驱动 -> 				(虚拟机OS)
----------------------
qemu 收到包(不是截取)
qemu virtio 驱动						(QEMU)
write(tap0)
------------------------
tap0 驱动							(HOST OS)
------------------------

2.1 vhost


前端 -device virtio-net-device,netdev=bsnet0,mac=E0:FE:D0:3C:2E:EE 
后端 -netdev tap,id=bsnet0,ifname=bsTap0,vhost=on

发包流程
----------------------------
虚拟机os virtio 驱动 -> 				(虚拟机OS)
----------------------
HOST os收到包(不是截取)
HOST os virtio 驱动					(HOST OS)
调用tap0 驱动发包
------------------------
tap0 驱动							(HOST OS)
------------------------

3. 设备直通(VFIO)

TODO

你可能感兴趣的:(QEMU)