首页 理论教育 基于KVM的网络功能虚拟化解决方案

基于KVM的网络功能虚拟化解决方案

时间:2023-10-19 理论教育 版权反馈
【摘要】:QEMU在开发设计之初并不是KVM原生的模块,它自身也可以实现一些虚拟化的功能。故而从另一个角度来看,也可以认为QEMU使用了KVM的虚拟化组件来对自身的虚拟化功能进行性能加速处理。创建KVM虚拟机为部署虚拟网络功能,首先需要使用KVM虚拟化方式来创建虚拟机。图6-24virt-manager管理KVM虚拟机构建KVM虚拟机网络KVM虚拟化默认有三种网络连接方式:仅主机模式、地址转换模式和Bridge模式。图6-25KVM虚拟机网络

基于KVM的网络功能虚拟化解决方案

(1)KVM部署架构

KVM虚拟化技术常常用来部署在X86通用服务器上,被应用在Linux操作系统环境下将物理的宿主机拥有的实体物理资源进行抽象,向应用层用户提供多个虚拟的隔离环境来满足需求。在KVM的实际使用中,单个客户虚拟机表现为运行在宿主机中的常规Linux进程,统一由Linux操作系统内核中的进程调度程序来负责管理和维护。而在客户虚拟机中的每个虚拟CPU也被虚拟化为一个常规的Linux进程,通过QEMU工具来与宿主机操作系统中的指令进行转换,完成操作指令的下达。其架构如图6-23所示。

图6-23 KVM组件架构图

在KVM体系架构中,KVMguest是客户机系统,可以部署独立与宿主机操作系统的操作系统,而底层的相关硬件资源如CPU、内存、虚拟网卡以及其他设备驱动的资源,也会通过相应的技术手段完成从物理到虚拟的抽象,以提供给顶层的虚拟机来使用。虚拟机中部署的操作系统以及应用在底层宿主机操作系统中表现为KVM进程中的一个线程,完成指令间的转换和资源的隔离。

具体的物理资源向虚拟资源的抽象过程是由KVM内核模块来完成的,KVM内核模块注意负责借助相应物理设备的支持,将计算、存储、网络等资源向上抽象,交由客户机中的模块完成使用。同时KVM内核模块还负责拦截来自客户虚拟机的I/O请求,交给QEMU模块完成指令转换。

QEMU在开发设计之初并不是KVM原生的模块,它自身也可以实现一些虚拟化的功能。KVM借助QEMU模块的帮助完成从客户虚拟机中的请求到宿主机中相关操作的调用,QEMU在这个过程中将来自虚拟机的I/O请求解析,并提供设备的模拟化功能。故而从另一个角度来看,也可以认为QEMU使用了KVM的虚拟化组件来对自身的虚拟化功能进行性能加速处理。

(2)创建KVM虚拟机

为部署虚拟网络功能,首先需要使用KVM虚拟化方式来创建虚拟机。其中创建虚拟机有以下几种方法:

第一种是使用virt-manager工具。如果是图形化的Linux操作系统,可以选择使用virt-manager软件工具来进行KVM虚拟机的创建,使用virt-manager工具可以在图形化的界面下对需要创建的虚拟机进行规格上的设定,可以指定虚拟机的操作系统,在物理资源上可以指定其CPU、内存、硬盘等资源大小,也可以通过其设置网卡连接方式,合理配置虚拟机的网络。

第二种是使用QEMU-IMG和QEMU命令行的方式进行安装,这种方式首先要创建一个qcow2格式的镜像文件,再通过命令行启动一个虚拟机,在启动的时候可以不同的命令行参数规定其物理资源如CPU、内存、硬盘等资源的规格。将其挂在到cdrom上,安装需要的操作系统,最后在镜像文件的基础上启动虚拟机即可。

第三种是使用OpenStack工具。OpenStack作为一款IaaS平台,其可以方便快捷地创建虚拟机,并且其内部实现原理也是使用KVM的内核,所以在OpenStack工具内部,可以使用相关的libvirt API,通过编程的方式创建虚拟机,也可以通过设置相应的模板,实现按照客户的编排来启动所需要的特定规格的虚拟机。(www.xing528.com)

在创建好虚拟机后,通过SSH工具访问到虚拟机,即可完成虚拟网络功能的软件安装和配置,也可以制作包含相关网络功能软件的镜像文件,构建镜像仓库,以便后续使用。

如图6-24所示,在宿主机服务器上使用virt-manager工具来对KVM虚拟机进行创建,可以看到使用该图形化的工具可以方便地对享有的虚拟机进行资源的监视和管理。

图6-24 virt-manager管理KVM虚拟机

(3)构建KVM虚拟机网络

KVM虚拟化默认有三种网络连接方式:仅主机模式、地址转换模式和Bridge模式。

其中仅主机模式是将位于宿主机中所有的虚拟机组成一个内网,这个内网无法与外界连通,适用于安全性需求高的场景;NAT方式是在KVM虚拟化技术使用中,模块默认的网络连接方式,可以完成宿主机和虚拟机实现互访,虚拟机也可以访问互联网,但是不支持外界直接对虚拟机进行访问;Bridge方式即使用Linuxbridge构建虚拟网桥,使得虚拟机具有独立的IP,虚拟机可以成为宿主机中具有独立网络的设备,虚拟机和宿主机将各自的网络设备挂在到网桥之上,设定网桥转发规则,虚拟机和宿主机网络互通,但是虚拟机不能够直接访问外部网络。

在宿主机中部署数据平面,如果使用默认的LinuxBridge,将无法满足NFV中数据包高速转发的需求,在三种数据平面中,我们可以选用DPDK-OVS这一数据面,可以将DPDK部署在宿主机和虚拟机中,避免数据包进入内核态,然后使用OpenvSwitch作为虚拟交换机,OpenvSwitch相对于传统的Linuxbridge来说性能有一些提高,并可以提供更加细粒度的流量控制。我们将宿主机的物理网卡和虚拟机的虚拟网卡连接到OpenvSwitch的相应端口上,在由远程的SDNcontroller来下发流表项,即可构建虚拟机网络。所构建的KVM虚拟机网络如图6-25所示。

图6-25 KVM虚拟机网络

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