CN112905304A - 一种虚拟机间通信方法、装置、物理主机及介质 - Google Patents

一种虚拟机间通信方法、装置、物理主机及介质 Download PDF

Info

Publication number
CN112905304A
CN112905304A CN202110250891.6A CN202110250891A CN112905304A CN 112905304 A CN112905304 A CN 112905304A CN 202110250891 A CN202110250891 A CN 202110250891A CN 112905304 A CN112905304 A CN 112905304A
Authority
CN
China
Prior art keywords
virtual machine
data packet
physical host
transmitted
original data
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.)
Granted
Application number
CN202110250891.6A
Other languages
English (en)
Other versions
CN112905304B (zh
Inventor
李波
朱民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202110250891.6A priority Critical patent/CN112905304B/zh
Publication of CN112905304A publication Critical patent/CN112905304A/zh
Application granted granted Critical
Publication of CN112905304B publication Critical patent/CN112905304B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种虚拟机间通信方法、装置、物理主机、介质,该方法包括:在监测到第一虚拟机对应的设备驱动对第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取第一虚拟机对应的目标共享内存中的待传输原数据包;基于待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址;基于第二物理主机的IP地址将待传输原数据包发送到第二物理主机,其中,待传输原数据包用于传输到第二虚拟机标识对应的第二虚拟机中。这样适应性强,不需要预留IP地址段,使用灵活。

Description

一种虚拟机间通信方法、装置、物理主机及介质
技术领域
本申请涉及通信技术领域,特别涉及一种虚拟机间通信方法、装置、物理主机、介质。
背景技术
随着硬件性能的提升,物理主机的计算能力得到大幅提升。但是,由于操作***对资源的使用不均,使得硬件性能得不到充分使用,导致计算资源严重浪费。在此情况下,虚拟化技术应运而生,虚拟化技术使得同一物理主机上可以同时运行多个相互独立的虚拟机,各虚拟机拥有完整的硬件设备,包括BIOS(Basic Input Output System,基本输入输出***)、CPU、内存、磁盘、网卡等。云计算以虚拟化技术为核心,为用户提供弹性资源,极大地提高了物理主机的资源利用率,降低了用户成本。在当前的云计算平台中,每个虚拟机一般只配备了一个网卡,用于用户进行网络通信。然而,现实中很多场景需要不同物理主机之上的虚拟机之间进行数据传输,而且需要保证虚拟机上的用户业务不被影响。例如,服务提供商的管理平台需要对客户的业务虚拟机进行管理操作,甚至需要将一些工具传输到虚拟机内部,如VMtools(Virtual Machine Tools,虚拟机工具)、安全工具。
为了实现上述示例中的需求,在当前的KVM(Kernel-based Virtual Machine,开源虚拟机)平台中,不同物理主机上虚拟机之间的通信方式有两种:其一是基于串口的数据通信,基于串口的数据通信需要在通信双方的虚拟机中直接指定对方的物理主机IP(Internet Protocol,网际互连协议)地址,一旦虚拟机迁移需要直接修改与其通信的各个虚拟机中配置的物理主机IP地址,所以针对规模大、灵活性强、动态自动化配置的云计算平台适应性差。其二是基于网络的数据通信,基于网络的数据通信需要为每个虚拟机配置专用网卡和预留IP段,管理复杂,需要用户的参与,使用不灵活。
发明内容
有鉴于此,本申请的目的在于提供一种虚拟机通信方法、装置、设备、介质,能够适应大规模、灵活性强、动态自动化配置的云计算平台,适应性强,且不需要预留IP地址段,使用灵活。其具体方案如下:
第一方面,本申请公开了一种虚拟机间通信方法,应用于运行有第一虚拟机的第一物理主机,包括:
在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包;
基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址;
基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。
可选地,所述基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,包括:
基于所述第二物理主机的IP地址将所述待传输原数据包封装成待传输网络数据包;
将所述待传输网络数据包发送到所述第二物理主机,其中,所述待传输网络数据包用于解析后传输到所述第二虚拟机标识对应的第二虚拟机中,所述第二虚拟机运行在所述第二物理主机上。
可选地,所述在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,还包括:
在所述第一物理主机上创建所述第一虚拟机时,从本地的预设共享内存体中确定出所述目标共享内存,并将所述目标共享内存分配给所述第一虚拟机;
为所述第一虚拟机分配事件通知文件,并将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中。
可选地,所述从本地的预设共享内存体中确定出所述目标共享内存的过程中,还包括:
在所述预设共享内存体的剩余内存空间小于所述第一虚拟机所需的内存大小时,动态扩展所述预设共享内存体。
可选地,所述将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中之后,还包括:
将所述目标共享内存的内存使用信息以及所述事件通知文件发送到所述第一虚拟机对应的PCIe设备中。
可选地,所述在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,还包括:
接收所述第一虚拟机所属的云平台管理***发送的虚拟机标识和所述虚拟机标识对应的物理主机IP地址;
基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表。
可选地,所述基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表之后,还包括:
创建所述虚拟机标识与服务器IP对照表对应的局部缓存表;
将所述虚拟机标识与服务器IP对照表中在过去预设时长内使用次数超过预设次数的表项存储到所述局部缓存表中。
可选地,所述基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机之后,还包括:
接收所述第二物理主机发送的确认网络数据包,其中,所述确认网络数据包为所述第二物理主机基于确认原数据包中的第一虚拟机标识对所述确认原数据包进行封装得到,所述确认原数据包用于确认所述第二虚拟机是否接收到所述待传输原数据包;
对所述确认网络数据包进行解析,得到所述确认原数据包;
基于所述确认原数据包中的所述第一虚拟机标识将所述确认原数据包传输至所述第一虚拟机中。
可选地,还包括:
接收除所述第一物理主机之外的其他物理主机发送的待处理网络数据包;
对所述待处理网络数据包进行解析,得到所述待处理网络数据包对应的待处理原数据包;
根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中;
对所述目的虚拟机***对应的目的虚拟中断,其中,所述目的虚拟中断用于触发所述目的虚拟机对应的目的设备驱动接收所述待处理原数据包。
可选地,所述根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中,包括:
根据所述待处理原数据包中的目的虚拟机标识确定出所述目的虚拟机标识对应的共享内存;
将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中的写环形缓冲队列中。
第二方面,本申请公开了一种虚拟机间通信装置,应用于运行有第一虚拟机的第一物理主机,包括:
数据读取模块,用于在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包;
IP地址确定模块,用于基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址;
数据包发送模块,用于基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。
第三方面,本申请公开了一种物理主机,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现前述公开的虚拟机间通信方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的虚拟机间通信方法。
可见,本申请在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包,然后基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址,接着便可以基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。由此可见,本申请中在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,便可以从第一虚拟机对应的共享内存中读取出所述待传输原数据包,并基于所述待传输原数据包中的第一虚拟机标识以及预设的虚拟机标识与服务器IP地址对照表确定出接收方的第二物理主机的PI地址,基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机上,所述第二物理主机便可以将所述待传输原数据包传输到所述第二虚拟机标识对应第二虚拟机中,这样不需要在虚拟机中直接配置通信双方的物理主机IP地址,只需要维护预设的虚拟机标识和服务器IP地址对照表,即可根据虚拟标识以及虚拟机标识和服务器IP地址对照表找到通信接收方的物理主机IP地址,能够适应大规模、灵活性强、动态自动化配置的云计算平台,适应性强,且虚拟机带有对应的虚拟机标识,虚拟机标识通过虚拟机标识和服务器IP地址对照表对应到物理主机IP地址,不需要预留IP地址段,虚拟机迁移、关闭或开启时,只需要维护虚拟机标识和服务器IP地址对照表,使用灵活。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种虚拟机间通信方法流程图;
图2为本申请公开的一种具体的虚拟机间通信方法部分流程图;
图3为本申请公开的一种具体的虚拟机间通信方法部分流程图;
图4为本申请公开的一种具体的虚拟机间通信方法部分流程图;
图5为本申请公开的一种具体的虚拟机间通信方法流程图;
图6为本申请公开的一种虚拟机间通信装置结构示意图;
图7为本申请公开的云虚拟化平台中跨物理机的虚拟机进程间高速通信方法架构图;
图8为本申请公开的共享内存管理示意图;
图9为本申请公开的PCIe设备初始化示意图;
图10为本申请公开的一种物理主机结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本申请实施例公开了一种虚拟机间通信方法,应用于运行有第一虚拟机的第一物理主机,该方法包括:
步骤S11:在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包。
在具体的实施过程中在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe(peripheral component interconnect express,高速外设部件互连标准)设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包,其中,所述待传输原数据包为所述第一虚拟机通过虚拟套接字与所述PCIe设备建立连接后写到所述PCIe设备中的PCIe内存的数据包,所述PCIe内存为所述目标共享内存在所述PCIe设备中的映射。
也即所述第一物理主机上的第一虚拟机需要向所述第一物理主机之外的第二物理主机上的第二虚拟机传输数据时,所述第一虚拟机先通过虚拟套接字(vsocket)与所述第一虚拟机对应的PCIe设备建立连接,将待传输原数据包写入到所述PCIe设备中的PCIe内存,并通过所述第一虚拟机对应的设备驱动对所述PCIe设备中的I/O(Input/Output,输入/输出)通知寄存器进行写操作,此时便可以由所述第一物理主机从所述第一虚拟机对应的目标共享内存中读取所述待传输原数据包,所述PCIe内存为所述目标共享内存在所述PCIe设备中的映射。其中,vsocket为虚拟套接字,一个匿名文件句柄,提供给应用程序使用。
这样需要发送数据的虚拟机只需要将待传输原数据包写入到对应的PCIe设备中的PCIe内存中,物理主机便可以从映射到PCIe内存的共享内存中读取待传输原数据包,由此虚拟机和物理主机之间通过共享内存实现了零拷贝的数据传输,提高了数据传输效率。
当云平台创建虚拟机时,云平台管理***为其分配唯一标识(virtual machineidentity,VMID,虚拟机标识),此标识伴随着虚拟机的整个生命周期,只有在虚拟机销毁时才被回收。物理主机的IP地址是固定的,物理主机之间以网络通信实现信息同步。
为让用户层应用程序使用所述设备驱动,设备驱动将所述PCIe设备封装成一个字符设备,并提供vsocket实现多进程并发读写数据。所述设备驱动还提供了一套内核态接口,可供内核模块直接调用。
具体的,所述第一虚拟机内部的应用程序通过PCIe设备上的寄存器可获取自身的第一虚拟机标识VMID),通过程序参数可以设定通信对端的第二虚拟机标识VMID。通过所述第一虚拟机标识VMID、发送方端口以及所述第二虚拟机标识VMID和接收方端口创建vsocket,并将待传输原数据包直接写入到所述第一虚拟机对应的PCIe设备的PCIe内存中。如此设计,虚拟套接字仅与发送方虚拟机标识、发送方端口、接收方虚拟机标识以及接收方端口相关,应用程序一旦启动,则不会因虚拟机的迁移而变动。
当所述第一虚拟机将所述待传输原数据包写到所述PCIe内存中时,所述第一虚拟机对应的设备驱动触发中断请求,对所述PCIe设备中的I/O通知寄存器进行写操作,此时触发所述第一物理主机从所述第一虚拟机对应的目标共享内存中读取所述待传输原数据包。由于所述PCIe设备中的PCIe内存为所述第一虚拟机对应的目标共享内存在所述PCIe设备中的映射,所以所述第一物理主机可以直接从所述目标共享内存中读取所述待传输原数据包,通过共享内存实现了所述第一虚拟机和所述第一物理主机之间的零拷贝数据传输,提高了数据传输效率。
在所述目标共享内存中包括一个读环形队列、一个写环形队列。每个环形队列有front和end两个指针。发送方操作end,接收方操作front,如此读写环形队列以无锁的方式实现,读写速度比有锁机制更高效。
步骤S12:基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址。
可以理解的是,读取出所述待传输原数据包之后,还需要基于所述待传输原数据包中的第二虚拟机标识以及所述预设的虚拟机标识与服务器IP地址对照表确定出接收方的第二物理主机的IP地址,所述第二虚拟机标识对应的第二虚拟机为所述第二物理主机上运行的接收方虚拟机。
具体的,读取出所述待传输原数据包之后,对所述待传输原数据包进行解析,根据所述待传输原数据包的包头中的第二虚拟机标识,搜索预设的虚拟机标识与服务器IP地址对照表获取到所述第二虚拟机标识对应的接收方的第二物理主机的IP地址。
在实际应用中,在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,还包括:接收所述第一虚拟机所属的云平台管理***发送的虚拟机标识和所述虚拟机标识对应的物理主机IP地址;基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表。
也即,所述第一虚拟机所属的云平台管理***会将整个云平台中的各个虚拟机标识以及各个虚拟机标识对应的宿主机的物理主机IP地址发送到所述云平台上的各个物理主机上,所述第一物理主机便需要获取所述云平台管理***发送的虚拟机标识和所述虚拟机标识对应的物理主机IP地址,并基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表。
实际应用中,需要在所述云平台管理***中,在云平台的虚拟化***中进行扩展,使其能够动态的截获虚拟机的启动、迁移和关闭等操作,这样每当有新的虚拟机被创建时,将此VMID以及此虚拟机所在物理主机的IP地址同步到云平台的每台物理主机上,以便更新虚拟机标识与服务器IP对照表。当虚拟机发生迁移时,同样会通知所有物理主机,让其更新虚拟机标识与服务器IP对照表,以保证信息的时效性。
在构建所述虚拟机标识与服务器IP对照表之后,还可以创建所述虚拟机标识与服务器IP对照表对应的局部缓存表;将所述虚拟机标识与服务器IP对照表中在过去预设时长内使用次数超过预设次数的表项存储到所述局部缓存表中。
也即,可以对所述虚拟机标识与服务器IP对照表创建局部缓存表,将所述虚拟机标识与服务器IP对照表中在过去预设时长内使用次数超过预设次数的表项存储到所述局部缓存表中。这样可以将所述虚拟机标识与服务器IP对照表中经常使用的表项存储到所述局部缓存表中,能够实现快速查询,有利于提高数据传输效率。
步骤S13:基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。
得到所述第二物理主机的IP地址之后,还需要基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,所述第二物理主机在接收到所述待传输原数据包之后,会将所述待传输原数据包传输到所述第二虚拟机标识对应的第二虚拟机中。
其中,基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,具体可以包括:基于所述第二物理主机的IP地址将所述待传输原数据包封装成待传输网络数据包;将所述待传输网络数据包发送到所述第二物理主机,其中,所述待传输网络数据包用于解析后传输到所述第二虚拟机标识对应的第二虚拟机中,所述第二虚拟机运行在所述第二物理主机上。
也即,先基于所述第二物理主机的IP地址将所述待传输原数据包封装成待传输网络数据包,然后将所述待传输网络数据包发送到所述第二物理主机,所述第二物理主机接收到所述待传输网络数据包之后,对所述待传输网路数据包进行解析,得到所述待传输原数据包,根据所述待传输原数据包中的所述第二虚拟机标识将所述待传输原数据包传输至所述第二虚拟机中。
可见,本申请在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包,然后基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址,接着便可以基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。由此可见,本申请中在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,便可以从第一虚拟机对应的共享内存中读取出所述待传输原数据包,并基于所述待传输原数据包中的第一虚拟机标识以及预设的虚拟机标识与服务器IP地址对照表确定出接收方的第二物理主机的PI地址,基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机上,所述第二物理主机便可以将所述待传输原数据包传输到所述第二虚拟机标识对应第二虚拟机中,这样不需要在虚拟机中直接配置通信双方的物理主机IP地址,只需要维护预设的虚拟机标识和服务器IP地址对照表,即可根据虚拟标识以及虚拟机标识和服务器IP地址对照表找到通信接收方的物理主机IP地址,能够适应大规模、灵活性强、动态自动化配置的云计算平台,适应性强,且虚拟机带有对应的虚拟机标识,虚拟机标识通过虚拟机标识和服务器IP地址对照表对应到物理主机IP地址,不需要预留IP地址段,虚拟机迁移、关闭或开启时,只需要维护虚拟机标识和服务器IP地址对照表,使用灵活。
参见图2所示,在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,还包括:
步骤S21:在所述第一物理主机上创建所述第一虚拟机时,从本地的预设共享内存体中确定出所述目标共享内存,并将所述目标共享内存分配给所述第一虚拟机。
在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,会在所述第一物理主机上创建所述第一虚拟机,并进行相关的配置,以便所述第一虚拟机和所述第一物理主机更够实现前述的虚拟机通信方法。
具体的,需要在所述第一物理主机上创建所述第一虚拟机时,从本地的预设共享内存体中确定出所述目标共享内存,并将所述目标共享内存分配给所述第一虚拟机。
在从本地的预设共享内存体中确定出所述目标共享内存的过程中,还包括:在所述预设共享内存体的剩余内存空间小于所述第一虚拟机所需的内存大小时,动态扩展所述预设共享内存体。也即,当所述预设共享内存体中的剩余内存空间不足时,可以动态地扩大预设共享内存体的内存大小,以便后续启动的虚拟机有足够的资源创建与所述第一物理主机之间基于共享内存的通道。
在所述第一物理主机上创建所述第一虚拟机时,所述第一物理主机还会接受所述云平台管理***发送的所述第一虚拟机标识以及所述第一物理主机的IP地址,并将所述一虚拟机标识以及所述第一物理主机的IP地址更新到所述虚拟机标识与服务器IP对照表中。
步骤S22:为所述第一虚拟机分配事件通知文件,并将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中,其中,所述内存使用信息包括所述目标共享内存的起始地址和内存大小,所述内存使用信息表用于在所述第一虚拟机关闭时或从所述第一物理主机上迁移时进行资源回收。
此外,还需要为所述第一虚拟机分配事件通知文件(eventfd),并将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中。其中,所述内存使用信息包括所述目标共享内存的起始地址和内存大小。所述内存使用信息表用于在所述第一虚拟机关闭或者从所述第一物理主机上迁移到其他物理主机上时,进行共享内存的资源回收。
步骤S23:将所述目标共享内存的内存使用信息以及所述事件通知文件发送到所述第一虚拟机对应的PCIe设备中,其中,所述内存使用信息用于将所述目标共享内存映射到所述PCIe设备中的PCIe内存,所述事件通知文件用于为所述第一虚拟机注册虚拟中断。
还需要将所述目标共享内存的内存使用信息以及所述事件通知文件发送到所述第一虚拟机对应的PCIe设备中,其中,所述内存使用信息用于将所述目标共享内存映射到所述PCIe设备中的PCIe内存,所述事件通知文件用于为所述第一虚拟机注册虚拟中断。
所述第一虚拟机启动时会指定一个Unix socket文件,与所述第一物理主机中负责所述目标共享内存分配的部分建立连接,并传递数据。连接建立后,将所述目标共享内存的内存使用信息、所述事件通知文件等信息发送给所述PCIe设备中。所述PCIe设备根据所述目标共享内存的内存使用信息将所述目标共享内存映射给所述PCIe内存,并将所述事件通知文件eventfd注册为第一虚拟机的虚拟中断,用于虚拟机信息同步。还可以将所述虚拟中断和所述第一虚拟机标识存储到事件信息表中,以便根据事件信息表向虚拟机注入相应的虚拟中断,可触发虚拟机内部驱动程序接收数据包。
在实际应用中,所述PCIe设备中以寄存器的方式为第一虚拟机内部提供PCIe设备的配置信息和参数信息,比如所述目标共享内存的内存大小、所述第一虚拟机的第一虚拟机标识、INTx中断、中断数量和类型等。所述PCIe设备提供的信息一部分被所述设备驱动初始化时使用,一部分用于上层应用程序连接建立时使用,比如所述第一虚拟机标识等。
为了实现用户层的高效通信,利用UIO(Userspace I/O,运行在用户空间的I/O技术)框架构建所述设备驱动,其中,所述设备驱动包括用户态驱动和内核态驱动,所述用户态驱动封装用户层对所述设备驱动的使用,所述内核态驱动负责所述设备驱动的注册和中断处理。也即,可采用UIO框架实现所述设备驱动,所述设备驱动以分离的方式实现:用户态和内核态。内核态驱动负责所述设备驱动的注册以及中断处理。用户态驱动封装对所述设备驱动的使用。
参见图3所示,基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机之后,还包括:
步骤S31:接收所述第二物理主机发送的确认网络数据包,其中,所述确认网络数据包为所述第二物理主机基于确认原数据包中的第一虚拟机标识对所述确认原数据包进行封装得到,所述确认原数据包用于确认所述第二虚拟机是否接收到所述待传输原数据包。
步骤S32:对所述确认网络数据包进行解析,得到所述确认原数据包。
步骤S33:基于所述确认原数据包中的所述第一虚拟机标识将所述确认原数据包传输至所述第一虚拟机中。
在所述第一物理主机将所述待传输网络数据包发送给所述第二物理主机后,所述第二物理主机上的第二虚拟机还会向所述第一物理主机上的所述第一虚拟机返回确认原数据包,用于确定所述第二虚拟机是否接收到所述待传输原数据包。
具体的,就是所述第二虚拟机将确认原数据包写入到所述第二虚拟机对应的PCIe设备的PCIe内存中,所述第二物理主机对所述确认原数据包进行解析,得到所述确认原数据包的包头中的第一虚拟机标识,基于所述第一虚拟机标识和所述第二物理主机上预设的虚拟机标识与服务器IP对照表找到所述第一虚拟机标识对应的所述第一物理主机的IP地址,利用所述第一物理主机的IP地址将所述确认原数据包封装成确认网络数据包,并通过网络将所述确认网络数据包发送给所述第一物理主机,所述第一物理主机需要接收所述确认网络数据包。
接收到所述确认网络数据包后,对所述确认网络数据包进行解析,得到所述确认原数据包,然后基于所述确认原数据包的包头中的所述第一虚拟机标识将所述确认原数据包发送到所述第一虚拟机中,以便所述第一虚拟机确定所述第二虚拟机是否接收到所述待传输原数据包。如果未接收到所述待传输原数据包,需要再次向所述第二虚拟机发送所述待传输原数据包。
参见图4所示,所述虚拟机间通信方法,还包括:
步骤S41:接收除所述第一物理主机之外的其他物理主机发送的待处理网络数据包。
步骤S42:对所述待处理网络数据包进行解析,得到所述待处理网络数据包对应的待处理原数据包。
步骤S43:根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中。
步骤S44:对所述目的虚拟机***对应的目的虚拟中断,其中,所述目的虚拟中断用于触发所述目的虚拟机对应的目的设备驱动接收所述待处理原数据包。
所述第一物理主机还需要接收除了自身之外的其他物理主机发送的待处理网络数据包,接收到所述待处理网络数据包之后,对所述待处理网络数据包进行解析,得到待处理原数据包,并根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中,然后对所述目标虚拟机***对应的目的虚拟中断,其中,所述目的虚拟中断用于触发所述目的虚拟机对应的目的设备驱动接收所述待处理原数据包。
具体的,得到所述待处理原数据包之后,根据所述待处理原数据包中的目的虚拟机标识确定出所述目的虚拟机标识对应的共享内存;将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中的写环形缓冲队列中。根据所述待处理原数据包中的目的虚拟机标识以及所述内存使用信息表确定出所述目的虚拟机标识对应的目的虚拟机对应的共享内存,并将所述待处理原数据包写入到所述目的虚拟机对应的共享内存的写环形队列中,然后基于所述事件信息表确定出所述目的虚拟机对应的虚拟中断,并为所述目的虚拟机***所述目的虚拟机对应的虚拟中断,触发所述目的虚拟机对应的设备驱动接收所述待处理原数据包,其中,所述待处理原数据包从所述写环形队列中读出来之后,可以先缓存到所述目的虚拟机的对应的虚拟套接字对应的接收缓存队列中,以便所述写环形队列还可以接收所述目的虚拟机中的其他虚拟套接字对应的待处理原数据包。
参见图5所示,为虚拟机间通信流程图。虚拟机发送方APP(Application,应用程序)调用lib库创建包括所述虚拟机发送方APP所处的虚拟机标识、端口、虚拟机接收方APP所处的虚拟机标识、端口的虚拟套接字vsocket,虚拟机发送方APP通过虚拟套接字vsocket链接写入待传输原数据包,物理主机A的数据包转发模块获取所述虚拟机接收方APP所处的虚拟机标识,查询虚拟机标识与服务器IP对照表得到接收方的物理主机B的IP地址,将封装成待传输网络数据包并发送所述待传输网络数据包到物理主机B的数据转发模块,所述物理主机B的数据转发模块解析所述待传输网络数据包的包头,获取到虚拟机接收方APP所处的虚拟机标识,查询所述事件信息表得到所述虚拟机接收方APP所处的虚拟机标识对应的虚拟中断ioeventfd,将解析得到的待传输原数据包写到所述虚拟机接收方APP所处的虚拟机标识对应的共享内存中的写环形队列中,触发所述虚拟机接收方APP所处的虚拟机标识对应的虚拟中断ioeventfd,所述虚拟机接收方APP所处的虚拟机处理中断,从所述写环形队列中读取所述待传输原数据包,所述虚拟机接收方APP所处的虚拟机进行连接确认,并发送确认原数据包,所述确认原数据包的发送过程与所述物理主机A的转发模块发送所述待传输原数据包的处理过程相同,所以在此不再进行赘述。再次之后,所述虚拟机发送方APP再向所述虚拟机接收方APP发送数据时,不需要再建立虚拟套接字连接,所述虚拟机接收方APP处理所述写环形队列中的数据包时,可以将不能及时处理的原数据包丢弃,并要求所述虚拟机发送方APP重传。
参见图6所示,本申请实施例公开了一种虚拟机间通信装置,应用于运行有第一虚拟机的第一物理主机,包括:
数据读取模块11,用于在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包;
IP地址确定模块12,用于基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址;
数据包发送模块13,用于基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。
可见,本申请在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包,然后基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址,接着便可以基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。由此可见,本申请中在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,便可以从第一虚拟机对应的共享内存中读取出所述待传输原数据包,并基于所述待传输原数据包中的第一虚拟机标识以及预设的虚拟机标识与服务器IP地址对照表确定出接收方的第二物理主机的PI地址,基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机上,所述第二物理主机便可以将所述待传输原数据包传输到所述第二虚拟机标识对应第二虚拟机中,这样不需要在虚拟机中直接配置通信双方的物理主机IP地址,只需要维护预设的虚拟机标识和服务器IP地址对照表,即可根据虚拟标识以及虚拟机标识和服务器IP地址对照表找到通信接收方的物理主机IP地址,能够适应大规模、灵活性强、动态自动化配置的云计算平台,适应性强,且虚拟机带有对应的虚拟机标识,虚拟机标识通过虚拟机标识和服务器IP地址对照表对应到物理主机IP地址,不需要预留IP地址段,虚拟机迁移、关闭或开启时,只需要维护虚拟机标识和服务器IP地址对照表,使用灵活。
在一些具体的实施例中,所述数据包发送模块13,用于:
基于所述第二物理主机的IP地址将所述待传输原数据包封装成待传输网络数据包;
将所述待传输网络数据包发送到所述第二物理主机,其中,所述待传输网络数据包用于解析后传输到所述第二虚拟机标识对应的第二虚拟机中,所述第二虚拟机运行在所述第二物理主机上。
在一些具体的实施例中,所述虚拟机通信装置,还包括:
通道资源管理模块,用于在所述第一物理主机上创建所述第一虚拟机时,从本地的预设共享内存体中确定出所述目标共享内存,并将所述目标共享内存分配给所述第一虚拟机;为所述第一虚拟机分配事件通知文件,并将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中。
在一些具体的实施例中,所述通道资源管理模块,用于:
在所述预设共享内存体的剩余内存空间小于所述第一虚拟机所需的内存大小时,动态扩展所述预设共享内存体。
在一些具体的实施例中,所述通道资源管理模块,用于:
将所述目标共享内存的内存使用信息以及所述事件通知文件发送到所述第一虚拟机对应的PCIe设备中。
在一些具体的实施例中,所述虚拟机通信装置,还包括:
IP地址接收模块,用于接收所述第一虚拟机所属的云平台管理***发送的虚拟机标识和所述虚拟机标识对应的物理主机IP地址;
对照表创建模块,用于基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表。
在一些具体的实施例中,所述对照表创建模块,用于:
创建所述虚拟机标识与服务器IP对照表对应的局部缓存表;
将所述虚拟机标识与服务器IP对照表中在过去预设时长内使用次数超过预设次数的表项存储到所述局部缓存表中。
在一些具体的实施例中,所述虚拟机通信装置,还包括:
数据包接收模块,用于接收所述第二物理主机发送的确认网络数据包,其中,所述确认网络数据包为所述第二物理主机基于确认原数据包中的第一虚拟机标识对所述确认原数据包进行封装得到,所述确认原数据包用于确认所述第二虚拟机是否接收到所述待传输原数据包;对所述确认网络数据包进行解析,得到所述确认原数据包;基于所述确认原数据包中的所述第一虚拟机标识将所述确认原数据包传输至所述第一虚拟机中。
在一些具体的实施例中,所述数据包接收模块,还用于:
接收除所述第一物理主机之外的其他物理主机发送的待处理网络数据包;
对所述待处理网络数据包进行解析,得到所述待处理网络数据包对应的待处理原数据包;
根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中;
对所述目的虚拟机***对应的目的虚拟中断,其中,所述目的虚拟中断用于触发所述目的虚拟机对应的目的设备驱动接收所述待处理原数据包。
在一些具体的实施例中,所述数据包接收模块,用于:
根据所述待处理原数据包中的目的虚拟机标识确定出所述目的虚拟机标识对应的共享内存;
将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中的写环形缓冲队列中。
参见7所述,为云虚拟化平台中跨物理机的虚拟机进程间高速通信方法架构图。前述的第一物理主机包括图中的宿主机操作***(Host OS)和物理机器。图7中的数据包转发模块对应的上述的虚拟机间通信装置中的数据读取模块11、IP地址确定模块12、数据包发送模块13、IP地址接收模块、对照表创建模块、数据包接收模块。图中的通道资源管理也即上述的虚拟机间通信装置中的通道资源管理模块。客户虚拟机(Guest VM)运行于Qemu上,包括客户操作***和其上的APP。图中的PCIe设备模拟和资源映射,也即,前述的PCIe设备。图中的KVM扩展用于扩展虚拟机的启动、迁移和关闭等操作。云平台管理***中的虚拟机管理用于云平台中的虚拟机进行管理,为虚拟机分配虚拟机标识,将虚拟机标识与对应的物理主机的IP地址发送到云平台中的各个物理主机上。
参见8所示,为共享内存管理示意图。图7中的通道管理模块包括共享内存体管理模块和内存使用信息表,所述通道管理模块根据KVM扩展的虚拟机更新操作更新内存使用信息表。所述通道管理模块将预设共享内存体中的共享内存分配给对应的虚拟机,并在虚拟机关闭时回收对应的共享内存,各个虚拟机对应的共享内存又被映射到PCIe设备的内存资源中的PCIe内存上。
参见图9所示,PCIe设备初始化示意图。物理主机的宿主机操作***(Host OS)中维护事件信息表,事件信息表中包括各个虚拟机的虚拟机标识(VMID)以及对应的虚拟中断(ioeventfd)。以及虚拟机环形队列结构体列表,包括各个虚拟机对应的写环形队列信息结构体(W-Rque信息结构体)和读环形队列信息结构体(R-Rque信息结构体)。PCIe设备中包括寄存器和虚拟中断(ioeventfd)注册模块,以及设备的内存资源,用于映射对应的共享内存,虚拟机对应的设备驱动中包括中断申请和注册模块,写环形队列信息结构体(W-Rque信息结构体)和读环形队列信息结构体(R-Rque信息结构体)用于管理对应的写环形队列和读环形队列。
参见图10所示,为本申请实施例提供的一种物理主机20的结构示意图,该物理主机20可以实现前述实施例中公开的虚拟机通信方法步骤。
通常,本实施例中的物理主机20包括:处理器21和存储器22。
其中,处理器21可以包括一个或多个处理核心,比如四核心处理器、八核心处理器等。处理器21可以采用DSP(digital signal processing,数字信号处理)、FPGA(field-programmable gate array,现场可编程们阵列)、PLA(programmable logic array,可编程逻辑阵列)中的至少一种硬件来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有GPU(graphics processing unit,图像处理器),GPU用于负责显示屏所需要显示的图像的渲染和绘制。一些实施例中,处理器21可以包括AI(artificialintelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器22可以包括一个或多个计算机可读存储介质,计算机可读存储介质可以是非暂态的。存储器22还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器22至少用于存储以下计算机程序221,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例中公开的虚拟机间通信方法步骤。
在一些实施例中,物理主机20还可包括有显示屏23、输入输出接口24、通信接口25、传感器26、电源27以及通信总线28。
本技术领域人员可以理解,图10中示出的结构并不构成对物理主机20的限定,可以包括比图示更多或更少的组件。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的虚拟机间通信方法。
其中,关于上述虚拟机间通信方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种虚拟机间通信方法、装置、物理主机、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (13)

1.一种虚拟机间通信方法,其特征在于,应用于运行有第一虚拟机的第一物理主机,包括:
在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包;
基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址;
基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。
2.根据权利要求1所述的虚拟机间通信方法,其特征在于,所述基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,包括:
基于所述第二物理主机的IP地址将所述待传输原数据包封装成待传输网络数据包;
将所述待传输网络数据包发送到所述第二物理主机,其中,所述待传输网络数据包用于解析后传输到所述第二虚拟机标识对应的第二虚拟机中,所述第二虚拟机运行在所述第二物理主机上。
3.根据权利要求1所述的虚拟机间通信方法,其特征在于,所述在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,还包括:
在所述第一物理主机上创建所述第一虚拟机时,从本地的预设共享内存体中确定出所述目标共享内存,并将所述目标共享内存分配给所述第一虚拟机;
为所述第一虚拟机分配事件通知文件,并将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中。
4.根据权利要求3所述的虚拟机间通信方法,其特征在于,所述从本地的预设共享内存体中确定出所述目标共享内存的过程中,还包括:
在所述预设共享内存体的剩余内存空间小于所述第一虚拟机所需的内存大小时,动态扩展所述预设共享内存体。
5.根据权利要求3所述的虚拟机间通信方法,其特征在于,所述将所述第一虚拟机的第一虚拟机标识、所述目标共享内存的内存使用信息以及所述事件通知文件的文件标识存储到预设的内存使用信息表中之后,还包括:
将所述目标共享内存的内存使用信息以及所述事件通知文件发送到所述第一虚拟机对应的PCIe设备中。
6.根据权利要求1所述的虚拟机间通信方法,其特征在于,所述在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包之前,还包括:
接收所述第一虚拟机所属的云平台管理***发送的虚拟机标识和所述虚拟机标识对应的物理主机IP地址;
基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表。
7.根据权利要求6所述的虚拟机间通信方法,其特征在于,所述基于所述虚拟机标识和所述虚拟机标识对应的物理主机IP地址构建所述虚拟机标识与服务器IP对照表之后,还包括:
创建所述虚拟机标识与服务器IP对照表对应的局部缓存表;
将所述虚拟机标识与服务器IP对照表中在过去预设时长内使用次数超过预设次数的表项存储到所述局部缓存表中。
8.根据权利要求1所述的虚拟机间通信方法,其特征在于,所述基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机之后,还包括:
接收所述第二物理主机发送的确认网络数据包,其中,所述确认网络数据包为所述第二物理主机基于确认原数据包中的第一虚拟机标识对所述确认原数据包进行封装得到,所述确认原数据包用于确认所述第二虚拟机是否接收到所述待传输原数据包;
对所述确认网络数据包进行解析,得到所述确认原数据包;
基于所述确认原数据包中的所述第一虚拟机标识将所述确认原数据包传输至所述第一虚拟机中。
9.根据权利要求1至8任一项所述的虚拟机间通信方法,其特征在于,还包括:
接收除所述第一物理主机之外的其他物理主机发送的待处理网络数据包;
对所述待处理网络数据包进行解析,得到所述待处理网络数据包对应的待处理原数据包;
根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中;
对所述目的虚拟机***对应的目的虚拟中断,其中,所述目的虚拟中断用于触发所述目的虚拟机对应的目的设备驱动接收所述待处理原数据包。
10.根据权利要求9所述的虚拟机间通信方法,其特征在于,所述根据所述待处理原数据包中的目的虚拟机标识将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中,包括:
根据所述待处理原数据包中的目的虚拟机标识确定出所述目的虚拟机标识对应的共享内存;
将所述待处理原数据包存储到所述目的虚拟机标识对应的共享内存中的写环形缓冲队列中。
11.一种虚拟机间通信装置,其特征在于,应用于运行有第一虚拟机的第一物理主机,包括:
数据读取模块,用于在监测到所述第一虚拟机对应的设备驱动对所述第一虚拟机对应的PCIe设备中的I/O通知寄存器进行写操作时,读取所述第一虚拟机对应的目标共享内存中的待传输原数据包;
IP地址确定模块,用于基于所述待传输原数据包中的第二虚拟机标识以及预设的虚拟机标识与服务器IP对照表确定出接收方的第二物理主机的IP地址;
数据包发送模块,用于基于所述第二物理主机的IP地址将所述待传输原数据包发送到所述第二物理主机,其中,所述待传输原数据包用于传输到所述第二虚拟机标识对应的第二虚拟机中。
12.一种物理主机,其特征在于,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现权利要求1至10任一项所述的虚拟机间通信方法。
13.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述的虚拟机间通信方法。
CN202110250891.6A 2021-03-08 2021-03-08 一种虚拟机间通信方法、装置、物理主机及介质 Active CN112905304B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110250891.6A CN112905304B (zh) 2021-03-08 2021-03-08 一种虚拟机间通信方法、装置、物理主机及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110250891.6A CN112905304B (zh) 2021-03-08 2021-03-08 一种虚拟机间通信方法、装置、物理主机及介质

Publications (2)

Publication Number Publication Date
CN112905304A true CN112905304A (zh) 2021-06-04
CN112905304B CN112905304B (zh) 2024-07-09

Family

ID=76108268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110250891.6A Active CN112905304B (zh) 2021-03-08 2021-03-08 一种虚拟机间通信方法、装置、物理主机及介质

Country Status (1)

Country Link
CN (1) CN112905304B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114448939A (zh) * 2022-04-07 2022-05-06 广州市保伦电子有限公司 一种基于VirtualBox的获取宿主机IP地址的方法及后台服务器
WO2022261881A1 (zh) * 2021-06-17 2022-12-22 华为技术有限公司 一种网卡管理***、报文处理方法及设备
CN116107697A (zh) * 2023-01-04 2023-05-12 芯动微电子科技(武汉)有限公司 一种不同操作***之间互相通信的方法及***
CN117931381A (zh) * 2024-03-25 2024-04-26 成都菁蓉联创科技有限公司 一种基于ivshmem技术的端对端通讯方法

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
US20110320556A1 (en) * 2010-06-29 2011-12-29 Microsoft Corporation Techniques For Migrating A Virtual Machine Using Shared Storage
CN103559075A (zh) * 2013-10-30 2014-02-05 华为技术有限公司 一种数据传输方法、装置和***及内存装置
US20160285826A1 (en) * 2015-03-27 2016-09-29 International Business Machines Corporation Creating network isolation between virtual machines
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和***
WO2017067391A1 (zh) * 2015-10-22 2017-04-27 中兴通讯股份有限公司 虚拟机的数据共享方法及装置
CN108900324A (zh) * 2018-06-13 2018-11-27 平安科技(深圳)有限公司 校验虚拟机通信性能的方法及装置
US20190163509A1 (en) * 2017-11-27 2019-05-30 Parallels International Gmbh Virtual machine to host communication channel
WO2019161557A1 (zh) * 2018-02-24 2019-08-29 华为技术有限公司 一种通信的方法及装置
US20190273683A1 (en) * 2018-03-01 2019-09-05 Nicira, Inc. Generic communication channel for information exchange between a hypervisor and a virtual machine
CN110908770A (zh) * 2019-11-05 2020-03-24 安超云软件有限公司 虚拟机的运行及创建方法、虚拟机及虚拟机化管理平台
CN111427662A (zh) * 2020-03-23 2020-07-17 深信服科技股份有限公司 虚拟机的ip地址的分配方法、终端设备及dhcp服务器
CN111988230A (zh) * 2020-08-19 2020-11-24 海光信息技术有限公司 虚拟机通信方法、装置、***及电子设备
CN112052100A (zh) * 2019-06-06 2020-12-08 华为技术有限公司 基于共享内存的虚拟机通信方法及设备

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
US20110320556A1 (en) * 2010-06-29 2011-12-29 Microsoft Corporation Techniques For Migrating A Virtual Machine Using Shared Storage
CN103559075A (zh) * 2013-10-30 2014-02-05 华为技术有限公司 一种数据传输方法、装置和***及内存装置
US20160285826A1 (en) * 2015-03-27 2016-09-29 International Business Machines Corporation Creating network isolation between virtual machines
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和***
WO2017067391A1 (zh) * 2015-10-22 2017-04-27 中兴通讯股份有限公司 虚拟机的数据共享方法及装置
US20190163509A1 (en) * 2017-11-27 2019-05-30 Parallels International Gmbh Virtual machine to host communication channel
WO2019161557A1 (zh) * 2018-02-24 2019-08-29 华为技术有限公司 一种通信的方法及装置
US20190273683A1 (en) * 2018-03-01 2019-09-05 Nicira, Inc. Generic communication channel for information exchange between a hypervisor and a virtual machine
CN108900324A (zh) * 2018-06-13 2018-11-27 平安科技(深圳)有限公司 校验虚拟机通信性能的方法及装置
CN112052100A (zh) * 2019-06-06 2020-12-08 华为技术有限公司 基于共享内存的虚拟机通信方法及设备
CN110908770A (zh) * 2019-11-05 2020-03-24 安超云软件有限公司 虚拟机的运行及创建方法、虚拟机及虚拟机化管理平台
CN111427662A (zh) * 2020-03-23 2020-07-17 深信服科技股份有限公司 虚拟机的ip地址的分配方法、终端设备及dhcp服务器
CN111988230A (zh) * 2020-08-19 2020-11-24 海光信息技术有限公司 虚拟机通信方法、装置、***及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱团结;艾丽蓉;: "基于共享内存的Xen虚拟机间通信的研究", 计算机技术与发展, no. 07, 10 July 2011 (2011-07-10) *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022261881A1 (zh) * 2021-06-17 2022-12-22 华为技术有限公司 一种网卡管理***、报文处理方法及设备
CN114448939A (zh) * 2022-04-07 2022-05-06 广州市保伦电子有限公司 一种基于VirtualBox的获取宿主机IP地址的方法及后台服务器
CN114448939B (zh) * 2022-04-07 2022-07-05 广州市保伦电子有限公司 一种基于VirtualBox的获取宿主机IP地址的方法及后台服务器
CN116107697A (zh) * 2023-01-04 2023-05-12 芯动微电子科技(武汉)有限公司 一种不同操作***之间互相通信的方法及***
CN116107697B (zh) * 2023-01-04 2023-10-31 芯动微电子科技(武汉)有限公司 一种不同操作***之间互相通信的方法及***
CN117931381A (zh) * 2024-03-25 2024-04-26 成都菁蓉联创科技有限公司 一种基于ivshmem技术的端对端通讯方法

Also Published As

Publication number Publication date
CN112905304B (zh) 2024-07-09

Similar Documents

Publication Publication Date Title
WO2018120986A1 (zh) 转发报文的方法和物理主机
US11372802B2 (en) Virtual RDMA switching for containerized applications
US11500689B2 (en) Communication method and apparatus
CN112905304B (zh) 一种虚拟机间通信方法、装置、物理主机及介质
US11960430B2 (en) Remote mapping method, apparatus and device for computing resources, and storage medium
CN111431757B (zh) 虚拟网络的流量采集方法及装置
WO2013049990A1 (en) Live logical partition migration with stateful offload connections using context extraction and insertion
US20180027074A1 (en) System and method for storage access input/output operations in a virtualized environment
CN104618155A (zh) 一种虚拟机容错的方法、装置及***
CN107678835A (zh) 一种数据传输方法及***
US9069592B2 (en) Generic transport layer mechanism for firmware communication
WO2022143714A1 (zh) 服务器***、虚拟机创建方法及装置
US20220050795A1 (en) Data processing method, apparatus, and device
CN115309511B (zh) 基于Xen的数据交互方法、装置、存储介质以及电子设备
WO2018000195A1 (zh) 一种报文传输方法、虚拟交换机及服务器
WO2012088893A1 (zh) 显示驱动处理方法、装置和***
CN111262771B (zh) 虚拟私有云通信***、***配置方法及控制器
CN112910910B (zh) Opcda协议报文处理方法、装置、设备以及存储介质
US11979459B1 (en) Configuration of data connections between a host and a shared network adapter
CN102752223B (zh) 并行***间数据传输方法及其***
CN116743587B (zh) 一种基于异构计算加速卡的虚拟网络接口实现方法及装置
WO2022222977A1 (zh) 用于运行云业务实例的物理服务器的内存管理方法和装置
WO2023230766A1 (zh) 一种数据传输方法及虚拟化***
CN117234751A (zh) 一种跨分区进程的通讯方法、装置、电子设备和存储介质
CN116647524A (zh) 加速单元、宿主机、计算装置、片上***和相关方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant