欢迎光临小豌豆知识网!
当前位置:首页 > 生活技术 > 其他技术> 一种基于PCIE网络的虚拟机通信方法、服务器及系统独创技术71002字

一种基于PCIE网络的虚拟机通信方法、服务器及系统

2020-10-28 23:35:20

  一种基于PCIE网络的虚拟机通信方法、服务器及系统

  技术领域

  本发明属于计算机互联网通信技术领域,涉及一种虚拟机通信方法,特别是涉及一种基于高速外围组件互连(PeripheralComponentInterconnectExpress,PCIE)网络的虚拟机通信方法、服务器及系统。

  背景技术

  随着更多虚拟化服务器的部署,虚拟化技术不断发展,网络虚拟化占据了越来越重要的地位,虚拟机(VirtualMachine,简称VM)间的通信也越来越频繁。

  目前,虚拟机间通信主要是基于以太网。两个虚拟机之间进行通信时,首先虚拟机中的用户态应用程序会调用Socket接口,通过传输控制协议(TransmissionControlProtocol,简称TCP)/因特网互联协议(InternetProtocol,简称IP)堆栈,在虚拟机监控器(VirtualMachineMonitor,简称VMM)中进行实际的转发和处理。而TCP/IP协议较复杂,造成操作系统(OperatingSystem,简称OS)的协议处理占据了网络时延的很大部分,此外,在数据传输过程中,频繁的数据复制和中断处理导致主机中央处理器(CentralProcessingUnit,简称CPU)资源无法专注于处理用户业务。

  业界也提出了通过共享内存的方式绕过内核中TCP/IP协议栈实现服务器内部虚拟机间高速通信的方法,但目前只能应用于同一个物理机内部的虚拟机之间的通信。

  发明内容

  鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于PCIE网络的虚拟机通信方法、服务器及系统,用于解决现有技术中不同物理机上的虚拟机之间通信速度慢的问题。

  第一方面,本发明实施例提供了一种基于高速外围组件互连PCIE网络的虚拟机通信方法,包括:

  源主机上的源虚拟机在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给所述源主机上的虚拟机监控器;

  所述源主机上的虚拟机监控器根据所述网络请求的目的地址,确定PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,其中,所述目的主机为所述网络请求的目的虚拟机所属的主机,所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间;

  所述源主机上的虚拟机监控器将包含所述数据的PCIE报文发送到所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  在第一方面的第一种可能的实现方式中,所述源主机上的虚拟机监控器根据所述网络请求的目的地址,确定PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,具体为:

  所述源主机上的虚拟机监控器根据所述网络请求的目的地址,确定所述网络请求的目的主机,并根据本地缓存的所述源主机对应的所述目的主机的PCIENTB地址空间信息,确定所述PCIE交换机上所述源主机对应的所述目的主机的PCIENTB地址空间;

  其中,所述源主机对应的所述目的主机的PCIENTB地址空间信息为所述源主机上的虚拟机监控器在所述源主机上的源虚拟机发送地址解析协议请求进行地址解析时缓存的。

  结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述源主机上的源虚拟机发送地址解析协议请求进行地址解析时缓存,包括:

  所述源虚拟机监控器截获到所述源虚拟机向所述网络请求的目的虚拟机发送的所述地址解析协议请求后,发起查询所述源虚拟机对应的所述目的主机的PCIENTB地址空间信息的请求消息到子网管理服务器;

  所述源主机上的虚拟机监控器接收所述子网管理服务器返回的响应消息,将所述响应消息中包含的所述源虚拟机对应的所述目的主机的PCIENTB地址空间信息缓存在本地,其中,所述源虚拟机对应的所述目的主机的PCIENTB地址空间与所述源主机对应的所述目的主机的PCIENTB地址空间相同。

  结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述源主机上的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,包括:

  所述源主机上的虚拟机监控器将所述网络请求包含的数据、所述源虚拟机的ID和源NTB端口ID放入所述PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给所述PCIE交换机,使所述PCIE交换机将所述PCIE报文写入目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间;

  其中,所述源NTB端口ID为所述PCIE交换机中与所述源主机上的虚拟机监控器相连的NTB端口的ID。

  结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:

  全部PCIENTB地址空间由所述子网管理服务器进行维护管理,所述全部PCIENTB地址空间分成与所述PCIE交换机连接的主机个数相同的份数的PCIENTB地址子空间;

  每个所述地址子空间对应一个主机,用于接收发送给所述对应主机的数据;

  在每个所述地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个所述其他主机,用于接收来自于所述其他主机发送给所述地址子空间对应主机的数据,其中,所述其他主机是除所述地址子空间对应主机之外,与所述PCIE交换机连接的主机。

  结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:

  所述子网管理服务器在所述PCIE网络初始化时分配所述全部PCIENTB地址空间,并将自身的PCIENTB地址空间信息通知所有主机,各主机缓存所对应的所述子网管理服务器的PCIENTB地址空间信息,以便能向所述子网管理服务器发送所述查询目的主机PCIENTB地址空间的请求消息。

  结合第一方面的第二至第五种任一可能的实现方式,在第六种可能的实现方式中,还包括:

  所述子网管理服务器上维护有主机与虚拟机的对应关系,并根据虚拟机的创建、更改、销毁实时更新所述对应关系。

  结合第一方面或第一方面的第一至第六种任一可能的实现方式,在第七种可能的实现方式中,所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机,包括:

  所述目的主机的虚拟机监控器读取所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间中的所述PCIE报文,根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  第二方面,本发明实施例提供了一种基于高速外围组件互连网络的虚拟机通信系统,包括:至少两台主机、一个PCIE交换机,所述至少两台主机通过所述PCIE交换机通信相连;

  所述至少两台主机中的每个主机,用于运行虚拟机和虚拟机监控模块,其中,所述至少两台主机中的源主机上的源虚拟机在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给所述源主机的虚拟机监控器,所述源主机的虚拟机监控器根据所述源虚拟机发送的所述网络请求的目的地址,确定所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述源主机对应的所述目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机;

  其中,所述目的主机为所述网络请求的目的虚拟机所属的主机,所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。

  在第二方面的第一种可能的实现方式中,所述每个主机包括:

  虚拟机运行模块,用于运行所述虚拟机;

  虚拟机监控模块,用于运行所述虚拟机监视器。

  在第二方面的第二种可能的实现方式中,所述每个主机包括:至少一个处理器,存储器;

  所述存储器,用于存储执行指令;

  所述处理器,用于当所述主机运行时,与所述存储器之间通信,执行所述执行指令使得所述主机运行所述虚拟机和所述虚拟机监控器。

  结合第二方面或第二方面的第一种或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述源主机的虚拟机监控器根据所述源虚拟机发送的所述网络请求的目的地址,确定所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,具体为:

  所述源主机上的虚拟机监控器根据源虚拟机发送的所述网络请求的目的地址,确定所述网络请求的目的主机,并根据本地缓存的所述源主机对应的所述目的主机的PCIENTB地址空间信息,确定所述PCIE交换机上所述源主机对应的所述目的主机的PCIENTB地址空间;

  其中,所述源主机对应的所述目的主机的PCIENTB地址空间信息为所述源主机上的虚拟机监控器在所述源主机上的源虚拟机发送地址解析协议请求进行地址解析时缓存的。

  结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括子网管理服务器;

  则,所述源主机上的虚拟机监控器在所述源主机上的源虚拟机发送地址解析协议请求进行地址解析时缓存,具体为:当所述源虚拟机上没有所述网络请求的目的虚拟机的MAC地址信息时,所述源虚拟机向所述网络请求的目的虚拟机发送所述地址解析协议请求,所述源主机上的虚拟机监控器截获到所述虚拟机发送的所述地址解析协议请求后,向所述子网管理服务器发起查询所述目的虚拟机对应的PCIENTB地址空间的请求信息,并在接收到所述子网管理服务器返回的响应消息后,将所述响应消息中包含的所述源虚拟机对应的目的主机的PCIENTB地址空间信息缓存在本地,其中,所述源虚拟机对应的所述目的主机的PCIENTB地址空间与所述源主机对应的所述目的主机的PCIENTB地址空间相同;

  所述子网管理服务器,用于接收到所述源主机的虚拟机监控器发送的查询所述目的虚拟机对应的PCIENTB地址空间的请求消息后,根据主机与虚拟机的对应关系确定所述目的虚拟机所属的目的主机,获取所述源主机对应的所述目的主机的PCIENTB地址空间,发送所述响应消息给所述源主机的虚拟机监控器。

  结合第二方面或第二方面的第一至第四种任一可能的实现方式,在第五种可能的实现方式中,所述源主机上的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述源主机对应的所述目的主机的PCIENTB地址空间,包括:

  所述源主机上的虚拟机监控器将所述网络请求包含的数据、所述源虚拟机的ID和源NTB端口ID放入所述PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给所述PCIE交换机,使所述PCIE交换机将所述PCIE报文写入目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间,其中,所述源NTB端口ID为所述PCIE交换机中与所述源主机上的虚拟机监控器相连的NTB端口的ID;

  则,所述PCIE交换机,还用于将所述写入所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。

  结合第二方面的第四种或第五种可能的实现方式,在第六种可能的实现方式中:

  所述子网管理服务器,还用于维护管理全部PCIENTB地址空间,所述全部PCIENTB地址空间分成与所述PCIE交换机连接的主机个数相同的份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给所述对应主机的数据,在每个所述地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个所述其他主机,用于接收来自于所述其他主机发送给所述地址子空间对应主机的数据,其中,所述其他主机是除所述地址子空间对应主机之外,与所述PCIE交换机连接的主机。

  结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中:

  所述子网管理服务器,还用于在所述PCIE网络初始化时分配所述全部PCIENTB地址空间,并将自身的PCIENTB地址空间信息通知所有主机,以便各主机缓存所对应的所述子网管理服务器的PCIENTB地址空间信息从而能向所述子网管理服务器发送所述查询目的主机PCIENTB地址空间的请求消息。

  结合第二方面的第四种至第七种任一可能的实现方式,在第八种可能的实现方式中:

  所述子网管理服务器,还用于维护主机与虚拟机的对应关系,并根据虚拟机的创建、更改、销毁实时更新所述对应关系。

  结合第二方面或第二方面的第一种至第八种任一可能的实现方式,在第九种可能的实现方式中,所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机,包括:

  所述目的主机的虚拟机监控器读取所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间中的所述PCIE报文,根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  第三方面,本发明实施例提供了一种服务器,包括:

  虚拟机运行模块,用于运行虚拟机;

  虚拟机监控模块,用于运行述虚拟机监视器;

  所述虚拟机,用于在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给虚拟机监控器;

  所述虚拟机监控器,用于根据所述虚拟机发送的所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的所述目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机;

  其中,所述目的主机为所述网络请求的目的虚拟机所属的主机,所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间。

  在第三方面的第一种可能的实现方式中,所述虚拟机监控器用于根据所述虚拟机发送的所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,具体为:

  所述虚拟机监控器,用于根据所述虚拟机发送的所述网络请求的目的地址,确定所述网络请求的目的主机,并根据本地缓存的所述服务器对应的所述目的主机的PCIENTB地址空间信息,确定所述PCIE交换机上所述服务器对应的所述目的主机的PCIENTB地址空间;

  其中,所述服务器对应的所述目的主机的PCIENTB地址空间信息为所述虚拟机监控器在所述虚拟机发送地址解析协议请求进行地址解析时缓存的。

  结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述虚拟机监控器在所述虚拟机发送地址解析协议请求进行地址解析时缓存,具体为:

  所述虚拟机,还用于,当所述虚拟机上没有所述网络请求的目的虚拟机的MAC地址信息时,向所述网络请求的目的虚拟机发送所述地址解析协议请求;

  所述虚拟机监控器,还用于截获到所述虚拟机发送的所述地址解析协议请求后,向子网管理服务器发起查询所述目的虚拟机对应的PCIENTB地址空间的请求信息,并在接收到所述子网管理服务器返回的响应消息后,将所述响应消息中包含的所述虚拟机对应的目的主机的PCIENTB地址空间信息缓存在本地,其中,所述虚拟机对应的所述目的主机的PCIENTB地址空间与所述服务器对应的所述目的主机的PCIENTB地址空间相同。

  结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述源主机上的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的所述目的主机的PCIENTB地址空间,包括:

  所述虚拟机监控器,用于将所述网络请求包含的数据、所述虚拟机的ID和源NTB端口ID放入所述PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给所述PCIE交换机,使所述PCIE交换机将所述PCIE报文写入目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间;

  其中,所述源NTB端口ID为所述PCIE交换机中与所述虚拟机监控器相连的NTB端口的ID。

  结合第三方面的第二或第三种可能的实现方式,在第四种可能的实现方式中:

  所述服务器对应的所述目的主机的PCIENTB地址空间由所述子网管理服务器维护管理,用于接收来自于所述服务器发送给所述目的主机的数据;

  其中,全部PCIENTB地址空间分成与所述PCIE交换机连接的主机个数相同的份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给所述对应主机的数据,在每个所述地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个所述其他主机,用于接收来自于所述其他主机发送给所述地址子空间对应主机的数据,所述其他主机是除所述地址子空间对应主机之外,与所述PCIE交换机连接的主机。

  结合第三方面的第四种可能的实现方式,在第五种可能的实现方式中:

  所述虚拟机监控器,还用于接收并缓存所述服务器对应的子网管理服务器的PCIENTB地址空间信息。

  结合第三方面或第三方面的第一至第五种任一可能的实现方式,在第六种可能的实现方式中,所述目的主机的虚拟机监控器根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机,包括:

  所述目的主机的虚拟机监控器读取所述目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间中的所述PCIE报文,根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  第四方面,本发明实施例提供了一种服务器,其特征在于,包括处理器和存储器,所述存储器存储执行指令,当所述服务器运行时,所述处理器与所述存储器之间通信,所述处理器执行所述执行指令使得所述服务器执行如下的方法:

  所述服务器上的虚拟机在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给所述服务器上的虚拟机监控器;

  所述服务器上的虚拟机监控器根据所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,其中,所述目的主机为所述网络请求的目的虚拟机所属的主机,所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间;

  所述服务器上的虚拟机监控器将包含所述数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  在第四方面的第一种可能的实现方式中,所述处理器执行所述执行指令使得所述服务器执行的方法中,所述服务器上的虚拟机监控器根据所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,具体为:

  所述服务器上的虚拟机监控器根据所述网络请求的目的地址,确定所述网络请求的目的主机,并根据本地缓存的所述服务器对应的所述目的主机的PCIENTB地址空间信息,确定所述PCIE交换机上所述服务器对应的所述目的主机的PCIENTB地址空间;

  其中,所述服务器对应的所述目的主机的PCIENTB地址空间信息为所述服务器上的虚拟机监控器在所述服务器上的虚拟机发送地址解析协议请求进行地址解析时缓存的。

  结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器执行所述执行指令使得所述服务器执行的方法中,所述服务器上的虚拟机发送地址解析协议请求进行地址解析时缓存,包括:

  所述虚拟机监控器截获到所述虚拟机向所述网络请求的目的虚拟机发送的所述地址解析协议请求后,发起查询所述虚拟机对应的所述目的主机的PCIENTB地址空间信息的请求消息到子网管理服务器;

  所述服务器上的虚拟机监控器接收所述子网管理服务器返回的响应消息,将所述响应消息中包含的所述虚拟机对应的所述目的主机的PCIENTB地址空间信息缓存在本地,其中,所述虚拟机对应的所述目的主机的PCIENTB地址空间与所述服务器对应的所述目的主机的PCIENTB地址空间相同。

  结合第四方面或第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器执行所述执行指令使得所述服务器执行的方法中,所述服务器的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,包括:

  所述服务器上的虚拟机监控器将所述网络请求包含的数据、所述虚拟机的ID和源NTB端口ID放入所述PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给所述PCIE交换机,使所述PCIE交换机将所述PCIE报文写入目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间;

  其中,所述源NTB端口ID为所述PCIE交换机中与所述服务器上的虚拟机监控器相连的NTB端口的ID。

  结合第四方面的第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述处理器执行所述执行指令使得所述服务器执行的方法还包括:

  所述服务器对应的所述目的主机的PCIENTB地址空间由所述子网管理服务器维护管理,用于接收来自于所述服务器发送给所述目的主机的数据;

  其中,全部PCIENTB地址空间分成与所述PCIE交换机连接的主机个数相同的份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给所述对应主机的数据,在每个所述地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个所述其他主机,用于接收来自于所述其他主机发送给所述地址子空间对应主机的数据,所述其他主机是除所述地址子空间对应主机之外,与所述PCIE交换机连接的主机。

  结合第四方面的第四种可能的实现方式,在第五种可能的实现方式中,所述处理器执行所述执行指令使得所述服务器执行的方法还包括:

  所述服务器的虚拟机监控器接收并缓存所述服务器对应的子网管理服务器的PCIENTB地址空间信息,以便能向所述子网管理服务器发送所述查询目的主机PCIENTB地址空间的请求消息。

  结合第四方面或第四方面的第一至第五可能的实现方式,在第六种可能的实现方式中,所述处理器执行所述执行指令使得所述服务器执行的方法中,所述目的主机的虚拟机监控器根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机,包括:

  所述目的主机的虚拟机监控器读取所述目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间中的所述PCIE报文,根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  第五方面,本发明实施例提供了一种计算机可读介质,包含计算机执行指令,所述计算机执行指令用于使服务器执行如下方法:

  所述服务器上的虚拟机在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给所述服务器上的虚拟机监控器;

  所述服务器上的虚拟机监控器根据所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,其中,所述目的主机为所述网络请求的目的虚拟机所属的主机,所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间;

  所述服务器上的虚拟机监控器将包含所述数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的所述网络请求的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  在第五方面的第一种可能的实现方式中,所述计算机执行指令用于使服务器执行的方法中,所述服务器上的虚拟机监控器根据所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,具体为:

  所述服务器上的虚拟机监控器根据所述网络请求的目的地址,确定所述网络请求的目的主机,并根据本地缓存的所述服务器对应的所述目的主机的PCIENTB地址空间信息,确定所述PCIE交换机上所述服务器对应的所述目的主机的PCIENTB地址空间;

  其中,所述服务器对应的所述目的主机的PCIENTB地址空间信息为所述服务器上的虚拟机监控器在所述服务器上的虚拟机发送地址解析协议请求进行地址解析时缓存的。

  结合第五方面的第一种可能的实现方式,在第二种可能的实现方式中,所述计算机执行指令用于使服务器执行的方法中,所述服务器上的虚拟机发送地址解析协议请求进行地址解析时缓存,包括:

  所述虚拟机监控器截获到所述虚拟机向所述网络请求的目的虚拟机发送的所述地址解析协议请求后,发起查询所述虚拟机对应的所述目的主机的PCIENTB地址空间信息的请求消息到子网管理服务器;

  所述服务器上的虚拟机监控器接收所述子网管理服务器返回的响应消息,将所述响应消息中包含的所述虚拟机对应的所述目的主机的PCIENTB地址空间信息缓存在本地,其中,所述虚拟机对应的所述目的主机的PCIENTB地址空间与所述服务器对应的所述目的主机的PCIENTB地址空间相同。

  结合第五方面或第五方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中所述计算机执行指令用于使服务器执行的方法中,所述服务器的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,包括:

  所述服务器上的虚拟机监控器将所述网络请求包含的数据、所述虚拟机的ID和源NTB端口ID放入所述PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给所述PCIE交换机,使所述PCIE交换机将所述PCIE报文写入目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间;

  其中,所述源NTB端口ID为所述PCIE交换机中与所述服务器上的虚拟机监控器相连的NTB端口的ID。

  结合第五方面的第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述计算机执行指令用于使服务器执行的方法还包括:

  所述服务器对应的所述目的主机的PCIENTB地址空间由所述子网管理服务器维护管理,用于接收来自于所述服务器发送给所述目的主机的数据;

  其中,全部PCIENTB地址空间分成与所述PCIE交换机连接的主机个数相同的份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给所述对应主机的数据,在每个所述地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个所述其他主机,用于接收来自于所述其他主机发送给所述地址子空间对应主机的数据,所述其他主机是除所述地址子空间对应主机之外,与所述PCIE交换机连接的主机。

  结合第五方面的第四种可能的实现方式,在第五种可能的实现方式中,所述计算机执行指令用于使服务器执行的方法还包括:

  所述服务器的虚拟机监控器接收并缓存所述服务器对应的子网管理服务器的PCIENTB地址空间信息,以便能向所述子网管理服务器发送所述查询目的主机PCIENTB地址空间的请求消息。

  结合第五方面或第五方面的第一至第五可能的实现方式,在第六种可能的实现方式中,所述计算机执行指令用于使服务器执行的方法中,所述目的主机的虚拟机监控器根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机,包括:

  所述目的主机的虚拟机监控器读取所述目的主机的PCIENTB地址空间中对应于所述服务器的PCIENTB地址空间中的所述PCIE报文,根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。

  如上所述,本发明所述的基于PCIE网络的虚拟机通信方法、服务器及系统,具有以下有益效果:

  本发明将PCIE网络作为虚拟机间的通信机制,利用PCIE网络的高带宽、低延时的优势,并通过基于PCIE网络的子网管理,使得网络中的所有主机上的虚拟机绕过OS中的TCP/IP协议栈,共享子网管理服务器维护管理的PCIE非透明桥(Non-TransparentBridge,简称NTB)地址空间,更进一步提高了虚拟机间的通信速度。

  附图说明

  图1为本发明所述的基于PCIE网络的虚拟机通信系统的主要结构示意图。

  图2为本发明所述的基于PCIE网络的虚拟机通信系统中主机的结构示意图。

  图3为本发明所述的基于PCIE网络的虚拟机通信系统中主机上运行的虚拟机的结构示意图。

  图4为本发明所述的基于PCIE网络的虚拟机通信系统中主机上运行的虚拟机监控器的结构示意图。

  图5为本发明所述的基于PCIE网络的虚拟机通信系统中PCIE交换机的结构示意图。

  图6为本发明所述的基于PCIE网络的虚拟机通信系统中子网管理服务器的结构示意图。

  图7为本发明所述的基于PCIE网络的虚拟机通信方法的流程示意图。

  图8为本发明所述的基于PCIE网络的虚拟机通信方法中步骤S1的详细流程示意图。

  图9为本发明所述的基于PCIE网络的虚拟机通信方法中地址解析的详细流程示意图。

  图10为本发明另一实施例的服务器结构示意图。

  具体实施方式

  以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

  针对本具体实施方式部分涉及的附图,需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的形态、数量及比例可为一种随意的改变,且其组件布局形态也可能更为复杂。

  随着PCIE技术的发展,PCIE总线进一步拓展为两台主机之间的数据通信总线。PCIE传输数据包是通过地址范围来寻址的,即处理器访问外围设备时会读写分配给外围设备的地址空间,最终PCIE总线通过这个地址把数据报文路由给外围设备。这个路由机制要求在一个主机系统中分配给外围设备的地址空间是不能重复的,但在两个主机之间通过PCIE来交互数据时无法保证地址空间不重复,此时PCIE总线引入了非透明桥NTB机制。NTB机制是利用预先设置好的地址转换规则将一个主机发往另一个主机的数据报文的地址进行转换,转换为目标主机中不会冲突的地址范围,从而实现PCIE总线在主机之间的数据路由。NTB一般集成在PCIE交换芯片当中,提供高宽带和低延时的主机间通信链路,并且具有PCIE设备的功能,例如中断和错误处理等。此外,PCIE交换机对于Host2Host(主机对主机)通信的实现主要起到以下两方面作用:1)对于PIO(ProgrammingInputOutput,过程通道)的读与写通过NTB进行标识(Identity,简称ID)路由和地址路由;2)对于DMA(Directmemoryaccess,直接内存访问)的发送和接收通过ID路由。

  因为PCIE总线的延迟时间是1微妙,以太网的延迟则接近于10微秒,同时TCP/IP协议极其复杂,造成OS的协议处理占据了网络时延的很大部分,此外,在数据传输过程中,TCP/IP协议栈处理的频繁的数据复制和中断处理导致主机CPU资源无法专注于处理用户业务,所以本发明提出一种基于PCIE网络的虚拟机通信方法,该方法构建了一个为所有VM的数据交换服务的PCIE网络,主机的VMM使用PCIENTB的地址窗口和中断机制进行通信,从而加速了VM之间的通信。

  下面结合实施例和附图对本发明进行详细说明。

  实施例

  本实施例提供一种基于PCIE网络的虚拟机通信系统,如图1所示,包括至少2台主机10(Host)、一个PCIE交换机20(PCIESwitch)以及一个子网管理服务器30;各主机10上运行有一个虚拟机监控器(VMM)111和至少一个虚拟机(VM)101;PCIE交换机20与所有主机相连,实现主机之间的数据转发。所述子网管理服务器30与所述PCIE交换机20相连,用于维护系统中主机与虚拟机的对应关系。本发明实施例中提供的系统的主机具体可以为普通的计算机、移动终端、工作站或服务器、专用服务器等,子网管理服务器可以是系统中的一台普通主机,也可以是一台专用主机,本发明不作具体限定。

  下面对主机、PCIE交换机以及子网管理服务器作进一步详细描述。

  如图2所示,每个所述主机10包括:虚拟机运行模块100、虚拟机监控模块110以及硬件平台120。虚拟机运行模块100和虚拟机监控模块110分别提供了虚拟机的硬件平台和软件平台,虚拟机监控模块110包含了虚拟机监视器111,是物理硬件和虚拟机之间的中间层,负责协调各个虚拟机对硬件平台的访问。虚拟机运行模块100中运行了多个虚拟机101。每台主机上的虚拟机监控器111与该主机上的所有虚拟机101通信相连,将虚拟机101发出的数据以PCIE协议发送给所述PCIE交换机20。

  此外,主机的硬件平台120可以包括CPU、内存、网卡、存储和互联设备等高速I/O设备以及基本输入输出等低速设备。虚拟机运行在主机的硬件平台上,且感知不到网络集群内部的通信是通过PCIE网络完成的。

  虚拟机101,用于在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给虚拟机监控器111。优选的,虚拟机101,用于在TCP/IP协议栈之上拦截所述网络请求,获取所述网络请求中包含的数据,将所述网络请求中包含的数据放入自己对应的虚拟机数据包缓冲队列中,并通知虚拟机监控器111。优选的,虚拟机101可以仅针对数据类型报文的网络请求进行拦截并进行后续处理,非数据类型报文的网络请求还按照原来的TCP/IP协议栈方式进行后续处理。

  虚拟机监控器111,用于在接收到虚拟机101发送的所述网络请求之后,根据所述网络请求的目的地址,确定PCIE交换机上源主机对应的目的主机的PCIENTB地址空间,将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述源主机对应的所述目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到所述网络请求的目的虚拟机。其中,所述目的主机为所述网络请求的目的虚拟机所属的主机,所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。

  优选的,VMM111,用于接收到虚拟机101发送的网络请求后,根据网络请求中的目的地址(即网络请求的目的虚拟机的IP地址),确定源主机对应的目的主机的PCIENTB地址空间,即确定该源主机与目的主机通信(此处是源主机上的源VM与目的主机上的目的VM进行通信)时,需要写入的目的主机的PCIENTB地址空间。为描述方便,在本文中,将发出该网络请求的虚拟机所在的主机称为源主机,将该网络请求的目的VM所在的主机称为目的主机。

  优选的,当VMM111上缓存有该网络请求所对应的目的主机(即网络请求的目的虚拟机的IP地址所对应的物理主机)的PCIENTB地址空间时,则VMM111可以确定所述网络请求对应的目的主机对应的PCIENTB地址空间,即该源主机应写入的目的主机的PCIENTB地址空间。优选的,在虚拟机101发送地址解析协议(AddressResolutionProtocol,简称ARP)请求进行地址解析流程时,VMM111会缓存该源主机所对应的目的主机的PCIENTB地址空间。进一步的,当虚拟机101要发出TCP/IP网络请求时,如果虚拟机101上没有所述网络请求的目的虚拟机的MAC地址信息,则虚拟机111会按照TCP/IP协议发出ARP请求进行地址解析。具体为:

  虚拟机101,还用于当虚拟机101上没有网络请求的目的虚拟机的MAC地址信息时,向网络请求的目的虚拟机发送以太网ARP请求。ARP请求中包含目的虚拟机的IP地址。则,VMM111,还用于接收到所述虚拟机101发送的ARP请求后,向子网管理服务器30发起查询目的虚拟机对应的PCIENTB地址空间的请求消息,该请求消息带有目的虚拟机的IP地址,以及接收到所述子网管理服务器30返回的包含所述源VM对应的目的主机的PCIENTB地址空间信息的响应消息后,将所述源VM对应的目的主机的PCIENTB地址空间信息缓存在本地。

  子网管理服务器30,用于接收到VMM发起的查询目的虚拟机对应的PCIENTB地址空间的请求消息后,根据主机与虚拟机的对应关系确定所述目的虚拟机所属的目的主机,获知源主机对应的目的主机的PCIENTB地址空间,发送响应消息给虚拟机监控器111。

  优选的,子网管理服务器30,用于维护管理所有PCIENTB地址空间,PCIENTB地址空间配置在与所述源主机和目的主机通信相连的PCIE交换机上,所述PCIENTB地址空间分成与PCIE交换机连接的主机个数相同份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给该主机的数据,在每个主机对应的地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个其他主机,用于接收来自于这个其他主机发送给所述地址子空间对应的该主机的数据,这里所说的其他主机是除所述地址子空间对应的主机之外,与PCIE交换机连接的主机。例如,PCIE交换机最大能接入N个主机(主机1-主机N),那么子网管理服务器维护的PCIENTB地址空间也将被均分成N个PCIENTB地址子空间,一个PCIENTB地址子空间对应着一个主机。进一步的,一个PCIENTB地址子空间又可以分出N-1个PCIENTB地址微空间,每个PCIENTB地址微空间对应一个其他主机,主机和主机之间通过写指定的PCIENTB地址空间的方式就可以实现互相通信,例如,整个PCIENTB地址空间分成N个PCIENTB地址子空间,主机1对应的PCIENTB地址子空间分为N-1个地址微空间,分别标识为H2、H3、......HN,当主机2与主机1进行通信时,主机2向主机1对应的PCIENTB地址空间(地址子空间)中的H2区域(地址微空间)写入数据即可以完成数据由主机2向主机1的传递。子网管理服务器30会在PCIE网络初始化时通知网络集群中的所有Host自己所对应的地址空间。本发明实施例可以通过地址空间的这种机制实现多个主机与一个主机并发进行通信

  进一步的,子网管理服务器30,还用于维护各主机与其上运行的虚拟机的对应关系,并根据虚拟机的创建、更改、销毁等实时更新该对应关系。所述子网管理服务器维护的对应关系可以为IP地址的映射关系或虚拟机ID的映射关系,或者其他类型的映射关系,例如,可以为主机的IP地址与虚拟机的ID之间的对应关系,或主机对应的PCIENTB地址空间与虚拟机的ID之间的对应关系。每个VM的创建、销毁、更改都会通知子网管理服务器刷新其映射关系。所述子网管理服务器可以为一个物理主机,也可以是一个虚拟机。

  具体的,子网管理服务器30,用于接收到源VMM发送的请求消息,根据消息中携带的目的虚拟机的IP地址,以及本地维护保存的目的主机与目的虚拟机的对应关系确定所述目的虚拟机所属的目的主机,并进一步确定源VM对应的目的主机的PCIENTB地址空间,即源VM对应的目的VM的PCIENTB地址空间,发送响应消息给源虚拟机监控器,将源VM对应的目的主机的PCIENTB地址空间信息返回给源VMM。

  则,所述虚拟机监控器111在得到所述源VM对应的目的主机的PCIENTB地址空间消息后,还用于继续进行源VM的ARP流程,后续的ARP流程与现有的ARP流程类似:虚拟机监控器将以太网的ARP请求发送给所述网络请求的目的虚拟机,即,源VMM将ARP请求发送给目的虚拟机所在的主机的VMM,所述目的主机上的虚拟机监控器收到所述ARP请求后,将所述ARP请求发送给所述目的虚拟机;目的虚拟机返回ARP响应,其中包含目的虚拟机的MAC地址;所述源虚拟机接收到所述目的虚拟机发送的ARP响应,至此完成了目的虚拟机的ARP地址解析过程。

  优选的,虚拟机监控器111,用于将所述网络请求发送给目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间,具体为:虚拟机监控器111,用于将所述网络请求包含的数据、源虚拟机ID和源NTB端口ID放入PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给PCIE交换机20,使所述PCIE交换机20将所述数据写入目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。其中,所述源虚拟机ID为发出所述数据的虚拟机的ID,所述源NTB端口ID为所述PCIE交换机中与所述源主机上的虚拟机监控器相连的NTB端口的ID。

  进一步的,目的主机的虚拟机监控器,还用于根据目的虚拟机的ID将所述数据分发到目的虚拟机。具体地,目的主机的虚拟机监控器读取所述目的主机对应的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间中的数据,根据所述数据的目的虚拟机的ID将数据分发到所述数据的目的虚拟机的缓冲队列中,并通知所述数据的目的虚拟机从所述缓冲队列中接收数据。

  进一步的,如图3所示,所述虚拟机101中包括:网络请求拦截模块1011、内核协议模块1012、虚拟设备驱动模块1013;

  所述网络请求拦截模块1011,用于在TCP/IP协议栈之上拦截所述网络请求。

  所述内核协议模块1012,与所述网络请求拦截模块1011通信相连,用于对所述网络拦截模块1011拦截的所述网络请求进行处理。具体的处理过程为:内核协议模块1012接收所述网络请求,解析所述网络请求,获取所述网络请求包含的数据。

  所述虚拟设备驱动模块1013,与所述内核协议模块1012通信相连,用于将所述网络请求包含的数据放入所述虚拟机对应的数据包缓冲队列中,并通知与所述虚拟机运行在同一台主机上的虚拟机监控器。具体地,虚拟机中的虚拟设备驱动模块1013将所述网络请求包含的数据放入由虚拟机监控器监管且属于所述虚拟机私有的数据包缓冲队列(以下简称缓冲队列)中,同时通知虚拟机监控器有新请求要发送。其中,每个虚拟机均私有一个缓冲队列,由于每个主机上可设有多个虚拟机,故每个主机上的虚拟机监控器监管该主机上的全部虚拟机私有的缓冲队列。

  进一步的,如图4所示,所述虚拟机监控器111,包括与虚拟机101通信相连的PCIE数据包分发器1111、PCIE通信模块1112。

  所述PCIE数据包分发器1111,用于将所述网络请求中包含的数据加上源虚拟机ID和源NTB端口ID放入PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址。其中,拦截网络请求的虚拟机称为源虚拟机,接收网络请求的虚拟机为目的虚拟机,源虚拟机所属的主机为源主机,目的虚拟机所属的主机为目的主机,所述源虚拟机ID为所述发出数据的虚拟机的ID,所述源NTB端口ID为与所述源主机上的虚拟机监控器相连的NTB端口的ID。由于一台主机上可能运行着多台VM,因此PCIE数据包分发器1111的功能是将某个VM的网络请求加上源虚拟机ID和源NTB端口ID,区分每个VM的数据流。

  所述PCIE通信模块1112,用于将PCIE数据包分发器1111生成的所述PCIE报文发送给所述PCIE交换机20,使所述PCIE交换机20将所述数据写入目的主机对应的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。

  目的主机上的虚拟机监控器111上的PCIE通信模块1112,还用于从所述PCIE交换机20接收PCIE报文,则所述PCIE数据包分发器1111,还用于将PCIE通信模块1112接收的PCIE报文根据报文中的目的虚拟机ID将PCIE报文中的数据分发到报文所对应的目的虚拟机的缓冲队列中。

  如图5所示,所述PCIE交换机20主要包括与主机Host相连的非透明桥NTB,NTB提供地址窗口机制用来在主机间收发数据。在本发明所述的基于PCIE网络的虚拟机通信系统中,所述PCIE交换机20包括至少2个NTB端口,NTB端口与主机以及子网管理服务器一一对应相连。例如在图5中,主机1写主机2的NTB所在的地址窗口,那么数据会被PCIE交换机20以数据报文的形式从主机1的NTB发送到主机2的NTB,最终发送到主机2的内存中;主机1也可以写主机2对应的门铃寄存器(doorbell),使得主机2连接的NTB向主机2发送中断;最后,PCIE交换机20还有更高级的远程直接数据存取(Remotedirectmemoryaccess,简称RDMA)功能,利用这个功能,PCIE交换机20可以实现利用NTB相连的主机间拷贝内存。

  如图6所示,所述子网管理服务器30,包括主机与虚拟机对应关系管理模块301、PCIENTB地址空间管理模块302、PCIE通信模块303。

  主机与虚拟机对应关系管理模块301,用于维护系统中主机与虚拟机的对应关系。具体地,所述主机与虚拟机对应关系管理模块301维护了当前系统中每个Host与运行于其上的VM的对应关系。所述主机与虚拟机对应关系管理模块301维护的对应关系可以为IP映射关系或ID映射关系,或者其他类型的映射关系,例如主机的IP地址与虚拟机的ID之间的归属关系或主机对应的PCIENTB地址空间与虚拟机的ID之间的对应关系。主机与虚拟机对应关系管理模块301会根据虚拟机的创建、更改、销毁等实时更新主机与虚拟机的对应关系。

  所述PCIENTB地址空间管理模块302,用于维护管理为每个主机预先配置的PCIENTB地址空间。所有PCIENTB地址空间分成与所述PCIE交换机20连接的主机个数相同的份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给所述地址子空间对应的主机的数据,进一步的,在每个所述地址子空间中为其他主机分配一个地址微空间,每个所述地址微空间对应一个所述其他主机,用于接收来自于所述其他主机发送给所述地址子空间对应的主机的数据,其中,所述其他主机是除所述地址子空间对应的主机之外,与所述PCIE交换机连接的主机。例如,PCIE交换机最大能接入N个主机,主机1-主机N,那么子网管理服务器维护的PCIENTB地址空间也将被均分成N个PCIENTB地址子空间,一个PCIENTB地址子空间对应着一个主机。进一步的,一个PCIENTB地址子空间又可以分出N-1个PCIENTB地址微空间,每个PCIENTB地址微空间对应一个其他主机,主机和主机之间通过写指定的PCIENTB地址空间的方式就可以实现互相通信,例如,整个PCIENTB地址空间分成N个PCIENTB地址子空间,主机1对应的PCIENTB地址子空间分为N-1个地址微空间,分别标识为H2、H3......HN,当主机2与主机1进行通信时,主机2向主机1对应的PCIENTB地址空间(地址子空间)中的H2区域(地址微空间)写入数据即可以完成数据由主机2向主机1的传递。PCIENTB地址空间管理模块302,会在PCIE网络初始化时通知网络集群中的所有Host子网管理服务器30所对应的地址空间,各主机上的VMM会缓存本主机所对应的子网管理服务器的地址空间信息,以便VMM在收到源VM的地址解析请求时能够正确向子网管理服务器发送查询源VM对应的目的主机的PCIENTB地址空间的请求消息。

  所述PCIE通信模块303,用于与所述PCIE交换机20通信,收发PCIE报文。

  进一步的,PCIE通信模块303,用于接收源VMM通过PCIE交换机发送的请求消息;所述主机与虚拟机对应关系管理模块301,用于根据该请求消息中携带的目的虚拟机的IP地址,以及维护保存的目的主机与目的虚拟机的对应关系确定所述目的虚拟机所属的目的主机;PCIENTB地址空间管理模块302,用于根据所述目的主机以及源主机的信息,确定源VM对应的目的主机的PCIENTB地址空间,即源VM对应的目的VM的PCIENTB地址空间;通过所述PCIE通信模块303发送响应消息给源虚拟机监控器,将源VM对应的目的主机的PCIENTB地址空间信息返回给源VMM。

  本发明将PCIE网络作为虚拟机间的通信机制,跳过了以太网的传输,高效利用PCIE网络的高带宽、低延时的优势,大幅度降低了传输时延,实现了虚拟机间的快速通信。而且,本发明还突破了PCIE网络的限制,实现了基于PCIE网络的子网管理,使得网络中的所有主机上的虚拟机绕过OS中的TCP/IP协议栈,维护了系统中主机与虚拟机的对应关系,实现了整个系统的统一管理维护,更进一步提高了基于PCIE网络的虚拟机通信系统的完整性。此外,本发明通过子网管理服务器实现了虚拟机对PCIENTB地址空间的共享,解决了PCIE网络的并发读写问题,更进一步提高了虚拟机间数据接收的速度。

  本实施例还提供一种基于PCIE网络的虚拟机通信方法,该方法可以由所述的基于PCIE网络的虚拟机通信系统实现,但其实现结构不限于实施例所述的系统。

  如图7所示,所述基于PCIE网络的虚拟机通信方法包括:

  S1,源主机上的源虚拟机在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给所述源主机上的虚拟机监控器。

  具体地,可以如图8所示,所述步骤S1包括:

  S11,源虚拟机在TCP/IP协议栈之上拦截网络请求;

  优选的,本发明实施例中可以仅针对数据类型报文的网络请求进行拦截并进行后续处理,非数据类型报文的网络请求还按照原来的TCP/IP协议栈方式进行后续处理。因为非数据类型报文的网络请求对主机性能的影响不大,且实现逻辑复杂,采用本发明实施例中的方法并无明显优势,即,优选的,本发明实施例将控制报文仍全部转交给现有的TCP/IP协议栈进行后续处理,而拦截数据类型报文进行本发明实施例中的后续处理。

  S12,所述源虚拟机解析所述网络请求,获取所述网络请求包含的数据;

  S13,所述源虚拟机将所述数据放入所述源虚拟机对应的数据包缓冲队列中,并通知所述源主机上的虚拟机监控器。

  S2,所述源主机上的虚拟机监控器在接收到所述网络请求之后,根据所述网络请求的目的地址,确定PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,其中,目的主机的PCIENTB地址空间为PCIE交换机上分配给所述目的主机的PCIENTB地址空间,PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间为所述PCIE交换机上分配给所述目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。源主机上的VMM接收到所述网络请求后,根据网络请求中的目的地址(即网络请求的目的虚拟机的IP地址)确定所述网络请求对应的目的主机(目的虚拟机所属的物理主机),并进一步确定所述源主机对应的目的主机的PCIENTB地址空间,即确定该源主机与目的主机通信(此处也是源主机上的源VM与目的主机上的目的VM进行通信)时,需要写入的目的主机的PCIENTB地址空间。PCIENTB地址空间配置在与所述源主机和目的主机通信相连的一个PCIE交换机上。

  优选的,当源主机上的VMM上缓存有该网络请求所对应的目的主机(即网络请求的目的虚拟机的IP地址所对应的物理主机)的PCIENTB地址空间时,则源主机上的VMM可以确定所述网络请求对应的目的主机对应的PCIENTB地址空间,即该源主机对应应写入的目的主机的PCIENTB地址空间。在源虚拟机发送地址解析协议请求进行地址解析流程时,源主机上的VMM会缓存该源主机所对应的目的主机的PCIENTB地址空间,所述目的主机就是该网络请求的目的虚拟机的IP地址所对应的物理主机。具体的,当源虚拟机要发出TCP/IP网络请求时,如果源虚拟机上没有所述网络请求的目的虚拟机的MAC地址信息,则源虚拟机会按照TCP/IP协议发出ARP请求进行地址解析,可以参见图9,其中源VMM指源主机上的虚拟机监控器,目的VMM指目的主机上的虚拟机监控器。地址解析的具体实现过程为:

  S21,源虚拟机通过源主机上的虚拟机监控器向网络请求的目的虚拟机发送以太网ARP请求,这里的ARP请求是TCP/IP协议中的标准请求,里面会包含目的虚拟机的IP地址。

  S22,源VMM接收到带有目的虚拟机IP地址的ARP请求后,发起查询目的虚拟机对应的PCIENTB地址空间的请求消息到子网管理服务器,该请求消息带有目的虚拟机的IP地址。源VMM上保存有子网管理服务器的PCIENTB地址空间信息,发送查询源VM对应的目的主机的PCIENTB地址空间的请求消息。

  S23,所述子网管理服务器根据其维护管理的主机与虚拟机的对应关系确定所述目的虚拟机所属的目的主机,获知源主机对应的目的主机的PCIENTB地址空间。

  优选的,子网管理服务器维护管理着所有PCIENTB地址空间,所有PCIENTB地址空间分成与PCIE交换机连接的主机个数相同份数的PCIENTB地址子空间,每个所述地址子空间对应一个主机,用于接收发送给该主机的数据,在每个主机对应的地址子空间中为每个其他主机分配一个地址微空间,每个所述地址微空间对应一个其他主机,用于接收来自于这个其他主机发送给所述地址子空间对应的该主机的数据,这里所说的其他主机是除所述地址子空间对应的主机之外,与PCIE交换机连接的主机。

  例如,PCIE交换机最大能接入N个主机(主机1-主机N),那么子网管理服务器维护的PCIENTB地址空间也将被均分成N个PCIENTB地址子空间,一个PCIENTB地址子空间对应着一个主机。进一步的,一个PCIENTB地址子空间又可以分出N-1个PCIENTB地址微空间,每个PCIENTB地址微空间对应一个其他主机,主机和主机之间通过写指定的PCIENTB地址空间的方式就可以实现互相通信,例如,整个PCIENTB地址空间分成N个PCIENTB地址子空间,主机1对应的PCIENTB地址子空间分为N-1个地址微空间,分别标识为H2、H3、......HN,当主机2与主机1进行通信时,主机2向主机1对应的PCIENTB地址空间(地址子空间)中的H2区域(地址微空间)写入数据即可以完成数据由主机2向主机1的传递。本发明实施例可以通过地址空间的这种机制实现多个主机与一个主机并发进行通信。

  优选的,子网管理服务器还维护有各主机与其上运行的虚拟机的对应关系,并根据虚拟机的创建、更改、销毁等实时更新该对应关系。所述子网管理服务器维护的对应关系可以为IP地址的映射关系或虚拟机ID的映射关系,或者其他类型的映射关系,例如,可以为主机的IP地址与虚拟机的ID之间的对应关系,或主机对应的PCIENTB地址空间与虚拟机的ID之间的对应关系。

  具体的,子网管理服务器接收到源VMM发送的请求消息,子网管理服务器根据消息中携带的目的虚拟机的IP地址,以及本地维护保存的目的主机与目的虚拟机的对应关系确定所述目的虚拟机所属的目的主机,并进一步确定源VM对应的目的主机的PCIENTB地址空间,即源VM对应的目的VM的PCIENTB地址空间。

  S24,子网管理服务器发送响应消息给源虚拟机监控器,将源VM对应的目的主机的PCIENTB地址空间信息返回给源VMM。

  S25,所述源主机上的虚拟机监控器得到所述源VM对应的目的主机的PCIENTB地址空间信息后,将所述源VM对应的目的主机的PCIENTB地址空间信息缓存在本地。也就是缓存了源主机对应的目的主机的PCIENTB地址空间信息。

  所述源主机上的虚拟机监控器得到所述源VM对应的目的主机的PCIENTB地址空间消息后,继续进行源VM的ARP流程,后续的ARP流程与现有的ARP流程类似:

  S26,所述源主机上的虚拟机监控器将以太网的ARP请求发送给所述网络请求的目的虚拟机,即,源VMM将ARP请求发送给目的虚拟机所在的主机的VMM,所述目的主机上的虚拟机监控器收到所述ARP请求后,将所述ARP请求发送给所述目的虚拟机;

  S27,目的虚拟机返回ARP响应,其中包含目的虚拟机的MAC地址所述源虚拟机接收到所述目的虚拟机发送的ARP响应,至此完成了目的虚拟机的ARP地址解析过程。

  优选的,子网管理服务器会在PCIE网络初始化时预配置好PCIENTB地址空间,并将子网管理服务器所对应的地址空间信息通知子网中的所有主机,各主机收到子网管理服务器的信息后,会缓存自己所对应的子网管理服务器的地址空间信息,以便能正确地向子网管理服务器发送查询对应的PCIENTB地址空间的请求消息。

  S3,所述源主机上的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述源主机对应的目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到该网络请求的目的虚拟机。

  具体地,所述源主机上的虚拟机监控器将所述网络请求发送给目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间,详细实现过程为:所述源主机上的虚拟机监控器将所述网络请求包含的数据、所述源虚拟机的ID和源NTB端口ID放入PCIE报文的数据荷载,将所述网络请求的目的虚拟机的ID作为所述PCIE报文的目的地址,发送所述PCIE报文给所述PCIE交换机,使所述PCIE交换机将所述数据写入目的主机的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间。其中,所述源NTB端口ID为所述PCIE交换机中与所述源主机上的虚拟机监控器相连的NTB端口的ID。

  进一步的,所述基于PCIE网络的虚拟机通信方法还包含步骤S4,所述目的主机的虚拟机监控器根据所述目的虚拟机的ID将所述数据分发到目的虚拟机。

  具体地,本步骤的详细实现过程为:所述目的主机的虚拟机监控器读取所述目的主机对应的PCIENTB地址空间中对应于所述源主机的PCIENTB地址空间中的数据,根据所述数据的目的虚拟机的ID将数据分发到所述数据的目的虚拟机的缓冲队列中,并通知所述数据的目的虚拟机从所述缓冲队列中接收数据。即,在收到doorbell中断后,目的主机的VMM会迅速解析缓冲区的数据,并根据目标VM的区域(domain)ID将数据分发到目标VM的缓冲队列中,同时目标VMM会注入中断通知目标VM有新数据到来。目标VM最终会通过其内核中的虚拟设备驱动模块从缓冲队列中接收到所述数据。每个虚拟机均私有一个缓冲队列,由于每个主机上可设有多个虚拟机,故每个主机内的虚拟机监控器监管该主机上的全部虚拟机私有的缓冲队列。

  本发明实施例利用子网管理服务器维护了PCIE网络中主机与虚拟机的对应关系,实现了目标VM的地址解析功能,更进一步实现了整个PCIE网络的统一管理维护,提高了PCIE网络的集成性。

  图10为本发明实施例的服务器结构图,如图所示,本实施例的服务器40包括至少一个处理器401,存储器405、至少一个网络接口卡404,和至少一通信总线402。该服务器40可选的包含用户接口403,包括显示器,键盘或者点击设备。存储器405存储执行指令,当服务器40运行时,处理器401与存储器405之间通信,处理器401执行执行指令使得服务器40执行本发明前面实施例中所描述的主机实施的方法,具体为:可以如图7所示,服务器上的源虚拟机在TCP/IP协议栈之上拦截网络请求,并将所述网络请求中包含的数据发送给服务器上的虚拟机监控器;服务器上的虚拟机监控器在接收到所述网络请求之后,根据所述网络请求的目的地址,确定PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间;服务器上的虚拟机监控器将包含所述网络请求中的数据的PCIE报文发送到所述PCIE交换机上所述服务器对应的目的主机的PCIENTB地址空间,以便所述目的主机的虚拟机监控器根据所述PCIE报文中的目的虚拟机的ID将所述数据分发到该网络请求的目的虚拟机。实现原理和技术效果与前面实施例中所述的方法类似,此处不再赘述。操作系统406,包含各种程序,用于实现各种基础业务以及处理基于硬件的任务。该服务器40还包括显示接口卡。另外,本发明实施例中还提供一种计算机可读介质,包含计算机执行指令,计算机执行指令能够使服务器40执行本发明前面实施例中所描述的主机实施的方法,其实现原理和技术效果类似,此处不再赘述。

  进一步的,本实施例中的服务器40,还可以替代前面实施例中PCIE网络的虚拟机通信系统中的主机10,实现上述实施例中主机10的功能,作为组成PCIE网络的虚拟机通信系统中的一部分,与PCIE网络的虚拟机通信系统中的其他组成部分通信配合,使所述PCIE网络的虚拟机通信系统实现将PCIE网络作为虚拟机间的通信机制,实现虚拟机间的快速通信。其实现原理和技术效果与前面实施例中所述的通信系统和通信方法类似,此处不再赘述。

  本发明规避了TCP/IP协议栈导致的时延和主机性能损耗,利用了PCIE网络的低延迟,高带宽的优势,大幅度降低了传输时延,实现了虚拟机间的快速通信;同时还基于标准的PCIE实现,解决了PCIE网络的并发读写问题,更进一步提高了虚拟机间数据接收的速度。

  综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

  通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。

  上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

《一种基于PCIE网络的虚拟机通信方法、服务器及系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)