CN111988230A - 虚拟机通信方法、装置、系统及电子设备 - Google Patents
虚拟机通信方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN111988230A CN111988230A CN202010840308.2A CN202010840308A CN111988230A CN 111988230 A CN111988230 A CN 111988230A CN 202010840308 A CN202010840308 A CN 202010840308A CN 111988230 A CN111988230 A CN 111988230A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- target
- machine
- shared memory
- data packet
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
- H04L49/602—Multilayer or multiprotocol switching, e.g. IP switching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种虚拟机通信方法、装置、系统及电子设备,其中,该方法包括:源虚拟机在发送目标数据包时,判断目标数据包对应的目标虚拟机的目标局域网地址是否为源虚拟机所在的物理机的其它虚拟机的局域网地址;若目标局域网地址是物理机的其它虚拟机的局域网地址,则在源虚拟机和目标虚拟机中热插入共享内存之后,源虚拟机通过共享内存,将目标数据包从源虚拟机传输至目标虚拟机。能够提高虚拟机之间的通信效率。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种虚拟机通信方法、装置、系统及电子设备。
背景技术
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。但是,目前虚拟机的通信时通过虚拟机所在的宿主机来实现,目前这种通信方式路径相对较长。
发明内容
本申请的目的在于提供一种虚拟机通信方法、装置、系统及电子设备,能够提高虚拟机之间的通信效率。
第一方面,本申请实施例提供一种虚拟机通信方法,包括:
源虚拟机在发送目标数据包时,判断所述目标数据包对应的目标虚拟机的目标局域网地址是否为所述源虚拟机所在的物理机的其它虚拟机的局域网地址;
若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述源虚拟机和所述目标虚拟机中热插入共享内存之后,所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机。
在一可选的实施方式中,所述方法还包括:
所述源虚拟机向宿主机申请所述共享内存,以使所述宿主机在所述源虚拟机和所述目标虚拟机中热插入所述共享内存。
在本申请实施例中,通过源虚拟机在需要的时候申请共享内存,从而可以在需要的得到内存,减少内存的浪费,提供共享内存的利用率。
在一可选的实施方式中,所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机,包括:
所述源虚拟机将所述目标数据包存入所述共享内存中;
所述目标虚拟机在监控到所述共享内存中存入的所述目标数据包时,从所述共享内存中读取所述目标数据包。
在本申请实施例中,通过写入数据与读取数据的方式,从而可以通过简单的方式实现虚拟机之间的通信。
在一可选的实施方式中,所述判断所述目标数据包对应的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址,包括:
所述源虚拟机通过网络半虚拟化驱动发送函数,根据所述目标数据包中的记录的地址信息,判断所述目标数据包的目标虚拟机的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址。
在一可选的实施方式中,若所述目标数据包包括多个目标虚拟机对应的多个目标局域网地址,所述方法还包括:
所述宿主机在所述源虚拟机和多个所述目标虚拟机中热插入共享内存;
所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机,包括:
所述源虚拟机将所述目标数据包存入所述共享内存中;
多个所述目标虚拟机中的任一目标虚拟机在监控到所述共享内存中存入的所述目标数据包时,从所述共享内存中读取所述目标数据包;
在所述目标数据包完成从所述源虚拟机至所述多个所述目标虚拟机的传输后,向所述宿主机申请释放所述共享内存。
在本申请实施例中,通过共享内存的方式也能够实现广播数据,从而可以提高数据传输的效率;进一步地,在数据传输完成之后,再释放掉共享内存可以减少内存资源的浪费。
在一可选的实施方式中,所述宿主机在所述源虚拟机和多个所述目标虚拟机中热插入共享内存,包括:
所述宿主机在所述源虚拟机和多个所述目标虚拟机中热插入所述共享内存;
设置所述源虚拟机访问所述共享内存的权限为只写权限;
设置多个所述目标虚拟机访问所述共享内存的权限为只读权限。
在本申请实施例中,在需要进行一对多传输数据时,通过限定源虚拟机与目标虚拟机的访问权限,从而可以更准确地实现数据的广播。
在一可选的实施方式中,所述方法还包括:
所述源虚拟机从宿主机中获取所述物理机上的其它虚拟机的局域网地址。
在一可选的实施方式中,所述源虚拟机从宿主机中获取所述物理机上的其它虚拟机的局域网地址,包括:
所述源虚拟机在每次启动或热迁徙后,从所述宿主机中获取所述物理机上的其它虚拟机的局域网地址。
在本申请实施例中,通过在启动或热迁徙更新获取物理机上的虚拟机的局域网地址,从而可以使每次在通信时,更准确地识别局域网地址。
在一可选的实施方式中,所述方法还包括:
若所述目标虚拟机的目标局域网地址不是所述物理机的其它虚拟机的局域网地址,则所述源虚拟机通过网络半虚拟化驱动将所述目标数据包发送给宿主机,由所述宿主机对所述目标数据包进行转发。
在本申请实施例中,通过在如果需要通信的虚拟机不在源虚拟机所在的物理机上时,还可以采用原来的通信方式,从而可以保持通信的有效进行。
第二方面,本申请实施例提供一种虚拟机通信装置,包括:
判断模块,用于源虚拟机在发送目标数据包时,判断所述目标数据包对应的目标虚拟机的目标局域网地址是否为所述源虚拟机所在的物理机的其它虚拟机的局域网地址;
第一传输模块,用于若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述源虚拟机和所述目标虚拟机中热插入共享内存之后,所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机。
第三方面,本申请实施例提供一种虚拟机通信系统,包括:部署于同一物理机上的多个虚拟机、宿主机、共享内存;
所述多个虚拟机中的第一虚拟机用于在发送目标数据包时,判断所述目标数据包对应的第二虚拟机的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址,所述第一虚拟机是所述多个虚拟机中的任一虚拟机;
若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述第一虚拟机和所述第二虚拟机中热插入共享内存之后,所述第一虚拟机用于通过所述共享内存,将所述目标数据包从所述第一虚拟机传输至所述第二虚拟机。
第四方面,本申请实施例提供一种电子设备,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行上述的方法的步骤。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述的方法的步骤。
本申请实施例提供的虚拟机通信方法、装置、系统及电子设备的有益效果是:通过对需要发送的数据包进行识别,从而可以先确定需要通信的目的局域网地址是否是源虚拟机所在的物理机中的虚拟机的地址,如果是,则可以采用共享内存进行通信,则可以减少虚拟机之间进行通信时,需要由宿主机的转发,从而可以减少同一物理机上的虚拟机之间通信的路径,从而可以提高通信效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的虚拟机通信系统的方框示意图。
图2为本申请实施例提供的虚拟机通信方法的流程图。
图3为本申请实施例提供的另一虚拟机通信方法的流程图。
图4为本申请实施例提供的虚拟机通信装置的功能模块示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
关于虚拟机之间的通信,传统的Inter-VM通信需要绕经宿主机的Bridge/OVS来实现,传统的通信方式路径过长。其中,Bridge(桥)是一套虚拟交换设备,Bridge是Linux上用来做TCP/IP二层协议交换的设备。Bridge设备实例可以和Linux上其他网络设备实例连接。OVS(Open Virtual Switch)是Bridge的加强版。
针对传统的虚拟机之间方式路径过长的问题,Xensock在xen平台为同一物理机上的不同虚拟机之间提供了共享内存通信方法,该方法提出一种新的socket协议族接口。但是socket协议族接口对业务并不透明,业务必须修改代码按照Xensocket接口重新改写;此外,该Xensock方法不支持自动发现、热迁移等产品化要求的场景。
基于上述研究,本申请实施例提供了虚拟机通信方法、装置、系统及电子设备,能够相对克服传统的绕经宿主机的Bridge/OVS来实现虚拟机之间的通信的路径过长的问题,以及Xensock方法不支持自动发现、热迁移等产品化要求的场景的问题。下面通过几个实施例对本申请进行描述。
实施例一
为便于对本申请的实施例进行理解,首先对执行本申请实施例所公开的虚拟机通信方法的虚拟机通信系统以及电子设备进行详细介绍。
如图1所示,本实施例中的虚拟通信系统包括:多个虚拟机110(Virtual Machine,简称:VM)(图中示出了两个)、宿主机120、共享内存130。
其中,虚拟机110指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在实体计算机中能够完成的工作在虚拟机中也都能够实现。在物理机中创建虚拟机时,需要将物理机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS(Complementary Metal Oxide Semiconductor,中文称:互补金属氧化物半导体)、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。其中,CMOS是主板上的一块可读写的并行或串行FLASH芯片,是用来保存BIOS的硬件配置和用户对某些参数的设定。
本实施例中,如图1所示,虚拟机110中运行有一个守护程序(agent),用它来辅助虚拟机监视器(Hypervisor)实现对虚拟机的管理。
本实施例中的虚拟机中还可以包括网卡,如图1所示,虚拟机中的网卡可以是virtio-net,virtio-net一套网络半虚拟化驱动+设备的方案。虚拟机可以通过virtio-net与宿主机120进行交互。
请再次参阅图1,两个需要进行通信的虚拟机中共同插入一共享内存(SharedBuffer)130。该共享内存130作为ivshmem共享内存,可以实现共同使用该共享内心的两个虚拟机之间的通信。其中,ivshmem是Qemu提供的虚拟机之间和虚拟机与宿主机之间零拷贝的通信机制。ivshmem实现原理是通过共享内存模拟一个PCI(Peripheral ComponentInterconnect,外设组件互连标准)设备。因此,通信双方就可以像操作PCI设备一样来进行数据交换和通信了。QEMU为宿主机和虚拟机提供了一个数据通道(channel),该通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix socket文件。宿主机与虚拟机内的QGA通讯就扩展了对虚拟机的控制能力,例如,在宿主机上获取虚拟机的IP地址等。
其中,虚拟机与虚拟机之间通过ivshmem通信有中断和非中断两种模式,虚拟机与宿主机之间只有非中断模式。
上述的宿主机就是主机。其中,宿主机是相对于子机而言的。在本实施例中,物理机上安装有虚拟机,那么相对于虚拟机而言,虚拟机正在使用的计算机就是宿主机,虚拟机是安装在主机上的,必须在主机上才能运行,主机就是一个“宿主”。
本实施例中,如图1所示,在宿主机120上运行有vhost-net,该vhost-net与虚拟机中的virtio-net进行交互。
本实施例中的宿主机120还可以运行有Bridge或OVS(Open Virtual Switch)。
其中,Bridge(桥)是一套虚拟交换设备,Bridge是Linux上用来做TCP/IP二层协议交换的设备,与交换机功能相似。Bridge设备实例可以和Linux上其他网络设备实例连接,既attach一个从设备,类似于交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge会根据报文中的MAC信息进行广播、转发、丢弃处理。Bridge的功能主要在内核里实现。当一个从设备被attach到Bridge上时,相当于交换机的端口被插入了一根连有终端的网线。
其中,OVS(Open Virtual Switch)是Bridge的加强版,是一个具有产品级质量的多层虚拟交换机。通过可编程扩展,可以实现大规模网络的自动化(配置、管理、维护)。OVS支持现有标准管理接口和协议(比如netFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag等)。总的来说,OVS被设计为支持分布在多个物理服务器,例如VMware的vNetwork分布式vSwitch或思科的Nexus1000V。
分布式应用(distributed application)指的是应用程序分布在不同计算机上,通过网络来共同完成一项任务的工作方式。在本实施例中的虚拟通信系统,多个虚拟机被安装在同一物理机上,分布式应用则可以安装在虚拟通信系统的多个虚拟机上,以在同一物理机上实现分布式应用的工作任务。
本实施例中的虚拟机通信系统中的多个虚拟机上若部署有分布式应用系统时,多个虚拟机之间可能需要进行通信。可以通过虚拟机将数据包发送给宿主机,再由宿主机通过Bridge或OVS来转发至目标虚拟机中。
在本实施例中,如果需要通信的虚拟机在同一个物理机上,则可以不通过宿主机的转发。在本实施例中,多个虚拟机中的第一虚拟机用于在发送目标数据包时,判断该目标数据包对应的第二虚拟机的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址。
其中,该第一虚拟机是虚拟机通信系统中的多个虚拟机中的任一虚拟机。
若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述第一虚拟机和所述第二虚拟机中热插入共享内存之后,该第一虚拟机用于通过该共享内存,将所述目标数据包从该第一虚拟机传输至所述第二虚拟机。
示例性地,该第一虚拟机将目标数据写入第一虚拟机和第二虚拟机共同热插入的共享内存130中,第二虚拟机在监控到该共享内存130中存在新写入的数据后,可以从该共享内存中读取数据,以实现数据在第一虚拟机与第二虚拟机之间传输。
可选地,本申请实施例还可以提供一种电子设备,该电子设备除了包括上述虚拟机通信系统之外,还可以包括:存储器、输入输出单元、显示单元等。
其中,存储器可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。
上述的输入输出单元用于提供给用户输入数据。所述输入输出单元可以是,但不限于,鼠标和键盘等。
上述的显示单元在电子设备与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
本实施例中的虚拟机通信系统或电子设备可以用于执行本申请实施例提供的各个虚拟机通信方法中的各个步骤。下面通过几个实施例对虚拟机通信方法进行介绍。
实施例二
请参阅图2,是本申请实施例提供的虚拟机通信方法的流程图。下面将对图2所示的具体流程进行详细阐述。
步骤202,源虚拟机在发送目标数据包时,判断该目标数据包对应的目标虚拟机的目标局域网地址是否为该源虚拟机所在的物理机的其它虚拟机的局域网地址。
本实施例中,步骤202可以被实施为:源虚拟机通过网络半虚拟化(virtio-net)驱动发送函数,根据该目标数据包中的记录的地址信息,判断该目标数据包的目标虚拟机的目标局域网地址是否为该物理机的其它虚拟机的局域网地址(Mac地址)。
步骤204,若该目标局域网地址是该物理机的其它虚拟机的局域网地址,则在该源虚拟机和该目标虚拟机中热插入共享内存之后,该源虚拟机通过该共享内存,将该目标数据包从该源虚拟机传输至该目标虚拟机。
在一种实施方式中,步骤204可以包括:该源虚拟机将该目标数据包存入该共享内存中;该目标虚拟机在监控到该共享内存中存入的该目标数据包时,从该共享内存中读取该目标数据包。
可选地,目标虚拟机可以在监控到共享内存中存在新写入的数据后,从该共享内存中读取数据。
可选地,目标虚拟机也可以在源虚拟机将一项任务中的数据均被写入该共享内存内后,从该共享内存读取数据。
在本实施例中,目标虚拟机可以是一台虚拟机;也可以是多台虚拟机。针对目标虚拟机是一台虚拟机或多台虚拟机的情况,可以采用不同的通信方式。
当源虚拟机与一台虚拟机进行通信时,则可以在两台虚拟机之间热插入共享内存,该共享内存用于两台虚拟机之间的通信。
示例性地,两台虚拟机均可以向该共享内存中写入数据,两台虚拟机也都可以从该共享内存读取数据,以实现两台虚拟机之间相互通信。
进一步地,当虚拟机之间时一对一的通信时,例如,第一虚拟机与第二虚拟机之间共同插入共享内存后,可以保持第一虚拟机与第二虚拟机之间的共享内存,以实现第一虚拟机与第二虚拟机之间下次需要通信时,则不需要再次热插入共享内存,以提高通信效率。
当源虚拟机需要向多台虚拟机广播数据时,此时,该目标数据包包括多台目标虚拟机对应的多个目标局域网地址,则可以在该源虚拟机和多台目标虚拟机中热插入共享内存。步骤204则可以包括:该源虚拟机将该目标数据包存入该共享内存中;多台该目标虚拟机中的任一目标虚拟机在监控到该共享内存中存入的该目标数据包时,从该共享内存中读取该目标数据包。
可选地,在该目标数据包完成从该源虚拟机至该多台该目标虚拟机的传输后,向该宿主机申请释放该共享内存。
可选地,在该目标数据包完成从该源虚拟机至该多台该目标虚拟机的传输后,则源虚拟机和目标虚拟机均释放该共享内存。
基于虚拟机之间的通信需求,可以在通信之前申请通信需要的共享内存。在本实施例中,如图3所示,在步骤204之前,还可以包括:步骤203,该源虚拟机向宿主机申请该共享内存,以使该宿主机在该源虚拟机和该目标虚拟机中热插入该共享内存。
针对虚拟机的一对一通信,两台虚拟机可以来回通信,则可以通过设定虚拟机对共享内存的访问权限的方式,限定两台虚拟机之间的通信方式。
可选地,该宿主机在该源虚拟机和一台该目标虚拟机中热插入共享内存,可以包括:在该源虚拟机和一台该目标虚拟机中热插入该共享内存;设置该源虚拟机访问该共享内存的权限为可写可读权限;设置多台该目标虚拟机访问该共享内存的权限为可写可读权限。
针对虚拟机的一对多通信,源虚拟机向多台目标虚拟机单向发送数据,则可以通过设定虚拟机对共享内存的访问权限的方式,限定多台虚拟机之间的通信方式。
可选地,该宿主机在该源虚拟机和多台该目标虚拟机中热插入共享内存,可以包括:在该源虚拟机和多台该目标虚拟机中热插入该共享内存;设置该源虚拟机访问该共享内存的权限为只写权限;设置多台该目标虚拟机访问该共享内存的权限为只读权限。
通过设置源虚拟机与目标虚拟机对共享内存的访问权限,可以限定源虚拟机仅单向的向多台虚拟机单向发送数据。
在本实施例中,为了识别出目标数据包中所包含的地址,如图3所示,在步骤202之前,该方法还包括:步骤201,源虚拟机从宿主机中获取该物理机上的其它虚拟机的局域网地址。
本实施例中,宿主机中运行有agent,该agent可以记录当前虚拟机上的各个虚拟机的虚拟网卡的局域网地址。
可选地,该源虚拟机从宿主机中获取该物理机上的其它虚拟机的局域网地址,包括:该源虚拟机在每次启动或热迁徙后,从该宿主机中获取该物理机上的其它虚拟机的局域网地址。
通过将虚拟机和宿主机的虚拟机信息同步,确保在虚拟机启动和热迁移时做到自动发现。
上述内容针对同一物理机上的虚拟机之间进行了描述,但是,在一种场景中,需要通信的目标虚拟机可以是其它物理机上的虚拟机。在此研究下,本实施例中的方法还包括:若该目标虚拟机的目标局域网地址不是该物理机的其它虚拟机的局域网地址,则该源虚拟机通过网络半虚拟化驱动将该目标数据包发送给宿主机,由该宿主机对该目标数据包进行转发。
本申请实施例提供的虚拟机通信方法,在同一物理机上的虚拟机的通信,则通过共享内存直接通信,减少了通信路径,提升了性能,且对虚拟机用户态和内核透明。进一步地,针对不同物理机上的虚拟机之间的通过则保留传统的通过宿主机的Bridge/OVS的通信方式,从而可以提高各类虚拟机之间的有效通信。
进一步地,在虚拟机每次启动或热迁徙都会主动从宿主机获取当前物理机上的虚拟机的局域网地址,从而可以提高每次同一物理机上的虚拟机之间的通信。
实施例三
基于同一申请构思,本申请实施例中还提供了与虚拟机通信方法对应的虚拟机通信装置,由于本申请实施例中的装置解决问题的原理与前述的虚拟机通信方法实施例相似,因此本实施例中的装置的实施可以参见上述方法的实施例中的描述,重复之处不再赘述。
请参阅图4,是本申请实施例提供的虚拟机通信装置的功能模块示意图。本实施例中的虚拟机通信装置中的各个模块用于执行上述方法实施例中的各个步骤。虚拟机通信装置包括:判断模块301以及第一传输模块302;其中,
判断模块301,用于源虚拟机在发送目标数据包时,判断该目标数据包对应的目标虚拟机的目标局域网地址是否为该源虚拟机所在的物理机的其它虚拟机的局域网地址;
第一传输模块302,用于若该目标局域网地址是该物理机的其它虚拟机的局域网地址,则在该源虚拟机和该目标虚拟机中热插入共享内存之后,该源虚拟机通过该共享内存,将该目标数据包从该源虚拟机传输至该目标虚拟机。
一种可能的实施方式中,本实施例中的虚拟机通信装置还包括:申请模块,用于该源虚拟机向宿主机申请该共享内存,以使该宿主机在该源虚拟机和该目标虚拟机中热插入该共享内存。
一种可能的实施方式中,第一传输模块302,用于:
该源虚拟机将该目标数据包存入该共享内存中;
该目标虚拟机在监控到该共享内存中存入的该目标数据包时,从该共享内存中读取该目标数据包。
一种可能的实施方式中,判断模块301,用于:
该源虚拟机通过网络半虚拟化驱动发送函数,根据该目标数据包中的记录的地址信息,判断该目标数据包的目标虚拟机的目标局域网地址是否为该物理机的其它虚拟机的局域网地址。
一种可能的实施方式中,若该目标数据包包括多台目标虚拟机对应的多个目标局域网地址,本实施例中的虚拟机通信装置还包括:插入模块,用于该宿主机在该源虚拟机和多台该目标虚拟机中热插入共享内存;
第一传输模块302,用于:
该源虚拟机将该目标数据包存入该共享内存中;
多台该目标虚拟机中的任一目标虚拟机在监控到该共享内存中存入的该目标数据包时,从该共享内存中读取该目标数据包;
在该目标数据包完成从该源虚拟机至该多台该目标虚拟机的传输后,向该宿主机申请释放该共享内存。
一种可能的实施方式中,插入模块,用于:
在该源虚拟机和多台该目标虚拟机中热插入该共享内存;
设置该源虚拟机访问该共享内存的权限为只写权限;
设置多台该目标虚拟机访问该共享内存的权限为只读权限。
一种可能的实施方式中,本实施例中的虚拟机通信装置还包括:获取模块,用于:
该源虚拟机从宿主机中获取该物理机上的其它虚拟机的局域网地址。
一种可能的实施方式中,获取模块,用于:
该源虚拟机在每次启动或热迁徙后,从该宿主机中获取该物理机上的其它虚拟机的局域网地址。
一种可能的实施方式中,本实施例中的虚拟机通信装置还包括:第二传输模块,用于:
若该目标虚拟机的目标局域网地址不是该物理机的其它虚拟机的局域网地址,则该源虚拟机通过网络半虚拟化驱动将该目标数据包发送给宿主机,由该宿主机对该目标数据包进行转发。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中该的虚拟机通信方法的步骤。
本申请实施例所提供的虚拟机通信方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,该程序代码包括的指令可用于执行上述方法实施例中该的虚拟机通信方法的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
该功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上该仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种虚拟机通信方法,其特征在于,包括:
源虚拟机在发送目标数据包时,判断所述目标数据包对应的目标虚拟机的目标局域网地址是否为所述源虚拟机所在的物理机的其它虚拟机的局域网地址;
若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述源虚拟机和所述目标虚拟机中热插入共享内存之后,所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述源虚拟机向宿主机申请所述共享内存,以使所述宿主机在所述源虚拟机和所述目标虚拟机中热插入所述共享内存。
3.根据权利要求1所述的方法,其特征在于,所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机,包括:
所述源虚拟机将所述目标数据包存入所述共享内存中;
所述目标虚拟机在监控到所述共享内存中存入的所述目标数据包时,从所述共享内存中读取所述目标数据包。
4.根据权利要求1所述的方法,其特征在于,所述判断所述目标数据包对应的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址,包括:
所述源虚拟机通过网络半虚拟化驱动发送函数,根据所述目标数据包中的记录的地址信息,判断所述目标数据包的目标虚拟机的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址。
5.根据权利要求1所述的方法,其特征在于,若所述目标数据包包括多个目标虚拟机对应的多个目标局域网地址,所述方法还包括:
宿主机在所述源虚拟机和多个所述目标虚拟机中热插入共享内存;
所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机,包括:
所述源虚拟机将所述目标数据包存入所述共享内存中;
多个所述目标虚拟机中的任一目标虚拟机在监控到所述共享内存中存入的所述目标数据包时,从所述共享内存中读取所述目标数据包;
在所述目标数据包完成从所述源虚拟机至所述多个所述目标虚拟机的传输后,向所述宿主机申请释放所述共享内存。
6.根据权利要求5所述的方法,其特征在于,所述宿主机在所述源虚拟机和多个所述目标虚拟机中热插入共享内存,包括:
所述宿主机在所述源虚拟机和多个所述目标虚拟机中热插入所述共享内存;
设置所述源虚拟机访问所述共享内存的权限为只写权限;
设置多个所述目标虚拟机访问所述共享内存的权限为只读权限。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述源虚拟机从宿主机中获取所述物理机上的其它虚拟机的局域网地址。
8.根据权利要求7所述的方法,其特征在于,所述源虚拟机从宿主机中获取所述物理机上的其它虚拟机的局域网地址,包括:
所述源虚拟机在每次启动或热迁徙后,从所述宿主机中获取所述物理机上的其它虚拟机的局域网地址。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标虚拟机的目标局域网地址不是所述物理机的其它虚拟机的局域网地址,则所述源虚拟机通过网络半虚拟化驱动将所述目标数据包发送给宿主机,由所述宿主机对所述目标数据包进行转发。
10.一种虚拟机通信装置,其特征在于,包括:
判断模块,用于源虚拟机在发送目标数据包时,判断所述目标数据包对应的目标虚拟机的目标局域网地址是否为所述源虚拟机所在的物理机的其它虚拟机的局域网地址;
第一传输模块,用于若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述源虚拟机和所述目标虚拟机中热插入共享内存之后,所述源虚拟机通过所述共享内存,将所述目标数据包从所述源虚拟机传输至所述目标虚拟机。
11.一种虚拟机通信系统,其特征在于,包括:部署于同一物理机上的多个虚拟机、宿主机、共享内存;
所述多个虚拟机中的第一虚拟机用于在发送目标数据包时,判断所述目标数据包对应的第二虚拟机的目标局域网地址是否为所述物理机的其它虚拟机的局域网地址,所述第一虚拟机是所述多个虚拟机中的任一虚拟机;
若所述目标局域网地址是所述物理机的其它虚拟机的局域网地址,则在所述第一虚拟机和所述第二虚拟机中热插入共享内存之后,所述第一虚拟机用于通过所述共享内存,将所述目标数据包从所述第一虚拟机传输至所述第二虚拟机。
12.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行如权利要求1至9任一所述的方法的步骤。
13.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至9任一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010840308.2A CN111988230B (zh) | 2020-08-19 | 2020-08-19 | 虚拟机通信方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010840308.2A CN111988230B (zh) | 2020-08-19 | 2020-08-19 | 虚拟机通信方法、装置、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111988230A true CN111988230A (zh) | 2020-11-24 |
CN111988230B CN111988230B (zh) | 2023-04-07 |
Family
ID=73434888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010840308.2A Active CN111988230B (zh) | 2020-08-19 | 2020-08-19 | 虚拟机通信方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111988230B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804202A (zh) * | 2020-12-30 | 2021-05-14 | 平安证券股份有限公司 | 多网间数据安全交互方法、装置、服务器及存储介质 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
CN113438241A (zh) * | 2021-06-25 | 2021-09-24 | 佳缘科技股份有限公司 | 一种数据传输方法及系统 |
CN114499945A (zh) * | 2021-12-22 | 2022-05-13 | 天翼云科技有限公司 | 一种虚拟机的入侵检测方法及装置 |
CN116074284A (zh) * | 2023-04-07 | 2023-05-05 | 广东保伦电子股份有限公司 | 一种pve平台下的虚拟机之间获取ip地址的方法 |
WO2023230766A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种数据传输方法及虚拟化系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101819564A (zh) * | 2009-02-26 | 2010-09-01 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN102662777A (zh) * | 2012-04-28 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
CN102693162A (zh) * | 2011-12-29 | 2012-09-26 | 中国科学技术大学苏州研究院 | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 |
CN103346981A (zh) * | 2013-06-28 | 2013-10-09 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
TW201629779A (zh) * | 2014-08-15 | 2016-08-16 | 英特爾股份有限公司 | 用於安全虛擬機器間共用記憶體通訊之技術 |
CN106302322A (zh) * | 2015-05-19 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种虚拟机数据流管理方法和系统 |
CN107967164A (zh) * | 2016-10-19 | 2018-04-27 | 阿里巴巴集团控股有限公司 | 一种虚拟机热迁移的方法及系统 |
CN109739668A (zh) * | 2019-01-11 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种虚拟机间数据传输的方法、系统及设备 |
-
2020
- 2020-08-19 CN CN202010840308.2A patent/CN111988230B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819564A (zh) * | 2009-02-26 | 2010-09-01 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN102693162A (zh) * | 2011-12-29 | 2012-09-26 | 中国科学技术大学苏州研究院 | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 |
CN102662777A (zh) * | 2012-04-28 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
CN103346981A (zh) * | 2013-06-28 | 2013-10-09 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
TW201629779A (zh) * | 2014-08-15 | 2016-08-16 | 英特爾股份有限公司 | 用於安全虛擬機器間共用記憶體通訊之技術 |
CN106302322A (zh) * | 2015-05-19 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种虚拟机数据流管理方法和系统 |
CN107967164A (zh) * | 2016-10-19 | 2018-04-27 | 阿里巴巴集团控股有限公司 | 一种虚拟机热迁移的方法及系统 |
CN109739668A (zh) * | 2019-01-11 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种虚拟机间数据传输的方法、系统及设备 |
Non-Patent Citations (1)
Title |
---|
朱团结;艾丽蓉;: "基于共享内存的Xen虚拟机间通信的研究" * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804202A (zh) * | 2020-12-30 | 2021-05-14 | 平安证券股份有限公司 | 多网间数据安全交互方法、装置、服务器及存储介质 |
CN112804202B (zh) * | 2020-12-30 | 2023-04-11 | 平安证券股份有限公司 | 多网间数据安全交互方法、装置、服务器及存储介质 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
CN113438241A (zh) * | 2021-06-25 | 2021-09-24 | 佳缘科技股份有限公司 | 一种数据传输方法及系统 |
CN113438241B (zh) * | 2021-06-25 | 2024-02-13 | 佳缘科技股份有限公司 | 一种数据传输方法及系统 |
CN114499945A (zh) * | 2021-12-22 | 2022-05-13 | 天翼云科技有限公司 | 一种虚拟机的入侵检测方法及装置 |
CN114499945B (zh) * | 2021-12-22 | 2023-08-04 | 天翼云科技有限公司 | 一种虚拟机的入侵检测方法及装置 |
WO2023230766A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种数据传输方法及虚拟化系统 |
CN116074284A (zh) * | 2023-04-07 | 2023-05-05 | 广东保伦电子股份有限公司 | 一种pve平台下的虚拟机之间获取ip地址的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111988230B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111988230B (zh) | 虚拟机通信方法、装置、系统及电子设备 | |
EP3540599B1 (en) | Virtual machine live migration method and corresponding system | |
US20190319896A1 (en) | Packet Forwarding Method And Physical Host | |
US8078764B2 (en) | Method for switching I/O path in a computer system having an I/O switch | |
US8774055B2 (en) | Switching method | |
US8898665B2 (en) | System, method and computer program product for inviting other virtual machine to access a memory space allocated to a virtual machine | |
US11113089B2 (en) | Sharing data via virtual machine to host device bridging | |
US9086907B2 (en) | Apparatus and method for managing virtual machine addresses | |
JP6753412B2 (ja) | コンピュータ、デバイス割当管理方法及びプログラム | |
US8813071B2 (en) | Storage reclamation systems and methods | |
EP3070633B1 (en) | Network interface devices with remote storage control | |
CN110532208B (zh) | 一种数据处理方法、接口转换结构及数据处理设备 | |
CN113312143A (zh) | 云计算系统、命令处理方法及虚拟化仿真装置 | |
CN112306624A (zh) | 一种信息处理方法、物理机和pcie设备 | |
CN115298656A (zh) | 用于调度可共享pcie端点设备的系统和方法 | |
EP2633402A1 (en) | Zoning data to a virtual machine | |
US11194746B2 (en) | Exchanging drive information | |
CN110990110A (zh) | 一种基于Sriov网卡的虚拟机创建方法及装置 | |
US8225068B2 (en) | Virtual real memory exportation for logical partitions | |
CN112099916B (zh) | 虚拟机数据的迁移方法、装置、计算机设备及存储介质 | |
CN103605559A (zh) | 一种kvm虚拟化服务系统及其数据通信方法 | |
CN113312141A (zh) | 用于虚拟机的虚拟串行端口 | |
US11392504B2 (en) | Memory page fault handling for network interface devices in a virtualized environment | |
JP5854130B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
US11722368B2 (en) | Setting change method and recording medium recording setting change program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 300450 Tianjin Binhai New Area Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8 Applicant after: Haiguang Information Technology Co.,Ltd. Address before: Room 511, yindao business building, 32 Yuetan South Street, Xicheng District, Beijing Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |