CN105704098B - 一种虚拟化网络的数据传输方法,节点控制器及*** - Google Patents
一种虚拟化网络的数据传输方法,节点控制器及*** Download PDFInfo
- Publication number
- CN105704098B CN105704098B CN201410696956.XA CN201410696956A CN105704098B CN 105704098 B CN105704098 B CN 105704098B CN 201410696956 A CN201410696956 A CN 201410696956A CN 105704098 B CN105704098 B CN 105704098B
- Authority
- CN
- China
- Prior art keywords
- node controller
- virtual machine
- data message
- message
- node
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种虚拟化网络的数据传输方法,节点控制器及***,其中方法的实现包括:第一节点控制器从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;解析所述数据报文获得目的地址,并根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址。实现了将数据报文的传输操作变为存储空间的搬移操作,因此不仅速度快,而且不需额外占用NC的协议层处理能力,并且可以避免因网卡设备成为访问热点造成的性能瓶颈。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种虚拟化网络的数据传输方法,节点控制器及***。
背景技术
非统一内存访问(Non-uniform memory access,NUMA)是一种用于多处理器的存储器结构设计,内存访问时间取决于处理器访问的内存位置。在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器到另一个处理器共享的处理器或存储器)快一些。
高速缓存相关的非一致性内存访问(Cache Coherent Non-Uniform MemoryAccess,CC-NUMA)是NUMA的一种类型。在CC-NUMA***中,分布式内存相连接形成单一内存,不同NUMA域之间的内存访问通过节点控制器(Node Controller,NC)来代理实现,不需要软件来保持多个数据拷贝的一致性,也不需要软件来实现操作***与应用***的数据传输。
虚拟化技术将计算机物理资源如中央处理器、内存、存储及网络等予以抽象、转换后以新的方式呈现出来,使用户可以在一台机器上虚拟出多个硬件,模拟真实硬件的行为,从而能够同时运行多个独立的操作***。当在一台设备上安装多个虚拟机时需要解决网络设备虚拟化的问题、实现不同虚拟机间的网络通信。
目前的解决方案可以如下:使用支持虚拟化技术的网卡设备实现输入/输出(Input/Output,I/O)设备共享,网卡设备实现多个功能接口,每个接口分配给不同的虚拟机。该方案,可以降低中央处理的资源消耗,提供较好的性能。
但是,在插网卡的设备上,数据从节点控制器(Node Controller,NC)到网卡、从网卡到NC都需要NC进行额外的协议处理,增加了NC的工作负担。并且浪费了与插网卡的设备直接连接的NC的协议层处理能力。另外,由于一个网卡被虚拟成了多个虚拟网卡,每个虚拟机都认为虚拟网卡是自己的设备,那么每个虚拟机在发送数据时均会发送给自己的虚拟网卡,实际上会发送给插网卡的设备,因此会出现所有的虚拟机间的数据传输都要经过网卡中转,插网卡的设备就容易成为访问的热点,成为性能瓶颈。因此,以上方案不仅浪费了NC的协议层处理能力,而且插网卡的设备容易成为访问热点,造成性能瓶颈。
发明内容
本发明实施例提供了一种虚拟化网络的数据传输方法,节点控制器及***,用于节省NC的协议层处理能力,避免因网卡设备成为访问热点造成的性能瓶颈。
本发明实施例一方面提供了一种虚拟化网络的数据传输方法,包括:
第一节点控制器从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;
所述第一节点控制器解析所述数据报文获得目的地址,并根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;
所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址。
结合一方面的实现方式,在第一种可能的实现方式中,所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址包括:
所述第一节点控制器向所述第二节点控制器发送地址请求信息,然后接收所述第二节点控制器返回的所述目的虚拟机的存储区域地址;
所述第一节点控制器将所述数据报文写入所述存储区域地址。
结合一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述存储区域地址为直接内存存取DMA地址;
所述第一节点控制器将所述数据报文写入所述存储区域地址包括:
所述第一节点控制器通过缓存一致性处理功能,将所述数据报文写入所述存储区域地址。
结合一方面的实现方式,在第三种可能的实现方式中,所述方法还包括:
所述第一节点控制器在写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文。
结合一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一节点控制器从源虚拟机的存储区域读取数据报文,包括:
所述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址包括:
所述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入,并接收所述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
所述第一节点控制器的虚拟网卡引擎向所述第二节点控制器的远程协议引擎发送写请求,使所述远程协议引擎将所述写请求转发给所述第二节点控制器的本地协议引擎,并使所述第二节点控制器的本地协议引擎将所述数据报文写入所述内存空间;
所述第一节点控制器在写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文包括:
所述第一节点控制器的虚拟网卡引擎在接收到写完成消息后,向所述第二节点控制器的虚拟网卡引擎发送所述写完成消息,使所述第二节点控制器的虚拟网卡引擎通知所述虚拟机的中央处理器收到所述数据报文。
本发明实施例二方面提供了一种节点控制器,作为第一节点控制器使用,包括:
报文读取单元,用于从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;
报文解析单元,用于解析所述数据报文获得目的地址;
控制器确定单元,用于根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;
数据传输单元,用于通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址。
结合二方面的实现方式,在第一种可能的实现方式中,所述数据传输单元包括:
请求发送单元,用于向所述第二节点控制器发送地址请求信息;
地址接收单元,用于接收所述第二节点控制器返回的所述目的虚拟机的存储区域地址;
报文写入单元,用于将所述数据报文写入所述存储区域地址。
结合二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述存储区域地址为直接内存存取DMA地址;
所述报文写入单元,用于通过缓存一致性处理功能,将所述数据报文写入所述存储区域地址。
结合二方面的实现方式,在第三种可能的实现方式中,所述节点控制器,还包括:
消息发送单元,用于在所述数据报文写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文。
结合二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述报文读取单元,用于通过所述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
所述数据传输单元包括:通知发送单元、接收地址单元以及请求写发送单元;
所述通知发送单元,用于通过所述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入;
所述接收地址单元,用于接收所述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
所述请求写发送单元,用于通过所述第一节点控制器的虚拟网卡引擎向所述第二节点控制器的远程协议引擎发送写请求,使所述远程协议引擎将所述写请求转发给所述第二节点控制器的本地协议引擎,并使所述第二节点控制器的本地协议引擎将所述数据报文写入所述内存空间;
所述消息发送单元包括:成功消息接收单元和成功消息发送单元;
所述成功消息接收单元,用于通过所述第一节点控制器的虚拟网卡引擎接收写完成消息;
所述成功消息发送单元,用于在所述第一节点控制器的虚拟网卡引擎接收到写完成消息后,向所述第二节点控制器的虚拟网卡引擎发送所述写完成消息,使所述第二节点控制器的虚拟网卡引擎通知所述虚拟机的中央处理器收到所述数据报文。
本发明实施例三方面提供了一种虚拟化网络的数据传输***,包括:采用可通信连接的至少三个节点控制器,并且包含第一节点控制器和第二节点控制器;所述第一节点控制器为源虚拟机本地的节点控制器;所述第二节点控制器为目的虚拟机本地的节点控制器;所述第一节点控制器为本发明实施例提供的任意一项的节点控制器。
从以上技术方案可以看出,本发明实施例具有以下优点:源虚拟机一侧的节点控制器解析数据报文,从而确定目的虚拟机一侧的节点控制器,并获得存储空间的地址,从而实现直接将数据报文从源虚拟机写到目的虚拟机的存储空间中,实现了将数据报文的传输操作变为存储空间的搬移操作,因此不仅速度快,而且不需额外占用NC的协议层处理能力,并且可以避免因网卡设备成为访问热点造成的性能瓶颈。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例方法流程示意图;
图2为本发明实施例方法流程示意图;
图3为本发明实施例节点控制器的内部结构示意图;
图4为本发明实施例节点结合控制器的内部结构数据流向示意图;
图5为本发明实施例***结构示意图;
图6为本发明实施例方法流程示意图;
图7为本发明实施例方法流程示意图;
图8为本发明实施例节点控制器结构示意图;
图9为本发明实施例节点控制器结构示意图;
图10为本发明实施例节点控制器结构示意图;
图11为本发明实施例节点控制器结构示意图;
图12为本发明实施例***结构示意图;
图13为本发明实施例节点控制器结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种虚拟化网络的数据传输方法,如图1所示,包括:
101:第一节点控制器从源虚拟机的存储区域读取数据报文;上述第一节点控制器为上述源虚拟机本地的节点控制器;
102:上述第一节点控制器解析上述数据报文获得目的地址,并根据上述目的地址确定第二节点控制器;上述第二节点控制器为上述目的地址指向的目的虚拟机本地的节点控制器;
103:上述第一节点控制器通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址。
本发明实施例,源虚拟机一侧的节点控制器解析数据报文,从而确定目的虚拟机一侧的节点控制器,并获得存储空间的地址,从而实现直接将数据报文从源虚拟机写到目的虚拟机的存储空间中,实现了将数据报文的传输操作变为存储空间的搬移操作,因此不仅速度快,而且不需额外占用NC的协议层处理能力,并且可以避免因网卡设备成为访问热点造成的性能瓶颈。
更具体地,本实施例还提供了写入数据报文的具体实现方案,如下:上述第一节点控制器通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址包括:
上述第一节点控制器向上述第二节点控制器发送地址请求信息,然后接收上述第二节点控制器返回的上述目的虚拟机的存储区域地址;
上述第一节点控制器将上述数据报文写入上述存储区域地址。
基于本发明实施例采用的是存储空间的数据直接搬移的方式,更具体地:上述存储区域地址为直接内存存取DMA地址;
上述第一节点控制器将上述数据报文写入上述存储区域地址包括:
上述第一节点控制器通过缓存一致性处理功能,将上述数据报文写入上述存储区域地址。
基于本发明实施例采用的是存储空间的数据直接搬移的方式,在数据报文写入到目的虚拟机一侧的存储空间以后,还需要告知目的虚拟机已经写入完毕,具体方案如下:进一步地,上述方法还包括:
上述第一节点控制器在写入完毕后,向上述第二节点控制器发送写完成消息,使上述第二节点控制器向上述目的虚拟机发送中断并告知上述目的虚拟机收到了上述数据报文。
本发明实施例还给出了基于缓存一致性处理功能进行内存搬移的具体实现方案,具体如下:上述第一节点控制器从源虚拟机的存储区域读取数据报文,包括:
上述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
上述第一节点控制器通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址包括:
上述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入,并接收上述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
上述第一节点控制器的虚拟网卡引擎向上述第二节点控制器的远程协议引擎发送写请求,使上述远程协议引擎将上述写请求转发给上述第二节点控制器的本地协议引擎,并使上述第二节点控制器的本地协议引擎将上述数据报文写入上述内存空间;
上述第一节点控制器在写入完毕后,向上述第二节点控制器发送写完成消息,使上述第二节点控制器向上述目的虚拟机发送中断并告知上述目的虚拟机收到了上述数据报文包括:
上述第一节点控制器的虚拟网卡引擎在接收到写完成消息后,向上述第二节点控制器的虚拟网卡引擎发送上述写完成消息,使上述第二节点控制器的虚拟网卡引擎通知上述虚拟机的中央处理器收到上述数据报文。
以下实施例将分别就关键处理步骤、节点控制器的内部结构、以及结合内部控制器的数据报文写入过程三个方面进行详细说明。在以下实施例的举例中,第一节点控制器称为源NC,第二节点控制器为目的NC,存储空间均为DMA内存区域。
一、关键处理步骤:
如图2所示,包括:
201:源NC从源虚拟机的DMA内存区域读取数据报文;
202:源NC从数据报文中解析出目的互联网协议(Internet Protocol,IP)地址或者目的媒体访问控制(Media Access Control,MAC)地址;
203:源NC根据上述目的IP地址或者目的MAC地址查路由表,确定目的NC;
204:源NC向目的NC发送请求,获取目的NC的虚拟机的DMA内存地址;
205:源NC将数据报文写入到目的虚拟机的DMA内存中;
在以上步骤205中,数据报文写入完成后,目的NC会通知源NC写DMA完成。
206:源NC通知目的NC写DMA完成;
207:目的NC通知目的虚拟机CPU接收到一个新报文。
以上流程可以作为一个优选的实现流程,省略步骤205之后的目的NC通知源NC写DMA完成以及步骤206,直接执行207从理论上来说也是可以的,这样修改对NC进行较大的修改,目的虚拟机可以更快的获得数据包,因此数据传输速度会更快。
二、节点控制器的内部结构
如图3所示,节点控制器包括如下模块:
网络互连(Network Interface)模块;
***接口(system interface)模块;
协议调度控制器(Protocol dispatch controller,PDC)模块;
远程协议引擎(Remote protocol engine,RPE)模块;
本地协议引擎(Local protocal engine,LPE)模块;
虚拟网卡引擎(Virtual Network Interface Controller Engine,VNICEngine);
其中虚拟网卡引擎又包含:直接内存存取引擎(Direct Memory Access Engine,DMA Engine)、直接内存存取管理(Direct Memory Access Engine,DMA Manager)以及路由引擎(Route Engine),DMA Manager管理着DMA上下文(DMA context)。
图3中,各部分模块的功能如下:
RPE模块代理远端的内存,本端节点内的中央处理器(Central Processing Unit,CPU)访问远端节点的内存会先向RPE发送请求;
LPE模块代理本地内存,所以远端发过来的内存请求都要先发到LPE,LPE再向本地内存发起访问;
PDC模块用于判断报文的类型然后分配给LPE、RPE来处理。
在NC的内部还添加一个VNIC Engine模块,负责处理网卡相关的事务。VNICEngine中包含:
DMA Engine,负责DMA的搬移工作;
DMA Manager,负责维护所有的DMA队列的状态信息以及决定是否发起DMA读写操作;在本实施例中,一个虚拟机可以对应一个或者多个DMA队列,不同NC上DMA Manager还可以交换DMA信息,后面的处理流程将会进行详细说明;
Route Engine,负责报文的路由判断。
三、结合内部控制器的数据报文写入过程:
本实施例中,是以太报文在两个虚拟机间的传输路径,如图4所示,其中左边的是源虚拟机对应的源NC,右边是目的虚拟机对应的目的NC。本实施例借助于缓存(cache)一致性处理功能,源NC可以直接将数据报文从源端的DMA内存写到目的端的DMA内存中。
数据传输的详细过程如下:
401:源端的驱动程序程序将CPU需要发送的数据报文放入DMA发送队列中;即源(source,src)发送队列;
402:源端的虚拟网卡引擎(Network Information Center Engine,VNIC engine)从源端DMA发送队列中读取数据报文;
403:源端的VNIC engine通知目的端VNIC engine需要发送新报文,目的端VNICengine返回一块接收DMA队列的内存空间;
404:源端的VNIC engine发起写内存操作,将报文写入到目的DMA空间;写内存请求到达远程协议引擎(Remote protocol engine,RPE)模块;
405:RPE将上述写内存请求转发到目的NC的本地协议引擎(Local ProtocolEngine,LPE);
406:目的NC的LPE接收到RPE的写内存请求后,将数据报文写入到目的虚拟机的接收队列中,即写入目的接收队列(destination,dst)中,并通知源节点写操作完成;
407:源NC的VNIC Engine通知目的NC的VNIC Engine数据报文发送完成;
408:目的NC的VNIC Engine通知目的虚拟机的CPU接收到一个新的数据报文;
409:目的虚拟机的CPU从DMA接收队列中取出报文。
请参阅图5所示,其中VM1为源虚拟机,CPU2为与VM1对应的CPU,VM1有数据报文发送给VM2,VM2对应的是CPU7;在该网络中,还包含有:CPU0、CPU3;NC1为源NC,NC3为目标NC,还包含有NC0和NC2。
图5中的NC内部结构可以参考图3所示,VM1发送数据报文给VM2的流程可以参考图2或者图4。
若参考图2所示流程,在“205:源NC将数据报文写入到目的虚拟机的DMA内存中”的实现过程中,具体可以参考如下实现方案:
源NC将数据报文写到目的虚拟机的DMA内存的过程跟NC代理CPU写远端内存的过程类似。根据驱动程序对DMA内存使用的方式可分为两种场景,如下:
场景一:
如果DMA内存用软件保证数据的一致性,写内存数据过程如图6所示,包括:
601:NC0的VNIC engine向NC0的RPE发送写内存请求;
602:NC0的RPE向NC3的LPE转发上述写内存请求;
603:NC3的LPE执行完毕后返回完成响应给NC0的RPE;
604:NC0的RPE转发完成响应给NC0的VNIC engine。
场景二:
如果使用硬件来保证数据一致性,在写内存前需先获取独占权限,具体流程如图7所示,包括:
701:NC0的VNIC engine向NC0的RPE发送请求目的内存地址的独占权限请求;
702:NC0的RPE向NC3的LPE转发上述请求目的内存地址的独占权限请求;
703:NC3的LPE确定独占以后返回确认响应给NC0的RPE;
704:NC0的RPE转发确认响应给NC0的VNIC engine;
705:NC0的VNIC engine向NC0的RPE发送写内存请求;
706:NC0的RPE向NC3的LPE转发上述写内存请求;
707:NC3的LPE执行完毕后返回完成响应给NC0的RPE;
708:NC0的RPE转发完成响应给NC0的VNIC engine。
以上实施例,在数据报文发送流程上,借助了NC本身可以保证全局cache一致性的功能,简化了数据报文传递的处理。在常规的两个网卡设备间传递数据时,源端网卡从DMA内存中读取数据后,组成以太网报文发给目的端,目的端网卡收到以太网报文后将报文解析开再写到DMA内存中。
由于NC保证了整个ccNUMA***全局cache的一致性,所以源端的VNIC Engine可以通过NC直接将数据报文写到目的端的DMA内存中,去除了以太报文组包拆包的功能模块,也去除了以太报文的接收缓存与流控,只需复用NC的一致性协议处理功能即可。因此,可以减少CPU资源消耗,并且消除对NC协议处理能力额外消耗,从而提升整体***性能。
本发明实施例还提供了一种节点控制器,作为第一节点控制器使用,如图8所示,包括:
报文读取单元801,用于从源虚拟机的存储区域读取数据报文;上述第一节点控制器为上述源虚拟机本地的节点控制器;
报文解析单元802,用于解析上述数据报文获得目的地址;
控制器确定单元803,用于根据上述目的地址确定第二节点控制器;上述第二节点控制器为上述目的地址指向的目的虚拟机本地的节点控制器;
数据传输单元804,用于通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址。
本发明实施例,源虚拟机一侧的节点控制器解析数据报文,从而确定目的虚拟机一侧的节点控制器,并获得存储空间的地址,从而实现直接将数据报文从源虚拟机写到目的虚拟机的存储空间中,实现了将数据报文的传输操作变为存储空间的搬移操作,因此不仅速度快,而且不需额外占用NC的协议层处理能力,并且可以避免因网卡设备成为访问热点造成的性能瓶颈。
更具体地,本实施例还提供了写入数据报文的具体实现方案,如下:如图9所示,上述数据传输单元804包括:
请求发送单元901,用于向上述第二节点控制器发送地址请求信息;
地址接收单元902,用于接收上述第二节点控制器返回的上述目的虚拟机的存储区域地址;
报文写入单元903,用于将上述数据报文写入上述存储区域地址。
基于本发明实施例采用的是存储空间的数据直接搬移的方式,更具体地:上述存储区域地址为直接内存存取DMA地址;
上述报文写入单元903,用于通过缓存一致性处理功能,将上述数据报文写入上述存储区域地址。
基于本发明实施例采用的是存储空间的数据直接搬移的方式,在数据报文写入到目的虚拟机一侧的存储空间以后,还需要告知目的虚拟机已经写入完毕,具体方案如下:进一步地,如图10所示,上述节点控制器还包括:
消息发送单元1001,用于在上述数据报文写入完毕后,向上述第二节点控制器发送写完成消息,使上述第二节点控制器向上述目的虚拟机发送中断并告知上述目的虚拟机收到了上述数据报文。
本发明实施例还给出了基于缓存一致性处理功能进行内存搬移的具体实现方案,具体如下:可选地,如图11所示,上述报文读取单元801,用于通过上述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
上述数据传输单元804包括:通知发送单元1101、接收地址单元1102以及请求写发送单元1103;
上述通知发送单元1101,用于通过上述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入;
上述接收地址单元1102,用于接收上述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
上述请求写发送单元1103,用于通过上述第一节点控制器的虚拟网卡引擎向上述第二节点控制器的远程协议引擎发送写请求,使上述远程协议引擎将上述写请求转发给上述第二节点控制器的本地协议引擎,并使上述第二节点控制器的本地协议引擎将上述数据报文写入上述内存空间;
上述消息发送单元1001包括:成功消息接收单元1104和成功消息发送单元1105;
上述成功消息接收单元1104,用于通过上述第一节点控制器的虚拟网卡引擎接收写完成消息;
上述成功消息发送单元1105,用于在上述第一节点控制器的虚拟网卡引擎接收到写完成消息后,向上述第二节点控制器的虚拟网卡引擎发送上述写完成消息,使上述第二节点控制器的虚拟网卡引擎通知上述虚拟机的中央处理器收到上述数据报文。
本发明实施例还提供了一种虚拟化网络的数据传输***,如图12所示,包括:采用可通信连接的至少三个节点控制器1201,并且包含第一节点控制器12011和第二节点控制器12022;上述第一节点控制器12011为源虚拟机本地的节点控制器;上述第二节点控制器12022为目的虚拟机本地的节点控制器;其中,上述第一节点控制器12011为本发明实施例提供的任意一项的节点控制器。
在图12中所示了n个NC,实际的NC个数并不仅限于如此,其个数也不影响本发明实施例的实现,因此图12的示意不应理解为对本发明实施例的唯一性限定。
本发明实施例,源虚拟机一侧的节点控制器解析数据报文,从而确定目的虚拟机一侧的节点控制器,并获得存储空间的地址,从而实现直接将数据报文从源虚拟机写到目的虚拟机的存储空间中,实现了将数据报文的传输操作变为存储空间的搬移操作,因此不仅速度快,而且不需额外占用NC的协议层处理能力,并且可以避免因网卡设备成为访问热点造成的性能瓶颈。
本发明实施例还提供了另外一种节点控制器,作为第一节点控制器使用,如图13所示,包括:接收器1301、发射器1302、处理器1303以及存储器1304;
其中,处理器1303,用于从源虚拟机的存储区域读取数据报文;上述第一节点控制器为上述源虚拟机本地的节点控制器;解析上述数据报文获得目的地址,并根据上述目的地址确定第二节点控制器;上述第二节点控制器为上述目的地址指向的目的虚拟机本地的节点控制器;通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址。
本发明实施例,源虚拟机一侧的节点控制器解析数据报文,从而确定目的虚拟机一侧的节点控制器,并获得存储空间的地址,从而实现直接将数据报文从源虚拟机写到目的虚拟机的存储空间中,实现了将数据报文的传输操作变为存储空间的搬移操作,因此不仅速度快,而且不需额外占用NC的协议层处理能力,并且可以避免因网卡设备成为访问热点造成的性能瓶颈。
更具体地,本实施例还提供了写入数据报文的具体实现方案,如下:上述处理器1303,用于通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址包括:向上述第二节点控制器发送地址请求信息,然后接收上述第二节点控制器返回的上述目的虚拟机的存储区域地址;将上述数据报文写入上述存储区域地址。
基于本发明实施例采用的是存储空间的数据直接搬移的方式,更具体地:上述存储区域地址为直接内存存取DMA地址;
上述处理器1303,用于将上述数据报文写入上述存储区域地址包括:
通过缓存一致性处理功能,将上述数据报文写入上述存储区域地址。
基于本发明实施例采用的是存储空间的数据直接搬移的方式,在数据报文写入到目的虚拟机一侧的存储空间以后,还需要告知目的虚拟机已经写入完毕,具体方案如下:进一步地,上述处理器1303,还用于在写入完毕后,向上述第二节点控制器发送写完成消息,使上述第二节点控制器向上述目的虚拟机发送中断并告知上述目的虚拟机收到了上述数据报文。
本发明实施例还给出了基于缓存一致性处理功能进行内存搬移的具体实现方案,具体如下:上述处理器1303,用于从源虚拟机的存储区域读取数据报文,包括:
通过上述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
上述处理器1303,用于通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址包括:
通过上述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入,并接收上述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
通过上述第一节点控制器的虚拟网卡引擎向上述第二节点控制器的远程协议引擎发送写请求,使上述远程协议引擎将上述写请求转发给上述第二节点控制器的本地协议引擎,并使上述第二节点控制器的本地协议引擎将上述数据报文写入上述内存空间;
上述处理器1303,用于在写入完毕后,向上述第二节点控制器发送写完成消息,使上述第二节点控制器向上述目的虚拟机发送中断并告知上述目的虚拟机收到了上述数据报文包括:
通过上述第一节点控制器的虚拟网卡引擎在接收到写完成消息后,向上述第二节点控制器的虚拟网卡引擎发送上述写完成消息,使上述第二节点控制器的虚拟网卡引擎通知上述虚拟机的中央处理器收到上述数据报文。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种虚拟化网络的数据传输方法,应用于非一致性内存访问CC-NUMA,其特征在于,包括:
第一节点控制器从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;
所述第一节点控制器解析所述数据报文获得目的地址,并根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;
所述第一节点控制器通过所述第二节点控制器发送的所述目的虚拟机的存储区域地址,将所述数据报文写入所述目的虚拟机的存储区域地址。
2.根据权利要求1所述方法,其特征在于,所述第一节点控制器通过所述第二节点控制器发送的所述目的虚拟机的存储区域地址,将所述数据报文写入所述目的虚拟机的存储区域地址包括:
所述第一节点控制器向所述第二节点控制器发送地址请求信息,然后接收所述第二节点控制器返回的所述目的虚拟机的存储区域地址;
所述第一节点控制器将所述数据报文写入所述存储区域地址。
3.根据权利要求2所述方法,其特征在于,所述存储区域地址为直接内存存取DMA地址;
所述第一节点控制器将所述数据报文写入所述存储区域地址包括:
所述第一节点控制器通过缓存一致性处理功能,将所述数据报文写入所述存储区域地址。
4.根据权利要求1所述方法,其特征在于,还包括:
所述第一节点控制器在写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文。
5.根据权利要求4所述方法,其特征在于,所述第一节点控制器从源虚拟机的存储区域读取数据报文,包括:
所述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址包括:
所述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入,并接收所述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
所述第一节点控制器的虚拟网卡引擎向所述第二节点控制器的远程协议引擎发送写请求,使所述远程协议引擎将所述写请求转发给所述第二节点控制器的本地协议引擎,并使所述第二节点控制器的本地协议引擎将所述数据报文写入所述内存空间;
所述第一节点控制器在写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文包括:
所述第一节点控制器的虚拟网卡引擎在接收到写完成消息后,向所述第二节点控制器的虚拟网卡引擎发送所述写完成消息,使所述第二节点控制器的虚拟网卡引擎通知所述虚拟机的中央处理器收到所述数据报文。
6.一种节点控制器,作为第一节点控制器使用,应用于非一致性内存访问CC-NUMA,其特征在于,包括:
报文读取单元,用于从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;
报文解析单元,用于解析所述数据报文获得目的地址;
控制器确定单元,用于根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;
数据传输单元,用于通过所述第二节点控制器发送的所述目的虚拟机的存储区域地址,将所述数据报文写入所述目的虚拟机的存储区域地址。
7.根据权利要求6所述节点控制器,其特征在于,所述数据传输单元包括:
请求发送单元,用于向所述第二节点控制器发送地址请求信息;
地址接收单元,用于接收所述第二节点控制器返回的所述目的虚拟机的存储区域地址;
报文写入单元,用于将所述数据报文写入所述存储区域地址。
8.根据权利要求7所述节点控制器,其特征在于,所述存储区域地址为直接内存存取DMA地址;
所述报文写入单元,用于通过缓存一致性处理功能,将所述数据报文写入所述存储区域地址。
9.根据权利要求6所述节点控制器,其特征在于,还包括:
消息发送单元,用于在所述数据报文写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文。
10.根据权利要求9所述节点控制器,其特征在于,
所述报文读取单元,用于通过所述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
所述数据传输单元包括:通知发送单元、接收地址单元以及请求写发送单元;
所述通知发送单元,用于通过所述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入;
所述接收地址单元,用于接收所述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
所述请求写发送单元,用于通过所述第一节点控制器的虚拟网卡引擎向所述第二节点控制器的远程协议引擎发送写请求,使所述远程协议引擎将所述写请求转发给所述第二节点控制器的本地协议引擎,并使所述第二节点控制器的本地协议引擎将所述数据报文写入所述内存空间;
所述消息发送单元包括:成功消息接收单元和成功消息发送单元;
所述成功消息接收单元,用于通过所述第一节点控制器的虚拟网卡引擎接收写完成消息;
所述成功消息发送单元,用于在所述第一节点控制器的虚拟网卡引擎接收到写完成消息后,向所述第二节点控制器的虚拟网卡引擎发送所述写完成消息,使所述第二节点控制器的虚拟网卡引擎通知所述虚拟机的中央处理器收到所述数据报文。
11.一种虚拟化网络的数据传输***,包括:采用可通信连接的至少三个节点控制器,并且包含第一节点控制器和第二节点控制器;所述第一节点控制器为源虚拟机本地的节点控制器;所述第二节点控制器为目的虚拟机本地的节点控制器;其特征在于,所述第一节点控制器为权利要求6~10任意一项所述节点控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410696956.XA CN105704098B (zh) | 2014-11-26 | 2014-11-26 | 一种虚拟化网络的数据传输方法,节点控制器及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410696956.XA CN105704098B (zh) | 2014-11-26 | 2014-11-26 | 一种虚拟化网络的数据传输方法,节点控制器及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105704098A CN105704098A (zh) | 2016-06-22 |
CN105704098B true CN105704098B (zh) | 2019-03-01 |
Family
ID=56295253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410696956.XA Active CN105704098B (zh) | 2014-11-26 | 2014-11-26 | 一种虚拟化网络的数据传输方法,节点控制器及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105704098B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6724252B2 (ja) * | 2017-04-14 | 2020-07-15 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ処理方法、記憶システムおよび切り換え装置 |
CN113014631A (zh) * | 2021-02-19 | 2021-06-22 | 浙江曲速科技有限公司 | 基于Hlink的设备缓存推送***及方法 |
US11620245B2 (en) * | 2021-05-09 | 2023-04-04 | Mellanox Technologies, Ltd. | Multi-socket network interface controller with consistent transaction ordering |
CN113709139B (zh) * | 2021-08-26 | 2023-03-24 | 江苏省未来网络创新研究院 | 基于NUMA架构的openstack东西向转发性能优化方法和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009120787A2 (en) * | 2008-03-28 | 2009-10-01 | Mips Technologies, Inc. | Mechanism for maintaining consistency of data written by io devices |
US7756943B1 (en) * | 2006-01-26 | 2010-07-13 | Symantec Operating Corporation | Efficient data transfer between computers in a virtual NUMA system using RDMA |
CN103384551A (zh) * | 2013-01-04 | 2013-11-06 | 华为技术有限公司 | 一种基于pcie网络的虚拟机通信方法、服务器及*** |
CN103814596A (zh) * | 2013-12-06 | 2014-05-21 | 华为技术有限公司 | 传输数据的方法、装置和*** |
-
2014
- 2014-11-26 CN CN201410696956.XA patent/CN105704098B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756943B1 (en) * | 2006-01-26 | 2010-07-13 | Symantec Operating Corporation | Efficient data transfer between computers in a virtual NUMA system using RDMA |
WO2009120787A2 (en) * | 2008-03-28 | 2009-10-01 | Mips Technologies, Inc. | Mechanism for maintaining consistency of data written by io devices |
CN103384551A (zh) * | 2013-01-04 | 2013-11-06 | 华为技术有限公司 | 一种基于pcie网络的虚拟机通信方法、服务器及*** |
CN103814596A (zh) * | 2013-12-06 | 2014-05-21 | 华为技术有限公司 | 传输数据的方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
CN105704098A (zh) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3267322B1 (en) | Scalable direct inter-node communication over peripheral component interconnect-express (pcie) | |
EP3125126B1 (en) | Data processing system and data processing method | |
US9742671B2 (en) | Switching method | |
US7356818B2 (en) | Virtual machine communicating to external device without going through other virtual machines by using a list of IP addresses managed only by a single virtual machine monitor | |
CN102523264B (zh) | 面向虚拟机的usb设备远程共享方法和*** | |
CN105704098B (zh) | 一种虚拟化网络的数据传输方法,节点控制器及*** | |
US20070288921A1 (en) | Emulating a network-like communication connection between virtual machines on a physical device | |
CN103353861B (zh) | 实现分布式i/o资源池化的方法及装置 | |
KR20160087706A (ko) | 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법 | |
JP2007086963A (ja) | 計算機システム及びi/oブリッジ | |
JP2010237737A (ja) | パススルーi/oデバイスを伴うlparの動的マイグレーション装置、その方法及びそのプログラム | |
AU2021269201B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
CN103384551A (zh) | 一种基于pcie网络的虚拟机通信方法、服务器及*** | |
CN103455371A (zh) | 用于优化的管芯内小节点间消息通信的方法和*** | |
WO2018076882A1 (zh) | 存储设备的操作方法及物理服务器 | |
CN104571934B (zh) | 一种内存访问的方法、设备和*** | |
KR20210132348A (ko) | 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법 | |
JP7419261B2 (ja) | ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN106557429B (zh) | 一种内存数据的迁移方法和节点控制器 | |
WO2017082757A1 (en) | Computer data processing system and method for communication traffic based optimization of virtual machine communication | |
CN109002414A (zh) | 一种跨节点虚拟机通信方法及相关装置 | |
CN117076409B (zh) | 文件共享方法、装置、***、电子设备及存储介质 | |
CN106293637B (zh) | 数据移动、将数据设置为无效的方法、处理器及*** | |
KR20240050797A (ko) | 공유 메모리 장치 혹은 메모리 확장 장치를 제어하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200420 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 301, A building, room 3, building 301, foreshore Road, No. 310052, Binjiang District, Zhejiang, Hangzhou Patentee before: Huawei Technologies Co.,Ltd. |
|
TR01 | Transfer of patent right |