CN111107663A - 数据的传输方法及装置、存储介质、电子装置 - Google Patents
数据的传输方法及装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN111107663A CN111107663A CN201811260211.3A CN201811260211A CN111107663A CN 111107663 A CN111107663 A CN 111107663A CN 201811260211 A CN201811260211 A CN 201811260211A CN 111107663 A CN111107663 A CN 111107663A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- connection structure
- quick connection
- quick
- virtual
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012790 confirmation Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 8
- 239000004744 fabric Substances 0.000 claims 5
- 238000004891 communication Methods 0.000 abstract description 21
- 230000000694 effects Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
Abstract
本发明提供了一种数据的传输方法及装置、存储介质、电子装置,该方法包括:在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。通过本发明,解决了虚拟机之间的通信路径较长,数据传输低效的问题,进而达到了提高数据传输效率的效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据的传输方法及装置、存储介质、电子装置。
背景技术
在虚拟化环境下,同一个主机上启动多个虚拟机,每个虚拟机配置的每个虚拟网卡都会挂载到同一个主机上的一个虚拟网桥上。虚拟机之间的网络通信在现有模式下其路径较长,低效。例如:从虚机A的虚拟网卡前端到虚机A的后端驱动,再经过主机的网络协议栈后转发到虚机B的虚拟网卡后端驱动,再到虚拟网卡的前端驱动。
针对上述技术问题,相关技术中尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据的传输方法及装置、存储介质、电子装置,以至少解决相关技术中虚拟机之间的通信路径较长,数据传输低效的问题。
根据本发明的一个实施例,提供了一种数据的传输方法,包括:在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。
根据本发明的另一个实施例,提供了一种数据传输方法,包括:在确定第二虚拟机接收到第一虚拟机发送的第一快速连接结构之后,创建第二快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;利用第一快速连接结构和第二快速连接结构进行数据传输。
根据本发明的另一个实施例,提供了一种数据的传输装置,包括:第一创建模块,用于在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;第一发送模块,用于将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;第一传输模块,用于利用第一快速连接结构和第二快速连接结构进行数据传输。
根据本发明的另一个实施例,提供了一种数据传输装置,包括:第二创建模块,用于在确定第二虚拟机接收到第一虚拟机发送的第一快速连接结构之后,创建第二快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;第二传输模块,用于利用第一快速连接结构和第二快速连接结构进行数据传输。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,由于第一虚拟机在确定与第二虚拟机建立连接之后,创建第一快速连接结构,并将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。使得第一虚拟机和第二虚拟机之间的数据传输路径简化。因此,可以解决相关技术中存在的虚拟机之间的通信路径较长,数据传输低效的问题,达到提高数据传输效率的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种数据的传输方法的移动终端的硬件结构框图;
图2是根据本发明实施例的数据的传输方法的流程图(一);
图3是根据本发明实施例的数据的传输方法的流程图(二);
图3a是本实施例中虚拟间原始网络通信流程示意图;
图3b是本实施例中虚拟机之间建立连接的示意图;
图3c是本实施例中的虚拟机之间的握手过程示意图;
图3d是本实施例中的网络通信示意图;
图4是根据本发明实施例的数据的传输装置的结构框图(一);
图5是根据本发明实施例的数据的传输装置的结构框图(二)。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种数据的传输方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据的传输方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种数据的传输方法,图2是根据本发明实施例的数据的传输方法的流程图(一),如图2所示,该流程包括如下步骤:
步骤S202,在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;
步骤S204,将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;
步骤S206,利用第一快速连接结构和第二快速连接结构进行数据传输。
通过上述步骤,由于第一虚拟机在确定与第二虚拟机建立连接之后,创建第一快速连接结构,并将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。使得第一虚拟机和第二虚拟机之间的数据传输路径简化。因此,可以解决相关技术中存在的虚拟机之间的通信路径较长,数据传输低效的问题,达到提高数据传输效率的效果。
可选地,上述步骤的执行主体可以为虚拟机等,但不限于此。
需要说明的是,本实施例中的第一虚拟机对应于上述中的虚拟机A,第二虚拟机对应于上述中的虚拟机B。本实施例并不限于两个虚拟机之间的数据传输,超过两个虚拟机之间的数据传输原理同上。
本实施例主要包括第一虚拟机与第二虚拟机之间的连接和数据的发送两部分。
第一步:第一虚拟机与第二虚拟机之间的连接,具体为:
第一虚拟机向第二虚拟机发送用于请求建立第一虚拟机和第二虚拟机之间的连接的连接请求;及时第一虚拟机发起的连接请求,也可以是第二虚拟机先发起连接。
接收第二虚拟机返回的用于响应连接请求的第一确认消息,其中,第一确认消息中还包括同步字符(synchronous Character,简称为SYN),用于虚拟机之间的数据同步;第一确认消息可以是ACK(Acknowledgement)。
本实施例中的第一快速连接结构和第二快速连接机构可以是快速连接的关键结构ksock,将ksock及应答第一虚拟机的ACK发送到第二虚拟机。根据第一确认消息确定第一虚拟机与第二虚拟机建立了连接。
需要说明的是,通过以下方式将第一快速连接结构发送给第二虚拟机:将携带第一快速连接结构的第二确认消息发送到第二虚拟机。
第二虚拟机收到ACK包后,检查ksock结构是否有效,在有效的情况下创建对应第二虚拟机的ksock结构(即第二快速连接结构),并将第二虚拟机的ksock和第一虚拟机的ksock相互建立关联(即通过虚机A的ksock可以访问到虚机B的ksock,反之亦然)。
第一虚拟机在执行connect命令的时候检查第一虚拟机的ksock结构,如果其关联的对端(此处即第二虚拟机)的ksock结构有效,则创建共享内存用于数据传输。到此快速连接建立完成。共享内存是在主机中的。
第二步:数据传输,具体包括:
在建立的第一快速连接结构中的数据和第二快速连接结构中的数据之间的映射关系有效的情况下;第一虚拟机利用虚拟网卡前端驱动将数据拷贝到共享内存中;
第一虚拟机利用第一快速连接结构向第二虚拟机发送通知消息,以指示第二虚拟机将通知消息传输到第二虚拟机的虚拟网卡前端驱动;
第二虚拟机的虚拟网卡前端驱动从共享内存中获取数据。
在本实施例中提供了一种数据的传输方法,图3是根据本发明实施例的数据的传输方法的流程图(二),如图3所示,该流程包括如下步骤:
步骤S302,在确定第二虚拟机接收到第一虚拟机发送的第一快速连接结构之后,创建第二快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;
步骤S304,利用第一快速连接结构和第二快速连接结构进行数据传输。
通过上述步骤,由于第一虚拟机在确定与第二虚拟机建立连接之后,创建第一快速连接结构,并将第一快速连接结构发送给第二虚拟机,第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。使得第一虚拟机和第二虚拟机之间的数据传输路径简化。因此,可以解决相关技术中存在的虚拟机之间的通信路径较长,数据传输低效的问题,达到提高数据传输效率的效果。
可选地,上述步骤的执行主体可以为虚拟机等,但不限于此。
需要说明的是,本实施例中的第一虚拟机对应于上述中的虚拟机A,第二虚拟机对应于上述中的虚拟机B。本实施例并不限于两个虚拟机之间的数据传输,超过两个虚拟机之间的数据传输原理同上。
图3a是本实施例中虚拟间原始网络通信流程示意图,如图3a所示,虚拟机A和虚拟机B均与主机连接,但虚拟机A和虚拟机B之间并没有相关连接。
本实施例主要包括第一虚拟机与第二虚拟机之间的连接和数据的发送两部分。
第一步:第一虚拟机与第二虚拟机之间的连接,具体为:
第一虚拟机向第二虚拟机发送用于请求建立第一虚拟机和第二虚拟机之间的连接的连接请求;及时第一虚拟机发起的连接请求,也可以是第二虚拟机先发起连接。
接收第二虚拟机返回的用于响应连接请求的第一确认消息,其中,第一确认消息中还包括同步字符(synchronous Character,简称为SYN),用于虚拟机之间的数据同步;第一确认消息可以是ACK(Acknowledgement)。例如:图3b是本实施例中虚拟机之间建立连接的示意图,如图3b所示,虚拟机A和虚拟机B之间通过各自建立的第一快速连接结构(ksock)和第二快速连接结构(ksock)建立连接。
本实施例中的第一快速连接结构和第二快速连接机构可以是快速连接的关键结构ksock,将ksock及应答第一虚拟机的ACK发送到第二虚拟机。根据第一确认消息确定第一虚拟机与第二虚拟机建立了连接。
需要说明的是,通过以下方式将第一快速连接结构发送给第二虚拟机:将携带第一快速连接结构的第二确认消息发送到第二虚拟机。
第二虚拟机收到ACK包后,检查ksock结构是否有效,在有效的情况下创建对应第二虚拟机的ksock结构(即第二快速连接结构),并将第二虚拟机的ksock和第一虚拟机的ksock相互建立关联(即通过虚机A的ksock可以访问到虚机B的ksock,反之亦然)。
第一虚拟机在执行connect命令的时候检查第一虚拟机的ksock结构,如果其关联的对端(此处即第二虚拟机)的ksock结构有效,则创建共享内存用于数据传输。到此快速连接建立完成。共享内存是在主机中的。
第二步:数据传输,具体包括:
在建立的第一快速连接结构中的数据和第二快速连接结构中的数据之间的映射关系有效的情况下;第一虚拟机利用虚拟网卡前端驱动将数据拷贝到共享内存中;
在进行通信之间,第一虚拟机和第二虚拟机之间通过握手达成通信协议,图3c是本实施例中的虚拟机之间的握手过程示意图,如图3c所示,虚拟机A和虚拟机B通过三次握手的方式达成通信协议。
图3d是本实施例中的网络通信示意图,如图3d所示,第一虚拟机利用第一快速连接结构向第二虚拟机发送通知消息,以指示第二虚拟机将通知消息传输到第二虚拟机的虚拟网卡前端驱动;第二虚拟机的虚拟网卡前端驱动从共享内存中获取数据。
可选地,本实施例中的第一快速连接结构和第二快速连接结构的具体结构和作用如下:
具体结构:
struct ksock{
...
struct ksock*remote_ksock;连接对端的ksock
struct eventfd*notify;用于中断传输(控制流)
void*shared_memptr;共享内存指针
gpa_t u_sock对应Guest应用的socket结构
...
}
作用:
记录通信对端连接信息;
记录通信传输控制信息;
记录通信传输数据地址;
记录网络协议socket连接socket信息。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据的传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本发明实施例的数据的传输装置的结构框图(一),如图4所示,该装置包括:第一创建模块42、第一发送模块44以及第一传输模块46,下面对该装置进行详细说明:
第一创建模块42,用于在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;
第一发送模块44,连接至上述中的第一创建模块42,用于将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;
第一传输模块46,连接上述中的第一发送模块44,用于利用第一快速连接结构和第二快速连接结构进行数据传输。
通过上述步骤,由于第一虚拟机在确定与第二虚拟机建立连接之后,创建第一快速连接结构,并将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。使得第一虚拟机和第二虚拟机之间的数据传输路径简化。因此,可以解决相关技术中存在的虚拟机之间的通信路径较长,数据传输低效的问题,达到提高数据传输效率的效果。
可选地,上述步骤的执行主体可以为虚拟机等,但不限于此。
需要说明的是,本实施例中的第一虚拟机对应于上述中的虚拟机A,第二虚拟机对应于上述中的虚拟机B。本实施例并不限于两个虚拟机之间的数据传输,超过两个虚拟机之间的数据传输原理同上。
本实施例主要包括第一虚拟机与第二虚拟机之间的连接和数据的发送两部分。
第一步:第一虚拟机与第二虚拟机之间的连接,具体为:
第一虚拟机向第二虚拟机发送用于请求建立第一虚拟机和第二虚拟机之间的连接的连接请求;及时第一虚拟机发起的连接请求,也可以是第二虚拟机先发起连接。
接收第二虚拟机返回的用于响应连接请求的第一确认消息,其中,第一确认消息中还包括同步字符(synchronous Character,简称为SYN),用于虚拟机之间的数据同步;第一确认消息可以是ACK(Acknowledgement)。
本实施例中的第一快速连接结构和第二快速连接机构可以是快速连接的关键结构ksock,将ksock及应答第一虚拟机的ACK发送到第二虚拟机。根据第一确认消息确定第一虚拟机与第二虚拟机建立了连接。
需要说明的是,通过以下方式将第一快速连接结构发送给第二虚拟机:将携带第一快速连接结构的第二确认消息发送到第二虚拟机。
第二虚拟机收到ACK包后,检查ksock结构是否有效,在有效的情况下创建对应第二虚拟机的ksock结构(即第二快速连接结构),并将第二虚拟机的ksock和第一虚拟机的ksock相互建立关联(即通过虚机A的ksock可以访问到虚机B的ksock,反之亦然)。
第一虚拟机在执行connect命令的时候检查第一虚拟机的ksock结构,如果其关联的对端(此处即第二虚拟机)的ksock结构有效,则创建共享内存用于数据传输。到此快速连接建立完成。共享内存是在主机中的。
第二步:数据传输,具体包括:
在建立的第一快速连接结构中的数据和第二快速连接结构中的数据之间的映射关系有效的情况下;第一虚拟机利用虚拟网卡前端驱动将数据拷贝到共享内存中;
第一虚拟机利用第一快速连接结构向第二虚拟机发送通知消息,以指示第二虚拟机将通知消息传输到第二虚拟机的虚拟网卡前端驱动;
第二虚拟机的虚拟网卡前端驱动从共享内存中获取数据。
图5是根据本发明实施例的数据的传输装置的结构框图(二),如图5所示,该装置包括:第二创建模块52和第二传输模块54,下面对该装置进行详细说明:
第二创建模块52,用于在确定第二虚拟机接收到第一虚拟机发送的第一快速连接结构之后,创建第二快速连接结构,其中,第一虚拟机和第二虚拟机均与同一主机连接;
第二传输模块54,连接至上述中的第二创建模块52,用于利用第一快速连接结构和第二快速连接结构进行数据传输。
通过上述步骤,由于第一虚拟机在确定与第二虚拟机建立连接之后,创建第一快速连接结构,并将第一快速连接结构发送给第二虚拟机,以指示第二虚拟机建立第二快速连接结构;利用第一快速连接结构和第二快速连接结构进行数据传输。使得第一虚拟机和第二虚拟机之间的数据传输路径简化。因此,可以解决相关技术中存在的虚拟机之间的通信路径较长,数据传输低效的问题,达到提高数据传输效率的效果。
可选地,上述步骤的执行主体可以为虚拟机等,但不限于此。
需要说明的是,本实施例中的第一虚拟机对应于上述中的虚拟机A,第二虚拟机对应于上述中的虚拟机B。本实施例并不限于两个虚拟机之间的数据传输,超过两个虚拟机之间的数据传输原理同上。
本实施例主要包括第一虚拟机与第二虚拟机之间的连接和数据的发送两部分。
第一步:第一虚拟机与第二虚拟机之间的连接,具体为:
第一虚拟机向第二虚拟机发送用于请求建立第一虚拟机和第二虚拟机之间的连接的连接请求;及时第一虚拟机发起的连接请求,也可以是第二虚拟机先发起连接。
接收第二虚拟机返回的用于响应连接请求的第一确认消息,其中,第一确认消息中还包括同步字符(synchronous Character,简称为SYN),用于虚拟机之间的数据同步;第一确认消息可以是ACK(Acknowledgement)。
本实施例中的第一快速连接结构和第二快速连接机构可以是快速连接的关键结构ksock,将ksock及应答第一虚拟机的ACK发送到第二虚拟机。根据第一确认消息确定第一虚拟机与第二虚拟机建立了连接。
需要说明的是,通过以下方式将第一快速连接结构发送给第二虚拟机:将携带第一快速连接结构的第二确认消息发送到第二虚拟机。
第二虚拟机收到ACK包后,检查ksock结构是否有效,在有效的情况下创建对应第二虚拟机的ksock结构(即第二快速连接结构),并将第二虚拟机的ksock和第一虚拟机的ksock相互建立关联(即通过虚机A的ksock可以访问到虚机B的ksock,反之亦然)。
第一虚拟机在执行connect命令的时候检查第一虚拟机的ksock结构,如果其关联的对端(此处即第二虚拟机)的ksock结构有效,则创建共享内存用于数据传输。到此快速连接建立完成。共享内存是在主机中的。
第二步:数据传输,具体包括:
在建立的第一快速连接结构中的数据和第二快速连接结构中的数据之间的映射关系有效的情况下;第一虚拟机利用虚拟网卡前端驱动将数据拷贝到共享内存中;
第一虚拟机利用第一快速连接结构向第二虚拟机发送通知消息,以指示第二虚拟机将通知消息传输到第二虚拟机的虚拟网卡前端驱动;
第二虚拟机的虚拟网卡前端驱动从共享内存中获取数据。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以上步骤的计算机程序。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以上各步骤。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种数据的传输方法,其特征在于,包括:
在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,所述第一虚拟机和所述第二虚拟机均与同一主机连接;
将所述第一快速连接结构发送给所述第二虚拟机,以指示所述第二虚拟机建立第二快速连接结构;
利用所述第一快速连接结构和所述第二快速连接结构进行数据传输。
2.根据权利要求1所述的方法,其特征在于,在创建所述第一快速连接结构之前,所述方法还包括:确定所述第一虚拟机与所述第二虚拟机建立连接,其中,确定所述第一虚拟机与所述第二虚拟机建立连接包括:
向所述第二虚拟机发送用于请求建立所述第一虚拟机和所述第二虚拟机之间的连接的连接请求;
接收所述第二虚拟机返回的用于响应所述连接请求的第一确认消息;
根据所述第一确认消息确定所述第一虚拟机与所述第二虚拟机建立了连接。
3.根据权利要求1所述的方法,其特征在于,将所述第一快速连接结构发送给所述第二虚拟机包括:
将携带所述第一快速连接结构的第二确认消息发送到所述第二虚拟机。
4.根据权利要求1所述的方法,其特征在于,在利用所述第一快速连接结构和所述第二快速连接结构进行所述数据传输之前,所述方法还包括:
在检查到所述第一快速连接结构与所述第二快速连接结构之间的映射有效的情况下,确定共享内存。
5.根据权利要求4所述的方法,其特征在于,利用所述第一快速连接结构和所述第二快速连接结构进行所述数据传输包括:
建立所述第一快速连接结构中的数据和所述第二快速连接结构中的数据之间的映射关系;
利用所述第一虚拟机的虚拟网卡前端驱动将所述数据拷贝到所述共享内存中;
利用所述第一快速连接结构向所述第二虚拟机发送通知消息,以指示所述第二虚拟机将所述通知消息传输到所述第二虚拟机的虚拟网卡前端驱动,使得所述第二虚拟机的虚拟网卡前端驱动从所述共享内存中获取所述数据。
6.一种数据传输方法,其特征在于,包括:
在确定第二虚拟机接收到第一虚拟机发送的第一快速连接结构之后,创建第二快速连接结构,其中,所述第一虚拟机和所述第二虚拟机均与同一主机连接;
利用所述第一快速连接结构和所述第二快速连接结构进行数据传输。
7.根据权利要求6所述的方法,其特征在于,在确定所述第二虚拟机接收到所述第一虚拟机发送的所述第一快速连接结构之前,所述方法还包括:确定所述第一虚拟机与所述第二虚拟机建立连接,其中,确定所述第一虚拟机与所述第二虚拟机建立连接包括:
接收所述第一虚拟机发送的用于请求建立所述第一虚拟机和所述第二虚拟机之间的连接的连接请求;
向所述第一虚拟机发送用于响应所述连接请求的第一确认消息;
根据所述第一确认消息确定所述第一虚拟机与所述第二虚拟机建立了连接。
8.根据权利要求6所述的方法,其特征在于,接收所述第一虚拟机发送的所述第一快速连接结构包括:
接收所述第一虚拟机发送的第二确认消息,其中,所述第二确认消息中携带所述第一快速连接结构。
9.根据权利要求6所述的方法,其特征在于,利用所述第一快速连接结构和所述第二快速连接结构进行所述数据传输包括:
建立所述第一快速连接结构中的数据和所述第二快速连接结构中的数据之间的映射关系;
接收所述第一虚拟机的虚拟网卡前端驱动发送的通知消息;
将所述通知消息发送到第二虚拟机的虚拟网卡前端驱动,使得所述第二虚拟机的虚拟网卡前端驱动从共享内存中获取所述数据;
其中,所述共享内存是所述第一虚拟机在检查到所述第一快速连接结构与所述第二快速连接结构之间的映射有效的情况下确定的。
10.一种数据的传输装置,其特征在于,包括:
第一创建模块,用于在确定第一虚拟机与第二虚拟机建立连接之后,创建第一快速连接结构,其中,所述第一虚拟机和所述第二虚拟机均与同一主机连接;
第一发送模块,用于将所述第一快速连接结构发送给所述第二虚拟机,以指示所述第二虚拟机建立第二快速连接结构;
第一传输模块,用于利用所述第一快速连接结构和所述第二快速连接结构进行数据传输。
11.一种数据传输装置,其特征在于,包括:
第二创建模块,用于在确定第二虚拟机接收到第一虚拟机发送的第一快速连接结构之后,创建第二快速连接结构,其中,所述第一虚拟机和所述第二虚拟机均与同一主机连接;
第二传输模块,用于利用所述第一快速连接结构和所述第二快速连接结构进行数据传输。
12.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至5任一项中所述的方法,或者,执行所述权利要求6至9任一项中所述的方法。
13.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至5任一项中所述的方法,或者,执行所述权利要求6至9任一项中所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260211.3A CN111107663B (zh) | 2018-10-26 | 2018-10-26 | 数据的传输方法及装置、存储介质、电子装置 |
PCT/CN2019/110996 WO2020083060A1 (zh) | 2018-10-26 | 2019-10-14 | 数据的传输方法及装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260211.3A CN111107663B (zh) | 2018-10-26 | 2018-10-26 | 数据的传输方法及装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111107663A true CN111107663A (zh) | 2020-05-05 |
CN111107663B CN111107663B (zh) | 2022-09-27 |
Family
ID=70331848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811260211.3A Active CN111107663B (zh) | 2018-10-26 | 2018-10-26 | 数据的传输方法及装置、存储介质、电子装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111107663B (zh) |
WO (1) | WO2020083060A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559075A (zh) * | 2013-10-30 | 2014-02-05 | 华为技术有限公司 | 一种数据传输方法、装置和系统及内存装置 |
US20160224364A1 (en) * | 2015-02-03 | 2016-08-04 | International Business Machines Corporation | Using a mobile device to transfer virtual machine between computers while preserving session |
CN106612306A (zh) * | 2015-10-22 | 2017-05-03 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8402228B2 (en) * | 2010-06-30 | 2013-03-19 | International Business Machines Corporation | Page buffering in a virtualized, memory sharing configuration |
CN107453845B (zh) * | 2016-03-31 | 2021-01-15 | 阿里巴巴集团控股有限公司 | 应答确认方法及设备 |
-
2018
- 2018-10-26 CN CN201811260211.3A patent/CN111107663B/zh active Active
-
2019
- 2019-10-14 WO PCT/CN2019/110996 patent/WO2020083060A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559075A (zh) * | 2013-10-30 | 2014-02-05 | 华为技术有限公司 | 一种数据传输方法、装置和系统及内存装置 |
US20160224364A1 (en) * | 2015-02-03 | 2016-08-04 | International Business Machines Corporation | Using a mobile device to transfer virtual machine between computers while preserving session |
CN106612306A (zh) * | 2015-10-22 | 2017-05-03 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020083060A1 (zh) | 2020-04-30 |
CN111107663B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107926075B (zh) | 支持异构环境下的数据通信的系统和方法 | |
CN109428773B (zh) | 一种通信方法和装置 | |
CN114077480B (zh) | 一种主机与虚拟机共享内存方法、装置、设备及介质 | |
CN112769794B (zh) | 一种数据转换方法及装置 | |
CN111885115A (zh) | 设备绑定变更方法及装置 | |
CN103685496A (zh) | 一种文件数据的传输方法和设备 | |
CN111130820B (zh) | 集群管理方法、装置及计算机系统 | |
CN106657076B (zh) | 一种网络命名空间的tcp服务实现方法及装置 | |
CN113259918A (zh) | 设备的绑定方法及系统 | |
CN112511621A (zh) | 数据发送方法及装置、存储介质、电子装置 | |
CN112422485B (zh) | 一种传输控制协议的通信方法及装置 | |
CN111107663B (zh) | 数据的传输方法及装置、存储介质、电子装置 | |
CN117336346A (zh) | 一种ippbx与pms对接状态转换方法、终端设备及介质 | |
CN116243853A (zh) | 数据传输方法、装置、电子设备及非易失性存储介质 | |
CN113691520B (zh) | 获取流媒体信息的方法、装置、存储介质及电子装置 | |
CN113014610B (zh) | 一种远程访问方法、装置及系统 | |
CN114363204A (zh) | 请求监控方法、网络设备及存储介质 | |
CN110971696B (zh) | 一种实现虚拟电子卡通讯的系统和方法 | |
CN109426547B (zh) | 一种虚拟机的热迁移方法、装置和系统 | |
CN107454021B (zh) | 一种通信方法及装置 | |
CN111416851A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
CN111240867A (zh) | 一种信息通讯系统及方法 | |
CN109871288A (zh) | 执行Android系统命令的方法、装置、设备及介质 | |
CN105763519A (zh) | 一种一致性控制方法,装置及系统 | |
CN111124445A (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 |