CN109983439A - 虚拟化远程直接存储器访问 - Google Patents
虚拟化远程直接存储器访问 Download PDFInfo
- Publication number
- CN109983439A CN109983439A CN201680091193.3A CN201680091193A CN109983439A CN 109983439 A CN109983439 A CN 109983439A CN 201680091193 A CN201680091193 A CN 201680091193A CN 109983439 A CN109983439 A CN 109983439A
- Authority
- CN
- China
- Prior art keywords
- network element
- rdma
- virtual machine
- equipment
- direct memory
- 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
- 238000000034 method Methods 0.000 claims description 30
- 230000006854 communication Effects 0.000 description 52
- 238000004891 communication Methods 0.000 description 51
- 238000004088 simulation Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000001737 promoting effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000017702 response to host Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文描述的特定实施例提供了一种电子设备,其可以被配置成:从位于第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机;以及使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于所述第一网络元件上。在示例中,所述电子设备可以进一步被配置成:确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
Description
技术领域
本公开总体上涉及计算的领域,并且更特别地涉及虚拟化远程直接存储器访问。
背景技术
远程直接存储器访问(RDMA)允许网络中的计算机在不涉及两个计算机中的任一个计算机的处理器、高速缓存或操作系统的情况下交换主存储器中的数据。像基于本地的直接存储其访问(DMA)那样,RDMA改进了吞吐量和性能,这是因为其将资源释放出来。RDMA还促进更快的数据传送速率。更具体地,RDMA实现网络接口卡(NIC)硬件中的传输协议并支持被称为零拷贝联网的特征。零拷贝联网使得可以直接从一个计算机的主存储器读取数据并将该数据直接写入到另一计算机的主存储器。
附图说明
为了提供本公开及其特征和优势的更全面理解,参考结合附图而作出的以下描述,在附图中,相似的附图标记表示相似的部分,在附图中:
图1是根据本公开实施例的用于实现虚拟化远程直接存储器访问的通信系统的简化框图;
图2是图示了根据本公开实施例的与用于实现虚拟化远程直接存储器访问的通信系统相关联的示例细节的简化框图;
图3是图示了根据本公开实施例的与用于实现虚拟化远程直接存储器访问的通信系统相关联的示例细节的简化框图;
图4是图示了根据本公开实施例的与用于实现虚拟化远程直接存储器访问的通信系统相关联的示例细节的简化框图;
图5是图示了根据实施例的可与通信系统相关联的可能操作的简化流程图;
图6是图示了根据实施例的可与通信系统相关联的可能操作的简化流程图;以及
图7是图示了根据实施例的可与通信系统相关联的可能操作的简化流程图。
附图的各图不必然按比例绘制,这是由于在不脱离本公开的范围的情况下它们的尺寸可以相当大地变化。
具体实施方式
示例实施例
以下详细描述阐述了与用于实现虚拟化远程直接存储器访问的通信系统相关的装置、方法和系统的示例实施例。为了方便起见,参考一个实施例来描述诸如例如(一个或多个)结构、(一个或多个)功能和/或(一个或多个)特性之类的特征;可以利用所描述的特征中任何合适的一个或多个实现各种实施例。
在以下描述中,将使用由本领域技术人员普遍采用以将它们的工作的实质传达给本领域其他工作人员的术语来描述说明性实现方式的各种方面。然而,对本领域技术人员来说应当明显的是,可以利用所描述的方面中的仅一些实践本文公开的实施例。出于解释的目的,阐述了具体数目、材料和配置,以便提供说明性实现方式的透彻理解。然而,对本领域技术人员来说应当明显的是,可以在没有具体细节的情况下实践本文公开的实施例。在其他实例中,省略或简化了公知特征,以免使说明性实现方式模糊。
在以下详细描述中,参考了形成其部分的附图,其中自始至终,相似的附图标记标示相似的部分,并且在附图中作为图示而示出了可实践的实施例。应当理解,可以利用其他实施例,并且在不脱离本公开的范围的情况下可以作出结构或逻辑改变,因此,以下详细描述不应在限制的意义上理解。出于本公开的目的,短语“A和/或B”意指(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
出于图示通信系统100的某些示例技术的目的,重要的是要理解可穿越网络环境的通信。以下基本信息可以被视为可根据其合适地解释本公开的基础。
终端用户具有比以前更多的通信选择。多个突出的技术趋势当前在进行中(例如更多计算设备、更多所连接的设备等)。一个趋势是RDMA。RDMA是从一个计算机、机器或设备(主机设备)的存储器到另一计算机、机器或设备(客机设备)的存储器中的直接存储器访问,而不涉及这两个计算机、机器或设备中的任一个的操作系统。这允许网络中的计算机在不涉及两个计算机中的任一个计算机的处理器、高速缓存或操作系统的情况下交换主存储器中的数据。RDMA可以允许改进吞吐量和性能的高吞吐量和低延时联网,这是因为其将资源释放出来,并且,RDMA还可以促进更快的数据传送速率。RDMA通过使网络适配器能够直接向(或从)应用存储器传送数据来支持零拷贝联网,并消除在操作系统中的数据缓冲器和应用存储器之间拷贝数据的需要。这种传送可能不要求或者要求非常少的要由CPU、高速缓存或上下文切换完成的工作,并且传送可能继续与其他系统操作并行地进行。
当具有RDMA要求的传统应用(例如,经由开放结构企业分布(OFED)应用程序接口(API))被迁移到虚拟化网络环境时,期待或期望是:那些应用应当仍然以RDMA的高性能运行。当前,一个解决方案是硬件辅助的虚拟化,其中管理程序利用单根输入/输出虚拟化(SR-IOV)以对真实RDMA设备进行虚拟化并将其指派给运行那些应用的对应VM。SR-IOV可以对物理RDMA设备进行虚拟化并与VM共享RDMA设备的虚拟函数(VF)。第二当前解决方案是管理程序中的准虚拟化方法,其中管理程序将准接口(para interface)暴露给客机操作系统(OS),并仿真准RDMA设备,并将数据重定向到管理程序的RDMA栈。然而,这些解决方案依赖于真实同构RDMA设备,且不能支持VM中的具有RDMA要求的传统应用,并在没有同构RDMA设备的情况下仍然实现相对高的性能。
如图1中概述的可实现虚拟化RDMA的通信系统可以解决这些问题(和其他问题)。图1是通信系统100的简化框图,图示了虚拟化远程直接存储器访问(RDMA)的示例使用。通信系统100可以包括多个网络元件102a-102d。每一个网络元件可以使用网络112来与其他网络元件通信。例如,网络元件102a可以使用网络112来与网络元件102d通信。在一些示例中,网络元件可以直接与另一网络元件通信。例如,网络元件102b可以与网络元件102c直接通信。
网络元件102a可以包括虚拟机(VM)104a和104b、管理程序106a、处理器108和存储器110。网络元件102b可以包括VM 104c、104d和104e、管理程序106b、处理器108和存储器110。网络元件102c可以包括管理程序106c、处理器108和存储器110。网络元件102d可以包括VM 104f、管理程序106d、处理器108和存储器110。注意,每一个网络元件102a-102d可以包括一个或多个VM,或者可以不包括任何VM。每一个网络元件102a-102d可以是主机。而且,每一个网络元件102a-102d和每一个VM 104a-104f可以是用于RDMA操作的主机设备或客机设备。
图1的元件可以通过采用任何合适连接(有线或无线)的一个或多个接口彼此耦合,该合适连接提供用于网络通信的可行途径。附加地,可以基于特定配置需要来组合或从架构中移除图1的这些元件中的任何一个或多个。通信系统100可以包括下述配置:该配置能够进行传输控制协议/互联网协议(TCP/IP)通信,以用于在网络中发射或接收分组。通信系统100还可以结合用户数据报协议/IP(UDP/IP)或者在适当时且基于特定需要而结合任何其他合适协议来进行操作。
通信系统100可以被配置成在具有非同构设备的虚拟化环境中支持具有RDMA要求的应用。例如,通信系统100可以被配置成模拟/仿真RDMA设备并允许主机设备(例如,网络元件102a或VM 104a)与客机设备(例如,网络元件102b或VM 104b)之间的虚拟RDMA通信。术语“主机”包括网络元件或设备,该网络元件或设备包括主机设备和/或客机设备。术语“主机设备”包括发起RDMA操作的网络元件、VM或某其他设备。术语“客机设备”包括从事与主机设备的RDMA操作的网络元件、VM或某其他设备。在一些示例中,主机可以包括主机设备和客机设备两者。在其他示例中,第一主机可以包括主机设备,并且第二主机可以包括客机设备。
在具体示例中,通信系统100可以被配置成提供用于在不要求每一个设备是同构物理RDMA设备的情况下对RDMA设备进行虚拟化的系统、方法和装置。在管理程序层或网络功能虚拟化(NFV)层中,可以使用各种部件以在没有针对同构虚拟化的要求的情况下加速系统的性能。例如,如果两个VM处于相同主机中(例如,位于网络元件102a中的VM 104a和VM104b),则系统可以使用这两个VM之间的DMA拷贝机制或存储器共享,并且,可以利用本地DMA引擎(例如,图2中图示的本地DMA引擎136)。如果两个VM不处于相同主机上(例如,VM104a位于网络元件102a中并且VM 104c位于网络元件102b中),并且如果存在可用的现场可编程门阵列(FPGA)(例如,图4中图示的FPGA 148a和FPGA 114b),则客机设备(例如,网络元件102b)中的应用可以调用FPGA以用于加速。如果两个VM不处于相同主机上并且不存在加速设备(例如,不存在FPGA)并且存在通过具有RDMA能力的虚拟化网络接口控制器(NIC)(RNIC)(例如,图2中图示的虚拟化NIC 150)进行的VM通信,则系统可以使用软件仿真。
在VM中,可以提供虚拟化RDMA设备(例如,图2中图示的虚拟化RDMA引擎114)。VM可以包括客机OS(例如,OS 118a),并且在客机OS中,具有RDMA要求的应用可以使用可用透明开放结构企业分布(OFED)相关API(例如,libibverbs 114)。这意味着不存在针对应用的使用改变。在内核空间(例如,内核112)中,可以存在RDMA驱动器(例如,RDMA驱动器120)。在具体实现方式中,如果管理程序交付出(deliver with)准虚拟化,则RDMA驱动器应当是准虚拟化RDMA驱动器。术语“准虚拟化”包括虚拟化技术的增强,其中在虚拟机内部安装之前重新编译客机OS。准虚拟化可以允许面向虚拟机的接口,该接口可以稍微不同于底层硬件的接口。术语“准虚拟化RDMA驱动器”包括客机OS中的与具有超级调用的管理程序/VM合作以将RDMA特征提供给客机OS中的应用的驱动器。
在具体示例中,对于虚拟化RDMA,物理设备(诸如,本地DMA引擎(例如,图2中图示的本地DMA引擎136)或FPGA(例如,图4中图示的FPGA 148a))可以被配置成访问由VM中的虚拟化RDMA设备注册的所有存储器区。对于RDMA队列相关管理,VM的虚拟化队列(例如发送队列、接收队列、完成队列等)可以被映射到由管理程序或网络功能虚拟化(NFV)层维持的对应队列。
在示例实现方式中,管理程序或NFV中的RDMA设备仿真层可以调用不同加速引擎(例如,加速引擎134)中的对应原语(primitive)(例如,RDMA操作,诸如读取、写入、发送等)。在工作请求(WR)操作(例如,读取/写入、发送/接收等)中,影响系统性能的关键操作是RDMA读取和写入。那些操作可以由加速引擎(例如,图2中所示的其他设备加速引擎116)卸载。RDMA读取/写入操作可以包括指向由远程RDMA侧导出的键和地址的远程RDMA信息(RDMA相关分组的<键,地址>字段)。键可以是由远程RDMA应用注册的键,并且地址可以是远程应用的虚拟地址。RDMA读取/写入操作还可以包括指向所导出的本地存储器地址和长度的本地存储器信息(RDMA相关分组的<地址,长度>字段)。本地存储器地址中的地址可以是相同主机中的应用的虚拟地址,并且长度可以是用于发送或接收数据的长度。对于卸载,地址需要被传递到其他设备加速驱动器138(或FPGA 148(图4中图示))、本地DMA引擎136等中。
当主机设备(例如,VM 104a)和客机设备(例如,VM 104b)处于相同主机(例如,网络元件102a)中时,加速引擎(例如,加速引擎134)可以在与本地DMA拷贝引擎类似的相同操作或功能中从地址A拷贝到地址B。由此,对于RDMA读取/写入,管理程序(例如,管理程序106a、106b等)、FPGA(例如,图4中图示的FPGA 148)或某其他设备可以从地址查找表154(图2中图示)中的远程信息<键,地址>字段获得物理地址。物理地址可以是从地址查找表154中的本地信息(例如,<地址,长度>字段)获得的。可以针对RDMA读取操作而拷贝从主机设备到客机设备的数据,并且可以针对RDMA写入操作而拷贝从客机设备到主机设备的数据。附加地,当完成了RDMA读取/写入时,可以将完成队列元件(CQE)(例如,CQE 160)注入到RDMA设备的虚拟完成队列中。CQE是指示何时完成或发送RDMA读取/写入的元件,并且发送和接收队列(例如,发送队列142a和接收队列144a)是空的或者已经发送和接收RDMA数据。
当主机设备(例如,VM 104a)和客机设备(例如,VM 104c)不处于相同主机中(例如,VM 104a处于网络元件102a上并且VM 104c处于网络元件102b上)时,加速引擎可以选择使用其他加速引擎或除本地DMA拷贝引擎外的加速引擎。如果主机设备(例如,VM 104a)通过另一主机控制器适配器(HCA)(例如,图4中图示的HCA 156a或156b)连接到其他设备,则可以利用某种转译将来自客机设备的虚拟队列映射到主机设备,并且可以允许HCA处置RDMA读取/写入。当完成了RDMA读取/写入时,管理程序可以执行一些转译到完成请求,并将CQE注入到RDMA设备的虚拟完成队列中。
如果仅FPGA可用,则RDMA读取过程将稍微不同,且在与客机设备相关联的网络元件也正在使用相同管理程序的情况下需要与客机设备相关联的网络元件的辅助。在该示例中,对于RDMA写入,与主机设备相关联的管理程序网络元件将RDMA写入转换成TCP/IP请求,并利用FPGA以拷贝<地址,长度>字段所指向的数据。<地址,长度>字段可以是RDMA相关分组(例如,所包装的libibverbs结构)的一部分,并且,可以从查找表154获得地址部分。<地址,长度>字段所指向的数据可以由FPGA获得。FPGA可以被配置成将数据、<键,地址>字段和目的地信息封装到网络分组中。当与客机设备相关联的网络元件中的管理程序接收到这种分组时,管理程序可以将分组标识为特殊分组,且使用FPGA以对数据进行解封装并提取<键,地址>字段,识别作为目标的客机设备,并将数据附加拷贝到<键,地址>字段中的地址所指向的地址。<键,地址>字段可以是RDMA相关分组(例如,所包装的libibverbs结构)的一部分,并且,可以从查找表154获得地址部分。FPGA可以将响应发送到与主机设备相关联的管理程序(例如,主机管理程序)。当主机管理程序接收到该响应时,主机管理程序可以将CQE注入到主机设备的虚拟完成队列中。
对于RDMA读取,与客机设备相关联的管理程序(例如,包括客机设备的主机或设备中的管理程序)可以将RDMA读取转换成TCP/IP请求。客机FPGA(例如,与客机设备相关联的FPGA)可以被配置成利用网络分组中包括的<键,地址>字段和由与客机设备相关联的主机获得的目的地信息对来自主机设备的数据请求进行封装。当客机管理程序(例如,与客机设备相关联的管理程序)接收到这种分组时,客机管理程序可以将分组标识为特殊TCP/IP请求。客机FPGA可以用于对数据进行解封装且提取<键,地址>字段,识别客机设备,并继续使用客机FPGA以从<键,地址>字段中的地址拷贝数据。客机FPGA可以对响应数据分组进行封装并将响应发送到主机管理程序(例如,与主机设备相关联的管理程序)。当主机管理程序接收到该响应时,主机管理程序可以利用主机FPGA(例如,与主机设备相关联的FPGA)以对网络分组进行解封装,将数据拷贝到针对对应客机设备的<地址,长度>字段中的地址,并将CQE注入到主机设备的虚拟完成队列。
转至图1的基础设施,示出了根据示例实施例的通信系统100。一般地,通信系统100可以是在任何类型或拓扑的网络中实现的。网络112表示用于接收和发射通过通信系统100而传播的信息分组的互连通信路径的一系列点或节点。网络112供应了节点之间的通信接口,且可以被配置为任何局域网(LAN)、虚拟局域网(VLAN)、广域网(WAN)、无线局域网(WLAN)、城域网(MAN)、内联网、外联网、虚拟专用网(VPN)、以及促进网络环境中的通信的任何其他适当架构或系统、或者其任何合适组合,包括有线和/或无线通信。
在通信系统100中,可以根据任何合适通信消息传递协议来发送和接收包括分组、帧、信号(模拟的、数字的或者这两者的任何组合)、数据等的网络业务量。合适通信消息传递协议可以包括多层方案(诸如,开放系统互连(OSI)模型)或者其任何衍生或变体(例如,传输控制协议/互联网协议(TCP/IP)、用户数据报协议/IP(UDP/IP))。可以根据各种网络协议(例如以太网、无限频带(Infiniband)、全路径(Omni-Path)等)来作出通过网络的消息。附加地,还可以在通信系统100中提供无线电信号通信(例如,在蜂窝网络上)。可以提供合适接口和基础设施以实现与蜂窝网络的通信。
如本文使用的术语“分组”指代可在分组交换网络上的源和目的地之间路由的数据的单位。分组包括源网络地址和目的地网络地址。这些网络地址可以是TCP/IP消息传递协议中的互联网协议(IP)地址。如本文使用的术语“数据”指代任何类型的二进制、数值、语音、视频、文本或脚本数据、或者任何类型的源或目标代码、或者可在电子设备和/或网络中从一个点传送到另一个点的以任何适当格式存在的任何其他合适信息。附加地,消息、请求、响应和查询是网络业务量的形式,且因而可以包括分组、帧、信号、数据等。
关于与通信系统100相关联的内部结构,每一个网络元件102a-102d可以包括用于存储要在本文概述的操作中使用的信息的网络元件。每一个网络元件102a-102d可以将信息保持在任何合适存储器元件(例如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、专用集成电路(ASIC)、非易失性存储器(NVRAM)、磁储存器、磁光储存器、闪速储存器(SSD)等)、软件、硬件、固件中,或者在适当时且基于特定需要将信息保持在任何其他合适组件、设备、元件或对象中。本文讨论的存储器项目中的任一个应当被理解为在宽泛术语“存储器元件”内涵盖。此外,正在通信系统100中使用、跟踪、发送或接收的信息可以是在任何数据库、寄存器、队列、表、高速缓存、控制列表或其他储存结构(所有这些可以在任何合适时间框架处引用)中提供的。任何这种储存器选项也可以被包括在如本文使用的宽泛术语“存储器元件”内。
附加地,每一个网络元件102a-102d可以包括可以执行用于执行如本文讨论的活动的软件或算法的处理器。处理器可以执行与数据相关联的任何类型的指令,以实现本文详述的操作。在一个示例中,处理器可以将元件或物件(例如,数据)从一个状态或事物变换成另一状态或事物。在另一示例中,本文概述的活动可以是利用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)实现的,并且本文标识的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、EPROM、EEPROM)、或者包括数字逻辑、软件、代码、电子指令或其任何合适组合的ASIC。本文描述的可能处理元件、模块和机器中的任一个应当被理解为在宽泛术语“处理器”内涵盖。
网络元件102a-102d可以是网络元件,且包括例如可在网络或云服务架构中使用的物理或虚拟服务器或者其他类似设备。云服务一般可以被定义为在网络(诸如,互联网)上作为服务而递送的计算资源的使用。服务可以是分布式且分离的,以提供所要求的针对网络元件的支持。典型地,在云基础设施中供应计算、储存和网络资源,从而有效地将工作量从本地网络转移到云网络。服务器可以是诸如服务器或虚拟服务器之类的网络元件,且可以与希望经由某网络发起通信系统100中的通信的客户端、客户、端点或终端用户相关联。术语“服务器”包括用于服务于客户端的请求和/或代表通信系统100内的客户端执行某计算任务的设备。
转至图2,图2是通信系统100的部分的简化框图,图示了虚拟化RDMA的示例使用。网络元件120a(主机设备)可以包括虚拟机104a和104b、管理程序106a、其他设备加速引擎116、虚拟化NIC 150和存储器152。存储器152可以包括地址查找表154。每一个VM(例如,VM104a和104b)可以具有对地址查找表154的访问权,或者每一个VM可以具有关联的查找表154。其他设备加速引擎116可以是下述各项或具有对下述各项的访问权:可帮助促进虚拟化RDMA环境的现场可编程门阵列(FPGA)或者某其他引擎或元件。NIC 150是具有RDMA能力的RNIC。
VM 104a可以包括虚拟RDMA引擎114和操作系统118a。操作系统118a可以包括应用库120和内核122。应用库120可以包括libibverbs 124。内核122可以包括RDMA驱动器126。VM 104b可以包括虚拟RDMA引擎114和操作系统118b。操作系统118b可以包括应用库120和内核122。应用库120可以包括libibverbs 124。内核122可以包括RDMA驱动器126。具有RDMA要求的应用可以在操作系统118a和118b中使用透明开放结构企业分布(OFED)相关API(例如,libibverbs 124)。
管理程序106a可以包括RDMA仿真引擎130、RDMA栈132、加速引擎134、本地DMA引擎136、其他设备加速驱动器138和仿真引擎140。仿真引擎140可以被配置为RDMA软件仿真引擎。网络元件102b-102d可以包括与图2中图示的元件类似的元件、图2中图示的元件中的一些、图2中图示的每一个元件的不同编号或实例、或者其他变型。本地DMA引擎136可以被配置到相同主机上的两个VM之间的DMA拷贝机制或存储器共享。因为VM处于相同主机上,所以可以针对RDMA操作而相对容易地共享VM的存储器。
在管理程序或NFV层中,RDMA仿真引擎130可以被配置成拦截网络元件102b中的VM104a和VM 104b的所有RDMA设备仿真相关控制操作。VM 104a和VM 104b均可以针对虚拟化RDMA而配置。RDMA栈132可以被配置成实现RDMA操作相关栈。加速引擎134可以被配置成:取决于主机设备和客机设备是否处于相同主机上或者主机设备和客机设备是否处于不同主机上,以不同方式处置RDMA操作。如果主机设备(例如,VM 104a)和客机设备(例如,VM104b)处于相同主机(例如,网络元件102a)上,则加速引擎134可以使用RDMA仿真引擎130和本地DMA引擎136,以促进主机设备与客机设备之间的RDMA操作。如果主机设备(例如,VM104a)和客机设备(例如,VM 104c)处于不同设备上(例如,VM 104a处于网络元件102a上并且VM 104c处于网络元件102b上),则加速引擎134可以使用设备加速驱动器138或FPGA148a(图4中图示),以促进主机设备与客机设备之间的RDMA操作。如果主机设备(例如,VM104a)和客机设备(例如,VM 104c)处于不同设备上并且存在通过虚拟化网络接口控制器(NIC)(例如,虚拟化NIC 150)的VM通信,则加速引擎134可以使用仿真引擎140以虚拟地模拟RDMA操作。
使用本地DMA 136引擎或其他设备加速驱动器138,系统可以提供相对高性能的虚拟化RDMA设备或与VM的物理RDMA设备的性能接近的性能的虚拟化RDMA设备。这可以允许通信系统100被配置成在不要求对应同构物理设备的情况下对高性能RDMA设备进行虚拟化。术语“同构物理设备”包括处于相同类别中的物理设备,但可以包括一些次要的不同特征。例如,RDMA NIC是设备类别,并且存在不同RDMA NIC。不同RDMA NIC中的每一个是同构设备。术语“非同构”设备包括异构设备或不处于相同设备类别中的设备。
RDMA仿真引擎130可以被配置成对物理RDMA设备的RDMA行为进行仿真。其他设备加速驱动器138可以被配置成使用由其他物理设备(例如FPGA等)执行的物理加速方法。仿真引擎140可以被配置成通过NIC 150虚拟地模拟RDMA设备行为。Libibverbs 124包括允许程序和过程针对对RDMA硬件的访问而使用RDMA协议动词的库。
在示例实现方式中,网络元件102a-102d是下述网络元件:其意图涵盖网络器具、服务器(虚拟的和物理的两者)、路由器、交换机、网关、桥、负载平衡器、处理器、模块、或者可操作成在网络环境中交换信息的任何其他合适虚拟或物理设备、组件、元件或对象。网络元件可以包括促进其操作的任何合适硬件、软件、组件、模块或对象、以及用于在网络环境中接收、发射和/或以其他方式传送数据或信息的合适接口。这可以包括允许有效地交换数据或信息的适当算法和通信协议。
在某些示例实现方式中,本文概述的功能可以由在一个或多个有形介质中编码的逻辑(例如,在ASIC、数字信号处理器(DSP)指令、要由处理器执行的软件(可能包括目标代码和源代码)或其他类似机器等中提供的嵌入式逻辑)实现,该一个或多个有形介质可以包括非瞬变计算机可读介质。在这些实例中的一些中,存储器元件可以存储用于本文描述的操作的数据。这包括能够存储被执行以实施本文描述的活动的软件、逻辑、代码或处理器指令的存储器元件。
在示例实现方式中,通信系统100的网络元件(诸如,网络元件102a-102d)可以包括用于实现或促进如本文概述的操作的软件模块(例如,RDMA仿真引擎130、RDMA栈132、加速引擎134、本地DMA引擎136、其他设备加速驱动器138和仿真引擎140)。这些模块可以是以任何适当方式合适地组合的,该适当方式可以基于特定配置和/或供给需要。在一些实施例中,这种操作可以由硬件实施、在这些元件内部实现或被包括在某其他网络设备中以实现所预期的功能。此外,模块可以被实现为软件、硬件、固件或其任何合适组合。这些元件还可以包括可与其他网络元件协调以便实现如本文概述的操作的软件(或往复运动的软件)。
转至图3,图3是图示了根据实施例的与通信系统100相关联的示例细节的示例框图。在示例中,网络元件102a可以包括VM 104a和104b。因为VM 104a和104b处于相同主机(例如,网络元件102a)上,所以管理程序106中的RDMA仿真引擎130可以被配置成促进VM104a和104b之间的RDMA操作。
更具体地,因为VM 104a和VM 104b处于相同主机或设备上,所以加速引擎134可以使用RDMA仿真引擎130和本地DMA引擎136,以用于使用VM 104a中的发送队列142a和接收队列144a、管理程序106a中的发送队列142b和接收队列144b以及VM 104b中的发送队列142c和接收队列144c的RDMA读取/写入。可以从<键,虚拟地址>字段获得针对发送队列142a和接收队列144a的物理地址。可以从<地址,长度>字段获得针对发送队列142c和接收队列144c的物理地址。可以针对发送队列142b中的RDMA读取而拷贝从发送队列142a到接收队列144c的数据158,并且可以针对发送队列142b中的RDMA写入而拷贝从发送队列142c到接收队列144a的数据158。附加地,当RDMA读取/写入完成时,可以将CQE 160注入到完成队列146a、146b和146c中。
转至图4,图4是图示了根据实施例的与通信系统100相关联的示例细节的示例框图。在示例中,网络元件102d可以包括VM 104f、管理程序106d、其他设备加速引擎116、FPGA148a和HCA 156a。网络元件102c可以包括管理程序106c、其他设备加速引擎116、FPGA 148b和HCA 156b。在该示例中,VM 104f是主机设备,并且网络元件102c是客机设备。因为VM104f不是网络元件102c的部分(或者是网络元件102c中包括的VM),所以RDMA仿真引擎130不能用于促进RDMA操作。
当主机设备(例如,VM 104f)和客机设备(例如,网络元件102c)不处于相同设备中(例如,VM 104f和网络元件102c不处于相同设备或相同设备的一部分上)时,加速引擎134可以使用其他设备加速引擎116或除本地DMA拷贝引擎外的加速引擎。如果VM 104f通过另一HCA 156a连接到网络元件102c,则可以利用某种转译将来自VM 104f的虚拟队列映射到网络元件102c,并且可以允许网络元件102c(客机设备)中的HCA 156b处置RDMA读取/写入。当完成了RDMA读取/写入时,管理程序106d可以执行一些转译到完成请求,并将CQE 160注入到VM 104f的完成队列146d中。
如果FPGA可用(例如,FGPA 148a),则RDMA读取过程将稍微不同于如关于图3描述的其中VM处于相同主机上的RDMA读取过程。RDMA过程将要求充当远程主机的网络元件102c的辅助。对于RDMA写入,管理程序106d可以被配置成将发送队列142d中的数据158转换成TCP/IP请求,并利用FPGA 148a以拷贝<地址,长度>字段所指向的数据。在示例中,<地址,长度>字段所指向的数据可以是通过使用地址转译表来发现的,并且管理程序106d可以获得该数据并将该数据加上<键,地址>字段和目的地信息封装到网络分组中。当管理程序106c接收到经封装的分组时,其可以将经封装的分组标识为特殊分组,且使用FPGA 148b以对数据进行解封装并提取<键,地址>字段。管理程序106c还可以识别数据的目的地(例如,网络元件102c或VM)并将数据附加拷贝到<键,地址>字段中的地址所指向的地址。FPGA 148b可以将响应发送到管理程序106d(发起者管理程序)。当管理程序106d接收到该响应时,管理程序106d可以将CQE 160注入到完成队列146d中。
对于RDMA读取,管理程序106d可以将RDMA读取数据158转换成TCP/IP请求。FPGA148a可以利用<键,地址>字段和目的地信息对数据请求进行封装。当管理程序106c接收到这种分组时,其可以将分组标识为特殊TCP/IP请求,使用FPGA 148b以对数据进行解封装并提取<键,地址>字段,识别主机设备,并继续使用FPGA 148b以从<键,地址>字段中的地址拷贝数据。最后,FPGA 148b可以对响应数据分组进行封装并将其发送到管理程序106d。当管理程序106d接收到该响应时,管理程序106d可以利用FPGA 148a以对网络分组进行解封装,将数据拷贝到针对VM 104f的<地址,长度>字段中的地址,并将CQE 160注入到完成队列146d和146e。
转至图5,图5是图示了根据实施例的可与虚拟化RDMA相关联的流程500的可能操作的示例流程图。在实施例中,流程500的一个或多个操作可以由RDMA仿真引擎130、RDMA栈132、加速引擎134、本地DMA引擎136、其他设备加速驱动器138和仿真引擎140执行。在502处,接收从第一VM到第二VM的RDMA消息。在504处,系统确定第一VM和第二VM是否处于相同主机上。如果第一VM和第二VM处于相同主机上,则使用主机上的直接存储器访问引擎以处理RDMA消息,如在506中那样。例如,VM 104a和104b处于相同网络元件102a上,并且本地DMA引擎136可以用于处理VM 104a和104b之间的RDMA消息。
如果第一VM和第二VM不处于相同主机上,则系统确定是否可以使用另一设备加速驱动器以处理消息,如在508中那样。如果可以使用另一设备加速驱动器以处理消息,则使用该另一设备加速驱动器以处理消息,如在510中那样。例如,可以使用其他设备加速驱动器138以处理RDMA消息。在示例中,该另一设备加速驱动器可以是FPGA(例如,FPGA 148a)或HCA(例如,HCA 156a)。如果不能使用另一设备加速驱动器以处理消息,则由仿真引擎处理消息,如在512中那样。例如,消息可以由仿真引擎140处理。
转至图6,图6是图示了根据实施例的可与虚拟化RDMA相关联的流程600的可能操作的示例流程图。在实施例中,流程600的一个或多个操作可以由RDMA仿真引擎130、RDMA栈132、加速引擎134、本地DMA引擎136、其他设备加速驱动器138和仿真引擎140执行。在602处,接收从第一主机上的第一VM到第二主机上的第二VM的RDMA消息。在604处,系统确定第一主机是否通过主机控制器适配器耦合到第二主机。如果第一主机通过主机控制器适配器耦合到第二主机,则在第一VM与第二VM之间映射虚拟队列并且使用主机控制器适配器以处理消息,如在608中那样。例如,如果第一主机(例如,网络元件102a或VM 104a)通过主机控制器适配器(例如,HCA 156a和156b)耦合到第二主机(例如,网络元件102d或VM 104f),则可以在VM 104a与VM 104f之间映射发送队列142a和142d、接收队列144a和144d以及完成队列146a和146d,并且管理程序(例如,管理程序106a或106d)可以在共享存储器模型中实现队列,并且VM 104a和104d可以共享对共享存储器模型中的队列(例如,发送队列142a和142d、接收队列144a和144d以及完成队列146a和146d)的访问特权。如果第一主机不通过主机控制器适配器耦合到第二主机,则使用现场可编程门阵列以处理消息,如在610中那样。
转至图7,图7是图示了根据实施例的可与虚拟化RDMA相关联的流程700的可能操作的示例流程图。在实施例中,流程700的一个或多个操作可以由RDMA仿真引擎130、RDMA栈132、加速引擎134、本地DMA引擎136、其他设备加速驱动器138和仿真引擎140执行。在702处,第一主机上的FPGA要接收从第一主机上的第一VM到第二主机上的第二VM的RDMA消息。在704处,第一主机上的管理程序将消息转换成TCP/IP请求。在706处,第一主机上的FPGA对TCP/IP请求进行封装。在708处,将经封装的TCP/IP请求发送到第二主机上的第二VM。在710处,第二主机上的管理程序将经封装的TCP/IP请求标识为特殊请求并将其转发到第二主机上的FPGA。在712处,第二主机上的FPGA对请求进行解封装,并传送第二主机上的第二VM的消息。
注意,利用本文提供的示例,可以就两个、三个或更多个网络元件而言描述交互。然而,这已经仅出于清楚和示例的目的而完成。在某些情况下,通过仅引用有限数目的网络元件描述流程的给定集合的功能中的一个或多个可以是更容易的。应当领会,通信系统100及其教导容易可扩缩,且可以容纳更大数目的组件以及更复杂/完善的布置和配置。相应地,所提供的示例不应当限制或禁止通信系统100的宽泛教导,且如可能应用于大量其他架构那样。出于本公开的目的,短语“A和/或B”意指(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
尽管已经参考特定布置和配置详细描述了本公开,但在不脱离本公开的范围的情况下,可以显著改变这些示例配置和布置。此外,可以基于特定需要和实现方式来组合、分离、消除或添加某些组件。附加地,尽管已经参考促进通信过程的特定元件和操作说明了通信系统100,但这些元件和操作可以被实现通信系统100的所预期的功能的任何合适架构、协议和/或过程所替换。
对本领域技术人员来说可以弄清许多其他改变、替代、变型、更改和修改,并且所预期的是,本公开涵盖如落在所附权利要求的范围内的所有这种改变、替代、变型、更改和修改。为了辅助美国专利和商标局(USPTO)以及附加地辅助在本申请上发布的任何专利的任何读者解释本申请所附权利要求,申请人希望指出,申请人:(a)不意在使所附权利要求中的任一项引用35 U.S.C第112节的第六(6)款,这是由于其在其申请日时存在,除非在特定权利要求中具体使用词语“用于……的部件”或“用于……的步骤”;以及(b)不通过说明书中的任何声明来意在以所附权利要求中原本未反映的任何方式限制本公开。
其他注释和示例
示例C1是具有一个或多个指令的至少一个机器可读储存介质,所述一个或多个指令在由至少一个处理器执行时使所述至少一个处理器:从位于第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机;以及使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于所述第一网络元件上。
在示例C2中,示例C1的主题可以可选地包括:其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器:确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
在示例C3中,示例C1-C2中任一项的主题可以可选地包括:其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器:如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
在示例C4中,示例C1-C3中任一项的主题可以可选地包括:其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
在示例C5中,示例C1-C4中任一项的主题可以可选地包括:其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器:将所述RDMA消息转换成TCP/IP请求。
在示例C6中,示例C1-C5中任一项的主题可以可选地包括:其中所述FPGA对所述TCP/IP请求进行封装。
在示例C7中,示例C1-C6中任一项的主题可以可选地包括:其中所述第二网络元件上的第二管理程序标识经封装的TCP/IP请求并将经封装的RCP/IP请求转发到所述第二网络元件上的第二FPGA。
在示例C8中,示例C1-C7中任一项的主题可以可选地包括:其中所述第一虚拟机和所述第二虚拟机是非同构设备。
在示例C9中,示例C1-C7中任一项的主题可以可选地包括:其中所述第一虚拟机、所述第二虚拟机和所述第三虚拟机是非同构设备。
示例S1是一种用于虚拟化远程直接存储器访问的系统,所述系统能够包括存储器和下述至少一个过程:从第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机,其中所述第一虚拟机和所述第二虚拟机是非同构设备;以及使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于网络元件上。
在示例S2中,示例S1的主题可以可选地包括:其中所述至少一个处理器进一步被配置成:确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
在示例S3中,示例S1-S2中任一项的主题可以可选地包括:其中所述至少一个处理器进一步被配置成:如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
在示例S4中,示例S1-S3中任一项的主题可以可选地包括:其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
在示例S5中,示例S1-S4中任一项的主题可以可选地包括:其中所述至少一个处理器进一步被配置成:将所述RDMA消息转换成TCP/IP请求;以及对所述TCP/IP请求进行封装。
在示例S6中,示例S1-S5中任一项的主题可以可选地包括:其中所述第二网络元件上的第二管理程序标识经封装的TCP/IP请求并将经封装的RCP/IP请求转发到所述第二网络元件上的第二FPGA。
在示例A1中,一种装置可以包括至少一个存储器元件、耦合到所述至少一个存储器元件的至少一个处理器、一个或多个虚拟RDMA引擎,所述一个或多个虚拟RDMA引擎在由所述至少一个处理器执行时被配置到一个或多个虚拟RDMA引擎,其在由所述至少一个处理器执行时被配置成:从第一网络元件上的第一虚拟机接收RDMA消息;确定所述RDMA消息指定前往所述第一网络元件上的第二虚拟机,其中所述第一虚拟机和所述第二虚拟机是非同构设备;以及使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于网络元件上。
在示例A2中,示例A1的主题可以可选地是:管理程序,其中管理程序被配置成:确定所述RDMA消息指定前往不与所述第一虚拟机位于相同网络元件上的第三虚拟机;以及取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
在示例A3中,示例A1-A2中任一项的主题可以可选地包括:其中所述管理程序进一步被配置成:如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
在示例A4中,示例A1-A3中任一项的主题可以可选地包括:其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
在示例A5中,示例A1-A4中任一项的主题可以可选地包括:其中所述装置进一步被配置成:将消息转换成TCP/IP请求。
示例M1是一种方法,包括:从第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机,其中所述第一虚拟机和所述第二虚拟机是非同构设备;以及使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于所述第一网络元件上。
在示例M2中,示例M1的主题可以可选地包括:确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
在示例M3中,示例M1-M2中任一项的主题可以可选地包括:如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
在示例M4中,示例M1-M3中任一项的主题可以可选地包括:其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
在示例M5中,示例M1-M4中任一项的主题可以可选地包括:将消息转换成TCP/IP请求。
示例AA1是一种装置,包括:用于从位于第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息的部件;用于确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机的部件;以及用于使用本地直接存储器访问引擎以处理消息的部件,其中所述本地直接存储器访问引擎位于网络元件上。
在示例AA2中,示例AA1的主题可以可选地包括:用于确定所述RDMA消息指定前往第二网络元件上的第三虚拟机以及取代所述本地直接存储器访问引擎使用其他设备加速驱动器以处理所述RDMA消息的部件,其中所述第二网络元件不同于所述第一网络元件。
在示例AA3中,示例AA1-AA2中任一项的主题可以可选地包括:用于如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列的部件。
在示例AA4中,示例AA1-AA3中任一项的主题可以可选地包括:其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
在示例AA5中,示例AA1-AA4中任一项的主题可以可选地包括:用于将所述RDMA消息转换成TCP/IP请求的部件。
在示例AA6中,示例AA1-AA5中任一项的主题可以可选地包括:其中所述FPGA对所述TCP/IP请求进行封装。
在示例AA7中,示例AA1-AA6中任一项的主题可以可选地包括:其中所述第二网络元件上的第二管理程序标识经封装的TCP/IP请求并将经封装的RCP/IP请求转发到所述第二网络元件上的第二FPGA。
在示例AA8中,示例AA1-AA7中任一项的主题可以可选地包括:其中所述第一虚拟机和所述第二虚拟机是非同构设备。
在示例AA9中,示例AA1-AA7中任一项的主题可以可选地包括:其中所述第一虚拟机、所述第二虚拟机和所述第三虚拟机是非同构设备。
示例X1是一种机器可读储存介质,包括用于实现如示例A1-A5中任一项中的装置或实现如示例M1-M5中任一项中的方法的机器可读指令。示例Y1是一种装置,包括用于执行示例方法M1-M5中任一项的部件。在示例Y2中,示例Y1的主题可以可选地包括:所述用于执行方法的部件包括处理器和存储器。在示例Y3中,示例Y2的主题可以可选地包括:所述存储器包括机器可读指令。
Claims (25)
1.具有指令存储于其上的至少一个机器可读储存介质,所述指令在由至少一个处理器执行时使所述至少一个处理器:
从位于第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;
确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机;以及
使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于所述第一网络元件上。
2.如权利要求1所述的至少一个机器可读储存介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器:
确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及
取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
3.如权利要求2所述的至少一个机器可读储存介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器:
如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
4.如权利要求2所述的至少一个机器可读储存介质,其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
5.如权利要求4所述的至少一个机器可读储存介质,其中所述指令在由所述至少一个处理器执行时进一步使所述至少一个处理器:
将所述RDMA消息转换成TCP/IP请求。
6.如权利要求5所述的至少一个机器可读储存介质,其中所述FPGA对所述TCP/IP请求进行封装。
7.如权利要求6所述的至少一个机器可读储存介质,其中所述第二网络元件上的第二管理程序标识经封装的TCP/IP请求并将经封装的RCP/IP请求转发到所述第二网络元件上的第二FPGA。
8.如权利要求2-7中任一项所述的至少一个机器可读储存介质,其中所述第一虚拟机、所述第二虚拟机和所述第三虚拟机是非同构设备。
9.一种用于虚拟化远程直接存储器访问的系统,所述系统包括:
存储器;以及
至少一个处理器,要:
从第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;
确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机,其中所述第一虚拟机和所述第二虚拟机是非同构设备;以及
使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于网络元件上。
10.如权利要求9所述的系统,其中所述处理器进一步被配置成:
确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及
取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
11.如权利要求10所述的系统,其中所述处理器进一步被配置成:
如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
12.如权利要求10所述的系统,其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
13.如权利要求12所述的系统,其中所述处理器进一步被配置成:
将所述RDMA消息转换成TCP/IP请求;以及对所述TCP/IP请求进行封装。
14.如权利要求13所述的系统,其中所述第二网络元件上的第二管理程序标识经封装的TCP/IP请求并将经封装的RCP/IP请求转发到所述第二网络元件上的第二FPGA。
15.一种用于提供虚拟化远程直接存储器访问(RDMA)的装置,包括:
至少一个存储器元件;
耦合到所述至少一个存储器元件的至少一个处理器;
一个或多个虚拟RDMA引擎,在由所述至少一个处理器执行时被配置成:
从第一网络元件上的第一虚拟机接收RDMA消息;
确定所述RDMA消息指定前往所述第一网络元件上的第二虚拟机,其中所述第一虚拟机和所述第二虚拟机是非同构设备;以及
使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于网络元件上。
16.如权利要求15所述的装置,进一步包括:
管理程序,其中管理程序被配置成:
确定所述RDMA消息指定前往不与所述第一虚拟机位于相同网络元件上的第三虚拟机;以及
取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
17.如权利要求16所述的装置,其中所述管理程序进一步被配置成:
如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
18.如权利要求16所述的装置,其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
19.如权利要求18所述的装置,其中所述装置进一步被配置成:
将所述RDMA消息转换成TCP/IP请求。
20.如权利要求19所述的装置,其中所述FPGA被配置成:
所述FPGA对所述TCP/IP请求进行封装。
21.一种方法,包括:
从第一网络元件上的第一虚拟机接收远程直接存储器访问(RDMA)消息;
确定所述RDMA消息指定前往位于所述第一网络元件上的第二虚拟机,其中所述第一虚拟机和所述第二虚拟机是非同构设备;以及
使用本地直接存储器访问引擎以处理所述RDMA消息,其中所述本地直接存储器访问引擎位于所述第一网络元件上。
22.如权利要求21所述的方法,进一步包括:
确定所述RDMA消息指定前往第二网络元件上的第三虚拟机,其中所述第二网络元件不同于所述第一网络元件;以及
取代所述本地直接存储器访问引擎,使用其他设备加速驱动器以处理所述RDMA消息。
23.如权利要求21所述的方法,进一步包括:
如果所述第一网络元件通过主机控制器适配器耦合到所述第二网络元件,则在所述第一虚拟机与所述第三虚拟机之间映射虚拟队列。
24.如权利要求22所述的方法,其中所述其他设备加速驱动器是现场可编程门阵列(FPGA)。
25.如权利要求24所述的方法,进一步包括:
将所述RDMA消息转换成TCP/IP请求。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/112703 WO2018119774A1 (en) | 2016-12-28 | 2016-12-28 | Virtualized remote direct memory access |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109983439A true CN109983439A (zh) | 2019-07-05 |
CN109983439B CN109983439B (zh) | 2024-01-30 |
Family
ID=62710163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680091193.3A Active CN109983439B (zh) | 2016-12-28 | 2016-12-28 | 虚拟化远程直接存储器访问 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11507404B2 (zh) |
CN (1) | CN109983439B (zh) |
WO (1) | WO2018119774A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022151820A1 (zh) * | 2021-01-14 | 2022-07-21 | 华为技术有限公司 | 数据传输系统、数据传输方法以及网络设备 |
US11431624B2 (en) | 2019-07-19 | 2022-08-30 | Huawei Technologies Co., Ltd. | Communication method and network interface card |
CN116775510A (zh) * | 2023-08-22 | 2023-09-19 | 成都泛联智存科技有限公司 | 数据访问方法、装置、服务器和计算机可读存储介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109983439B (zh) | 2016-12-28 | 2024-01-30 | 英特尔公司 | 虚拟化远程直接存储器访问 |
US11159627B1 (en) * | 2017-10-20 | 2021-10-26 | Parallels International Gmbh | Seamless remote network redirection |
US11275600B2 (en) * | 2017-11-14 | 2022-03-15 | TidalScale, Inc. | Virtualized I/O |
US11283672B2 (en) * | 2018-05-25 | 2022-03-22 | Juniper Networks, Inc. | Forwarding detection of an aggregated interface |
CN110895517B (zh) * | 2018-09-13 | 2023-10-31 | 阿里巴巴集团控股有限公司 | 基于fpga的传输数据的方法、设备及系统 |
US10831523B2 (en) * | 2018-10-08 | 2020-11-10 | Microsoft Technology Licensing, Llc | RDMA with virtual address space |
WO2020083026A1 (en) * | 2018-10-23 | 2020-04-30 | Huawei Technologies Co., Ltd. | SECURED METADATA SHARING AMONG VNFs |
US11502932B2 (en) | 2019-05-17 | 2022-11-15 | Keysight Technologies, Inc. | Indirect testing using impairment rules |
US11444831B2 (en) | 2020-01-17 | 2022-09-13 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for measuring schedule update time for a time aware shaper implementation |
US11765062B2 (en) * | 2020-01-23 | 2023-09-19 | Red Hat, Inc. | Automatic retransmission capability in hypervisor |
US11621908B2 (en) | 2020-07-13 | 2023-04-04 | Keysight Technologies, Inc. | Methods, systems and computer readable media for stateless service traffic generation |
US11258719B1 (en) * | 2020-08-24 | 2022-02-22 | Keysight Technologies, Inc. | Methods, systems and computer readable media for network congestion control tuning |
US20220179675A1 (en) * | 2020-12-03 | 2022-06-09 | Nutanix, Inc. | Memory registration for optimizing rdma performance in hyperconverged computing environments |
CN113923259A (zh) * | 2021-08-24 | 2022-01-11 | 阿里云计算有限公司 | 数据处理方法及系统 |
US11962434B2 (en) | 2022-07-08 | 2024-04-16 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for capturing dropped packets at a switching fabric emulator |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102124449A (zh) * | 2008-06-30 | 2011-07-13 | 甲骨文美国公司 | 用于低开销数据传输的方法和系统 |
CN102301671A (zh) * | 2008-12-30 | 2011-12-28 | 英特尔公司 | 消息通信技术 |
US8131814B1 (en) * | 2008-07-11 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Dynamic pinning remote direct memory access |
US20120159486A1 (en) * | 2008-02-12 | 2012-06-21 | International Business Machines Corporation | System, method and computer program product for accessing a memory space allocated to a virtual machine |
CN104205051A (zh) * | 2012-04-02 | 2014-12-10 | 思科技术公司 | 与虚拟机相关联的增强的网络服务的虚拟化移动 |
CN105378659A (zh) * | 2013-06-14 | 2016-03-02 | 托加里奥有限责任公司 | 使客户端设备能够访问远程桌面的方法和系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8374175B2 (en) * | 2004-04-27 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | System and method for remote direct memory access over a network switch fabric |
US7987469B2 (en) * | 2006-12-14 | 2011-07-26 | Intel Corporation | RDMA (remote direct memory access) data transfer in a virtual environment |
US8490113B2 (en) * | 2011-06-24 | 2013-07-16 | International Business Machines Corporation | Messaging in a parallel computer using remote direct memory access (‘RDMA’) |
US9354933B2 (en) | 2011-10-31 | 2016-05-31 | Intel Corporation | Remote direct memory access adapter state migration in a virtual environment |
US10452580B2 (en) * | 2013-03-26 | 2019-10-22 | Vmware, Inc. | Method and system for providing remote direct memory access to virtual machines |
US9411775B2 (en) * | 2013-07-24 | 2016-08-09 | Intel Corporation | iWARP send with immediate data operations |
US9053068B2 (en) | 2013-09-25 | 2015-06-09 | Red Hat Israel, Ltd. | RDMA-based state transfer in virtual machine live migration |
US10157146B2 (en) * | 2015-02-12 | 2018-12-18 | Red Hat Israel, Ltd. | Local access DMA with shared memory pool |
US9665534B2 (en) * | 2015-05-27 | 2017-05-30 | Red Hat Israel, Ltd. | Memory deduplication support for remote direct memory access (RDMA) |
US10375167B2 (en) * | 2015-11-20 | 2019-08-06 | Microsoft Technology Licensing, Llc | Low latency RDMA-based distributed storage |
CN109983439B (zh) | 2016-12-28 | 2024-01-30 | 英特尔公司 | 虚拟化远程直接存储器访问 |
-
2016
- 2016-12-28 CN CN201680091193.3A patent/CN109983439B/zh active Active
- 2016-12-28 WO PCT/CN2016/112703 patent/WO2018119774A1/en active Application Filing
- 2016-12-28 US US16/464,625 patent/US11507404B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159486A1 (en) * | 2008-02-12 | 2012-06-21 | International Business Machines Corporation | System, method and computer program product for accessing a memory space allocated to a virtual machine |
CN102124449A (zh) * | 2008-06-30 | 2011-07-13 | 甲骨文美国公司 | 用于低开销数据传输的方法和系统 |
US8131814B1 (en) * | 2008-07-11 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Dynamic pinning remote direct memory access |
CN102301671A (zh) * | 2008-12-30 | 2011-12-28 | 英特尔公司 | 消息通信技术 |
CN104205051A (zh) * | 2012-04-02 | 2014-12-10 | 思科技术公司 | 与虚拟机相关联的增强的网络服务的虚拟化移动 |
CN105378659A (zh) * | 2013-06-14 | 2016-03-02 | 托加里奥有限责任公司 | 使客户端设备能够访问远程桌面的方法和系统 |
Non-Patent Citations (3)
Title |
---|
苏文;王焕东;台运方;王靖;: "面向云计算的多核处理器存储和网络子系统优化设计", 高技术通讯, no. 04 * |
苏文等: "面向云计算的多核处理器存储和网络子系统优化设计", 《高技术通讯》 * |
苏文等: "面向云计算的多核处理器存储和网络子系统优化设计", 《高技术通讯》, no. 04, 15 April 2013 (2013-04-15) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11431624B2 (en) | 2019-07-19 | 2022-08-30 | Huawei Technologies Co., Ltd. | Communication method and network interface card |
WO2022151820A1 (zh) * | 2021-01-14 | 2022-07-21 | 华为技术有限公司 | 数据传输系统、数据传输方法以及网络设备 |
CN116775510A (zh) * | 2023-08-22 | 2023-09-19 | 成都泛联智存科技有限公司 | 数据访问方法、装置、服务器和计算机可读存储介质 |
CN116775510B (zh) * | 2023-08-22 | 2023-11-24 | 成都泛联智存科技有限公司 | 数据访问方法、装置、服务器和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2018119774A1 (en) | 2018-07-05 |
CN109983439B (zh) | 2024-01-30 |
US20200326971A1 (en) | 2020-10-15 |
US11507404B2 (en) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109983439A (zh) | 虚拟化远程直接存储器访问 | |
US11892967B2 (en) | Flexible remote direct memory access | |
US11782868B2 (en) | Methods and systems to achieve multi-tenancy in RDMA over converged Ethernet | |
US10664301B2 (en) | Methods and systems for establishing connections associated with virtual machine migrations | |
US9313139B2 (en) | Physical port sharing in a link aggregation group | |
CN105531684B (zh) | 通用pci express端口 | |
CN104038401B (zh) | 用于分布式覆盖虚拟环境的互操作性的方法和系统 | |
US7996569B2 (en) | Method and system for zero copy in a virtualized network environment | |
CN104115121B (zh) | 在中间件机器环境中对虚拟机迁移提供可扩展的信令机制的系统和方法 | |
US9559940B2 (en) | Take-over of network frame handling in a computing environment | |
CN103942087B (zh) | 虚拟机热迁移方法及相关装置和集群系统 | |
US20070288921A1 (en) | Emulating a network-like communication connection between virtual machines on a physical device | |
US11095716B2 (en) | Data replication for a virtual networking system | |
US20190012193A1 (en) | Virtio relay | |
US11605033B2 (en) | Quantum computing task translation supporting multiple quantum computing technologies | |
US11467992B1 (en) | Memory access operation in distributed computing system | |
TW200810461A (en) | Network protocol stack isolation | |
US20160099839A1 (en) | Target mapping and implementation of abstract device model | |
US8929362B1 (en) | Capability negotiation for abstract candidate device model | |
US9094351B2 (en) | Implicit and dynamic receive queue assignment in virtualized systems | |
WO2021108510A1 (en) | Quantum computing service supporting multiple quantum computing technologies | |
CN109656674A (zh) | 一种计算机设备、虚拟化芯片及数据传输方法 | |
WO2020171877A1 (en) | I/o to unpinned memory supporting memory overcommit and live migration of virtual machines | |
WO2018015983A1 (en) | Communication apparaus, system, rollback method, and program | |
US11431678B2 (en) | Methods for enabling enhanced firewall rules via ARP-based annotations |
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 |