虚拟化之设备虚拟化

  • 简单介绍
技术路线分三种(其中第二种有个改进版)
	1.全模拟/传统模拟
		通常指由虚拟化层(通常是Qemu)完全模拟一个设备给虚拟机用。
		虚拟机中的系统完全不知道自己在虚拟机中
		以网络为例,发包涉及到多套代码
			1.guest app
			2.guest os(网络协议栈)
			3.Guest Virtual NIC 驱动(例如e1000)
			4.qemu 模拟的  nic
			---/dev/net/tun--- // 不管是tap设备,还是tun设备,都是走的这个接口
			5.Host OS(不包括网络协议栈) & TAP 设备
			6.Physical NIC 驱动
			7.Physical NIC
		此种情况下,虚拟机中的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值