CN103618809A - 一种虚拟化环境下通信的方法、装置和系统 - Google Patents

一种虚拟化环境下通信的方法、装置和系统 Download PDF

Info

Publication number
CN103618809A
CN103618809A CN201310561946.0A CN201310561946A CN103618809A CN 103618809 A CN103618809 A CN 103618809A CN 201310561946 A CN201310561946 A CN 201310561946A CN 103618809 A CN103618809 A CN 103618809A
Authority
CN
China
Prior art keywords
transmitting apparatus
receiving equipment
mentioned
receiving
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.)
Pending
Application number
CN201310561946.0A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310561946.0A priority Critical patent/CN103618809A/zh
Publication of CN103618809A publication Critical patent/CN103618809A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明实施例公开了一种虚拟化环境下通信的方法、装置和系统,其中方法的实现包括:发送设备将待发送的数据存放在存储器中,所述存储器为所述发送设备与接收设备共享的存储器,所述发送设备和所述接收设备中至少有一个为虚拟设备;所述发送设备获取所述待发送的数据在所述存储器中的地址段;所述发送设备将所述地址段发送给所述接收设备。以上方法,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。

Description

一种虚拟化环境下通信的方法、装置和系统
技术领域
本发明涉及通信技术领域,特别涉及一种虚拟化环境下通信的方法、装置和系统。
背景技术
随着虚拟化技术的发展,许多电信软件业务已经迁移到了虚拟化环境里,然而对于网络设备的虚拟化会直接影响网络性能,于是如何在虚拟化环境下高效地访问网络成为许多电信软件设计关注的焦点。
传统的虚拟化技术中,像其它普通外设一样,Host OS(Host OperatingSystem,宿主机操作系统)负责将NIC(Network Interface Card,网络接口卡,即:网卡)抽象成若干虚拟设备,Guest OS(Guest Operating System,客户机操作系统)可以将这些虚拟网卡当作标准NIC使用。其中,Host OS是指安装在宿主机上的操作系统,Guest OS是指安装在虚拟机上的操作系统;宿主机是指安装虚拟软件的硬件设备,虚拟机是指利用虚拟机工具构造出来的设备。该虚拟化技术中,虚拟设备被虚拟为独立的设备,可移植性高,并且支持热迁移。
在上述虚拟化技术方案下,以Guest(客户机)数据包的发送为例,Guest需要先通过协议栈,把数据包转给虚拟网卡驱动,再通过hypervisor(虚拟机监视器,一种运行在基础物理设备和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件)转发给Host(宿主机)的物理网卡,然后通过物理网卡将数据包发送出去。数据包的接收的流程与发送流程互为逆流程,不再赘述。
但是以上方案,数据包在Guest与Host之间传递需要经过多次内存拷贝,导致处理时间较长,影响吞吐率。
发明内容
本发明实施例提供了一种虚拟化环境下通信的方法、装置和系统,用于消除数据的拷贝,提高吞吐率。
本发明实施例一方面提供了一种虚拟化环境下通信的方法,包括:
发送设备将待发送的数据存放在存储器中,所述存储器为所述发送设备与接收设备共享的存储器,所述发送设备和所述接收设备中至少有一个为虚拟设备;
所述发送设备获取所述待发送的数据在所述存储器中的地址段;
所述发送设备将所述地址段发送给所述接收设备。
结合一方面的实现方式,在第一种可选的实现方式中,在所述发送设备将待发送的数据存放在存储器中前,所述方法还包括:所述发送设备的网卡接收发往所述接收设备的数据;所述发送设备确定所述网卡接收到的数据为待发送的数据。
结合一方面的实现方式或者第一种可选的实现方式,在第二种可选的实现方式中,所述获取所述待发送的数据在所述存储器中的地址段包括:获取用于标识所述待发送的数据在所述存储器中的地址段的地址标识;
在所述发送设备将所述地址段发送给所述接收设备前,所述方法还包括:将所述地址标识存放在所述发送设备的发送队列中;
所述发送设备将所述地址段发送给所述接收设备包括:
所述发送设备将所述发送设备的发送队列中存储的地址标识发送给所述接收设备。
结合一方面的第一种可选的实现方式,在第二种可选的实现方式中,在所述发送设备将所述发送设备的发送队列中存储的地址标识发送给所述接收设备前,还包括:
所述发送设备与所述接收设备协商,确定所述发送设备的发送队列与所述接收设备的接收队列之间的对应关系;
所述发送设备将所述发送设备的发送队列中存储的地址标识发送给所述接收设备包括:
所述发送设备根据所述对应关系,将所述发送设备的发送队列中存储的地址标识发送给接收设备。
本发明实施例二方面提供了一种虚拟化环境下通信的方法,包括:
接收设备接收发送设备发送的地址段;所述接收设备接收到的所述地址段属于所述发送设备与所述接收设备共享的存储器的地址段;所述发送设备和接收设备中至少有一个为虚拟设备;
所述接收设备获取在所述地址段中存放的数据。
结合二方面的实现方式,在第一种可选的实现方式中,所述接收设备接收发送设备发送的地址段包括:
所述接收设备的接收队列接收所述发送设备发送的地址标识,所述地址标识为用于标识所述数据在所述存储器中的地址段的地址标识。
结合二方面的第一种可选的实现方式,在第一种可选的实现方式中,在所述接收设备的接收队列接收所述发送设备发送的地址标识之前,还包括:
所述接收设备与所述发送设备协商,确定所述发送设备的发送队列与所述接收设备的接收队列之间的对应关系;
所述接收设备的接收队列接收所述发送设备发送的地址标识包括:
所述接收设备的接收队列接收所述发送设备发送的地址标识,所述发送设备发送的地址标识由所述发送设备根据所述对应关系进行发送。
本发明实施例三方面提供了一种虚拟化环境下通信的发送设备,包括:
存储单元,用于将待发送的数据存放在存储器中,所述存储器为所述发送设备与接收设备共享的存储器,所述发送设备和所述接收设备中至少有一个为虚拟设备;
获取单元,用于获取所述存储单元存放的所述待发送的数据在所述存储器中的地址段;
发送单元,用于将所述获取单元获取到的所述地址段发送给所述接收设备。
结合三方面的实现方式,在第一种可选的实现方式中,所述发送设备,还包括:
接收单元,用于在所述存储单元将待发送的数据存放在存储器中前,通过网卡接收发往所述接收设备的数据;
确定单元,用于确定所述接收单元通过网卡接收到的数据为待发送的数据;
所述存储单元,用于将所述确定单元确定的待发送的数据存放在存储器中。
结合三方面的实现方式或者三方面的第一种可能的实现方式,在第二种可选的实现方式中,所述获取单元,用于获取用于标识所述待发送的数据在所述存储器中的地址段的地址标识;
所述发送设备还包括:管理单元,用于将所述获取单元获取到所述地址标识存放在所述发送设备的发送队列中;
所述发送单元,用于将所述管理单元在所述发送设备的发送队列中存储的地址标识发送给所述接收设备。
结合三方面的第二种可选的实现方式,在第三种可选的实现方式中,所述发送设备,还包括:
协商单元,用于与所述接收设备协商,确定与所述接收设备的接收队列之间的对应关系;
所述发送单元,用于根据所述协商单元确定的所述对应关系,将所述管理单元在所述发送设备的发送队列中存储的地址标识发送给所述接收设备。
本发明实施例四方面提供了一种虚拟化环境下通信的接收设备,包括:
接收单元,用于接收发送设备发送的地址段;所述接收单元接收到的所述地址段属于所述发送设备与所述接收设备共享的存储器的地址段;所述发送设备和接收设备中至少有一个为虚拟设备;
获取单元,用于获取在所述接收单元接收到的所述地址段中存放的数据。
结合四方面的实现方式,在第一种可选的实现方式中,所述接收单元,用于通过所述接收设备的接收队列接收所述发送设备发送的地址标识,所述地址标识为用于标识所述数据在所述存储器中的地址段的地址标识。
结合四方面的第一种可选的实现方式,在第二种可选的实现方式中,所述接收设备,还包括:
协商单元,用于与所述发送设备协商,确定所述发送设备的发送队列与所述接收设备的接收队列之间的对应关系;
所述接收单元,用于通过所述接收设备的接收队列接收所述发送设备发送的地址标识,所述发送设备发送的地址标识由所述发送设备根据所述协商单元确定的所述对应关系进行发送。
本发明实施例五方面提供了一种虚拟化环境下通信的系统,包括:发送设备和接收设备,其中所述发送设备为本发明实施例提供的任意一项的发送设备,所述接收设备为本发明实施例提供的任意一项的接收设备。
从以上技术方案可以看出,本发明实施例具有以下优点:将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例方法流程示意图;
图2为本发明实施例方法流程示意图;
图3A为本发明实施例系统结构示意图;
图3B为本发明实施例系统结构示意图;
图3C为本发明实施例系统结构示意图;
图3D为本发明实施例系统结构示意图;
图4A为本发明实施例系统结构示意图;
图4B为本发明实施例设备结构示意图;
图5为本发明实施例设备结构示意图;
图6为本发明实施例方法流程示意图;
图7为本发明实施例方法流程示意图;
图8为本发明实施例设备结构示意图;
图9为本发明实施例发送设备结构示意图;
图10为本发明实施例发送设备结构示意图;
图11为本发明实施例发送设备结构示意图;
图12为本发明实施例发送设备结构示意图;
图13为本发明实施例接收设备结构示意图;
图14为本发明实施例接收设备结构示意图;
图15为本发明实施例设备结构示意图;
图16为本发明实施例设备结构示意图;
图17为本发明实施例系统结构示意图;
图18为本发明实施例终端结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种虚拟化环境下通信的方法,本实施例方法在发送设备一侧实现,如图1所示,包括:
101:发送设备将待发送的数据存放在存储器中,上述存储器为上述发送设备与接收设备共享的存储器,上述发送设备和上述接收设备中至少有一个为虚拟设备;
在本步骤中,发送设备可以首先确定那些数据是需要向接收设备发送数据,然后在发送设备与上述接收设备共享的存储器中申请存放待发送的数据的地址段,并将待发送的数据存放在申请到的地址段中;由于是虚拟化环境,因此上述发送设备和接收设备其中至少有一个是虚拟设备(客户机)。发送设备和接收设备,可以是两个虚拟机,也可以是一个虚拟机中的两个进程,还可以分别是虚拟机和宿主机。
发送设备和接收设备进行收发数据可以是由网络的网卡进行的,因此,在上述发送设备将待发送的数据存放在存储器中前,上述方法还包括:上述发送设备的网卡接收发往上述接收设备的数据;上述发送设备确定上述网卡接收到的数据为待发送的数据。
本实施例,给出了网卡这种具体的应用场景,上述发送设备和接收设备中的至少一个具有的网卡可以是虚拟网卡。由于发送设备和接收设备可能并不需要通过网络传输,因此也不一定必然采用本实施例方案来确定是否有数据需要发送并启动本发明实施例方案。因此,本实施例的举例不应理解为对本发明实施例的限定。
102:上述发送设备获取上述待发送的数据在上述存储器中的地址段;上述发送设备将上述地址段发送给上述接收设备。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
进一步地,为了方便对待发送的数据包及其地址进行管理,本发明实施例还进一步给出了如下可选方案:上述获取上述待发送的数据在上述存储器中的地址段包括:获取用于标识上述待发送的数据在上述存储器中的地址段的地址标识;在上述发送设备将上述地址段发送给上述接收设备前,上述方法还包括:将上述地址标识存放在上述发送设备的发送队列中;上述发送设备将上述地址段发送给上述接收设备包括:上述发送设备将上述发送设备的发送队列中存储的地址标识发送给上述接收设备。
在本发明实施例中,发送设备一侧,一个进程可以对应一个发送队列,在负载均衡场景下也可以多个进程对应一个发送队列,或者,一个进程也可以对应多个发送队列,本发明实施例对此不予限定。
进一步地,为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:在上述发送设备将上述发送设备的发送队列中存储的地址标识发送给上述接收设备前,还包括:上述发送设备与上述接收设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;上述发送设备将上述发送设备的发送队列中存储的地址标识发送给上述接收设备包括:上述发送设备根据上述对应关系,将上述发送设备的发送队列中存储的地址标识发送给接收设备。
在本实施例中,发送队列与上述接收队列的对应关系确定以后,还可以依据上述对应关系建立上述发送队列与接收队列之间的通讯管道(Pipe);那么上述102中,发送设备将上述发送设备的发送队列中存储的地址标识发送给上述接收设备包括:上述发送设备通过上述Pipe将发送队列中存储的地址标识发送给接收设备。
上述发送队列可以是网卡的发送队列。另外,由于对于一个设备而言,在实际应用中,其既可以作发送设备,也可以作接收设备,也就是说一个设备实际上是可以同时有发送队列和接收队列的,如果两个设备之间进行数据的互通,那么这两个设备将会同时具有发送队列和接收队列。通过Pipe建立了发送队列和接收队列之间的关联,并存储发送队列、接收队列以及Pipe的对应关系。这两个设备的发送队列或接收队列均为一个Ring(环形队列)。发送队列和接收队列之间的关联关系,以及Ring的信息则可以称为一个QuickTunnel(快速通讯隧道)的实例。
另外,一个Pipe一般可以用于建立一对发送队列和接收队列之间的关联,负载均衡场景下一个Pipe也可以建立两对以上发送队列和接收队列之间的关联。一个Pipe用于建立多个对发送队列和接收队列之间的关联本发明实施例对此不予限定。
本发明实施例还提供了另一种虚拟化环境下通信的方法,如图2所示,包括:
201:接收设备接收发送设备发送的地址段;上述接收设备接收到的上述地址段属于上述发送设备与上述接收设备共享的存储器的地址段;上述发送设备和接收设备中至少有一个为虚拟设备;
可选地,上述接收设备接收发送设备发送的地址段包括:上述接收设备的接收队列接收上述发送设备发送的地址标识,上述地址标识为用于标识上述数据在上述存储器中的地址段的地址标识。
202:上述接收设备获取在上述地址段中存放的数据。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
进一步地,为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:在上述接收设备的接收队列接收上述发送设备发送的地址标识之前,还包括:上述接收设备与上述发送设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;上述接收设备的接收队列接收上述发送设备发送的地址标识包括:上述接收设备的接收队列接收上述发送设备发送的地址标识,上述发送设备发送的地址标识由上述发送设备根据上述对应关系进行发送。
在本实施例中,发送队列与上述接收队列的对应关系确定以后,上述发送设备还可以依据上述对应关系建立上述发送队列与接收队列之间的通讯管道(Pipe);
那么在上述202中,上述接收设备的接收队列接收上述发送设备发送的地址标识包括:上述接收设备的接收队列接收上述发送设备通过上述Pipe发送的地址标识。
以上实施例中,上述发送队列可以是网卡的发送队列。另外,由于对于一个设备而言,在实际应用中,其既可以作发送设备,也可以作接收设备,也就是说一个设备实际上是可以同时有发送队列和接收队列的,如果两个设备之间进行数据的互通,那么这两个设备将会同时具有发送队列和接收队列。通过Pipe建立了发送队列和接收队列之间的关联,那么这两个设备之间的两对发送队列和接收队列将会形成一个Ring(环形队列)。发送队列和接收队列之间的关联关系,以及Ring的信息则可以称为一个QuickTunnel(快速通讯隧道)的实例。
另外,一个Pipe一般可以用于建立一对发送队列和接收队列之间的关联,负载均衡场景下一个Pipe也可以建立两对以上发送队列和接收队列之间的关联。一个Pipe用于建立多个对发送队列和接收队列之间的关联本发明实施例对此不予限定。
以下实施例将给出本发明实施例实现的几个举例进行进一步说明。
本发明实施例提出的技术方案可以称之为:QuickTunnel,一种虚拟化环境下的快速网络直通方案,其原理简述:
QuickTunnel的实例指的是一个零拷贝的作用域,在作用域内的通信实体之间可以快速地实现数据零拷贝传递,各QuickTunnel的实例之间可以是完全隔离的。QuickTunnel的实例内的链接可以用于NIC队列、进程或OS Tap(一种虚拟网卡实现机制。向tap中注入数据可以模拟网卡从外部接收数据),QuickTunnel提供了标准的plugin(插件)机制,来适配各种网卡硬件驱动。QuickTunnel的实例可以在虚拟机内创建,也可以在Host OS(Host OperatingSystem,宿主机操作系统)中跨虚拟机创建,是虚拟机迁移的单位。
实例内每个通信实体在通信之前可以创建一对收发队列(TX/RX Ring,transmit/receive ring,发送环形队列/接收环形队列),作为收发数据的载体,用来存放数据所在内存的标识。通用场景下一个Ring(循环队列)只能存在于一个进程,负载均衡场景下可以一个进程可以打开多个Ring,或者多个进程共用一个Ring。
建立链接(前述QuickTunnel的实例内的链接)的过程就是在两个Ring之间创建Pipe(通讯管道)的过程,通过唯一的Pipe标识将一对Ring联系在一起,可以理解为业务的通道。
通信实体发送数据时,只需将数据所在内存的标识挂载到它的TX Ring上,QuickTunnel检测到某TX Ring有数据待发送时,将上面挂载的内存标识转存到Pipe另一端的RX Ring上。如果该RX Ring属于网卡硬件,网卡驱动会将数据发出;如果RX Ring属于另一个进程或OS Tap创建,则会被相应的实体收到。
基于以上原理,本发明实施例提供了如下三种方案:
一、本发明实施例提供的方案兼有传统虚拟化方案的标准性与网卡直通的高效性的优点,Guest OS用户看到的是标准网卡,但是能够通过QuickTunnel将数据直接发送到网卡上。具体实施方案如下图3A所示,以Host OS下的NIC与Guest OS下的业务进程间的通信为例:
整个系统包括:业务进程、Guest OS、Host OS、NIC以及业务进程与NIC的共享内存缓存池。具体的应用流程如下:
业务进程与NIC共享使用一段buffer(内存缓存)池,业务进程发包时从buffer池中申请buffer,然后将待发送的数据包存放在申请到的buffer并将buffer的地址标识挂载到TX Ring中,QuickTunnel的转发线程将这个地址标识转发到NIC的RX Ring上,进而被NIC的驱动发送至网络。
同理,NIC收到数据包以后,从buffer池中申请buffer,然后将待发送的数据包存放在申请到的buffer并将buffer的地址标识挂载到TX Ring中,QuickTunnel的转发线程将这个地址标识转发到业务进程的RX Ring上,业务进程就可以从RX Ring中获得地址并获得数据包。
QuickTunnel同样适用于以下几种情况:不同虚拟机的进程间通信,同一虚拟机内部的进程间通信,虚拟机中用户进程通过内核协议栈访问网络。分别如图3B、图3C、图3D所示。
图3B相对于图3A而言,区别在于:图3B是两个Guest OS,即不同虚拟机之间的进程在通信。
图3C相对于图3A而言,区别在于:图3C是同一个Guest OS,即同一虚拟机内部的进程间通信。
图3D相对于图3A而言,区别在于:图3C是的Guest OS采用了内核协议栈。
图3B、图3C以及图3D中数据包的发送和接收过程,可以参考图3A的说明,在此不再一一赘述。
依据以上论述,本发明实施例提供了一种虚拟化环境下通信的系统,如图4A所示,或者本发明实施例提供了一种设备,用于虚拟化环境下的通信,如图4B所示,包括:发送设备402、接收设备401以及存储器403;其中存储器403是发送设备402和接收设备401的共享存储器;上述发送设备402和上述接收设备401中至少有一个为虚拟设备;
发送设备402,用于将待发送的数据存放在存储器403中,获取上述待发送的数据在上述存储器403中的地址段;将上述地址段发送给上述接收设备401。
接收设备401,用于接收发送设备402发送的地址段;接收设备401获取在上述地址段中存放的数据。
可选地,发送设备402,具体用于在上述发送设备402将待发送的数据存放在存储器403中之前,若确定发送设备402的网卡接收发往上述接收设备401的数据;上述发送设备402确定上述网卡接收到的数据为待发送的数据。
可选地,上述发送设备402,用于获取用于标识上述待发送的数据在上述存储器403中的地址段的地址标识;在上述发送设备402将上述地址段发送给上述接收设备401之前,将上述地址标识存放在上述发送设备402的发送队列中;将上述发送设备402的发送队列中存储的地址标识发送给上述接收设备401。
上述接收设备401,具体用于通过上述接收设备401的接收队列接收上述发送设备402发送的地址标识,上述地址标识为用于标识上述数据在上述存储器中403的地址段的地址标识。
进一步地,上述发送设备402,还用于在将上述发送设备402的发送队列中存储的地址标识发送给上述接收设备401前,与接收设备401协商,确定上述发送设备402的发送队列与上述接收设备401的接收队列之间的对应关系;上述发送设备402根据上述对应关系,将上述发送设备402的发送队列中存储的地址标识发送给接收设备401;
上述接收设备401,还用于在上述接收设备401的接收队列接收上述发送设备402发送的地址标识之前,与上述发送设备402协商,确定上述发送设备402的发送队列与上述接收设备401的接收队列之间的对应关系;上述接收设备401的接收队列接收上述发送设备402发送的地址标识,上述发送设备402发送的地址标识由上述发送设备401根据上述对应关系进行发送。
二、请参阅图5所示,本发明实施例还提供了另一种设备,用于实现虚拟化环境下的通信,包括:图5上部大虚线框所示的客户机操作系统(GuestOS)和下部大虚线框所示的宿主机操作系统(Host OS),分别有用户态和内核态两部分的软件;在用户态的软件中,分别都有:应用程序(APP,Application)以及QuickTunnel用户态库;内核态软件中,有OS协议栈、OSTap,其中,宿主机操作系统中还有:QuickTunnel驱动程序、QuickTunnel驱动程序中的共享内存管理模块,以及网卡驱动;
在图5所示的应用程序有应用程序1~应用程序3,应用程序的个数可以是任意个数的。在图5所示的宿主机操作系统外部链接的是网卡(网卡1和网卡2),因此采用的是网卡驱动,可以理解的是若为其他硬件,则网卡驱动要替换为相应的硬件驱动。另外,在图5所示的网卡有两个,其数量可以是任意个数。网卡可以是自研网卡,例如:FPGA(Field-Programmable GateArray,现场可编程门阵列)网卡,也可以是标准网卡,本发明实施例对此可以兼容,因此网卡类型本发明实施例不予限定。
根据系统各部分的功能及其在OS中的位置,可以将系统划分成三大模块:QuickTunnel Driver(QuickTunnel启动程序)、QuickTunnel Lib(QuickTunnel用户态库)、虚拟化模块。
QuickTunnel Driver描述如下:
该模块是整个转发框架的中枢模块,功能包括:共享内存管理(通过共享内存管理模块实现)、ring管理、pipe管理、网卡设备管理、转发表管理、队列调度与报文转发。
QuickTunnel Lib描述如下:
本模块用于提供外部用户接口,用户的应用程序通过使用QuickTunnelLib中的接口来完成所有功能。同时,数据包的收发也通过QuickTunnel Lib直接操作ring来实现。
虚拟化模块描述如下:
处于虚拟机(客户机)中的用户程序,需要透明地使用本系统所有功能,所以需要虚拟化模块的适配工作。利用ivshmem和vm-channel这两个成熟的技术,完成虚拟机与Host内存共享和ioctl穿透。
ioctl是一个库函数,其头文件为:#include<sys/ioctl.h>;其功能是:控制输入输出设备,提供了一种获得设备信息和向设备发送控制参数的手段。用于向设备发控制和配置命令。ioctl命令传送的是控制信息,其中的数据是辅助的数据。用法:int ioctl(int handle,int cmd,[int*argdx,int argcx]);
上述实例的信息交互如图6所示,以通过网卡的QuickTunnel模式收发网络报文为例,信息交互主要包括:网卡驱动、宿主机应用管理、QuickTunnel驱动程序、客户机应用管理、QuickTunnel用户态库以及客户机APP这几个部分。具体的信息交互流程如下:
601:Host OS上的宿主机APP Manager(Application Manager,应用管理)向QuickTunnel Driver(快速通道驱动程序)申请创建一个QuickTunnel实例;
602:Host OS上APP Manager启动网卡驱动并令其注册;
603:网卡驱动将QuickTunnel实例注册成QuickTunnel模式;
604:Host OS APP Manager下发配置表项到Guest OS的APP Manager。配置表的每个配置表项表示一个通信实体(进程、网卡等)于QuickTunnel实例、Ring、Pipe之间的对应关系,例如某网卡使用某个Pipe等;
605:Guest OS上APP Manager启动业务进程App;
606:App打开QuickTunnel Driver注册的设备;
607:App调用QuickTunnel用户态库提供的接口创建并打开用于收发数据的Ring;
608:App创建并打开用于建立链接的Pipe;
609:App将Pipe的一端与自己创建的Ring绑定;
610:App调用QuickTunnel用户态库提供的接口命令网卡将Pipe的另一端与网卡绑定;
611:网卡与Pipe绑定完成,通知App链接已经建立完成;
612:App通过调用QuickTunnel用户态库提供的接口网卡收发网络报文。
对应于以上实例举例中实现的是网卡收发网络报文为例,若通过QuickTunnel实例实现进程间通信,那么图7所示,主要包括:
宿主机应用管理、客户机应用管理、QuickTunnel驱动程序、APP1(客户机1)、APP2(客户机2)以及QuickTunnel用户态库。具体的信息交互流程如下:
701:Host OS上APP Manager向QuickTunnel Driver申请创建一个QuickTunnel实例;
702:Host OS APP Manager下发配置表项到Guest OS,每个配置表项表示一个通信实体(进程、网卡等)于QuickTunnel实例、Ring、Pipe之间的对应关系,例如某网卡使用某个Pipe等;
703:Guest OS上APP Manager启动业务进程App1和App2;
704:App1打开QuickTunnel Driver注册的设备;
705:App1创建并打开用于收发数据的Ring;
706:App1创建并打开用于建立链接的Pipe;
707:App1将Pipe的一端与自己创建的Ring绑定;
708:App2打开QuickTunnel Driver注册的设备;
709:App2创建并打开用于收发数据的Ring;
710:App2创建并打开用于建立链接的Pipe;
711:App2将Pipe的另一端与自己创建的Ring绑定;
712:App1和App2通过Pipe相互通信。
三、请参阅图8所示,本发明实施例还提供了另一种设备,用于实现虚拟化环境下的通信,包括:图8上部大虚线框所示的客户机操作系统(GuestOS)和下部大虚线框所示的宿主机操作系统(Host OS),分别有用户态和内核态两部分的软件;在宿主机操作系统的用户态的软件中,有:rtev_h daemon、vshmem、在客户机操作系统一侧的内核态软件中有:QuickTunnel Driver Stub(QuickTunnel驱动头);在宿主机操作系统一侧的内核态软件中有:rtev_gdriver、QuickTunnel Driver、rtev_h driver。
图8是虚拟化模块的一种实现方式,主要可以分为三部分:rtev_g driver、rtev_h daemon和rtev_h driver。
图8中的QuickTunnel Driver Stub是Guest OS中用于模拟QuickTunnelDriver的驱动,为了使Guest OS的APP与HOST OS的APP看到的QuickTunnel设备相同而启动的伪设备驱动。Guest OS APP可以通过QuickTunnel DriverStub访问QuickTunnel Driver的所有功能。
图8中的ivshmem是一种成熟的Guest OS与Host OS共享内存的技术,通过ivshmem,Guest OS可以访问Host OS预留的内存空间。
图8中的VMCHANNEL是一种成熟的Guest OS与Host OS消息通信机制。
虚拟化模块主要完成两大功能:
(一)、Guest OS APP通过标准接口mmap将Host OS的预留内存映射到用户进程空间:
Guest OS中的APP调用mmap接口(mmap,标准的linux(操作系统的一种)系统调用接口,mmap将一个文件或者其它对象映射进内存)试图将QuickTunnel Driver Stub的共享内存映射到进程空间时,QuickTunnel DriverStub调用rtev_g driver的方法,获取QuickTunnel共享内存的地址。这个地址是由ivshmem从rtev_h driver获取然后建立的,ivshmem能够将Host OS的预留内存映射到Guest OS。获取到QuickTunnel共享内存地址后,把这段空间映射到APP进程空间,进程即可直接访问QuickTunnel内存。
以上功能实现共享的内存的管理。
(二)、Guest OS APP通过标准接口ioctl访问Host OS中访问QuickTunnelDriver的所有功能:
Guest OS中的APP调用ioctl试图访问QuickTunnel Driver的功能时,QuickTunnel Driver Stub接到ioctl的命令和参数,然后调用rtev_g driver的方法,rtev_g driver将ioctl的命令和参数通过VMCHANNEL传递到Host OS中的rtev_h daemon,rtev_h daemon再调用ioctl将命令和参数传递到rtev_hdriver,rtev_h driver调用QuickTunnel Driver对用的功能函数,并将返回值作为ioctl返回值原路返回给Guest OS中的APP。
以上功能实现共享的内存的地址标识的传递。
以上实施例在可以同时支持传统虚拟化下的标准型与高性能网卡直通的两种不同的使用场景,既保持直通方式下高性能,同时Guest OS看到的是标准网卡设备,因此可移植性高、管理简单、支持热迁移。通过QuickTunnel实例实现了分层管理的方式,使上层业务与网卡设备解耦,提高了系统可靠性;通过分层管理避免用户直接操作网卡设备,安全性和可靠性高;与传统网卡的调测手段兼容,可以提供与传统网卡一致的调测手段,方便用户进行功能调测和部署。
本发明实施例还提供了一种虚拟化环境下通信的发送设备,如图9所示,包括:
存储单元901,用于将待发送的数据存放在存储器中,上述存储器为上述发送设备与接收设备共享的存储器,上述发送设备和上述接收设备中至少有一个为虚拟设备;
获取单元902,用于获取上述存储单元901存放的上述待发送的数据在上述存储器中的地址段;
发送单元903,用于将上述获取单元902获取到的上述地址段发送给上述接收设备。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
由于是虚拟化环境,因此上述发送设备和接收设备其中至少有一个是虚拟设备(客户机)。发送设备和接收设备,可以是两个虚拟机,也可以是一个虚拟机中的两个进程,还可以分别是虚拟机和宿主机。
可选地,发送设备和接收设备进行收发数据可以是由网络的网卡进行的,如图10所示,上述发送设备还包括:
接收单元1001,用于在上述存储单元901将待发送的数据存放在存储器中前,通过网卡接收发往上述接收设备的数据;
确定单元1002,用于确定上述接收单元1001通过网卡接收到的数据为待发送的数据;
上述存储单元901,用于将上述确定单元1002确定的待发送的数据存放在存储器中。
本实施例,给出了网卡这种具体的应用场景,上述发送设备和接收设备中的至少一个具有的网卡可以是虚拟网卡。由于发送设备和接收设备可能并不需要通过网络传输,因此也不一定必然采用本实施例方案来确定是否有数据需要发送并启动本发明实施例方案。因此,本实施例的举例不应理解为对本发明实施例的限定。
进一步地,为了方便对待发送的数据包及其地址进行管理,本发明实施例还进一步给出了如下可选方案:如图11所示,上述获取单元902,用于获取用于标识上述待发送的数据在上述存储器中的地址段的地址标识;
上述发送设备还包括:管理单元1101,用于将上述获取单元902获取到上述地址标识后,将上述地址标识存放在上述发送设备的发送队列中;
上述发送单元903,用于将上述管理单元在上述发送设备的发送队列中存储的地址标识发送给上述接收设备。
进一步地,为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:如图12所示,上述发送设备,还包括:
协商单元1201,用于与上述接收设备协商,确定与上述接收设备的接收队列之间的对应关系;
上述发送单元903,用于根据上述协商单元1201确定的上述对应关系,将上述管理单元1101在上述发送设备的发送队列中存储的地址标识发送给上述接收设备。
上述发送队列可以是网卡的发送队列。另外,由于对于一个设备而言,在实际应用中,其既可以作发送设备,也可以作接收设备,也就是说一个设备实际上是可以同时有发送队列和接收队列的,如果两个设备之间进行数据的互通,那么这两个设备将会同时具有发送队列和接收队列。通过Pipe建立了发送队列和接收队列之间的关联,那么这两个设备之间的两对发送队列和接收队列将会形成一个Ring(环形队列)。送队列和接收队列之间的关联关系,以及Ring的信息则可以称为一个QuickTunnel(快速通讯隧道)的实例。
本发明实施例还提供了一种虚拟化环境下通信的接收设备,如图13所示,包括:
接收单元1301,用于接收发送设备发送的地址段;上述接收单元1301接收到的上述地址段属于上述发送设备与上述接收设备共享的存储器的地址段;上述发送设备和接收设备中至少有一个为虚拟设备;
获取单元1302,用于获取在上述接收单元1301接收到的上述地址段中存放的数据。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
可选地,上述地址接收单元1301,用于通过上述接收设备的接收队列接收上述发送设备发送的地址标识,上述地址标识为用于标识上述数据在上述存储器中的地址段的地址标识。
进一步地,为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:如图14所示,上述接收设备,还包括:
协商单元1401,用于与上述发送设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;
上述接收单元1301,用于通过上述接收设备的接收队列接收上述发送设备发送的地址标识,上述发送设备发送的地址标识由上述发送设备根据上述协商单元1401确定的上述对应关系进行发送。
本发明实施例还提供了另一种发送设备,用于虚拟化环境下通信,如图15所示,包括:处理器1501,发射器1502、接收器1503以及存储器1504;
其中,上述处理器1501,用于将待发送的数据存放在存储器1504中,上述存储器1504为上述发送设备与接收设备共享的存储器,上述发送设备和上述接收设备中至少有一个为虚拟设备;获取上述待发送的数据在上述存储器中的地址段;指示上述发射器1502将上述地址段发送给上述接收设备。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
由于是虚拟化环境,因此上述发送设备和接收设备其中至少有一个是虚拟设备(客户机)。发送设备和接收设备,可以是两个虚拟机,也可以是一个虚拟机中的两个进程,还可以分别是虚拟机和宿主机。
可选地,发送设备和接收设备进行收发数据可以是由网络的网卡进行的,上述处理器1501,还用于在将待发送的数据存放在存储器中前,若上述发送设备的网卡接收发往上述接收设备的数据;则确定上述网卡接收到的数据为待发送的数据。
本实施例,给出了网卡这种具体的应用场景,上述发送设备和接收设备中的至少一个具有的网卡可以是虚拟网卡。由于发送设备和接收设备可能并不需要通过网络传输,因此也不一定必然采用本实施例方案来确定是否有数据需要发送并启动本发明实施例方案。因此,本实施例的举例不应理解为对本发明实施例的限定。
进一步地,为了方便对待发送的数据包及其地址进行管理,本发明实施例还进一步给出了如下可选方案:上述处理器1501,用于获取用于标识上述待发送的数据在上述存储器中的地址段的地址标识;指示上述发射器1502将上述地址段发送给上述接收设备前,将上述地址标识存放在上述发送设备的发送队列中;上述处理器1501,具体用于指示发射器1502将上述发送设备的发送队列中存储的地址标识发送给上述接收设备。
进一步地,为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:上述处理器1501,还用于在指示发射器1502将上述发送设备的发送队列中存储的地址标识发送给上述接收设备前,与上述接收设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;上述处理器1501,具体用于根据上述对应关系指示发射器1402将上述发送设备的发送队列中存储的地址标识发送给接收设备。
上述发送队列可以是网卡的发送队列。另外,由于对于一个设备而言,在实际应用中,其既可以作发送设备,也可以作接收设备,也就是说一个设备实际上是可以同时有发送队列和接收队列的,如果两个设备之间进行数据的互通,那么这两个设备将会同时具有发送队列和接收队列。通过Pipe建立了发送队列和接收队列之间的关联,那么这两个设备之间的两对发送队列和接收队列将会形成一个Ring(环形队列)。送队列和接收队列之间的关联关系,以及Ring的信息则可以称为一个QuickTunnel(快速通讯隧道)的实例。
本发明实施例还提供了另一种虚接收设备,用于拟化环境下通信,如图16所示,包括:处理器1601,发射器1602、接收器1603以及存储器1604;
其中上述处理器1601,用于通过接收器1603接收发送设备发送的地址段;上述接收器1603接收到的上述地址段属于上述发送设备与上述接收设备共享的存储器的地址段;上述发送设备和接收设备中至少有一个为虚拟设备;获取在上述地址段中存放的数据。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
可选地,上述处理器1601,用于采用上述接收器1603通过接收设备的接收队列接收上述发送设备发送的地址标识,上述地址标识为用于标识上述数据在上述存储器中的地址段的地址标识。
为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:上述处理器1501,还用于与上述发送设备协商,使上述发送设备确定上述发送队列与上述接收队列的对应关系,并使上述发送设备依据上述对应关系建立上述发送队列与接收队列之间的通讯管道Pipe;
上述处理器1601,还用于在接收设备的接收队列接收上述发送设备发送的地址标识之前,上述与上述发送设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;采用上述接收器1603通过上述接收设备的接收队列接收上述发送设备发送的地址标识,上述发送设备发送的地址标识由上述发送设备根据上述对应关系进行发送。
本发明实施例还提供了一种虚拟化环境下通信的系统,如图17所示,包括:发送设备1701和接收设备1702,上述发送设备为附图9~12任意一项的发送设备,上述接收设备为附图13~14任意一项的接收设备;或者,发送设备为服务15的发送设备,接收设备为附图16的接收设备。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
本发明实施例还提供了另一种设备,该设备可以是终端也可以是服务器等各种可能采用虚拟化技术通信的设备,以设备为终端为例,如图18所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图18示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图18,手机包括:射频(Radio Frequency,RF)电路1810、存储器1820、输入单元1830、显示单元1840、传感器1850、音频电路1860、无线保真(wireless fidelity,WiFi)模块1870、处理器1880、以及电源1890等部件。本领域技术人员可以理解,图18中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图18对手机的各个构成部件进行具体的介绍:
RF电路1810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1880处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路180还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global Systemof Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器1820可用于存储软件程序以及模块,处理器1880通过运行存储在存储器1820的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1830可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1830可包括触控面板1831以及其他输入设备1832。触控面板1831,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1831上或在触控面板1831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1880,并能接收处理器1880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1831。除了触控面板1831,输入单元1830还可以包括其他输入设备1832。具体地,其他输入设备1832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1840可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1840可包括显示面板1841,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-EmittingDiode,OLED)等形式来配置显示面板1841。进一步的,触控面板1831可覆盖显示面板1841,当触控面板1831检测到在其上或附近的触摸操作后,传送给处理器1880以确定触摸事件的类型,随后处理器1880根据触摸事件的类型在显示面板1841上提供相应的视觉输出。虽然在图18中,触控面板1831与显示面板1841是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1831与显示面板1841集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1841的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1841和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1860、扬声器1861,传声器1862可提供用户与手机之间的音频接口。音频电路1860可将接收到的音频数据转换后的电信号,传输到扬声器1861,由扬声器1861转换为声音信号输出;另一方面,传声器1862将收集的声音信号转换为电信号,由音频电路1860接收后转换为音频数据,再将音频数据输出处理器1880处理后,经RF电路1810以发送给比如另一手机,或者将音频数据输出至存储器1820以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图18示出了WiFi模块1870,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1880是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1820内的软件程序和/或模块,以及调用存储在存储器1820内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1880可包括一个或多个处理单元;优选的,处理器1880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1880中。
手机还包括给各个部件供电的电源1890(比如电池),优选的,电源可以通过电源管理系统与处理器1880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器1880还具有以下功能:
若手机作为发送设备使用,那么可以如下:
上述处理器1890,用于将待发送的数据存放在存储器中,上述存储器为上述发送设备与接收设备共享的存储器,上述发送设备和上述接收设备中至少有一个为虚拟设备;获取上述待发送的数据在上述存储器中的地址段;指示将上述地址段发送给上述接收设备。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
由于是虚拟化环境,因此上述发送设备和接收设备其中至少有一个是虚拟设备(客户机)。发送设备和接收设备,可以是两个虚拟机,也可以是一个虚拟机中的两个进程,还可以分别是虚拟机和宿主机。
可选地,发送设备和接收设备进行收发数据可以是由网络的网卡进行的,上述处理器1890,用于在上述发送设备将待发送的数据存放在存储器中前,通过上述发送设备的网卡接收发往上述接收设备的数据;确定上述网卡接收到的数据为待发送的数据。
本实施例,给出了网卡这种具体的应用场景,上述发送设备和接收设备中的至少一个具有的网卡可以是虚拟网卡。由于发送设备和接收设备可能并不需要通过网络传输,因此也不一定必然采用本实施例方案来确定是否有数据需要发送并启动本发明实施例方案。因此,本实施例的举例不应理解为对本发明实施例的限定。
进一步地,为了方便对待发送的数据包及其地址进行管理,本发明实施例还进一步给出了如下可选方案:上述处理器1890,用于获取用于标识上述待发送的数据在上述存储器中的地址段的地址标识;上述处理器1890,还用于在将上述地址段发送给上述接收设备前,将上述地址标识存放在上述发送设备的发送队列中;将上述发送设备的发送队列中存储的地址标识发送给上述接收设备。
进一步地,为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:上述处理器1890,还用于在将上述发送设备的发送队列中存储的地址标识发送给上述接收设备前,与上述接收设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;根据上述对应关系,指示将上述发送设备的发送队列中存储的地址标识发送给接收设备。
上述发送队列可以是网卡的发送队列。另外,由于对于一个设备而言,在实际应用中,其既可以作发送设备,也可以作接收设备,也就是说一个设备实际上是可以同时有发送队列和接收队列的,如果两个设备之间进行数据的互通,那么这两个设备将会同时具有发送队列和接收队列。通过Pipe建立了发送队列和接收队列之间的关联,那么这两个设备之间的两对发送队列和接收队列将会形成一个Ring(环形队列)。送队列和接收队列之间的关联关系,以及Ring的信息则可以称为一个QuickTunnel(快速通讯隧道)的实例。
若手机作为接收设备使用,那么可以如下:
上述处理器1890,用于接收发送设备发送的地址段;上述接收设备接收到的上述地址段属于上述发送设备与上述接收设备共享的存储器的地址段;上述发送设备和接收设备中至少有一个为虚拟设备;获取在上述地址段中存放的数据。
以上实施例,将待发送的数据存储在发送设备和接收设备的共享存储器中,发送设备仅向接收设备传递待发送的数据在存储器中的地址段,接收设备就可以依据接收到的地址段获得数据。这样就避免了数据的拷贝,可以提高设备的吞吐率。
上述处理器1890,用于通过接收设备的接收队列接收上述发送设备发送的地址标识,上述地址标识为用于标识上述数据在上述存储器中的地址段的地址标识。
为了方便接收设备和发送设备两端的队列(即:发送队列与接收队列)的管理,本发明实施例还进一步给出了如下可选方案:上述处理器1890,还用于与上述发送设备协商,使上述发送设备确定上述发送队列与上述接收队列的对应关系,并使上述发送设备依据上述对应关系建立上述发送队列与接收队列之间的通讯管道Pipe;
上述处理器1890,用于通过上述接收设备的接收队列接收上述发送设备发送的地址标识之前,与上述发送设备协商,确定上述发送设备的发送队列与上述接收设备的接收队列之间的对应关系;然后通过上述接收设备的接收队列接收上述发送设备发送的地址标识,上述发送设备发送的地址标识由上述发送设备根据上述对应关系进行发送。
若手机既作为发送设备使用又作为发送设备使用,则可以同时具有以上所有功能。
值得注意的是,上述设备实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (15)

