CN112052100B - 基于共享内存的虚拟机通信方法及设备 - Google Patents
基于共享内存的虚拟机通信方法及设备 Download PDFInfo
- Publication number
- CN112052100B CN112052100B CN201910490006.4A CN201910490006A CN112052100B CN 112052100 B CN112052100 B CN 112052100B CN 201910490006 A CN201910490006 A CN 201910490006A CN 112052100 B CN112052100 B CN 112052100B
- Authority
- CN
- China
- Prior art keywords
- address
- virtual machine
- switch
- shared memory
- local
- 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.)
- Active
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
Abstract
本申请实施例提供一种基于共享内存的虚拟机通信方法及设备,该方法包括:交换机接收第一虚拟机发送的读请求,读请求中包括第一本地地址,交换机根据第一本地地址与第一全局地址的映射关系,将第一本地地址转换为第一全局地址,第一全局地址为根据第一共享内存确定的地址,第一共享内存为交换机的内存的一部分;交换机根据第一全局地址与第一物理地址的映射关系,将第一全局地址转换为第一物理地址,第一物理地址为第一共享内存的物理地址;交换机根据第一物理地址,从第一共享内存中读取数据,该数据由第二虚拟机写入第一共享内存;交换机将数据发送给第一虚拟机。本实施例可以降低虚拟机从共享内存读写数据的延时,提高数据传输效率。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及一种基于共享内存的虚拟机通信方法及设备。
背景技术
随着信息技术的不断发展,虚拟机技术得到广泛应用。虚拟机(Virtual Machine)是指通过软件模拟的、具有完整硬件功能的,运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,可以在一台物理机上模拟出一台或多台虚拟的计算机。
在云计算系统中,不仅一台物理计算机上模拟的多台虚拟机之间可以进行通信,不同物理机上模拟的虚拟机之间也可以进行通信。多个虚拟机之间可以通过共享内存的方式进行通信。例如,将一虚拟机的内存作为共享内存,其它虚拟机通过在该共享内存上读写数据,以实现与该虚拟机的通信。当多个虚拟机并不位于同一物理计算机上时,其它虚拟机需要通过多个交换机到该虚拟机的内存中读写数据。
然而,这种一个虚拟机跨多个交换机到另一个虚拟机的内存中读写数据的方式,延时开销较大,导致数据传输效率低下。
发明内容
本申请实施例提供一种基于共享内存的虚拟机通信方法及设备,减少了虚拟机从共享内存读写数据的延时开销,提高了数据传输效率。
第一方面,本申请实施例提供一种基于共享内存的虚拟机通信方法,包括:
当第一虚拟机与第二虚拟机通信时,交换机接收第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;该第一本地地址可以为第一虚拟机自身编址得到的地址,也可以为第二虚拟机自身编址得到的地址;若为第二虚拟机编址得到的地址,则第二虚拟机通过消息传递的方式将该第一本地地址发送给该第一虚拟机;
所述交换机根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分;该第一全局地址可以是管理设备根据两个或两个以上的交换机的共享内存确定的每个交换机各自对应的全局地址,并分配至每个交换机,该第一全局地址便于管理多个交换机的地址;
所述交换机根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址;
所述交换机根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据;
交换机上的部分内存可以与多个虚拟机共享,第一虚拟机通过从交换机的共享内存读取第二虚拟机写入的数据,实现第一虚拟机与第二虚拟机的通信,不需要再经过多级交换机到对端虚拟机的内存中进行读写,降低了传输时延,提高了传输效率。
在一种可能的实现方式中,所述第一本地地址是所述第一虚拟机根据所述第一虚拟机的本地内存和所述第一共享内存确定的地址,所述方法还包括:
所述交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述交换机根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
通过第二虚拟机将数据写入交换机的共享内存,由第一虚拟机从该共享内存中获取该数据,实现了第一虚拟机和第二虚拟机的通信,第二虚拟机不需要再经过多级交换机到第一虚拟机的共享内存中写数据,或者第一虚拟机不需要经过多级交换机从该第二虚拟机的共享内存中读数据,降低了读写数据的时延,提高了数据传输效率。
在一种可能的实现方式中,所述第一本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址,所述方法还包括:
所述交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址;
所述交换机根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
通过第二虚拟机将数据写入交换机的共享内存,第二虚拟机确定第一本地地址并通过消息传递的方式发送给第一虚拟机,由第一虚拟机从该共享内存中获取该数据,实现了第一虚拟机和第二虚拟机的通信的时效性,第二虚拟机不需要再经过多级交换机到第一虚拟机的共享内存中写数据,或者第一虚拟机不需要经过多级交换机从该第二虚拟机的共享内存中读数据,降低了读写数据的时延,提高了数据传输效率。
在一种可能的实现方式中,所述第一全局地址是所述第一共享内存在全局共享内存中的地址,所述全局共享内存包括所述第一共享内存以及系统中其他交换机的第二共享内存。
通过对多个交换机的共享内存进行全局同一编址,向各个交换机分配每个交换机各自对应的第一全局地址,不仅便于地址管理,扩展到更多的交换机,且能够实现整个公有云系统层面的基于交换机共享内存的全局共享内存通信。
在一种可能的实现方式中,所述交换机包括物理交换机或虚拟交换机。物理交换机和虚拟交换机中配置有能够与虚拟机共享的共享内存,虚拟机间共享内存的通信不需要再经过多级交换机到对端虚拟机的内存中去读写,降低了传输时延,提高了传输效率。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的路径距离以及所述交换机与所述第二虚拟机之间的路径距离均小于预设距离。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的路径距离以及所述交换机与所述第二虚拟机之间的路径距离的平均值小于预设距离。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的传输时延以及所述交换机与所述第二虚拟机之间的传输时延均小于预设传输时延。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的传输时延以及所述交换机与所述第二虚拟机之间的传输时延的平均值小于预设传输时延。
通过根据虚拟机到交换机的距离来向虚拟机分配最优的共享内存交换机的位置,从而大大减少了传输延时,该距离可以通过路径距离、传输时延来体现,路径距离可以通过路由跳数或实际距离体现。
第二方面,本申请实施例提供一种交换机,包括:
接收模块,用于接收第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;
处理模块,用于根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分;
根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址;
根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据;
发送模块,用于将所述数据发送给所述第一虚拟机。
在一种可能的实现方式中,所述第一本地地址是所述第一虚拟机根据所述第一虚拟机的本地内存和所述第一共享内存确定的地址;
所述接收模块还用于:接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在一种可能的实现方式中,所述第一本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述接收模块还用于:接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址;
根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在一种可能的实现方式中,所述第一全局地址是所述第一共享内存在全局共享内存中的地址,所述全局共享内存包括所述第一共享内存以及系统中其他交换机的第二共享内存。
在一种可能的实现方式中,所述交换机包括物理交换机或虚拟交换机。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的路径距离以及所述交换机与所述第二虚拟机之间的路径距离均小于预设距离。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的传输时延以及所述交换机与所述第二虚拟机之间的传输时延均小于预设传输时延。
第三方面,本申请实施例提供一种交换机,包括:存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述处理器运行所述计算机程序执行如上第一方面或第一方面各种可能的设计所述的基于共享内存的虚拟机通信方法。
第四方面,本申请实施例提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序用于实现第一方面或第一方面各种可能的设计所述的基于共享内存的虚拟机通信方法。
第五方面,本申请实施例提供一种基于共享内存的虚拟机通信系统,所述系统包括至少一个交换机以及用于运行多个虚拟机的至少一个物理计算机;
第一虚拟机用于向交换机发送读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;
所述交换机用于接收所述第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;
所述交换机还用于根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分;
所述交换机还用于根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址;
所述交换机根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据;
所述交换机还用于将所述数据发送给所述第一虚拟机。
在一种可能的设计中,所述第一虚拟机还用于根据所述第一虚拟机的本地内存和所述第一共享内存确定第一本地地址;
所述第二虚拟机还用于根据所述第二虚拟机的本地内存和所述第一共享内存确定第二本地地址,并向所述交换机发送写请求,所述写请求中包括所述数据以及所述数据的第二本地地址;
所述交换机还用于接收所述第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述交换机还用于根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
所述交换机还用于根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
所述交换机还用于根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在一种可能的设计中,所述第二虚拟机还用于根据所述第一虚拟机的本地内存和所述第一共享内存确定第一本地地址,并向所述交换机发送写请求,所述写请求中包括所述数据以及所述数据的第一本地地址;
所述交换机还用于接收所述第二虚拟机发送的写请求,接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址;
所述交换机根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在一种可能的设计中,所述系统还包括:管理设备;
所述管理设备用于接收所述至少一个交换机各自发送的共享内存的信息,所述共享内存的信息包括各所述交换机的共享内存的大小;
所述管理设备还用于根据所述共享内存在全局共享内存中的地址确定第一全局地址,并向所述至少一个交换机发送每个交换机各自对应的第一全局地址,其中所述全局共享内存为根据所述至少一个交换机的共享内存确定的内存。
在一种可能的设计中,所述管理设备还用于根据至少一个虚拟机与各所述交换机之间的路径距离确定所述至少一个虚拟机各自对应的交换机。
在一种可能的设计中,所述管理设备还用于根据至少一个虚拟机与各所述交换机之间的传输时延确定所述至少一个虚拟机各自对应的交换机。
在一种可能的设计中,所述交换机包括物理交换机或虚拟交换机。
本实施例提供的基于共享内存的虚拟机通信方法及设备,该方法通过交换机接收第一虚拟机发送的读请求,该读请求中包括第一本地地址,交换机根据第一本地地址与第一全局地址的映射关系,将第一本地地址转换为第一全局地址,第一全局地址为根据第一共享内存确定的地址,第一共享内存为交换机的一部分,从而将第一虚拟机的逻辑地址转换为交换机的逻辑地址,交换机根据第一全局地址与第一物理地址的映射关系,将第一全局地址转换为第一物理地址,交换机根据第一物理地址,从第一共享内存中读取第二虚拟机写入该第一共享内存的数据。通过交换机提供的共享内存,多个虚拟机可以与该交换机共享该交换机提供的共享内存,不同虚拟机通过在该共享内存中读写数据,从而实现第一虚拟机和第二虚拟机的通信。本发明实施例中,第一虚拟机不需要再经过多级交换机到第二虚拟机的内存中读写数据,从能够转发数据的交换机的共享内存中读写数据,缩短了传输路径,降低了传输时延,提高了数据的读取效率。
附图说明
图1为本申请实施例提供的基于共享内存的虚拟机通信系统的示意图;
图2为本申请实施例提供的交换机的结构示意图;
图3为本申请实施例提供的交换机的内部处理示意图;
图4为本申请实施例提供的基于共享内存的虚拟机通信的配置流程图;
图5为本申请实施例提供的全局地址的管理示意图;
图6为本申请实施例提供的映射关系的示意图;
图7为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图;
图8为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图;
图9为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图;
图10为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图;
图11为本申请实施例提供的交换机的结构示意图;
图12为本申请实施例提供的交换机的硬件结构示意图。
具体实施方式
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
图1为本申请实施例提供的基于共享内存的虚拟机通信系统的示意图。如图1所示,本实施例提供的系统为分布式集群结构,该系统包括管理设备、物理交换机以及物理计算机。该管理设备可以为服务器、计算机等具有处理功能的设备,可以实现共享内存的管理等功能。
该物理交换机例如可以为以太网交换机等网络处理器(network processor,NP),能够实现数据交换。该物理交换机还可以与一些系统(system,Sys)通信,该系统可以为具有独立操作空间的操作系统(operating system,OS),对应于该Sys的载体,可以是一台无虚拟机的物理服务器,也可以是一台虚拟机。
该物理计算机上设置有网卡(network interface card,NIC),该物理计算机借助网卡通过网线连接到交换机的端口上,物理交换机在端口上接收物理计算机发送的数据,根据数据的报头中的地址将该数据从该地址对应的端口中转发出去,从而实现数据交换。
该物理计算机上还设置有虚拟机(virtual machine,VM)和虚拟交换机(virtualswitch)。该虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。该虚拟交换机为利用虚拟平台,通过软件的方式形成交换机内部。该虚拟交换机可以为开放虚拟交换机(open virtual switch,OVS),其中开放虚拟机可以实现多层虚拟交换机,通过支持可编程扩展来实现大规模的网络自动化。
不同的物理交换机之间可以互连,而每个物理交换机可以连接多个物理计算机,一个物理计算机上可以设置一个虚拟交换机和多个虚拟机。
交换机上的部分内存可以与多个虚拟机共享,即该部分内存位于交换机上,但同时分配给了多个虚拟机,多个虚拟机和交换机可以共享该部分内存。为了便于描述,将该部分内存称为交换机的共享内存。在本实施例中,该交换机可以为物理交换机,也可以为虚拟交换机。
在多个虚拟机共享该交换机提供的共享内存时,一个虚拟机可以将数据写入该共享内存,其它虚拟机可以从该共享内存中读取该数据,从而实现了两个虚拟机之间的通信,由此虚拟机在通信时,虚拟机不需要到对端虚拟机的内存中读写数据,减少了传输时延,提高了数据传输效率。
同时,由于将共享内存放到交换机上,因此在物理机侧,虚拟机不需要做网卡直通,从而减少了网卡的带宽浪费。具体地,若共享内存放到虚拟机上,为了保证虚拟机的数据队列与物理机的数据队列或其它虚拟机的数据队列能够与内存之间一一映射,则需将网卡的通道与虚拟机的内存进行捆绑,来避免网卡共享后造成的数据队列地址和内存地址映射的混乱,但网卡直通方式又大大降低了网卡带宽的利用率。
图2为本申请实施例提供的交换机的结构示意图。图2所示的交换机既可以为物理交换机,也可以为虚拟交换机,本实施例此处不做特别限制。如图2所示,该交换机包括如下模块:
资源管理单元(Resource Management Unit,RMU),用于将交换机的内存动态划分为共享内存和交换内存。其中,交换内存用于数据交换,即交换机在进行数据交换等正常工作时所需的内存。共享内存用于该交换机与多个虚拟机共享,不同虚拟机通过在该共享内存中读写相同的数据,从而实现通信。
内存管理单元(memory management unit,MMU),用于管理交换机的内存,能够对交换内存和共享内存进行读写操作。
数据处理通道,还可称为数据流处理通道或数据包处理通道,能够根据虚拟机的读写请求,将该读写请求发送至资源管理单元或内存管理单元以实现读写操作。
其中,资源管理单元和数据处理通道能够通过网卡从交换机的端口接收和发送数据,该网卡可以为PCIE网卡或者以太网网卡。
图3为本申请实施例提供的交换机的内部处理示意图。本实施例所示的交换机具有图2所示的结构,如图3所示,该交换机的内部处理的流程为:
资源管理单元通过内存管理单元读取内存的物理地址范围,根据交换机的需求分配共享内存和网络交换用的交换内存之间的配比,并将分配的共享内存的物理地址和交换内存的物理地址通知给内存管理单元。
数据处理通道根据包类型,来区别是对共享内存进行操作的共享网络包,还是对交换内存进行操作的普通网络包。例如,在网络包的报头中可以设置类型字段,若该类型字段的值为1,则为共享网络包,若该类型字段的值为0,则为普通网络包。若为共享网络包,则共享网络包所包括的读写请求等通过资源管理单元经端口(Port)A(OVS中是虚拟端口)输入至内存管理单元,若为是普通网络包,则普通网络包所包括的读写请求等直接经过端口B(OVS中是虚拟端口)进入内存管理单元。
内存管理单元首先根据输入端口来判断是共享网络包还是普通网络包,然后对相应的物理地址空间进行操作。例如,若为共享网络包,则根据共享内存的物理地址进行操作,若为普通网络包,则根据交换内存的物理地址进行相应操作。
应理解,本实施例此处模块的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者通过处理器来实现相应的功能。
下面结合图1至图4所示,对虚拟机通过共享内存进行通信的配置过程进行说明。
图4为本申请实施例提供的基于共享内存的虚拟机通信的配置流程图。如图4所示,该配置流程包括:
步骤1、交换机将本机的内存动态划分为共享内存和交换内存,并记录共享内存的第一物理地址。
在交换机的内部实现过程中,交换机中的资源管理单元通过存储管理单元收集交换机的内存信息,该内存信息包括内存的大小以及内存的物理地址等,资源管理单元将交换机的内存动态划分为共享内存和交换内存,并记录共享内存的第一物理地址和交换内存的第二物理地址。
步骤2、管理设备向交换机分配第一全局地址,交换机建立共享内存的第一物理地址与第一全局地址的映射关系。
本实施例的系统为多个交换机组成的分布式集群系统,所以为了便于管理和扩展该分布式集群系统,交换机上报本机的共享内存的信息,由管理设备对该系统内的所有交换机的共享内存所组成的全局共享内存进行统一编址和分配,交换机只需要建立分配给自己的第一全局地址和本机的共享内存的第一物理地址的映射关系,就可以参与到该分布式集群系统中。
图5为本申请实施例提供的全局地址的管理示意图。在一种可能的实现方式中,全局地址管理的过程可通过下述步骤实现:
S21、资源管理单元从内存管理单元收集共享内存的信息,该共享内存的信息包括共享内存的大小。资源管理单元将该共享内存的信息连同交换机的标识,通过管理层和交换机之间的通道上报给管理设备。该交换机的标识不仅可以唯一标识该交换机,还能够区分该交换机为物理交换机还是虚拟交换机,以及虚拟交换机所在的物理计算机。
S22、管理设备在收到各个交换机的资源管理单元上报的共享内存的信息后,根据各共享内存得到全局共享内存,该全局共享内存包括多个交换机上报的共享内存。按顺序对全局共享内存中的多个共享内存进行统一的逻辑编址,得到全局地址。管理设备根据全局地址确定每个交换机的共享内存在全局共享内存中的地址,该地址即为第一全局地址。
S23、管理设备向每个交换机的资源管理单元分配该交换机对应的第一全局地址。
S24、交换机的资源管理单元建立该共享内存的第一物理地址和该第一全局地址的映射关系。
本领域技术人员可以理解,当该分布式集群中新增交换机时,管理设备可以更新该全局地址,例如在原来的全局地址的基础上继续编写地址,得到新的全局地址,实现了分布式集群的可扩展性。
步骤3、管理设备根据不同虚拟机的通信需求,向虚拟机发送第一分配信息,该第一分配信息包括分配给虚拟机的共享内存的大小以及该共享内存对应的交换机的标识。管理设备还向交换机发送第二分配信息,该第二分配信息包括该交换机的共享内存对应的虚拟机的标识。
管理设备在向虚拟机分配共享内存时,可以遵循传输效率最高的方式来进行分配。
针对位于同一物理计算机上的虚拟机,可以分配与这些虚拟机位于同一物理计算机上的虚拟交换机的共享内存。
针对位于不同物理计算机上的虚拟机,这些虚拟机可以通过一个交换机连接,也可以跨多个交换机连接。由此,当这些虚拟机跨多个交换机连接时,可以分配到达各虚拟机的平均距离最短的交换机的共享内存。本领域技术人员可以理解,对于需要进行通信的虚拟机,可根据该些虚拟机到每个交换机的距离来确定具体采用哪个交换机的共享内存。该距离可以通过路径距离以及传输时延等来体现,该路径距离可以为传输距离或路由跳数。
在可能的实现方式中,对于路径距离而言,需要通信的多个虚拟机与交换机之间的路径距离均小于预设距离,或者需要通信的多个虚拟机与交换机之间的路径距离的平均距离小于预设距离。对于传输时延而言,与路径距离类似,需要通信的多个虚拟机与交换机之间的传输时延均小于预设时延,或者需要通信的多个虚拟机与交换机之间的传输时延的平均时延小于预设时延。
以路由跳数为例来进行说明,传输距离和传输时延的实现方式类似,本实施例此处不再赘述。例如,第一虚拟机与第二虚拟机需要通信,第一虚拟机到交换机A的路由跳数为2,第一虚拟机到交换机B的路由跳数为4,第一虚拟机到交换机C的路由跳数为6。第二虚拟机到交换机A的路由跳数为5,第二虚拟机到交换机B的路由跳数为4,第二虚拟机到交换机C的路由跳数为7。
以平均路由跳数作为选择条件,第一虚拟机和第二虚拟机到交换机A的平均路由跳数为3.5小于预设路由跳数4,则将交换机A的共享内存分配给第一虚拟机和第二虚拟机。当有多个平均路由跳数小于预设跳数时,可选择平均路由跳数最小的交换机,或者选择能够提供的共享内存最大的交换机,本实施例对具体的选择方式不做特别限制。
以路由跳数均小于预设跳数作为选择条件,第一虚拟机到交换机B以及第二虚拟机到交换机B的路由跳数均小于5,则将交换机B的共享内存分配给第一虚拟机和第二虚拟机。
管理设备在接收到第二分配信息后,对该虚拟机进行标记以及对自身的共享内存进行标记,从而管理设备能够获知该共享内存的分配结果,对该共享内存进行预留而不作它用。
步骤4、虚拟机根据共享内存和该虚拟机的本地内存进行编址,并将共享内存对应的本地地址发送给该共享内存对应的交换机。
由于虚拟机自身也存在本地内存,而对于虚拟机而言,该本地内存和共享内存均为该虚拟机可使用的内存,所以虚拟机将该将共享内存和本地内存一起逻辑编址,得到共享内存在虚拟机本地的本地地址,并将该本地地址发送给该共享内存所属的交换机的资源管理单元,虚拟机还可以将自身的标识发送给该交换机,以便交换机来确定该虚拟机是否可以使用该共享内存。
步骤5、交换机建立该共享内存在虚拟机的本地地址与该第一全局地址的映射关系。
由于虚拟机的本地地址并不能对应到交换机的地址,所以交换机需要建立该本地地址与交换机的共享内存的地址的关系,在本实施例中,当交换机确定该虚拟机能够使用该交换机的共享内存后,交换机的资源管理单元建立该交换机的第一全局地址与该本地地址的映射关系。
通过配置过程,本实施例建立了两个映射关系。图6为本申请实施例提供的映射关系的示意图。如图6所示,一个映射关系为该全局地址与该共享内存在虚拟机的本地地址的映射关系,称为第一映射关系,另一个映射关系为该共享内存的物理地址和该全局地址的映射关系,称为第二映射关系。
在本实施例中,第一映射关系便于虚拟机访问,对于虚拟机而言,虚拟机只要获知读写的数据在本地的地址即可,而无需获知交换机的共享内存的相关地址。而对于交换机而言,通过两个映射关系,能够从该虚拟机的本地地址得到共享内存的物理地址,通过设置全局地址,便于管理设备对多个交换机的控制以及地址管理,且能够实现整个公有云系统层面的基于交换机共享内存的全局共享内存通信。
在本实施例中,通过交换机提供与多个虚拟机可以共享的共享内存,虚拟机之间通过在该共享内存中读写数据,实现了虚拟机之间的通信,虚拟机从交换机提供的共享内存中读取数据,不需要再经过多级交换机到对端虚拟机的内存中进行读写,减少了传输时延,此外管理设备会根据虚拟机与交换机之间的距离,来为各虚拟机分配距离该虚拟机较近的交换机的共享内存,大大减低了传输时延。通过管理设备统一管理和调配交换机中的共享内存,且在云计算环境下,管理设备对虚拟机和交换机都能够进行管理,使得管理更为简单可靠。由资源管理单元对交换机的内存进行管理和调配,提供了动态调整共享内存和网络交换用的交换内存的机制,可以在一定情况下提高交换机的性能,减少丢包率。
在配置完成后,下面采用具体的实施例,以第一虚拟机和第二虚拟机为例,来说明第一虚拟机与第二虚拟机的通信过程。
图7为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图。如图7所示,该方法包括:
S701、交换机接收第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址。
当第一虚拟机与第二虚拟机通信时,第二虚拟机可以把数据写入二者对应的共享内存中,第一虚拟机可以从该共享内存中读取该数据,本实施例对第一虚拟机从该共享内存中读取数据的时间不做特别限制,例如,第一虚拟机可以随时或周期性的从该共享内存中读取数据。其中,该共享内存即为上述实施例中所述的交换机的内存的一部分,该第一虚拟机和第二虚拟机都可以从该共享内存中读写数据。
第一虚拟机在读取该共享内存中的数据时,向交换机发送读请求,该读请求中包括第一本地地址。该第一本地地址的编址方式与上述实施例中所述的本地地址的编址方式相同,均是虚拟机对本地内存和分配给自己的共享内存一起编址得到的地址空间中的地址。
该第一本地地址可以为第一虚拟机自身编址得到的地址,也可以为第二虚拟机编址得到的地址。若为第二虚拟机编址得到的地址,则第二虚拟机通过消息传递的方式将该第一本地地址发送给该第一虚拟机。
在一种可能的实现方式中,在第一虚拟机发送的读请求中,还包括该共享内存对应的交换机的标识以及确定该第一本地地址的虚拟机的标识,例如,第一虚拟机的标识或第二虚拟机的标识。
当该读请求到达该交换机时,若该读请求中所包括的交换机的标识为该交换机的,则继续后续处理,若读请求中的交换机的标识不为该交换机的,则将该读请求转发至下一跳交换机。
S702、所述交换机根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分。
当交换机确定该读请求为向该交换机请求读数据时,交换机根据该第一本地地址与第一全局地址的映射关系,将第一本地地址转换为第一全局地址。其中,第一全局地址是述第一共享内存在全局共享内存中的地址,该全局共享内存包括该第一共享内存以及系统中其他交换机的第二共享内存,即全局共享内存包括与虚拟机能够进行内存共享的多个交换机的共享内存。第一全局地址可以由管理设备确定,并发送给该交换机,具体的实现方式可参见上述实施例,本实施例此处不再赘述。
本领域技术人员可以理解,不同的虚拟机的本地内存的大小会存在不同,所以不同的虚拟机虽然对应同一共享内存,但第一本地地址存在不同。因此,对于交换机而言,所建立的映射关系可以为虚拟机标识、第一本地地址以及第一全局地址三者之间的关联关系。
由此,不管该第一本地地址是第一虚拟机确定的还是第二虚拟机确定的,交换机都能够确定该第一本地地址所对应的第一全局地址。
S703、所述交换机根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址。
当获取到第一全局地址后,交换机根据预先建立的第一全局地址与第一物理地址的映射关系,获取到第一物理地址。其中,第一全局地址与第一物理地址的映射关系的建立过程,可参见上述实施例,本实施例此处不再赘述。
S704、所述交换机根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据。
S705、所述交换机将所述数据发送给所述第一虚拟机。
交换机在获取到该第一物理地址后,可以根据该第一物理地址,直接从该第一共享内存中读取数据,即第二虚拟机预先写入的数据。
在本实施例中,该交换机可以为物理交换机,也可以为虚拟交换机,该物理交换机和虚拟交换机的实现方式可参见上述图1和图2所示,本实施例对交换机的实现方式不做特别限制。
由上述配置过程的实现过程可知,管理设备在向虚拟机分配交换机的共享内存时,会考虑虚拟机与交换机之间的平均距离,从而减少传输时延,提高传输效率。在本实施例中,该平均距离可以为物理距离也可以为时间距离。
当该距离为物理距离时,该交换机与第一虚拟机之间的路径距离以及交换机与第二虚拟机之间的路径距离均小于预设距离。该路径距离可以为实际的传输距离,则该预设距离为预设传输距离。该路径距离还可以为路由跳数,则该预设距离可以为预设路由跳数。
当该距离为时间距离时,该交换机与第一虚拟机之间的传输时延以及该交换机与第二虚拟机之间的传输时延均小于预设传输时延。即第一虚拟机与第二虚拟机与交换机的传输时间较短,从而减少传输时延。
本实施例提供的基于共享内存的虚拟机通信方法,通过交换机接收第一虚拟机发送的读请求,该读请求中包括第一本地地址,交换机根据第一本地地址与第一全局地址的映射关系,将第一本地地址转换为第一全局地址,第一全局地址为根据第一共享内存确定的地址,第一共享内存为交换机的一部分,从而将第一虚拟机的逻辑地址转换为交换机的逻辑地址,交换机根据第一全局地址与第一物理地址的映射关系,将第一全局地址转换为第一物理地址,交换机根据第一物理地址,从第一共享内存中读取第二虚拟机写入该第一共享内存的数据,通过交换机提供的共享内存,多个虚拟机可以与该交换机共享该交换机提供的共享内存,不同虚拟机通过在该共享内存中读写数据,从而实现第一虚拟机和第二虚拟机的通信,第一虚拟机不需要再经过多级交换机到第二虚拟机的内存中读写数据,从能够转发数据的交换机的共享内存中读写数据,缩短了传输路径,降低了传输时延,提高了数据的读取效率。
下面以图8和图9两个具体的实施例,来说明第二虚拟机将数据写入共享内存的过程。
图8为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图。如图8所示,该方法包括:
S801、交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
S802、所述交换机根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
S803、所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
S804、所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在本实施例中,第一虚拟机和第二虚拟机在通信时,第二虚拟机将数据写入共享内存中,第一虚拟机从该共享内存中读取该数据,从而完成通信过程。第二虚拟机根据该第二虚拟机的本地内存和共享内存一起进行编址,该第二本地地址即为对应于第二虚拟机的本地地址。
结合图7所示实施例,由于第一虚拟机和第二虚拟机对应的本地地址可能存在不同,但不同的本地地址可能对应同一全局地址。所以第二虚拟机发送的写请求中还包括第二虚拟机的标识,交换机能够根据第二虚拟机的标识准确的获取该第二本地地址与第一全局地址的映射关系。例如,对于第一全局地址A而言,第一虚拟机的读请求中的第一本地地址为B,而该第二虚拟机的写请求中的第二本地地址为C,则对于交换机而言,存储的映射关系可以为第一虚拟机、第一本地地址B和第一全局地址A三者的关联关系,以及第二虚拟机、第二本地地址C和第二全局地址A三者的关联关系。交换机根据该关联关系,将该第二本地地址转换为第一全局地址,然后根据该第一全局地址与第一物理地址的映射关系,将第一全局地址转换为第一物理地址。交换机将数据写入第一共享内存中该第一物理地址所对应的内存空间。
本实施例通过第二虚拟机将数据写入交换机的共享内存,由第一虚拟机从该共享内存中获取该数据,实现了第一虚拟机和第二虚拟机的通信,第二虚拟机不需要再经过多级交换机到第一虚拟机的共享内存中写数据,或者第一虚拟机不需要经过多级交换机从该第二虚拟机的共享内存中读数据,降低了读写数据的时延,提高了数据传输效率。
图9为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图。如图9所示,该方法包括:
S901、交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址,所述交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址,所述第一本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
S902、所述交换机根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
S903、所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
S904、所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
第一虚拟机和第二虚拟机在通信时,第二虚拟机可以通过消息传递的方式向第一虚拟机发送第一本地地址,该第一本地地址是第二虚拟机根据该第二虚拟机的本地内存和共享内存一起进行编址,该第一本地地址即为对应于第二虚拟机的本地地址。
第二虚拟机通过消息传递的方式将该第一本地地址发送给第一虚拟机,还可以将该第二虚拟机的标识发送给第一虚拟机。
由于第一虚拟机和第二虚拟机对应的本地地址可能存在不同,但不同的本地地址可能对应同一全局地址。通过第二虚拟机的标识和该第一本地地址,交换机能够根据第二虚拟机的标识准确的获取该第一本地地址与第一全局地址的映射关系,然后将该第一本地地址转换为第一全局地址,然后根据该第一全局地址与第一物理地址的映射关系,将第一全局地址转换为第一物理地址。交换机将数据写入第一共享内存中该第一物理地址所对应的内存空间。
本实施例通过第二虚拟机将数据写入交换机的共享内存,第二虚拟机确定第一本地地址并通过消息传递的方式发送给第一虚拟机,由第一虚拟机从该共享内存中获取该数据,实现了第一虚拟机和第二虚拟机的通信的时效性,第二虚拟机不需要再经过多级交换机到第一虚拟机的共享内存中写数据,或者第一虚拟机不需要经过多级交换机从该第二虚拟机的共享内存中读数据,降低了读写数据的时延,提高了数据传输效率。
下面结合图2和图3所示的交换机的内部结构,通过图10给出通过该交换机进行读写的处理流程。图10为本申请一实施例提供的基于共享内存的虚拟机通信方法的流程图。如图10所示,该方法包括:
S1001、网络包进入交换机后,数据处理通道将该网络包缓存至交换内存中;
S1002、数据处理通道对该网络包的类型进行分析,判断该网络包是否为共享网络包,若该网络包为共享网络包,则执行S1003,若该网络包为普通网络包,则执行S1012;
S1003、数据处理通道判断该共享网络包的读写操作类型,若为读操作,则执行S1004,若为写操作,则执行S1008;
S1004、数据处理通道将数据的读地址发送至资源管理单元,该读地址为虚拟机的本地地址;
S1005、资源管理单元根据地址映射关系,将读地址转化为交换机的共享内存的物理地址,并将该物理地址发送至内存管理单元;
S1006、内存管理单元将该物理地址更新到数据处理通道的包标签中,然后删除交换内存中缓存的原始网络包;
S1007、数据处理通道调用内存管理单元,根据该包标签中的物理地址从共享内存中读取数据,返回给虚拟机;
S1008、数据处理通道将数据的写地址发送至资源管理单元,该写地址为虚拟机的本地地址;
S1009、资源管理单元根据地址映射关系,将写地址转化为交换机的共享内存的物理地址,并将该物理地址发送至内存管理单元;
S1010、资源管理单元将该网络包中所包括的数据写入共享内存中相应的物理地址中;
S1011、资源管理单元在数据写入完成后,将该网络包从交换内存中删除;
S1012、数据处理通道按照普通网络包的处理流程进行处理。
在本实施例中,在S1005以及S1009中,该映射关系实质上是包含了本实施例上述的两种映射关系,通过上述的两种映射关系,可以将读地址或写地址转换为物理地址,从而进行读写操作,通过交换机的共享内存来实现虚拟机的通信,不需要再经过多级交换机到对端虚拟机的共享内存中进行读写,提高了传输效率。
图11为本申请实施例提供的交换机的结构示意图。如图11所示,该交换机110包括接收模块1101、处理模块1102以及发送模块1103。其中
接收模块1101,用于接收第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;
处理模块1102,用于根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分;
根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址;
根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据;
发送模块1103,用于将所述数据发送给所述第一虚拟机。
在一种可能的实现方式中,所述第一本地地址是所述第一虚拟机根据所述第一虚拟机的本地内存和所述第一共享内存确定的地址;
所述接收模块1101还用于:接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在一种可能的实现方式中,所述第一本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述接收模块1101还用于:接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址;
根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
根据所述第一物理地址,将所述数据写入所述第一共享内存中。
在一种可能的实现方式中,所述第一全局地址是所述第一共享内存在全局共享内存中的地址,所述全局共享内存包括所述第一共享内存以及系统中其他交换机的第二共享内存。
在一种可能的实现方式中,所述交换机包括物理交换机或虚拟交换机。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的路径距离以及所述交换机与所述第二虚拟机之间的路径距离均小于预设距离。
在一种可能的实现方式中,所述交换机与所述第一虚拟机之间的传输时延以及所述交换机与所述第二虚拟机之间的传输时延均小于预设传输时延。
图12为本申请实施例提供的交换机的硬件结构示意图。如图12所示,该交换机120包括:处理器1201以及存储器1202;其中
存储器1202,用于存储计算机程序;
处理器1201,用于执行存储器存储的计算机程序,以实现上述实施例中的交换机所执行的基于共享内存的虚拟机通信方法。具体可以参见前述方法实施例中的相关描述。
可选地,存储器1202既可以是独立的,也可以跟处理器1201集成在一起。
当所述存储器1202是独立于处理器1201之外的器件时,所述交换机120还可以包括:
总线1203,用于连接所述存储器1202和处理器1201。
该交换机120还可以包括接收接口1204和发送接口1205,该接收接口1204用于接收虚拟机发送的读请求或写请求等,该发送接口1205用于向虚拟机等发送数据。
在一种可能的实现方式中,图11所示的处理模块1102可以被集成在处理器1201中实现,接收模块1101可以被集成在接收接口1204中,发送模块1103可以被集成在发送接口1205中实现。
本申请实施例提供的交换机,可用于执行上述方法实施例中的交换机所执行的方法,其实现原理和技术效果类似,本实施例此处不再赘述。
本申请实施例还提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序用于实现如上交换机所执行的方法。
本申请实施例还提供一种芯片,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得安装有所述芯片的通信设备执行如上交换机所实现的方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如上实施例中交换机所实现的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:central processing unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:DSP)、专用集成电路(英文:application specific integrated circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component,PCI)总线或扩展工业标准体系结构(extendedindustry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
Claims (14)
1.一种基于共享内存的虚拟机通信方法,其特征在于,包括:
交换机接收第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;
所述交换机根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分,所述第一全局地址是所述第一共享内存在全局共享内存中的地址,所述全局共享内存包括所述第一共享内存以及系统中其他交换机的第二共享内存;
所述交换机根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址;
所述交换机根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据;
所述交换机将所述数据发送给所述第一虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述第一本地地址是所述第一虚拟机根据所述第一虚拟机的本地内存和所述第一共享内存确定的地址,所述方法还包括:
所述交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述交换机根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
3.根据权利要求1所述的方法,其特征在于,所述第一本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址,所述方法还包括:
所述交换机接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址;
所述交换机根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
所述交换机根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
所述交换机根据所述第一物理地址,将所述数据写入所述第一共享内存中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述交换机包括物理交换机或虚拟交换机。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述交换机与所述第一虚拟机之间的路径距离以及所述交换机与所述第二虚拟机之间的路径距离均小于预设距离。
6.根据权利要求1-3任一项所述的方法,其特征在于:所述交换机与所述第一虚拟机之间的传输时延以及所述交换机与所述第二虚拟机之间的传输时延均小于预设传输时延。
7.一种交换机,其特征在于,包括:
接收模块,用于接收第一虚拟机发送的读请求,所述读请求用于读取第二虚拟机的数据,所述读请求中包括第一本地地址,所述第一本地地址是所述第一虚拟机或所述第二虚拟机确定的地址;
处理模块,用于:
根据所述第一本地地址与第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址,所述第一全局地址为根据第一共享内存确定的地址,所述第一共享内存为所述交换机的内存的一部分,所述第一全局地址是所述第一共享内存在全局共享内存中的地址,所述全局共享内存包括所述第一共享内存以及系统中其他交换机的第二共享内存;
根据所述第一全局地址与第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址,所述第一物理地址为所述第一共享内存的物理地址;
根据所述第一物理地址,从所述第一共享内存中读取数据,所述数据为第二虚拟机写入所述第一共享内存的数据;
发送模块,用于将所述数据发送给所述第一虚拟机。
8.根据权利要求7所述的交换机,其特征在于,所述第一本地地址是所述第一虚拟机根据所述第一虚拟机的本地内存和所述第一共享内存确定的地址;
所述接收模块还用于:接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述数据的第二本地地址,所述第二本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述处理模块还用于:
根据所述第二本地地址与所述第一全局地址的映射关系,将所述第二本地地址转换为所述第一全局地址;
根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
根据所述第一物理地址,将所述数据写入所述第一共享内存中。
9.根据权利要求7所述的交换机,其特征在于,所述第一本地地址是所述第二虚拟机根据所述第二虚拟机的本地内存和所述第一共享内存确定的地址;
所述接收模块还用于:
接收第二虚拟机发送的写请求,所述写请求中包括所述数据以及所述第一本地地址;
根据所述第一本地地址与所述第一全局地址的映射关系,将所述第一本地地址转换为所述第一全局地址;
根据所述第一全局地址与所述第一物理地址的映射关系,将所述第一全局地址转换为第一物理地址;
根据所述第一物理地址,将所述数据写入所述第一共享内存中。
10.根据权利要求7-9任一项所述的交换机,其特征在于,所述交换机包括物理交换机或虚拟交换机。
11.根据权利要求7-9任一项所述的交换机,其特征在于,所述交换机与所述第一虚拟机之间的路径距离以及所述交换机与所述第二虚拟机之间的路径距离均小于预设距离。
12.根据权利要求7-9任一项所述的交换机,其特征在于,所述交换机与所述第一虚拟机之间的传输时延以及所述交换机与所述第二虚拟机之间的传输时延均小于预设传输时延。
13.一种交换机,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述处理器运行所述计算机程序执行如权利要求1-6任一项所述的基于共享内存的虚拟机通信方法。
14.一种存储介质,其特征在于,所述存储介质包括计算机程序,所述计算机程序用于实现如权利要求1-6任一项所述的基于共享内存的虚拟机通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910490006.4A CN112052100B (zh) | 2019-06-06 | 2019-06-06 | 基于共享内存的虚拟机通信方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910490006.4A CN112052100B (zh) | 2019-06-06 | 2019-06-06 | 基于共享内存的虚拟机通信方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112052100A CN112052100A (zh) | 2020-12-08 |
CN112052100B true CN112052100B (zh) | 2023-05-12 |
Family
ID=73609023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910490006.4A Active CN112052100B (zh) | 2019-06-06 | 2019-06-06 | 基于共享内存的虚拟机通信方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112052100B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022155952A1 (zh) * | 2021-01-25 | 2022-07-28 | 深圳市大疆创新科技有限公司 | 地址映射方法及装置 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
WO2023230766A1 (zh) * | 2022-05-30 | 2023-12-07 | 华为技术有限公司 | 一种数据传输方法及虚拟化系统 |
CN115576656B (zh) * | 2022-12-12 | 2023-03-31 | 山东三未信安信息科技有限公司 | 一种域间通讯的装置、方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793330A (zh) * | 2012-10-31 | 2014-05-14 | 国际商业机器公司 | 在虚拟机环境中进行数据交换的方法和装置 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
-
2019
- 2019-06-06 CN CN201910490006.4A patent/CN112052100B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793330A (zh) * | 2012-10-31 | 2014-05-14 | 国际商业机器公司 | 在虚拟机环境中进行数据交换的方法和装置 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112052100A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112052100B (zh) | 基于共享内存的虚拟机通信方法及设备 | |
US5592625A (en) | Apparatus for providing shared virtual memory among interconnected computer nodes with minimal processor involvement | |
EP3748510A1 (en) | Network interface for data transport in heterogeneous computing environments | |
RU2640648C2 (ru) | Управление ресурсами для доменов высокопроизводительного межсоединения периферийных компонентов | |
US7571273B2 (en) | Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches | |
US5117350A (en) | Memory address mechanism in a distributed memory architecture | |
US8095701B2 (en) | Computer system and I/O bridge | |
US7047372B2 (en) | Managing I/O accesses in multiprocessor systems | |
US20210266253A1 (en) | Pooling of network processing resources | |
CN106648896B (zh) | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 | |
EP1779609B1 (en) | Integrated circuit and method for packet switching control | |
US8683107B2 (en) | Memory mapped input/output bus address range translation | |
CN112597075B (zh) | 用于路由器的缓存分配方法、片上网络及电子设备 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN109542814A (zh) | 通过pci-express的p2p连接在存储设备之间传输数据的方法和系统 | |
US8650349B2 (en) | Memory mapped input/output bus address range translation for virtual bridges | |
JP2017537404A (ja) | メモリアクセス方法、スイッチ、およびマルチプロセッサシステム | |
US10229073B2 (en) | System-on-chip and method for exchanging data between computation nodes of such a system-on-chip | |
EP1728359A1 (en) | Integrated circuit and method for packet switching control | |
CN115374046B (zh) | 一种多处理器数据交互方法、装置、设备及存储介质 | |
US20230027516A1 (en) | Method and apparatus to perform packet switching between services on different processors in a compute node in a server | |
US20020161453A1 (en) | Collective memory network for parallel processing and method therefor | |
US20240012684A1 (en) | Memory disaggregation method, computing system implementing the method | |
CN111865794A (zh) | 一种逻辑端口的关联方法、系统、设备及数据传输系统 | |
CN116680219A (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 | ||
GR01 | Patent grant |