CN103780674B - 一种基于硬件模拟的虚拟机通信方法和装置 - Google Patents
一种基于硬件模拟的虚拟机通信方法和装置 Download PDFInfo
- Publication number
- CN103780674B CN103780674B CN201310565423.3A CN201310565423A CN103780674B CN 103780674 B CN103780674 B CN 103780674B CN 201310565423 A CN201310565423 A CN 201310565423A CN 103780674 B CN103780674 B CN 103780674B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- message
- main frame
- application
- master agent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种基于硬件模拟的虚拟机通信方法,所述方法包括:在主机和虚拟机中分别设置主机代理和虚拟机代理;主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信;主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信。本发明还公开了一种基于硬件模拟的虚拟机通信装置。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种基于硬件模拟的虚拟机通信方法和装置。
背景技术
当前,处于云环境中的虚拟机与主机采用socket机制进行通信,socket通信需要给运行在主机上的虚拟机配置IP地址,目前的通信方法虽然能满足当前虚拟机与主机的通信需求,但对虚拟机IP地址的设置存在诸多限制。
另外,在某些情况下,出于安全考虑,并不会给云环境中的某些虚拟机配置IP地址,这样,虚拟机就不能与主机采用socket机制进行通信,影响了虚拟机与主机的通信过程,降低用户体验。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种基于硬件模拟的虚拟机通信方法和装置,能不受IP地址设置的限制,保证虚拟机与主机之间通信的实现。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种基于硬件模拟的虚拟机通信方法,在主机和虚拟机中分别设置主机代理和虚拟机代理;所述方法还包括:
主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信;
主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信。
上述方案中,所述方法还包括:
启动主机上的主机代理,主机上的应用向主机代理注册,主机代理向消息总线注册,并连接虚拟化后端设备;
启动虚拟机上的虚拟机代理,虚拟机上的应用向虚拟机代理注册,虚拟机代理连接虚拟化前端设备。
上述方案中,所述主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信,主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信,包括:
主机上的应用向消息总线发送消息指令,消息总线将所述消息指令发送给主机代理;
主机代理按照消息关键字通过虚拟化后端设备和虚拟化前端设备将所述消息指令发送给虚拟机代理;
虚拟机代理根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
上述方案中,所述主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信,主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信,包括:
虚拟机上的应用向虚拟机代理发送消息指令;
虚拟机代理按照消息关键字通过虚拟化前端设备和虚拟化后端设备将所述消息指令发送给主机代理;
主机代理根据消息关键字和主机上的应用注册信息,将所述消息指令发送给主机上的应用。
上述方案中,所述方法还包括:所述虚拟机代理定时上报虚拟机性能数据。
上述方案中,所述方法还包括:虚拟机代理根据接收到的不同的消息类型,进入对应的消息处理函数,执行配置、和/或执行后启动脚本、和/或执行动态资源调整。
本发明实施例又提供了一种基于硬件模拟的虚拟机通信装置,所述装置包括:主机代理、虚拟机代理、虚拟化后端设备、虚拟化前端设备;其中,
所述主机代理,用于通过消息指令与主机进行通信;
所述虚拟机代理,用于通过消息指令与虚拟机进行通信;
所述虚拟化后端设备,用于与虚拟化前端设备配合完成主机代理和虚拟机代理之间的通信;
所述虚拟化前端设备,用于与虚拟化后端设备配合完成主机代理和虚拟机代理之间的通信。
上述方案中,所述主机代理,还用于接收主机上的应用的注册信息,向消息总线注册,并连接虚拟化后端设备;
所述虚拟机代理,还用于接收虚拟机上的应用的注册信息,并连接虚拟化前端设备。
上述方案中,所述主机代理,还用于接收消息总线发来的消息指令,并按照消息关键字通过虚拟化后端设备和虚拟化前端设备将所述消息指令发送给虚拟机代理;
所述虚拟机代理,还用于根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
上述方案中,所述虚拟机代理,还用于接收虚拟机上的应用向发送的消息指令;并按照消息关键字通过虚拟化前端设备和虚拟化后端设备将所述消息指令发送给主机代理;
所述主机代理,还用于按照所述消息关键字主机上的应用的注册信息,将所述消息指令发送给主机上的应用。
上述方案中,所述虚拟机代理,还用于定时上报虚拟机性能数据。
上述方案中,所述虚拟机代理,还用于根据接收到的不同的消息类型,进入对应的消息处理函数,执行配置、和/或执行后启动脚本、和/或执行动态资源调整。
本发明实施例提供的基于硬件模拟的虚拟机通信方法和装置,通过在主机和虚拟机中分别设置主机代理和虚拟机代理,主机中的应用通过消息总线向主机代理发送消息指令实现与主机代理之间的通信;虚拟机中的应用通过向虚拟机代理发送消息指令实现与虚拟机代理之间的通信;主机代理和虚拟机代理之间通过虚拟化前后端设备进行通信,如此,可以突破传统的虚拟机通信方法中对IP地址的限制,实现虚拟机所在主机中的应用与虚拟机中的应用之间的双向通信,同时实现了非虚拟机所在主机中的应用与虚拟机中的应用之间的通信。
附图说明
图1为本发明实施例一基于硬件模拟的虚拟机通信方法流程示意图;
图2为本发明实施例二基于硬件模拟的虚拟机通信方法流程示意图;
图3为本发明实施例三基于硬件模拟的虚拟机通信方法流程示意图;
图4为本发明实施例虚拟机代理与主机代理通信方法流程示意图;
图5为本发明实施例虚拟机代理执行配置方法流程示意图;
图6为本发明实施例虚拟机代理执行后启动脚本流程示意图;
图7为本发明实施例虚拟机代理执行动态资源调整流程示意图;
图8为本发明实施例基于硬件模拟的虚拟机通信装置组成结构示意图。
具体实施方式
本发明实施例的基本思想是:在主机和虚拟机中分别设置主机代理和虚拟机代理,主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信;主机代理和虚拟机代理之间通过虚拟化前后端设备进行通信。
这里,所述主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信包括:主机中的应用通过消息总线向主机代理发送消息指令,实现与主机代理之间的通信;虚拟机中的应用通过向虚拟机代理发送消息指令,实现与虚拟机代理之间的通信。
具体的,主机中的应用向消息总线发送消息指令,消息总线将所述消息指令发送到主机代理;主机代理按照消息关键字通过虚拟化前后端设备发送到虚拟机代理;虚拟机代理根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机中的应用。
或者,虚拟机中的应用向虚拟机代理发送消息指令;虚拟机代理按照消息关键字通过虚拟化前后端设备发送到主机代理;主机代理根据所述消息关键字主应用的注册信息,将所述消息指令发送给主机中的应用。
其中,主机代理和虚拟机代理在实际应用中可由数据交换模块实现;主机代理与虚拟机代理通过虚拟化前端设备和虚拟化后端设备进行通信,这里,所述虚拟化前端设备和虚拟化后端设备是根据虚拟化技术生成的虚拟通信设备,其中,虚拟化前端设备可以为虚拟机中的串口,可以为但不限于虚拟输入输出/串口(VirtIO/Serial)设备,虚拟机代理通过向该串口读写数据实现与虚拟化后端设备的通信;虚拟化后端设备为主机中的文件系统,可以为但不限于Unix套接字/TCP连接,主机代理通过向该文件系统读写数据实现与虚拟化前端设备的通信;在主机中,虚拟化前端设备和虚拟化后端设备共享同一文件系统。
下面结合附图及具体实施例,对本发明技术方案的实施作进一步的详细描述。图1为本发明实施例一基于硬件模拟的虚拟机通信方法流程示意图,如图1所示,本实施例基于硬件模拟的虚拟机通信方法,包括以下步骤:
步骤100:在主机和虚拟机中分别设置主机代理和虚拟机代理;
步骤101:主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信;
具体的,主机中的应用向消息总线发送消息指令,消息总线将所述消息指令发送到主机代理;虚拟机中的应用向虚拟机代理发送消息指令。
其中,所述消息总线用于将接收到的消息指令发送到主机代理,所述消息指令的来源可以是虚拟机所运行的主机上的应用,也可以为其它需要交互的主机中的应用;对应的,所述主机上的应用包括虚拟机所运行的主机上的应用、或者除虚拟机所运行主机以外的其它主机上的应用;所述主机上的应用与消息总线之间、消息总线与主机代理之间的通信通道可以是但不限于MBUS通道。
在步骤101执行之前,需要启动主机上的主机代理,主机上的应用要向主机代理注册,主机代理向消息总线注册,并连接虚拟化后端设备;且需要启动虚拟机上的虚拟机代理,虚拟机上的应用向虚拟机代理注册,虚拟机代理连接虚拟化前端设备;其中,所述虚拟化前端设备和虚拟化后端设备是采用虚拟化技术生成的虚拟通信设备。
步骤102:主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信;
具体的,主机代理将消息指令发送给虚拟机代理包括:主机代理按照消息关键字判断所述消息指令为发送给虚拟机代理的消息指令,就将所述消息指令发送到虚拟化后端设备,其中,所述消息关键字可以是消息号或消息类型等,虚拟化后端设备可以为主机中的文件系统,具体可以是但不限于主机中的Unix套接字/TCP连接,通过向该文件系统读写数据实现与虚拟机代理通信;虚拟化后端设备将接收到的消息指令发送给虚拟化前端设备,其中,所述虚拟化前端设备可以为虚拟机中的串口,具体可以为但不限于VirtIO/Serial设备;虚拟化前端设备将接收到的消息指令发送给虚拟机代理。
虚拟机代理将所述消息指令发送给主机代理包括:虚拟机代理按照消息关键字判断所述消息指令为发送给主机代理的消息指令,将所述消息指令发送到虚拟化前端设备,其中,所述消息关键字可以是消息号或消息类型等,所述虚拟化前端设备为虚拟机中的串口,可以为但不限于VirtIO/Serial设备,虚拟机代理通过向该串口读写数据实现与主机代理通信;虚拟化前端设备将接收到的消息指令发送给虚拟化后端设备,其中,所述虚拟化后端设备为主机中的文件系统,可以是但不限于主机中的Unix套接字/TCP连接;虚拟化后端设备将接收到的消息指令发送给主机代理;虚拟化前端设备和虚拟化后端设备共享同一文件系统。
主机代理根据所述消息关键字和主机上的应用的注册信息,将消息指令转发给主机上的应用;虚拟机代理根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
这里,所述主机代理与虚拟化后端设备之间的通信通道可以是但不限于Dom-Sock通道;所述虚拟机代理与虚拟化前端设备之间的通信通道可以是但不限于Guest os通信信道。
另外,当主机代理按照消息关键字和主机上的应用的注册信息判断所述消息指令为发送给主机上的应用的消息指令时,所述方法还包括:所述主机代理按照消息关键字将接收到来自消息总线的消息指令发送到主机上的应用;由此,可实现不同主机中的应用之间的通信,以及非虚拟机所运行主机中的应用与虚拟机中的应用之间的通信。
本发明实施例提供的基于硬件模拟的虚拟机通信方法,包括主机与虚拟机的通信过程,图2为本发明实施例二基于硬件模拟的虚拟机通信方法流程示意图,如图2所示,本实施例基于硬件模拟的虚拟机通信方法,包括以下步骤:
步骤201:主机上的应用向消息总线发送消息指令;消息总线将所述消息指令发送给主机代理;
其中,所述消息总线用于将接收到的消息指令发送到主机代理,所述消息指令的来源可以是虚拟机所运行的主机上的应用,也可以为其它需要交互的主机中的应用;对应的,所述主机上的应用包括虚拟机所运行的主机上的应用、或者除虚拟机所运行主机以外的其它主机的应用;所述主机上的应用与消息总线之间、消息总线与主机代理之间的通信通道可以是但不限于MBUS通道。
在步骤201执行之前,需要启动主机上的主机代理,主机上的应用要向主机代理注册,主机代理向消息总线注册,并连接虚拟化后端设备;且需要启动虚拟机上的虚拟机代理,虚拟机上的应用向虚拟机代理注册,虚拟机代理连接虚拟化前端设备;其中,所述虚拟化前端设备和虚拟化后端设备是采用虚拟化技术生成的虚拟通信设备。
步骤202:主机代理按照消息关键字通过虚拟化后端设备和虚拟化前端设备将所述消息指令发送给虚拟机代理;
具体的,主机代理将消息指令发送给虚拟机代理包括:主机代理按照消息关键字判断所述消息指令为发送给虚拟机代理的消息指令,就将所述消息指令发送到虚拟化后端设备,其中,所述消息关键字可以是消息号或消息类型等,虚拟化后端设备可以为主机中的文件系统,具体可以是但不限于主机中的Unix套接字/TCP连接,通过向该文件系统读写数据实现与虚拟机代理通信;虚拟化后端设备将接收到的消息指令发送给虚拟化前端设备,其中,所述虚拟化前端设备可以为虚拟机中的串口设备,具体可以为但不限于VirtIO/Serial设备;虚拟化前端设备将接收到的消息指令发送给虚拟机代理。
这里,所述主机代理与虚拟化后端设备之间的通信通道可以是但不限于Dom-Sock通道;所述虚拟机代理与虚拟化前端设备之间的通信通道可以是但不限于Guest os通信信道。
另外,当主机代理按照消息关键字和主机上的应用的注册信息判断所述消息指令为发送给主机上的应用的消息指令时,所述方法还包括:所述主机代理按照消息关键字将接收到来自消息总线的消息指令发送到主机上的应用;由此,可实现不同主机中的应用之间的通信,以及非虚拟机所运行主机中的应用与虚拟机中的应用之间的通信。
步骤203:虚拟机代理根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
本发明实施例提供的基于硬件模拟的虚拟机通信方法,还包括虚拟机与主机的通信过程,图3为本发明实施例三基于硬件模拟的虚拟机通信方法流程示意图,如图3所示,本实施例基于硬件模拟的虚拟机通信方法,包括以下步骤:
步骤301:虚拟机上的应用向虚拟机代理发送消息指令;
在步骤301执行之前,需要启动主机上的主机代理,主机上的应用要向主机代理注册,主机代理向消息总线注册,并连接虚拟化后端设备;且需要启动虚拟机上的虚拟机代理,虚拟机上的应用向虚拟机代理注册,虚拟机代理连接虚拟化前端设备;其中,所述虚拟化前端设备和虚拟化后端设备是采用虚拟化技术生成的虚拟通信设备。
步骤302:虚拟机代理按照消息关键字通过虚拟化前端设备和虚拟化后端设备将所述消息指令发送给主机代理;
具体的,虚拟机代理将所述消息指令发送给主机代理具体包括:虚拟机代理按照消息关键字判断所述消息指令为发送给主机代理的消息指令,将所述消息指令发送到虚拟化前端设备,其中,所述消息关键字可以是消息号或消息类型等,所述虚拟化前端设备为虚拟机中的串口,可以为但不限于VirtIO/Serial设备,虚拟机代理通过向该串口读写数据实现与主机代理通信;虚拟化前端设备将接收到的消息指令发送给虚拟化后端设备,其中,所述虚拟化后端设备为主机中的文件系统,可以是但不限于主机中的Unix套接字/TCP连接;虚拟化后端设备将接收到的消息指令发送给主机代理;虚拟化前端设备和虚拟化后端设备共享同一文件系统。
步骤303:主机代理根据所述消息关键字主机上的应用的注册信息,将所述消息指令发送给主机上的应用。
虚拟机代理与主机代理之间采用串口方式进行通信,虚拟机代理的启动流程,执行后启动脚本方式和消息处理方式如图4所示,图4为本发明实施例虚拟机代理与主机代理通信方法流程示意图,主机代理与虚拟机代理之间的通信消息通过虚拟化前后端设备完成,本实施例虚拟机代理与主机代理通信方法,包括以下步骤:
步骤401:虚拟机代理打开虚拟化前端设备,与虚拟化前端设备建立连接,如果连接成功,则修改虚拟机的代理的连接状态为ready,否则修改虚拟机的代理的连接状态为none;
步骤402:虚拟机代理发送启动完成消息vmagentready给主机代理;
所述启动完成消息格式:zxve_msgid=vmagentready;
步骤403:虚拟机代理创建线程,定时上报虚拟机性能数据;
其中所述定时上报虚拟机性能数据包括:执行虚拟机中的获取性能数据脚本,获取虚拟机性能数据,并封装消息,发送给主机;所述消息格式为:zxve_msgid=vmdata;cpu=;mem=;memfree=;diskfree=;diskusage;diskusage=;sda=;sdar_s=;sdaw_s=;sdar=;sdaw=;sdb=;sdbr_s=;sdbw_s=;sdbr=;sdbw=;address0=;mac0=;netmask0=;创建新线程,定时上报虚拟机性能数据。
步骤404:虚拟机代理进入循环,接收主机代理发送的消息;
步骤405:虚拟机代理根据不同的消息类型,进入对应的消息处理函数,执行配置、和/或执行后启动脚本、和/或执行动态资源调整;
其中,消息处理函数包括执行配置、执行后启动脚本、执行动态资源调整;所述配置、执行后启动脚本、动态资源调整的执行并不限定先后顺序,可以同时执行,也可以分别执行。所述定时上报虚拟机性能数据为按照预设时间定时上报,步骤403所述上报虚拟机性能数据与步骤404、405进入对应的消息处理函数不限定具体执行的先后顺序,即步骤403可以与步骤404、405同时执行,也可以分别执行。
图5为本发明实施例虚拟机代理执行配置方法流程示意图,如图5所示,本发明实施例虚拟机代理执行配置流程包括以下步骤:
步骤501:主机代理发送配置信息到虚拟机代理;
步骤502:虚拟机接收主机代理发来的配置信息,进行解析;其中,所述配置信息格式为:zxve_msgid=vmconfigreq;address=;netmask=;gateway=;hostname=;
步骤503:虚拟机代理调用配置脚本,将解析到的配置文件参数传给配置脚本,进行配置;
步骤504:虚拟机代理执行配置脚本完毕,发送消息给主机代理;其中,所述消息格式为:zxve_msgid=vmconfigack;retcode=。
图6为本发明实施例提供的虚拟机代理执行后启动脚本流程示意图,如图6所示,本发明实施例虚拟机代理执行后启动脚本流程包括以下步骤:
步骤601:虚拟机代理接收到主机代理发送的执行后启动脚本消息;
所述执行后启动脚本消息格式可以是:zxve_msgid=vmpostscript;sendflag=;times=;size=;content=;
其中,sendflag表示本次是否执行后启动脚本;当sendflag=0时,表示不执行后启动脚本,当sendflag=1时,表示执行后启动脚本;times为执行次数。
步骤602:取得sendflag值,判断本次是否执行后启动脚本,如果本次执行后启动脚本,则执行步骤603,否则,执行步骤604;
步骤603:调用后函数接口,将虚拟机ISO文件中的后启动脚本内容重组为后启动脚本;并执行步骤606;
步骤604:判断虚拟机中是否存在后启动脚本,如果存在后启动脚本,则执行步骤605,否则,退出该流程;
当步骤602中判断本次指令内容为不执行后启动脚本,本步骤中判断虚拟机中存在后启动脚本时,则进行步骤605的判断;
当步骤602中判断本次指令内容为不执行后启动脚本,本步骤中判断虚拟机中不存在后启动脚本时,本流程结束,退出该流程。
步骤605:判断是否有标志文件zxve_already_exec;如果有所述标志文件,则退出该流程,否则,执行步骤606;
其中,所述标志文件zxve_already_exec为标志后启动脚本执行完成的文件;当存在所述文件时,表示后处理脚本已执行完毕;
当步骤602中判断本次指令内容为不执行后启动脚本,步骤604中判断虚拟机中存在后启动脚本,本步骤中判断不存在标志文件zxve_already_exec时,则进行步骤606的处理流程。
当步骤602中判断本次指令内容为不执行后启动脚本,步骤604中判断虚拟机中存在后启动脚本,本步骤中判断存在标志文件zxve_already_exec时,本流程结束,退出该流程;
步骤606:系统调用执行后启动脚本;
步骤607:执行脚本完成,根据消息内容的times标志判断是否生成zxve_already_exec文件,如果是,则执行步骤608;否则,执行步骤609;
具体的,当times为0时,表示本次执行后启动脚本为初次执行,原虚拟机中不存在标志后启动脚本执行完毕的zxve_already_exec文件,则执行步骤608;生成zxve_already_exec文件;当executetimes为1时,本次执行后启动脚本为非初次执行,原虚拟机中存在标志后启动脚本执行完毕的zxve_already_exec文件,则执行步骤609;不生成zxve_already_exec文件。
步骤608:生成zxve_already_exec文件,执行步骤610;
步骤609:不生成zxve_already_exec文件;
步骤610:发送执行结果消息给主机代理;
消息格式可以是:zxve_msgid=vmpostscriptack;retcode=;
步骤611:本流程结束。
图7为本发明实施例虚拟机代理执行动态资源调整流程示意图,如图7所示,本发明实施例虚拟机代理执行动态资源调整流程包括以下步骤:
步骤701:虚拟机代理接收到主机代理的修改虚拟CPU(VCPU)数量消息;将接收到的消息进行解析;
其中,所述修改VCPU数量消息的格式为:zxve_msgid=vmcpureq active=;其中,active表示VCPU个数;
步骤702:根据消息中所包含的参数,进行VCPU数量调整;
根据消息中的active值,调整虚拟机中的VCPU。
步骤703:执行调整完成,发送执行结果消息给主机代理;
其中,所述执行结果消息格式:zxve_msgid=vmcpuack;retcode=;active=;
Retcode=0表示资源调整成功,Retcode=1表示资源调整失败;active的数值表示调整后的VCPU的数量。
本发明实施例还提供了一种基于硬件模拟的虚拟机通信装置,如图8所示,所述装置包括主机代理81、虚拟机代理82、虚拟化后端设备83、虚拟化前端设备84;其中,
所述主机代理81,用于通过消息指令与主机进行通信;
具体的,主机中的应用向消息总线85发送消息指令,消息总线85将所述消息指令发送到主机代理81;或者,主机代理81根据所述消息关键字和主机上的应用的注册信息,将消息指令转发给主机上的应用。
消息总线85接收主机上的应用发送的消息指令,并将所述消息指令发送到主机代理81;所述消息指令的来源可以是虚拟机所运行的主机上的应用,也可以为其它需要交互的主机中的应用;因此,所述主机上的应用包括虚拟机所运行的主机上的应用或者除虚拟机所运行主机以外的其它主机上的应用;所述消息总线85还接收来自其他主机的消息指令,并将所述消息指令发送到主机代理81。
在所述主机上的应用向消息总线85发送消息指令之前,所述主机代理81还用于接收主机上的应用的注册信息,向消息总线85注册并连接虚拟化后端设备83。
所述主机上的应用与消息总线85之间、消息总线85与主机代理81之间的通信通道可以是但不限于MBUS通道。
所述虚拟机代理82,用于通过消息指令与虚拟机进行通信;
具体的,虚拟机中的应用通过向虚拟机代理82发送消息指令,实现与虚拟机代理82之间的通信;或者,虚拟机代理82根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
在所述虚拟机上的应用向虚拟机代理82发送消息指令之前,所述虚拟机代理82还用于接收虚拟机上的应用的注册信息,并连接虚拟化前端设备84。
所述虚拟化后端设备83,用于与虚拟化前端设备84配合完成主机代理81和虚拟机代理82之间的通信;
具体的,所述虚拟化后端设备83,用于与主机代理81和虚拟化前端设备84进行通信,将接收到的来自主机代理81的消息指令发送到虚拟化前端设备84;或者,将接收到的来自虚拟化前端设备84的消息指令发送给主机代理81。
所述虚拟化前端设备84,用于与虚拟化后端设备83配合完成主机代理81和虚拟机代理82之间的通信;
具体的,所述虚拟化前端设备84,用于与虚拟机代理82和虚拟化后端设备83进行通信,将接收到的来自虚拟机代理82的消息指令发送到虚拟化后端设备83;或者,将接收到的来自虚拟化后端设备83的消息指令发送给虚拟机代理82。
所述虚拟化前端设备84和虚拟化后端设备83是根据虚拟化技术生成的虚拟通信设备,其中,虚拟化前端设备84可以为虚拟机中的串口,可以为但不限于虚拟输入输出/串口(VirtIO/Serial)设备,虚拟机代理通82过向该串口读写数据实现与虚拟化后端设备83的通信;虚拟化后端设备83为主机中的文件系统,可以为但不限于Unix套接字/TCP连接,主机代理81通过向该文件系统读写数据实现与虚拟化前端设备84的通信;在主机中,虚拟化前端设备84和虚拟化后端设备83共享同一文件系统。
所述主机代理81,还用于接收到主机上的应用发来的消息指令后,按照消息关键字判断所述消息指令为发送给虚拟机代理82的消息指令,就将所述消息指令发送到虚拟化后端设备83;其中,所述消息关键字可以是消息号或消息类型等。当主机代理81按照消息关键字和主机上的应用的注册信息判断所述消息指令为发送给主机上的应用的消息指令时,所述主机代理81还用于按照消息关键字将接收到的来自消息总线85的消息指令发送到主机上的应用;由此,可实现其他主机中的应用与虚拟机所在主机中的应用之间的通信,以及非虚拟机所运行主机中的应用与虚拟机中的应用之间的通信。
当所述装置用于主机与虚拟机的通信过程时,所述消息总线85还接收主机上的应用发送的消息指令,并将所述消息指令发送到主机代理81;
所述消息指令的来源可以是虚拟机所运行的主机上的应用,也可以为其它需要交互的主机中的应用;对应的,所述主机上的应用包括虚拟机所运行的主机上的应用、或者除虚拟机所运行主机以外的其它主机的应用。
所述主机代理81还用于接收消息总线85发送的消息指令;按照消息关键字将所述消息指令通过虚拟化后端设备83和虚拟化前端设备84将所述消息指令发送给虚拟机代理82;
主机代理81按照消息关键字和主机上的应用的注册信息判断所述消息指令为发送给主机上的应用的消息指令时,所述主机代理81还用于按照消息关键字将接收到来自消息总线85的消息指令发送到主机上的应用;由此,可实现不同主机中的应用之间的通信,以及非虚拟机所运行主机中的应用与虚拟机中的应用之间的通信。
所述虚拟机代理82还用于根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
当所述装置用于主机与虚拟机的通信过程时,
虚拟机代理82还用于接收虚拟机上的应用向发送的消息指令;并按照消息关键字通过虚拟化前端设备84和虚拟化后端设备83将所述消息指令发送给主机代理81;
所述主机代理81还用于按照所述消息关键字主机上的应用的注册信息,将所述消息指令发送给主机上的应用。
虚拟机代理82与主机代理81之间采用串口方式进行通信的过程中,所述虚拟机代理82还用于定时上报虚拟机性能数据;
所述虚拟机代理82还用于根据接收到的不同的消息类型,进入对应的消息处理函数,执行配置、和/或执行后启动脚本、和/或执行动态资源调整。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (12)
1.一种基于硬件模拟的虚拟机通信方法,其特征在于,在主机和虚拟机中分别设置主机代理和虚拟机代理;所述方法还包括:
主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信;
主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信;
启动主机上的主机代理,主机上的应用向主机代理注册,主机代理向消息总线注册,并连接虚拟化后端设备;
当主机代理按照消息关键字和主机上的应用的注册信息判断所述消息指令为发送给主机上的应用的消息指令时,所述主机代理按照消息关键字将接收到来自消息总线的消息指令发送到主机上的应用。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
启动虚拟机上的虚拟机代理,虚拟机上的应用向虚拟机代理注册,虚拟机代理连接虚拟化前端设备。
3.根据权利要求1所述方法,其特征在于,所述主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信,主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信,包括:
主机上的应用向消息总线发送消息指令,消息总线将所述消息指令发送给主机代理;
主机代理按照消息关键字通过虚拟化后端设备和虚拟化前端设备将所述消息指令发送给虚拟机代理;
虚拟机代理根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
4.根据权利要求1所述方法,其特征在于,所述主机和虚拟机分别通过消息指令与主机代理和虚拟机代理通信,主机代理和虚拟机代理之间通过虚拟化前端设备和虚拟化后端设备进行通信,包括:
虚拟机上的应用向虚拟机代理发送消息指令;
虚拟机代理按照消息关键字通过虚拟化前端设备和虚拟化后端设备将所述消息指令发送给主机代理;
主机代理根据消息关键字和主机上的应用注册信息,将所述消息指令发送给主机上的应用。
5.根据权利要求1至4任一项所述方法,其特征在于,所述方法还包括:所述虚拟机代理定时上报虚拟机性能数据。
6.根据权利要求1至4任一项所述方法,其特征在于,所述方法还包括:虚拟机代理根据接收到的不同的消息类型,进入对应的消息处理函数,执行配置、和/或执行后启动脚本、和/或执行动态资源调整。
7.一种基于硬件模拟的虚拟机通信装置,其特征在于,所述装置包括:主机代理、虚拟机代理、虚拟化后端设备、虚拟化前端设备;其中,
所述主机代理,用于通过消息指令与主机进行通信;
所述虚拟机代理,用于通过消息指令与虚拟机进行通信;
所述虚拟化后端设备,用于与虚拟化前端设备配合完成主机代理和虚拟机代理之间的通信;
所述虚拟化前端设备,用于与虚拟化后端设备配合完成主机代理和虚拟机代理之间的通信
所述主机代理,还用于接收主机上的应用的注册信息,并连接虚拟化后端设备;
所述主机代理按照消息关键字和主机上的应用的注册信息判断所述消息指令为发送给主机上的应用的消息指令时,所述主机代理还用于按照消息关键字接收到来自消息总线的消息指令发送到主机上的应用。
8.根据权利要求7所述装置,其特征在于,所述主机代理,还用于接收主机上的应用的注册信息,向消息总线注册,并连接虚拟化后端设备;
所述虚拟机代理,还用于接收虚拟机上的应用的注册信息,并连接虚拟化前端设备。
9.根据权利要求7所述装置,其特征在于,所述主机代理,还用于接收消息总线发来的消息指令,并按照消息关键字通过虚拟化后端设备和虚拟化前端设备将所述消息指令发送给虚拟机代理;
所述虚拟机代理,还用于根据所述消息关键字和虚拟机上的应用的注册信息,将所述消息指令发送给虚拟机上的应用。
10.根据权利要求7所述装置,其特征在于,所述虚拟机代理,还用于接收虚拟机上的应用向发送的消息指令;并按照消息关键字通过虚拟化前端设备和虚拟化后端设备将所述消息指令发送给主机代理;
所述主机代理,还用于按照所述消息关键字主机上的应用的注册信息,将所述消息指令发送给主机上的应用。
11.根据权利要求7至10任一项所述装置,其特征在于,所述虚拟机代理,还用于定时上报虚拟机性能数据。
12.根据权利要求7至10任一项所述装置,其特征在于,所述虚拟机代理,还用于根据接收到的不同的消息类型,进入对应的消息处理函数,执行配置、和/或执行后启动脚本、和/或执行动态资源调整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310565423.3A CN103780674B (zh) | 2013-11-13 | 2013-11-13 | 一种基于硬件模拟的虚拟机通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310565423.3A CN103780674B (zh) | 2013-11-13 | 2013-11-13 | 一种基于硬件模拟的虚拟机通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103780674A CN103780674A (zh) | 2014-05-07 |
CN103780674B true CN103780674B (zh) | 2017-05-31 |
Family
ID=50572489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310565423.3A Expired - Fee Related CN103780674B (zh) | 2013-11-13 | 2013-11-13 | 一种基于硬件模拟的虚拟机通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103780674B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092661B (zh) * | 2014-06-10 | 2017-09-26 | 深信服科技股份有限公司 | 虚拟机串口的通信方法及装置 |
CN106095702A (zh) * | 2016-06-02 | 2016-11-09 | 北京元心科技有限公司 | 移动终端、多系统间数据共享方法及装置 |
CN108512779B (zh) * | 2017-02-24 | 2020-11-27 | 华为技术有限公司 | 控制信息传递方法、服务器和系统 |
US11347531B2 (en) * | 2018-10-31 | 2022-05-31 | The Boeing Company | Generalized virtualization platform for systems using hardware abstraction software layers |
CN109714238B (zh) * | 2018-12-11 | 2021-08-10 | 上海云轴信息科技有限公司 | 一种用于实现虚拟机间通信的方法及设备 |
CN114327748B (zh) * | 2021-11-29 | 2022-10-18 | 北京志凌海纳科技有限公司 | 虚拟机交互方法、装置、非易失性存储介质及处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096589A1 (en) * | 2004-03-30 | 2005-10-13 | British Telecommunications Public Limited Company | Inter-agent communication |
CN102158535A (zh) * | 2011-02-10 | 2011-08-17 | 浪潮(北京)电子信息产业有限公司 | 一种云计算操作系统 |
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
-
2013
- 2013-11-13 CN CN201310565423.3A patent/CN103780674B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096589A1 (en) * | 2004-03-30 | 2005-10-13 | British Telecommunications Public Limited Company | Inter-agent communication |
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN102158535A (zh) * | 2011-02-10 | 2011-08-17 | 浪潮(北京)电子信息产业有限公司 | 一种云计算操作系统 |
Non-Patent Citations (1)
Title |
---|
基于virtio在虚拟机与主机之间传递消息;上善若水75;《CSDN.NET博客频道》;20130724;第1页至第4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103780674A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780674B (zh) | 一种基于硬件模拟的虚拟机通信方法和装置 | |
CN101849230B (zh) | 在多主机环境中共享遗留设备 | |
US9414433B2 (en) | System and method for remotely operating a wireless device using a server and client architecture | |
CN104967585B (zh) | 一种远程调试移动终端的方法和装置 | |
CN103178996B (zh) | 分布式包交换芯片模型验证系统及验证方法 | |
CN103139039A (zh) | 一种实现流量隔离控制的虚拟网络及构建方法 | |
CN104965700B (zh) | VxWorks操作系统下实现驱动SPI设备的方法和系统 | |
CN112671578B (zh) | 一种sriov虚拟化网络配置方法及相关装置 | |
WO2022032984A1 (zh) | 一种mqtt协议仿真方法及仿真设备 | |
CN105190530A (zh) | 传输硬件渲染的图形数据 | |
CN104102490B (zh) | 一种基于Windows服务实现CEN/XFS SP的方法 | |
US7469359B2 (en) | Method and apparatus for testing communication software | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
CN116681013B (zh) | 网络芯片的仿真验证方法、平台、装置、设备及介质 | |
WO2015131553A1 (zh) | 一种数据传输的方法和系统 | |
CN106896956B (zh) | 一种“道”系统下多点触控的实现方法 | |
CN107861803A (zh) | 一种基于中断的xp系统下cpci总线rs422通信驱动方法 | |
CN103546527B (zh) | 一种可扩展的工业组态或仿真软件通信方法 | |
CN112559264B (zh) | 基于uvm的验证平台实现fpga通用串口的仿真测试方法 | |
US7702764B1 (en) | System and method for testing network protocols | |
CN104331281B (zh) | 一种为lxi模块提供远程控制功能的代理服务系统及方法 | |
CN111240773A (zh) | 一种软件前端与后端连接方法 | |
CN109426545A (zh) | 一种数据通信方法及装置 | |
US20230185596A1 (en) | Method for controlling a distributed computer system and associated devices | |
CN102833175B (zh) | 基于异构操作系统的实时中继传输引擎及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170531 Termination date: 20191113 |
|
CF01 | Termination of patent right due to non-payment of annual fee |