一种虚拟化网络的数据传输方法,节点控制器及系统的制作方法

文档序号:9923821阅读:635来源:国知局
一种虚拟化网络的数据传输方法,节点控制器及系统的制作方法
【技术领域】
[0001]本发明涉及通信技术领域,特别涉及一种虚拟化网络的数据传输方法,节点控制器及系统。
【背景技术】
[0002]非统一内存访问(Non-uniform memory access,NUMA)是一种用于多处理器的存储器结构设计,内存访问时间取决于处理器访问的内存位置。在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器到另一个处理器共享的处理器或存储器)快一些。
[0003]高速缓存相关的非一致性内存访问(Cache Coherent Non-Uniform MemoryAccess, CC-NUMA)是NUMA的一种类型。在CC-NUMA系统中,分布式内存相连接形成单一内存,不同NUMA域之间的内存访问通过节点控制器(Node Controller,NC)来代理实现,不需要软件来保持多个数据拷贝的一致性,也不需要软件来实现操作系统与应用系统的数据传输。
[0004]虚拟化技术将计算机物理资源如中央处理器、内存、存储及网络等予以抽象、转换后以新的方式呈现出来,使用户可以在一台机器上虚拟出多个硬件,模拟真实硬件的行为,从而能够同时运行多个独立的操作系统。当在一台设备上安装多个虚拟机时需要解决网络设备虚拟化的问题、实现不同虚拟机间的网络通信。
[0005]目前的解决方案可以如下:使用支持虚拟化技术的网卡设备实现输入/输出(Input/Output, 1/0)设备共享,网卡设备实现多个功能接口,每个接口分配给不同的虚拟机。该方案,可以降低中央处理的资源消耗,提供较好的性能。
[0006]但是,在插网卡的设备上,数据从节点控制器(Node Controller,NC)到网卡、从网卡到NC都需要NC进行额外的协议处理,增加了 NC的工作负担。并且浪费了与插网卡的设备直接连接的NC的协议层处理能力。另外,由于一个网卡被虚拟成了多个虚拟网卡,每个虚拟机都认为虚拟网卡是自己的设备,那么每个虚拟机在发送数据时均会发送给自己的虚拟网卡,实际上会发送给插网卡的设备,因此会出现所有的虚拟机间的数据传输都要经过网卡中转,插网卡的设备就容易成为访问的热点,成为性能瓶颈。因此,以上方案不仅浪费了 NC的协议层处理能力,而且插网卡的设备容易成为访问热点,造成性能瓶颈。

【发明内容】

[0007]本发明实施例提供了一种虚拟化网络的数据传输方法,节点控制器及系统,用于节省NC的协议层处理能力,避免因网卡设备成为访问热点造成的性能瓶颈。
[0008]本发明实施例一方面提供了一种虚拟化网络的数据传输方法,包括:
[0009]第一节点控制器从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;
[0010]所述第一节点控制器解析所述数据报文获得目的地址,并根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;
[0011]所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址。
[0012]结合一方面的实现方式,在第一种可能的实现方式中,所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址包括:
[0013]所述第一节点控制器向所述第二节点控制器发送地址请求信息,然后接收所述第二节点控制器返回的所述目的虚拟机的存储区域地址;
[0014]所述第一节点控制器将所述数据报文写入所述存储区域地址。
[0015]结合一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述存储区域地址为直接内存存取DMA地址;
[0016]所述第一节点控制器将所述数据报文写入所述存储区域地址包括:
[0017]所述第一节点控制器通过缓存一致性处理功能,将所述数据报文写入所述存储区域地址。
[0018]结合一方面的实现方式,在第三种可能的实现方式中,所述方法还包括:
[0019]所述第一节点控制器在写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文。
[0020]结合一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一节点控制器从源虚拟机的存储区域读取数据报文,包括:
[0021]所述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
[0022]所述第一节点控制器通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址包括:
[0023]所述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入,并接收所述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
[0024]所述第一节点控制器的虚拟网卡引擎向所述第二节点控制器的远程协议引擎发送写请求,使所述远程协议引擎将所述写请求转发给所述第二节点控制器的本地协议引擎,并使所述第二节点控制器的本地协议引擎将所述数据报文写入所述内存空间;
[0025]所述第一节点控制器在写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文包括:
[0026]所述第一节点控制器的虚拟网卡引擎在接收到写完成消息后,向所述第二节点控制器的虚拟网卡引擎发送所述写完成消息,使所述第二节点控制器的虚拟网卡引擎通知所述虚拟机的中央处理器收到所述数据报文。
[0027]本发明实施例二方面提供了一种节点控制器,作为第一节点控制器使用,包括:
[0028]报文读取单元,用于从源虚拟机的存储区域读取数据报文;所述第一节点控制器为所述源虚拟机本地的节点控制器;
[0029]报文解析单元,用于解析所述数据报文获得目的地址;
[0030]控制器确定单元,用于根据所述目的地址确定第二节点控制器;所述第二节点控制器为所述目的地址指向的目的虚拟机本地的节点控制器;
[0031]数据传输单元,用于通过所述第二节点控制器,将所述数据报文写入所述目的虚拟机的存储区域地址。
[0032]结合二方面的实现方式,在第一种可能的实现方式中,所述数据传输单元包括:
[0033]请求发送单元,用于向所述第二节点控制器发送地址请求信息;
[0034]地址接收单元,用于接收所述第二节点控制器返回的所述目的虚拟机的存储区域地址;
[0035]报文写入单元,用于将所述数据报文写入所述存储区域地址。
[0036]结合二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述存储区域地址为直接内存存取DMA地址;
[0037]所述报文写入单元,用于通过缓存一致性处理功能,将所述数据报文写入所述存储区域地址。
[0038]结合二方面的实现方式,在第三种可能的实现方式中,所述节点控制器,还包括:
[0039]消息发送单元,用于在所述数据报文写入完毕后,向所述第二节点控制器发送写完成消息,使所述第二节点控制器向所述目的虚拟机发送中断并告知所述目的虚拟机收到了所述数据报文。
[0040]结合二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述报文读取单元,用于通过所述第一节点控制器的虚拟网卡引擎从源虚拟机的DMA发送队列中读取数据报文;
[0041]所述数据传输单元包括:通知发送单元、接收地址单元以及请求写发送单元;
[0042]所述通知发送单元,用于通过所述第一节点控制器的虚拟网卡引擎向第二节点控制区的虚拟网卡引擎发送通知消息告知有新的数据报文需要写入;
[0043]所述接收地址单元,用于接收所述第二节点控制器的虚拟网卡引擎返回的DMA队列的内存空间;
[0044]所述请求写发送单元,用于通过所述第一节点控制器的虚拟网卡引擎向所述第二节点控制器的远程协议引擎发送写请求,使所述远程协议引擎将所述写请求转发给所述第二节点控制器的本地协议引擎,并使所述第二节点控制器的本地协议引擎将所述数据报文写入所述内存空间;
[0045]所述
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1