本申请属于计算机虚拟化技术领域,特别涉及一种基于软件定义的虚拟网络资源分配系统。
背景技术:
在数据中心,网络资源是一种稀缺、引起高度竞争的资源。由于数据中心计算节点之间的关联性,集群中多个计算节点之间需要节点间的数据传输和通信协作以共同完成计算任务,特别是针对基于大数据的应用服务,为了完成一个请求,需要在应用服务器间频繁通信和数据交换,这使得多个服务器之间在原本稀缺的网络资源存在高度竞争。此外,由于数据中心计算节点与存储节点的分离,数据存储与读取本质上也变成了对网络访问操作,加重了网络i/o的负重。因此,对数据中心网络资源的合理调度和网络性能的提升是急需解决的一个问题。
针对于数据中心网络性能的提升,网络i/o虚拟化是解决这一问题的关键技术。目前几种主流的网络i/o虚拟化方式包括:
1)、半虚拟化方式具有良好的网络管理性和可扩展性,但因为其i/o请求路径较长导致其性能较差;
2)、硬件辅助的虚拟化方式无论是pass-through技术还是单根i/o虚拟化技术都绕过了虚拟机监控器的干预,能够达到接近物理机的i/o性能,但其使虚拟机单独占用i/o设备降低了硬件复用性和软件的可扩展性。
3)、基于混合i/o模式的方法被提出以优化数据中心的网络性能,主要是想寻找一种方式以结合半虚拟化灵活的网络管理功能和单根i/o虚拟化的高性能。但是由于数据中心网络环境的复杂性以及缺乏对网络数据的总体感知,用户或网络管理员很难对虚拟网络资源进行合理的调度和优化。
综上所述,现有技术中,对于数据中心网络i/o虚拟化的部署在以下两个方面存在着一些局限:首先是虚拟机监控器的网络i/o操作缺少自身在网络数据中的全局角色感知,失去了提升某些网络密集型虚拟机网络性能的机会,而使其他一些非网络密集型的虚拟机没必要占用性能更好的单根i/o虚拟化网卡资源;其次,数据中心的网络i/o操作对网络环境的感知应对策略缺乏灵活性,即目前很多数据中心为虚拟机分配网卡资源时是采样静态固定分配的方式,缺少灵活的动态控制,不能根据网络环境的变化而给不同网络类型的虚拟机分配不同的网卡资源,从而影响了系统整体的网络性能。
技术实现要素:
本申请提供了一种基于软件定义的虚拟网络资源分配系统,旨在至少在一定程度上解决现有技术中的上述技术问题之一。
为了解决上述问题,本申请提供了如下技术方案:
一种基于软件定义的虚拟网络资源分配系统,包括物理主机,所述物理主机包括虚拟机和中心网络控制器;所述中心网络控制器用于为所述虚拟机的网络i/o操作设置可编程控制面板,通过所述可编程控制面板对所述虚拟机的网卡资源分配情况进行标记,并将所述可编程控制面板安装到虚拟机上,所述中心网络控制器基于虚拟机的标记,通过软件定义的方式控制所述虚拟机的网络i/o操作。
本申请实施例采取的技术方案还包括:所述可编程控制面板通过中心网络控制器制定规则表格和触发表格进行虚拟机的网络i/o控制:
规则表格:用于基于标签机制记录所述虚拟机网卡资源的分配规则和策略,并使用标签对所述虚拟机的网卡资源分配情况进行标记;
触发表格:用于基于动作触发机制记录性能触发器。
本申请实施例采取的技术方案还包括:所述虚拟机还包括网络控制模块,所述网络控制模块用于根据可编程控制面板中的规则表格和触发表格调度和分配虚拟机的网卡资源。
本申请实施例采取的技术方案还包括:所述虚拟机的网卡资源包括单根i/o虚拟化vf网卡和半虚拟化网卡,所述虚拟机使用bonding驱动技术将单根i/o虚拟化vf网卡和半虚拟化网卡绑定为一个逻辑网卡,并将单根i/o虚拟化vf网卡设置为主设备,将半虚拟化网卡被设置为从设备,所述网络控制模块通过单根i/o虚拟化vf网卡热插拔对所述单根i/o虚拟化vf网卡和半虚拟化网卡进行切换。
本申请实施例采取的技术方案还包括:所述网络控制模块通过单根i/o虚拟化vf网卡热插拔对所述单根i/o虚拟化vf网卡和半虚拟化网卡进行切换具体为:移除虚拟机的vf时,所述网络控制模块通知物理主机的虚拟热插拔控制器触发选定虚拟机单根i/o虚拟化设备的虚拟热移除事件;所述虚拟机关闭该虚拟机单根i/o虚拟化设备的驱动并停止使用虚拟机单根i/o虚拟化设备以回应虚拟热移除事件;bonding驱动技术的激活网卡由单根i/o虚拟化vf网卡自动切换为半虚拟化网卡;为所述虚拟机分配vf时,所述网络控制模块通知物理主机的虚拟热插拔控制器触发虚拟机单根i/o虚拟化设备的虚拟热添加事件;所述虚拟机加载单根i/o虚拟化vf网卡驱动并选择新的vf开始工作。
本申请实施例采取的技术方案还包括:所述虚拟机的标签包括vf和vnet,其中,vf表示所述虚拟机是否使用单根i/o虚拟化vf网卡,如果vf为真,表明所述虚拟机使用单根i/o虚拟化vf网卡,如果vf为假则表明所述虚拟机不使用单根i/o虚拟化vf网卡;vnet表示所述虚拟机是否使用半虚拟化网卡,如果vnet为真,表明所述虚拟机使用半虚拟化网卡,如果vnet为假,则表明所述虚拟机不使用半虚拟化网卡;如果vf和vnet同时为真,表明所述虚拟机仅使用单根i/o虚拟化vf网卡。
本申请实施例采取的技术方案还包括:所述物理主机还包括数据收集模块,所述数据收集模块用于获取虚拟机的网络信息和运行状态数据,并将所述网络信息和运行状态数据传输至中心网络控制器,其中,所述运行状态数据包括虚拟机的运行时间、虚拟机的阻塞时间和虚拟机的等待时间。
本申请实施例采取的技术方案还包括:所述数据收集模块获取网络信息的方式为:所述虚拟机读取linux系统提供的接口文件获取虚拟机的网络信息,在每个采样周期结束时将获取的网络信息发送给数据收集模块;所述数据收集模块将本次发送和接收总流量减去上次发送和接收总流量得到本次采样周期的发送和接收流量总和,将所述本次采样周期的发送和接收流量总和除以网卡带宽得到本次采样周期的虚拟机的带宽利用率。
本申请实施例采取的技术方案还包括:所述中心网络控制器还包括拓扑信息记录表格,所述拓扑信息记录表格用于记录虚拟机状态以及各个虚拟机之间数据交换的拓扑结构信息。
本申请实施例采取的技术方案还包括:所述中心网络控制器还包括数据统计表格,所述数据统计表格用于记录所述数据收集模块获取的虚拟机网络信息和运行状态数据。
相对于现有技术,本申请实施例产生的有益效果在于:本申请实施例的基于软件定义的虚拟网络资源分配系统通过bonding驱动技术对虚拟机的硬件网卡资源进行整合,并以软件的方式对这些资源进行定义,结合了半虚拟化和单根i/o虚拟化各自的优点,可以使用任何调度策略根据虚拟机的数据感知虚拟机的负载状态,并动态调度虚拟机的网卡资源,既能提升虚拟机的网络性能,又保证了虚拟机的可扩展性和管理性。另外,本申请结合热插拔技术和bonding驱动技术的激活备份模式,动态切换单根i/o虚拟化网卡和半虚拟化网卡,解决了单根i/o虚拟化设备的虚拟机在线迁移问题。
附图说明
图1是本申请实施例的基于软件定义的虚拟网络资源分配系统的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
针对现有技术存在的问题,本申请实施例的基于软件定义的虚拟网络资源分配系统通过将数据中心集群的节点网络i/o(input/output,输入/输出)操作的控制面板与数据面板解耦合,对数据节点的网卡资源进行统一的管理,允许控制面板与中心网络控制器以可编程的方式进行交换,达到同时控制网络i/o操作和虚拟网络资源分配的目的。
具体地,请参阅图1,是本申请实施例的基于软件定义的虚拟网络资源分配系统的结构示意图。本申请实施例的基于软件定义的虚拟网络资源分配系统包括物理主机,物理主机包括多个虚拟机、数据收集模块和中心网络控制器。
具体地,虚拟机包括可编程控制面板和网络控制模块;
可编程控制面板:在标签机制的基础上,通过物理主机的中心网络控制器为每个虚拟机的网络i/o操作分别设置一个可编程控制面板,通过可编程控制面板对各个虚拟机的网络资源分配情况进行标记,中心网络控制器根据各个虚拟机的标记控制相应的网络i/o操作。本申请实施例中,可编程控制面板通过中心网络控制器制定两种表格进行网络i/o控制:
1)规则表格,用于记录虚拟机网卡资源的分配规则和策略,即指定每个虚拟机的网卡资源分配情况;
2)触发表格,用于记录性能触发器,即记录针对网络资源的各类触发事件。每个虚拟机的可编程控制面板都被中心网络控制器使用软件定义的方式控制该虚拟机网络i/o的操作。
网络控制模块:用于根据可编程控制面板中制定的表格调度和分配每个虚拟机的网卡资源。其中,虚拟机的网卡资源包括单根i/o虚拟化vf网卡和半虚拟化网卡两种类型,本申请使用bonding驱动技术的激活备份模式将两种网卡绑定为一个逻辑网卡,并将单根i/o虚拟化vf网卡设置为主设备,将半虚拟化网卡被设置为从设备,网络控制模块通过单根i/o虚拟化vf网卡热插拔来切换该虚拟机具体使用的网卡资源,实现单根i/o虚拟化vf网卡与半虚拟化网卡的动态切换。当网络控制模块对网卡资源进行分配时,如果可编程控制面板规定虚拟机使用单根i/o虚拟化vf网卡工作,则将半虚拟化网卡切换为单根i/o虚拟化vf网卡,如果可编程控制面板规定虚拟机使用半虚拟化网卡工作,则剥夺其vf使其使用半虚拟化网卡工作。
具体地,虚拟机单根i/o虚拟化vf网卡的热插拔过程如下:(1)当需要移除虚拟机的vf时,网络控制模块通知物理主机的虚拟热插拔控制器触发选定虚拟机单根i/o虚拟化设备的虚拟热移除事件;(2)虚拟机关闭该虚拟机单根i/o虚拟化设备的驱动并停止使用虚拟机单根i/o虚拟化设备以回应虚拟热移除事件;(3)bonding驱动技术的激活网卡由单根i/o虚拟化vf网卡自动切换为半虚拟化网卡;(4)当需要给虚拟机分配vf时,网络控制模块通知物理主机的虚拟热插拔控制器触发虚拟机单根i/o虚拟化设备的虚拟热添加事件;(5)虚拟机加载单根i/o虚拟化vf网卡驱动并选择新的vf开始工作。
数据收集模块:用于获取所有虚拟机的网络信息,通过xenmon获取所有虚拟机的运行状态数据,并将网络信息和运行状态数据传输至中心网络控制器。数据收集模块获取网络信息的方式具体为:物理主机上的虚拟机读取linux系统提供的接口文件/proc/net/dev获取虚拟机的网络信息,在每个采样周期结束时将获取的网络信息通过xenstore发送给数据收集模块。数据收集模块获取的运行状态数据包括getten_time(虚拟机的运行时间)、blocked_time(虚拟机的阻塞时间)和waiting_time(虚拟机的等待时间)等。本申请实施例中,数据收集模块将本次发送和接收总流量减去上次发送和接收总流量即为本次采样周期发送和接收流量总和,将本次采样周期发送和接收流量总和除以网卡带宽即为本次采样周期的该虚拟机的带宽利用率。
中心网络控制器:中心网控制器向下与虚拟机的可编程控制面板连接,向上与虚拟网络调度器相连,用于根据各个虚拟机的网卡资源分配情况控制各个虚拟机的网络i/o操作;其中,虚拟网络调度器是提供给用户或者管理员以调度虚拟机的网卡资源。
具体地,中心网络控制器包括:
拓扑信息记录表格:用于记录物理主机中所有虚拟机状态以及各个虚拟机之间数据交换的拓扑结构信息;
规则表格:用于基于标签机制记录管理员或用户为优化系统网络性能而定义的虚拟机网卡资源的分配规则和策略,并使用标签对各个虚拟机的网卡资源分配情况进行相应的标记;规则表格会被安装到各个虚拟机的可编程控制面板,虚拟机中的网络控制模块会根据虚拟机的标记提供相应的网络i/o操作;从数据中心节点的整体性能来说,不同虚拟机负载对网络资源的需求是不同的,对于网络资源需求大的虚拟机,对其分配性能更好的单根i/o虚拟化网卡,从而通过提升网络密集型的虚拟机可以提升系统的整体网络性能。相反,对于非网络密集型的虚拟机,只需为其分配性能更差的半虚拟化网卡,因此,在标签机制的基础上,通过对不同虚拟机的网卡资源分配情况进行标记,在虚拟机的网络i/o操作中根据各个虚拟机的标记进行相应的操作。
本申请实施例中,虚拟机的标签包括vf和vnet两个类型,其中,vf规定该虚拟机是否使用单根i/o虚拟化vf网卡,如果vf为真,表明虚拟机使用单根i/o虚拟化vf网卡,如果vf为假则表明虚拟机不使用单根i/o虚拟化vf网卡;vnet表示虚拟机是否使用半虚拟化网卡,如果vnet为真,表明虚拟机使用半虚拟化网卡,如果vnet为假,则表明虚拟机不使用半虚拟化网卡;如果vf和vnet同时为真,表明虚拟机仅使用单根i/o虚拟化vf网卡工作。
触发表格:用于基于动作触发机制记录性能触发器,即记录针对网络资源的各类触发事件,为网卡资源提供主动规则,并将触发表格传达给各个虚拟机的可编程控制面板,虚拟机中的网络控制模块会根据触发表格中的主动规则进行具体的网络i/o操作;其中,触发表格可以视为对规则表格的一个扩充。为了帮助用户或管理员定义资源管理策略以及对可编程控制面板进行控制,本申请通过触发动作方式进行可编程控制,性能触发器基于性能指标的变化控制各个虚拟机的具体网络i/o操作,例如:当虚拟机的带宽利用率大于50%时则将该虚拟机使用的网卡切换为单根i/o虚拟化vf网卡,从而达到优化或管理系统网络资源的目的。
数据统计表格:用于记录从数据收集模块获取的所有虚拟机的网络信息和运行状态数据。
综上所述,本申请不会修改虚拟机监控器本身的调度程序,是对虚拟机监控器调度系统的补充,可应用于任何虚拟化平台,如xen和kvm等。
本申请实施例的基于软件定义的虚拟网络资源分配系统通过bonding驱动技术对虚拟机的硬件网卡资源进行整合,并以软件的方式对这些资源进行定义,结合了半虚拟化和单根i/o虚拟化各自的优点,可以使用任何调度策略根据虚拟机的数据感知虚拟机的负载状态,并动态调度虚拟机的网卡资源,既能提升虚拟机的网络性能,又保证了虚拟机的可扩展性和管理性。另外,本申请结合热插拔技术和bonding驱动技术的激活备份模式,动态切换单根i/o虚拟化网卡和半虚拟化网卡,解决了单根i/o虚拟化设备的虚拟机在线迁移问题。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本申请中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本申请所示的这些实施例,而是要符合与本申请所公开的原理和新颖特点相一致的最宽的范围。