1.一种虚拟化环境下通信的方法,其特征在于,包括:
发送设备将待发送的数据存放在存储器中,所述存储器为所述发送设备与接收设备共享的存储器,所述发送设备和所述接收设备中至少有一个为虚拟设备;
所述发送设备获取所述待发送的数据在所述存储器中的地址段;
所述发送设备将所述地址段发送给所述接收设备。
2.根据权利要求1所述方法,其特征在于,在所述发送设备将待发送的数据存放在存储器中前,所述方法还包括:所述发送设备的网卡接收发往所述接收设备的数据;所述发送设备确定所述网卡接收到的数据为待发送的数据。
3.根据权利要求1或2所述方法,其特征在于,所述获取所述待发送的数据在所述存储器中的地址段包括:获取用于标识所述待发送的数据在所述存储器中的地址段的地址标识;
在所述发送设备将所述地址段发送给所述接收设备前,所述方法还包括:将所述地址标识存放在所述发送设备的发送队列中;
所述发送设备将所述地址段发送给所述接收设备包括:
所述发送设备将所述发送设备的发送队列中存储的地址标识发送给所述接收设备。
4.根据权利要求3所述方法,其特征在于,在所述发送设备将所述发送设备的发送队列中存储的地址标识发送给所述接收设备前,还包括:
所述发送设备与所述接收设备协商,确定所述发送设备的发送队列与所述接收设备的接收队列之间的对应关系;
所述发送设备将所述发送设备的发送队列中存储的地址标识发送给所述接收设备包括:
所述发送设备根据所述对应关系,将所述发送设备的发送队列中存储的地址标识发送给接收设备。
5.一种虚拟化环境下通信的方法,其特征在于,包括:
接收设备接收发送设备发送的地址段;所述接收设备接收到的所述地址段属于所述发送设备与所述接收设备共享的存储器的地址段;所述发送设备和接收设备中至少有一个为虚拟设备;
所述接收设备获取在所述地址段中存放的数据。
6.根据权利要求5所述方法,其特征在于,所述接收设备接收发送设备发送的地址段包括:
所述接收设备的接收队列接收所述发送设备发送的地址标识,所述地址标识为用于标识所述数据在所述存储器中的地址段的地址标识。
7.根据权利要求6所述方法,其特征在于,在所述接收设备的接收队列接收所述发送设备发送的地址标识之前,还包括:
所述接收设备与所述发送设备协商,确定所述发送设备的发送队列与所述接收设备的接收队列之间的对应关系;
所述接收设备的接收队列接收所述发送设备发送的地址标识包括:
所述接收设备的接收队列接收所述发送设备发送的地址标识,所述发送设备发送的地址标识由所述发送设备根据所述对应关系进行发送。
8.一种虚拟化环境下通信的发送设备,其特征在于,包括:
存储单元,用于将待发送的数据存放在存储器中,所述存储器为所述发送设备与接收设备共享的存储器,所述发送设备和所述接收设备中至少有一个为虚拟设备;
获取单元,用于获取所述存储单元存放的所述待发送的数据在所述存储器中的地址段;
发送单元,用于将所述获取单元获取到的所述地址段发送给所述接收设备。
9.根据权利要求8所述发送设备,其特征在于,还包括:
接收单元,用于在所述存储单元将待发送的数据存放在存储器中前,通过网卡接收发往所述接收设备的数据;
确定单元,用于确定所述接收单元通过网卡接收到的数据为待发送的数据;
所述存储单元,用于将所述确定单元确定的待发送的数据存放在存储器中。
10.根据权利要求7或8所述发送设备,其特征在于,
所述获取单元,用于获取用于标识所述待发送的数据在所述存储器中的地址段的地址标识;
所述发送设备还包括:管理单元,用于将所述获取单元获取到所述地址标识存放在所述发送设备的发送队列中;
所述发送单元,用于将所述管理单元在所述发送设备的发送队列中存储的地址标识发送给所述接收设备。
11.根据权利要求10所述发送设备,其特征在于,还包括:
协商单元,用于与所述接收设备协商,确定与所述接收设备的接收队列之间的对应关系;
所述发送单元,用于根据所述协商单元确定的所述对应关系,将所述管理单元在所述发送设备的发送队列中存储的地址标识发送给所述接收设备。
12.一种虚拟化环境下通信的接收设备,其特征在于,包括:
接收单元,用于接收发送设备发送的地址段;所述接收单元接收到的所述地址段属于所述发送设备与所述接收设备共享的存储器的地址段;所述发送设备和接收设备中至少有一个为虚拟设备;
获取单元,用于获取在所述接收单元接收到的所述地址段中存放的数据。
13.根据权利要求12所述接收设备,其特征在于,
所述接收单元,用于通过所述接收设备的接收队列接收所述发送设备发送的地址标识,所述地址标识为用于标识所述数据在所述存储器中的地址段的地址标识。
14.根据权利要求13所述接收设备,其特征在于,还包括:
协商单元,用于与所述发送设备协商,确定所述发送设备的发送队列与所述接收设备的接收队列之间的对应关系;
所述接收单元,用于通过所述接收设备的接收队列接收所述发送设备发送的地址标识,所述发送设备发送的地址标识由所述发送设备根据所述协商单元确定的所述对应关系进行发送。
15.一种虚拟化环境下通信的系统,包括:发送设备和接收设备,其特征在于,所述发送设备为权利要求8~11任意一项的发送设备,所述接收设备为权利要求12~14任意一项的接收设备。
CN201310561946.0A 2013-11-12 2013-11-12 一种虚拟化环境下通信的方法、装置和系统 Pending CN103618809A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310561946.0A CN103618809A (zh) 2013-11-12 2013-11-12 一种虚拟化环境下通信的方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310561946.0A CN103618809A (zh) 2013-11-12 2013-11-12 一种虚拟化环境下通信的方法、装置和系统

