服务器虚拟化全虚拟化和半虚拟化,浅谈网络I/O全虚拟化、半虚拟化和I/O透传

本文探讨了服务器虚拟化中的网络I/O虚拟化,包括全虚拟化和半虚拟化。全虚拟化通过软件模拟硬件设备,灵活性高但效率低。半虚拟化通过前端和后端驱动模拟,性能优于全虚拟化,其中virtio成为半虚拟化标准。此外,介绍了I/O透传技术,虽然提供接近原生的性能,但牺牲了灵活性。文中还讨论了vhost-user和vDPA等高性能解决方案以及SR-IOV技术。
摘要由CSDN通过智能技术生成

众所周知,虚拟化技术旨在将有限的物理资源(CPU、内存等)抽象成更多份的虚拟资源供上层应用使用。最常用的领域有云服务提供商,SDN/NFV,比如:在一台物理服务器上运行成百上千的虚拟机,并将单个虚拟机出租给不同用户。

虚拟化的实现主要由三项关键技术构成:CPU虚拟化、内存虚拟化和I/O虚拟化。其中CPU和内存虚拟化多由硬件支持实现,如intel VT-x、VT-d等IA架构扩展,还有EPT页表等。而I/O虚拟化则没有CPU和内存虚拟化那么统一,由于其大量基于软件实现,因此发展过程中,衍生出了好多种性能、灵活性各异的方案。我们通常所说的全虚拟化和半虚拟化一般都是在网络I/O虚拟化中体现的差异最大。

1.网络I/O全虚拟化

该方式采用软件模拟真实硬件设备。一个设备的所有功能或者总线结构(如设备枚举、识别、中断和DMA)等都可以在宿主机中模拟。而对客户机而言看到的是一个功能齐全的“真实”的硬件设备。其实现上通常需要宿主机上的软件配合截取客户机对I/O设备的各种请求,通过软件去模拟。比如:QEMU/KVM虚拟化中QEMU就可以通过模拟各种类型的网卡。

这种方式的好处是灵活,不需要专有驱动,因此能实现既不需要修改客户机、也无需考虑底层硬件,对客户机透明地使用网络资源。但是缺点在于,很多中断信号的处理需要让客户机感觉到自己运行在一个“真实环境”,因此QEMU软件模拟的很底层,效率低下。

2.网络I/O半虚拟化

在这种虚拟化中,客户机操作系统能够感知到自己是虚拟机,I/O的虚拟化由前端驱动和后端驱动共同模拟实现。在客户机中运行的驱动程序称之为前端,在宿主机上与前端通信的驱动程序称之为后端。前端发送客户机请求给后端,后端驱动处理完这些请求后再返回给前端。而在不同的虚拟化机制中,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值