Publications (1)

Publication Number Publication Date
CN103618809A true CN103618809A (zh) 2014-03-05

Family

ID=50169513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310561946.0A Pending CN103618809A (zh) 2013-11-12 2013-11-12 一种虚拟化环境下通信的方法、装置和系统

Country Status (1)

Country Link
CN (1) CN103618809A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107995129A (zh) * 2017-11-30 2018-05-04 锐捷网络股份有限公司 一种nfv报文转发方法和装置
CN105631321B (zh) * 2015-12-24 2019-05-21 北京奇虎科技有限公司 一种虚拟机进程信息的检测方法及装置
CN111241201A (zh) * 2020-01-14 2020-06-05 厦门网宿有限公司 一种分布式数据处理方法及系统
WO2020177567A1 (zh) * 2019-03-05 2020-09-10 华为技术有限公司 一种迁移数据的方法、装置及系统
WO2023093418A1 (zh) * 2021-11-26 2023-06-01 华为技术有限公司 数据迁移方法、装置及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077765A1 (en) * 2006-09-22 2008-03-27 Illikkal Rameshkumar G Sharing information between guests in a virtual machine environment
CN101365999A (zh) * 2005-02-03 2009-02-11 五级网络公司 发送完成事件批处理
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN103176833A (zh) * 2013-03-11 2013-06-26 华为技术有限公司 一种基于虚拟机的数据发送方法、接收方法及系统
CN103218266A (zh) * 2012-01-18 2013-07-24 国际商业机器公司 虚拟机与外部机器通信时使用的方法、设备及虚拟机系统
CN103346981A (zh) * 2013-06-28 2013-10-09 华为技术有限公司 虚拟交换方法、相关装置和计算机系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101365999A (zh) * 2005-02-03 2009-02-11 五级网络公司 发送完成事件批处理
US20080077765A1 (en) * 2006-09-22 2008-03-27 Illikkal Rameshkumar G Sharing information between guests in a virtual machine environment
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN103218266A (zh) * 2012-01-18 2013-07-24 国际商业机器公司 虚拟机与外部机器通信时使用的方法、设备及虚拟机系统
CN103176833A (zh) * 2013-03-11 2013-06-26 华为技术有限公司 一种基于虚拟机的数据发送方法、接收方法及系统
CN103346981A (zh) * 2013-06-28 2013-10-09 华为技术有限公司 虚拟交换方法、相关装置和计算机系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631321B (zh) * 2015-12-24 2019-05-21 北京奇虎科技有限公司 一种虚拟机进程信息的检测方法及装置
CN107995129A (zh) * 2017-11-30 2018-05-04 锐捷网络股份有限公司 一种nfv报文转发方法和装置
CN107995129B (zh) * 2017-11-30 2021-12-17 锐捷网络股份有限公司 一种nfv报文转发方法和装置
WO2020177567A1 (zh) * 2019-03-05 2020-09-10 华为技术有限公司 一种迁移数据的方法、装置及系统
CN111666036A (zh) * 2019-03-05 2020-09-15 华为技术有限公司 一种迁移数据的方法、装置及系统
CN111241201A (zh) * 2020-01-14 2020-06-05 厦门网宿有限公司 一种分布式数据处理方法及系统
CN111241201B (zh) * 2020-01-14 2023-02-07 厦门网宿有限公司 一种分布式数据处理方法及系统
WO2023093418A1 (zh) * 2021-11-26 2023-06-01 华为技术有限公司 数据迁移方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN104618217B (zh) 分享资源的方法、终端、服务器及系统
EP3531290A1 (en) Data backup method, apparatus, electronic device, storage medium, and system
US20160105418A1 (en) Method, system, device, and terminal for network initialization of multimedia playback device
CN104133728B (zh) 一种进程间通讯的方法、及装置
CN104765591A (zh) 一种软件配置参数更新的方法、终端服务器及系统
CN102832975A (zh) 数据传输方法、装置以及具有触摸显示屏的终端
WO2015131790A1 (en) Network connection method, application authentication server, terminal and router
CN103488939A (zh) 一种提示用户的方法、装置及终端
CN103309562A (zh) 桌面显示方法、装置和移动终端
CN103618809A (zh) 一种虚拟化环境下通信的方法、装置和系统
CN104142868A (zh) 建立连接的方法及装置
CN106843868B (zh) 一种多账号登录的方法、装置以及移动终端
CN104065693A (zh) 一种网页应用中网络数据的访问方法、装置和系统
CN112245903B (zh) 云应用中网络状态指示方法、操作系统、装置及存储介质
CN113038434B (zh) 设备注册方法、装置、移动终端和存储介质
CN103491525A (zh) 一种实现无卡手机的方法、手机和服务器
CN106775833A (zh) 设备驱动程序加载方法、终端及系统
CN104216726A (zh) Android虚拟机加载方法及装置
US20230367571A1 (en) Distributed application processing method and apparatus
CN114817120A (zh) 一种跨域数据共享方法、系统级芯片、电子设备及介质
CN103631625A (zh) 一种数据获取的方法、用户端、服务器及系统
CN103593247A (zh) 一种数据传递方法、及装置
CN103561155B (zh) 发送短信的方法、装置及终端
CN104135504A (zh) 一种基于应用的服务提供方法、装置及系统
CN103227832A (zh) 共享资源处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140305