CN109983438B - 使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口 - Google Patents
使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口 Download PDFInfo
- Publication number
- CN109983438B CN109983438B CN201680091031.XA CN201680091031A CN109983438B CN 109983438 B CN109983438 B CN 109983438B CN 201680091031 A CN201680091031 A CN 201680091031A CN 109983438 B CN109983438 B CN 109983438B
- Authority
- CN
- China
- Prior art keywords
- descriptor
- network interface
- virtual function
- virtual
- 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.)
- Active
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 29
- 230000006870 function Effects 0.000 claims abstract description 93
- 230000007175 bidirectional communication Effects 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 25
- 230000006854 communication Effects 0.000 claims abstract description 20
- 238000004891 communication Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 63
- 238000013519 translation Methods 0.000 claims description 9
- 239000000872 buffer Substances 0.000 claims description 8
- 238000013508 migration Methods 0.000 claims description 8
- 230000005012 migration Effects 0.000 claims description 8
- 230000003993 interaction Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 3
- 238000013459 approach Methods 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
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 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/4555—Para-virtualisation, i.e. guest operating system has to be modified
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3808—Network interface controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
示例电子装置用于加速半虚拟化网络接口。该电子装置包括:描述符中枢,其实行与可由客户机访问的客户机存储器以及与可由主机访问的主机存储器的双向通信。客户机包括多个虚拟机。主机包括多个虚拟功能设备。虚拟机通过中央处理单元通信地耦合到电子装置。该通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符。该电子装置还包括:设备关联表,其通信地耦合到描述符中枢并且存储虚拟机与虚拟功能设备之间的关联。该电子装置还包括输入输出存储器映射单元(IOMMU),用以实行直接存储器访问(DMA)重新映射和中断重新映射。
Description
背景技术
半虚拟化(para-virtualiza,PV)是一种技术,在该技术中VM(虚拟机)中的虚拟设备和管理程序(hypervisor)可以使用虚拟化特定装置来呈现虚拟设备I/O,而不是管理程序呈现完全仿真设备。PV网络接口可以支持虚拟机的实时迁移。
附图说明
图1是图示了用于加速半虚拟化网络接口的示例系统的框图;
图2是便于从线路(wire)接收的分组流向VM的方法的流程图;
图3是便于从VM接收的分组流向线路的方法的流程图;
图4是图示了用于加速半虚拟化网络接口的示例电子装置的框图;以及
图5是图示了在两个设备之间对接的方法的流程图。
遍及本公开和附图,使用相同的数字来引用相同的组件和特征。采用100系列的数字指代最初在图1中找到的特征;采用200系列的数字指代最初在图2中找到的特征;等等。
具体实施方式
如上所述,PV网络接口可以支持虚拟机的实时迁移。在数据中心或云环境中,PV网络接口可以被用作用于租户VM的默认网络接口控制器(NIC)设备。但是,性能可能由于管理程序干预和客户机(guest)与主机之间的分组拷贝而降低。因此,性能可能无法满足高性能公共云和私有云环境中的高性能和服务等级协议(SLA)要求。
本文中描述的技术包括用于加速具有绑定的NIC VF的PV网络接口的集成电路。如本文中使用的,“绑定”可以指代虚拟功能(VF)与相关联的虚拟机(VM)之间的一对一映射或对应关系。本文中描述的技术可以提供用于使用硬件的方法和装置,该硬件诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC),而不是CPU核心。因此,本文中描述的技术可以在不牺牲实时迁移特征的情况下改善主流半虚拟化网络接口的性能。
本文中描述的技术还提供集成电路,其在一些示例中可以在FPGA芯片中实现,以加速具有绑定的网络接口控制器(NIC)虚拟功能(VF)的PV网络接口。因此,本文中描述的技术既可以实现高性能又可以实现可实时迁移的目标。在一些示例中,当在PV网络接口内实例化VM时,管理程序可以将主机上的物理NIC的VF缝合(stitch)到PV网络接口,并且然后FPGA设备中的装置可以用作PV网络设备和NIC VF的驱动器的后端。FPGA设备中的设备还可以以零拷贝的方式在物理NIC与VM之间移动网络分组。
在一些示例中,本文中描述的技术可以在被设置在中央处理单元(CPU)与NICPCIe设备之间或者将两者互连的集成FPGA芯片中实现。例如,FPGA芯片可以经由处理器互连而连接到CPU。在一些示例中,FPGA芯片还可以经由PCIe链路连接到NIC物理设备。与基于专用集成电路(ASIC)的实现方式相比,本技术的FPGA实现方式的益处在于其是灵活的且可编程的,以实现用于来自不同供应商的NIC的各种PV接口后端和VF驱动器。
在一些示例中,本文中描述的技术可以包括一种装置。例如,该装置可以是半虚拟化网络接口加速器。该装置可以与PV NIC设备对接。该装置可以导出物理NIC设备。该装置然后可以通过以不同格式转换Rx/Tx描述符来在PV NIC设备与物理NIC设备之间移动分组。
本文中所描述技术的技术益处可以包括:FPGA中的分组I/O和加速,以及提供对VM透明的物理NIC。例如,VM可能仅看到PV NIC。因此,FPGA或某个其他硬件的实现方式可以比软件实现方式更有效地传输分组。
本文中描述的技术还可以支持向其他已知设备的实时迁移。例如,FPGA可以提供用于支持实时迁移的有效硬件I/O端口。
本文中描述的技术的另外又一个益处在于:它们可以比多根I/O虚拟化(MR-IOV)更便宜且更简单。本文中描述的技术还可以提供与MR-IOV类似的性能,同时保持与MR-IOV的兼容性。FPGA还可以足够灵活以便可以与由不同供应商所生产的硬件相兼容。
本公开可以在FPGA中引入“绑定VF设备”机制以将主机上的NIC VF绑定到VM中的PV网络接口,因此与基于绑定驱动器的方法相比,它仍然具有高性能和可实时迁移的益处。此外,本公开的益处在于FPGA和物理NIC设备中的下层(underlying)分组I/O和加速电路对于VM是完全透明的,该VM仅需要包括简单的PV NIC设备和对应的驱动器。
图1图示了用于加速半虚拟化网络接口的示例系统。系统100包括主机存储器102、客户机存储器104、虚拟机105A、105B、105C、管理程序106、CPU 108、半虚拟化网络接口加速器110和PCIe网络接口卡112。在一些示例中,客户机存储器104可以布置在随机存取存储器(RAM)中。虚拟机105A、105B、105C中的每一个分别包括半虚拟化NIC设备113A、113B、113C。处理器互连114互连了CPU 108和半虚拟化网络接口加速器110。PCIe链路116互连了半虚拟化网络接口加速器110和PCIe网络接口卡112。
如图1图示的,半虚拟化网络接口加速器110包括PV设备后端118、NIC VF驱动器120、输入输出存储器映射单元(IOMMU)122、设备关联表124和描述符中枢126。PV设备后端118可以与VM的PV网络接口113进行交互,以便基于驻留在VM存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。
NIC VF驱动器120可以初始化给定的NIC VF设备128A、128B、128C,并且利用指向VM存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符。
在一些示例中,IOMMU 122可以致力于连接到半虚拟化网络接口加速器110的PCIe设备,并且可以由管理程序106初始化。例如,IOMMU 122可以负责直接存储器访问(DMA)重新映射和中断重新映射。在一些示例中,IOMMU 122可以负责存储器地址转换。
设备关联表124还可以由管理程序106初始化,以存储每个PV NIC设备113A、113B、113C与NIC VF设备128A、128B、128C中的相应一个之间的1:1绑定关系。因此,来自NIC VF设备128A、128B或128C之一的分组可以由适当的PV NIC设备113A、113B或113C接收,反之亦然。
系统100还可以包括描述符中枢126,以通过双向地转换和转发PV分组描述符和NIC VF特定描述符来桥接PV Rx/Tx队列对130和NIC VF'Rx/Tx队列对132。如本文中使用的,描述符是描述分组的数据结构。描述符可以包括例如媒体访问控制(MAC)报头、互联网协议(IP)报头、报头长度,有效载荷长度或其任何组合。
在一些示例中,PV设备后端118和NIC VF驱动器120可以在软件中或在FPGA内部实现,以分别驱动PV网络接口113A、113B、113C和NIC VF 128,以用于快速分组I/O。在一些示例中,VF驱动器120或半虚拟化NIC设备后端118可以使用软件来实现。
在一些示例中,管理程序106可以初始化IOMMU内的DMA重新映射表。管理程序106还可以将PV网络接口113与主机上的VF接口绑定。具有PV网络接口113A、113B、113C的VM105A、105B、105C可以由管理程序106实例化。例如,管理程序可以经由NIC VF驱动器120将每个PV NIC接口113A、113B、113C的媒体访问控制(MAC)地址分配给相关联的VF 128A、128B、128C。
在一些示例中,在系统初始化期间,PV加速感知管理程序106可以初始化IOMMU122。NIC物理功能(PF)设备(未示出)可以为物理PCIe NIC设备112创建多个VF 128A、128B、128C。
在一些示例中,用户可以通过指定要为实例分配的NIC VF 128来实例化VM。然后,管理程序106可以启动PV NIC设备113A、113B或113C内的VM。在一些示例中,管理程序106还可以将以“总线:号码:功能”格式指定的VF 128A、128B或128C分配给NIC PV接口113A、113B或113C。
在一些示例中,管理程序106可以在半虚拟化网络接口加速器110中初始化设备关联表124,以存储VF设备128A、128B或128C与相关联的VM 105A、105B或105C的1:1绑定关系。在一些示例中,描述符中枢126可以在设备关联表124中查找VF标识以标识相关联的VM105A、105B或105C。
在一些示例中,管理程序106可以基于相关联的VF 128的“总线:数字:功能”在IOMMU 122中使用合适的地址转换表,以及然后使用客户机物理地址(GPA)、访问、“总线:数量:功能”、以及大小来将条目添加到表中。
在一些示例中,一旦VM启动,PV NIC设备113就可以与PV设备后端118实行握手。PV设备113然后可以向PV设备后端118通知关于被用作分组接收/发送缓冲器的客户机存储器104中的存储器区域。在一些示例中,PV设备后端118然后可以向VF驱动器120标识存储区域,以利用GPA在VF 128上初始化Rx/Tx描述符。以这种方式,VF驱动器可以使用GPA来编程VF 128A、128B或128C的Rx/Tx描述符环上的Rx/Tx描述符。
图1的示图并不意图指示示例计算机布置100要包括图1中所示的全部组件。而是,示例计算机布置100可以具有更少的组件或未在图1中图示的附加组件(例如,附加的存储器设备等)。
图2图示了便于从线路接收的分组流向VM的方法。该方法通常使用附图标记200来引用,并且可以在上面图1的系统100中或在下面图4的电子装置400中实现。
在第一框202中,NIC从线路接收分组。在框204中,确定分组的GPA和相关联的VF标识是否在DMA重新映射表中匹配以得到有效的HPA(主机物理地址)。如果否,则该方法可以在框206处继续进行。相反,如果存在匹配,则该方法可以在框208处继续进行。
在框206处,阻挡分组。例如,可以防止分组到达VM。在一些示例中,如果GPA和相关联的VF标识(以“总线:数字:功能”格式)在DMA重新映射表中未匹配以得到有效HPA,则IOMMU可以阻挡分组DMA。在框208处,将分组发送到主机存储器。例如,当从物理NIC接收到分组时,NIC的嵌入层2(L2)交换机可以基于分组目的地MAC地址来确定目的地VF。在一些示例中,然后可以基于GPA将分组发送到主机存储器,该GPA可以由VF Rx描述符中的NIC VF驱动器来编程。一旦发送了分组,就由NIC VF驱动器通知描述符中枢关于传入的分组。在一些示例中,描述符中枢可以首先使用VF的“总线:数字:函数”来查找设备关联表,以得到相关联的PV NIC设备。
在框210处,在相关联的PV NIC设备的Rx描述符队列上初始化可用分组描述符。例如,描述符中枢可以通过填充指向分组数据的相同GPA来在相关联的PV NIC设备113的Rx描述符队列上初始化可用分组描述符。在框212处,一旦初始化了分组描述符,就可以使Rx描述符队列上的报头指针前进。例如,PV设备后端118可以使Rx描述符队列上的报头指针前进。在框214处,PV NIC设备113被通知分组将到达。因此,可以以安全和零拷贝方式实行将Rx分组从主机移动到VM。
图2的流程图并不意图指示示例方法200要包括图2中所示的全部组件。而是,示例方法200可以具有更少的框或未在图2中图示的附加的框。
图3图示了便于从VM接收的分组流向线路的方法。该方法通常使用附图标记300来引用,并且可以在上面图1的系统100中或在下面图4的电子装置400中实现。
在第一框302中,接收下述通知:VM中的分组要经由PV NIC来发送。例如,在Tx侧上,当VM中的PV NIC设备通知PV设备后端存在需要发送的分组时,可以立即通知描述符中枢126。
在框304处,查找相关联的VF。例如,描述符中枢126可以通过使用PV NIC设备ID查找设备关联表124来得到相关联的VF 128。
在框306处,针对相关联的VF来初始化可用分组Tx描述符。例如,描述符中枢126可以通过填充指向VM中的分组数据的相同GPA来初始化相关联的VF 128的Tx描述符队列上的可用分组描述符。
在框308处,使Tx描述符队列上的报头指针前进,以触发NIC设备开始向线路发送分组。例如,一旦初始化了Tx分组描述符,VF驱动器120就可以使Tx描述符队列上的报头指针前进,以触发NIC设备开始向线路发送分组。
图3的流程图不意图指示示例方法300要包括图3中所示的全部组件。而是,示例方法300可以具有更少的框或未在图3中图示的附加的框。
现在参考图4,示出了框图,该框图图示了用于加速半虚拟化网络接口的示例电子装置400。该电子装置400可以是例如计算设备,诸如膝上型计算机、台式计算机、平板计算机、智能电话、移动设备、云计算节点或服务器,除了别的以外。电子装置400可以包括:中央处理单元(CPU)402,其被配置成执行所存储的指令;以及存储器设备404,其存储可由CPU402执行的指令。CPU 402可以通过总线406耦合到存储器设备404。附加地,CPU 402可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。此外,电子装置400可以包括多于一个CPU 402。在一些示例中,CPU 402可以是具有多核处理器架构的片上系统(SoC)。存储器设备404可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器或任何其他合适的存储器系统。例如,存储器设备404可以包括动态随机存取存储器(DRAM)。
存储器设备404可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器或任何其他合适的存储器系统。例如,存储器设备404可以包括动态随机存取存储器(DRAM)。
电子装置400还可以包括图形处理单元(GPU)408。如示出的,CPU 402可以通过总线406耦合到GPU 408。GPU 408可以被配置成实行电子装置400内的任何数量的图形操作。例如,GPU 408可以被配置成渲染或操纵要向电子装置400的用户进行显示的图形图像、图形帧、视频等等。
在一些示例中,存储器设备404可以包括被配置成执行用于传输分组的指令的设备驱动器410。设备驱动器410可以是软件、应用程序、应用代码等等。
CPU 402还可以通过总线406连接到输入/输出(I/O)设备接口412,该输入/输出(I/O)设备接口412被配置成将电子装置400连接到一个或多个I/O设备414。I/O设备414可以包括例如键盘和定点设备,其中该定点设备可以包括触摸板或触摸屏,除了别的以外。I/O设备414可以是电子装置400的内置组件,或者可以是在外部连接到电子装置400的设备。在一些示例中,存储器404可以通过直接存储器访问(DMA)通信地耦合到I/O设备414。
CPU 402还可以通过总线406链接到显示接口416,该显示接口416被配置成将电子装置400连接到显示设备418。显示设备418可以包括显示屏,该显示屏是电子装置400的内置组件。显示设备418还可以包括在电子装置400内部或者与电子装置400外部连接的计算机显示器、电视机或投影仪,除了别的以外。
电子装置400还可以包括存储设备420。存储设备420是诸如硬盘驱动器、光学驱动器、拇指驱动器、驱动器阵列、固态驱动器或其任何组合之类的物理存储器。存储设备420还可以包括远程存储驱动器。
电子装置400还可以包括网络接口控制器(NIC)422。NIC 422可以被配置成通过总线406将电子装置400连接到网络424。网络424可以是广域网(WAN)、局域网(LAN)或互联网,除了别的以外。在一些示例中,装置可以通过无线技术与其他设备通信。例如,装置可以经由无线局域网连接与其他设备进行通信。在一些示例中,装置可以经由蓝牙®或类似技术与其他设备连接和通信。
如上所讨论,电子装置400还可以包括管理程序426、半虚拟化NIC设备后端428和VF驱动器430。
图4的框图不意图指示电子装置400要包括图4中所示的全部组件。而是,电子装置400可以包括更少的组件或未在图4中图示的附加的组件,诸如附加的存储设备等等。电子装置400可以包括图4中未示出的任何数量的附加的组件,这取决于具体实现方式的细节。此外,CPU 402的任何功能可以部分地或全部地在硬件中和/或在处理器中实现。
图5图示了在两个设备之间对接的方法500的流程图。该方法通常使用附图标记500来引用,并且可以在上面图1的系统100中或在图4的电子装置400中实现。
在框502处,将电子装置连接在一组虚拟机与一组虚拟功能设备之间。例如,电子装置可以通过中央处理单元连接到虚拟机。在一些示例中,半虚拟化网络接口加速器可以连接在虚拟机VM与虚拟功能设备之间。例如,半虚拟化网络接口加速器通过CPU连接到虚拟机VM。
在框504处,实行与可由包括多个虚拟机的客户机访问的客户机存储器,以及与可由包括多个虚拟功能设备的主机访问的主机存储器的双向通信。例如,该通信可以基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符。在一些示例中,双向通信可以由电子装置内的描述符中枢实行。例如,描述符中枢可以实行与可由包括多个虚拟机VM的客户机访问的客户机存储器,以及与可由包括多个虚拟功能设备的主机访问的主机存储器的双向通信。
在框506处,存储虚拟机与虚拟功能设备之间的关联。在一些示例中,可以经由设置在电子装置内并且通信地耦合到描述符中枢的设备关联表来实行该存储。例如,虚拟机VM与虚拟功能设备之间的关联可以由设置在半虚拟化网络接口加速器内并且通信地耦合到描述符中枢的设备关联表来存储。
在框508处,由设置在电子装置内的输入-输出存储器映射单元(IOMMU)实行直接存储器访问(DMA)重新映射和中断重新映射。例如,输入输出存储器映射单元(IOMMU)可以实行直接存储器访问(DMA)重新映射和中断重新映射。
图5的流程图并不意图指示示例系统500要包括图5中所示的全部组件。而是,示例方法500可以具有更少的框或未在图5中图示的附加的框。
示例
示例1是一种用于加速半虚拟化网络接口的示例电子装置。该电子装置包括:描述符中枢,其实行与可由客户机访问的客户机存储器以及与可由主机访问的主机存储器的双向通信。客户机包括多个虚拟机。主机包括多个虚拟功能设备。虚拟机通过中央处理单元通信地耦合到电子装置。该通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符。该电子装置还包括设备关联表,该设备关联表通信地耦合到描述符中枢并且要存储虚拟机与虚拟功能设备之间的关联。该电子装置进一步包括输入输出存储器映射单元(IOMMU),用以实行直接存储器访问(DMA)重新映射和中断重新映射。
示例2包括示例1的装置,其包括或排除可选特征。在该示例中,由描述符中枢实行的通信包括半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
示例3包括示例1的装置,其包括或排除可选特征。在该示例中,描述符中枢、设备关联表和输入输出存储器映射单元(IOMMU)包括现场可编程门阵列或专用集成电路。
示例4包括示例1的装置,其包括或排除可选特征。在该示例中,设备关联表和输入输出存储器映射单元(IOMMU)被配置成由管理程序初始化。管理程序通信地耦合到虚拟机以及耦合到中央处理单元。
示例5包括示例1的装置,其包括或排除可选特征。在此示例中,输入输出存储器映射单元(IOMMU)要针对客户机存储器和主机存储器实行直接存储器访问(DMA)重新映射和中断重新映射。
示例6包括示例1-5的任何组合的装置,其包括或排除可选特征。在该示例中,该装置包括与描述符中枢进行双向通信的虚拟功能驱动器。该虚拟功能驱动器初始化虚拟功能设备,并且利用指向客户机存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符。
示例7包括示例1的装置,其包括或排除可选特征。在该示例中,该装置包括与描述符中枢进行双向通信的半虚拟化网络接口控制器(NIC)设备后端。该半虚拟化网络接口控制器(NIC)设备后端要与虚拟机进行交互,以便基于驻留在客户机存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。
示例8包括示例7的装置,其包括或排除可选特征。在该示例中,该装置包括与描述符中枢进行双向通信的虚拟功能驱动器。该半虚拟化网络接口控制器(NIC)设备后端向虚拟功能驱动器标识存储器区域,以在虚拟功能设备上初始化Rx/Tx描述符。
示例9包括示例1-5的任何组合的装置,其包括或排除可选特征。在该示例中,描述符中枢要在设备关联表中搜索虚拟功能设备的标识以标识相关联的虚拟机。
示例10包括示例1-5的任何组合的装置,其包括或排除可选特征。在该示例中,电子装置没有中央处理单元。
示例11是一种在两个设备之间进行对接的示例方法。该方法包括在虚拟机与虚拟功能设备之间连接电子装置。该电子装置通过中央处理单元连接到虚拟机。该方法包括:实行与可由客户机访问的客户机存储器以及与可由主机访问的主机存储器的双向通信。客户机包括多个虚拟机。主机包括多个虚拟功能设备。该通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符。双向通信由电子装置内的描述符中枢实行。该方法包括:存储虚拟机与虚拟功能设备之间的关联。该存储由设置在电子装置内并通信地耦合到描述符中枢的设备关联表来实行。该方法进一步包括实行直接存储器访问(DMA)重新映射和中断重新映射。该重新映射由设置在电子装置内的输入输出存储器映射单元(IOMMU)来实行。
示例12包括示例11的方法,其包括或排除可选特征。在该示例中,由描述符中枢实行的通信包括半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
示例13包括示例11的方法,其包括或排除可选特征。在该示例中,描述符中枢、设备关联表和输入输出存储器映射单元(IOMMU)被包括在现场可编程门阵列中或被包括在专用集成电路中。
示例14包括示例11的方法,其包括或排除可选特征。在该示例中,设备关联表和输入输出存储器映射单元(IOMMU)由管理程序初始化。该管理程序通信地耦合到虚拟机以及耦合到中央处理单元。
示例15包括示例11的方法,其包括或排除可选特征。在该示例中,输入输出存储器映射单元(IOMMU)针对客户机存储器和主机存储器实行直接存储器访问(DMA)重新映射和中断重新映射。
示例16包括示例11-15的任何组合的方法,其包括或排除可选特征。在该示例中,初始化虚拟功能设备,并且利用指向客户机存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符。该初始化和填充由与描述符中枢进行双向通信的虚拟功能驱动器实行。
示例17包括示例11的方法,其包括或排除可选特征。在该示例中,该方法包括:与虚拟机进行交互,以便基于驻留在客户机存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。该交互由半虚拟化网络接口控制器(NIC)设备后端实行,该半虚拟化网络接口控制器(NIC)设备后端与描述符中枢进行双向通信。
示例18包括示例17的方法,其包括或排除可选特征。在该示例中,该方法进一步包括:向虚拟功能驱动器标识存储器区域,以在虚拟功能设备上初始化Rx/Tx描述符。该标识由半虚拟化网络接口控制器(NIC)设备后端实行。虚拟功能驱动器与描述符中枢进行双向通信。
示例19包括示例11-15的方法的任何组合,其包括或排除可选特征。在该示例中,描述符中枢在设备关联表中搜索虚拟功能设备的标识以标识相关联的虚拟机。
示例20包括示例11的方法,其包括或排除可选特征。在该示例中,电子装置没有中央处理单元。
示例21包括示例11-15的任何组合的方法,其包括或排除可选特征。在该示例中,通过使用电子装置来实行至少一个虚拟机的实时迁移。
示例22是一种用于加速半虚拟化网络接口的示例系统。该电子装置包括:用于实行与可由具有多个虚拟机的客户机访问的客户机存储器,以及与可由具有多个虚拟功能设备的主机访问的主机存储器的双向通信的装置。该虚拟机通过中央处理单元通信地耦合到系统。该通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符。该电子装置还包括:用于存储虚拟机与虚拟功能设备之间的关联的装置。用于存储关联的装置通信地耦合到用于实行双向通信的装置。该电子装置进一步包括用于实行直接存储器访问(DMA)重新映射和中断重新映射的装置。
示例23包括示例22的系统,其包括或排除可选特征。在该示例中,由用于实行双向通信的装置所实行的通信包括半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
示例24包括示例22的系统,其包括或排除可选特征。在该示例中,用于实行双向通信的装置、用于存储关联的装置以及用于实行DMA重新映射和中断重新映射的装置被体现在现场可编程门阵列中或专用集成电路中。
示例25包括示例22的系统,其包括或排除可选特征。在该示例中,用于存储关联的装置和用于实行DMA重新映射和中断重新映射的装置被配置成由管理程序初始化。该管理程序通信地耦合到虚拟机以及耦合到中央处理单元。
示例26包括示例22的系统,其包括或排除可选特征。在该示例中,用于实行DMA重新映射和中断重新映射的装置针对客户机存储器和主机存储器实行直接存储器访问(DMA)重新映射和中断重新映射。
示例27包括示例22的系统,其包括或排除可选特征。在该示例中,虚拟功能驱动器与用于实行双向通信的装置进行双向通信。该虚拟功能驱动器要初始化虚拟功能设备,并且要利用指向客户机存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符。
示例28包括示例22的系统,其包括或排除可选特征。在该示例中,该系统包括:与用于实行双向通信的装置进行双向通信的半虚拟化网络接口控制器(NIC)设备后端。该半虚拟化网络接口控制器(NIC)设备后端要与虚拟机进行交互,以便基于驻留在客户机存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。
示例29包括示例28的系统,其包括或排除可选特征。在该示例中,该系统包括:与用于实行双向通信的装置进行双向通信的虚拟功能驱动器。该半虚拟化网络接口控制器(NIC)设备后端向虚拟功能驱动器标识存储器区域,以在虚拟功能设备上初始化Rx/Tx描述符。
示例30包括示例22的系统,其包括或排除可选特征。在该示例中,用于实行双向通信的装置在用于存储关联的装置中搜索虚拟功能装置的标识,以标识相关联的虚拟机。
示例31包括示例22的系统,其包括或排除可选特征。在该示例中,系统没有中央处理单元。
示例32是示例性半虚拟化计算机系统,其包括具有多个虚拟功能设备和主机存储器的主机。该系统包括:客户机,该客户机包括多个虚拟机和客户机存储器。该系统包括:在主机与客户机之间对接的接口布置。该接口布置包括中央处理单元。该接口布置包括:管理程序软件模块,其将虚拟机通信地耦合到中央处理单元。半虚拟化网络接口加速器被体现在现场可编程门阵列中。该半虚拟化网络接口加速器包括:描述符中枢,其被配置成实行与客户机存储器和主机存储器的双向通信。该通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符。半虚拟化网络接口加速器还包括:设备关联表,其通信地耦合到描述符中枢,并且存储虚拟机与虚拟功能设备之间的关联。半虚拟化网络接口加速器进一步包括输入输出存储器映射单元(IOMMU),以实行直接存储器访问(DMA)重新映射和中断重新映射。半虚拟化网络接口加速器还进一步包括与描述符中枢进行双向通信的虚拟功能驱动器。半虚拟化网络接口加速器包括与描述符中枢进行双向通信的半虚拟化网络接口控制器(NIC)设备后端。
示例33包括示例32的系统,其包括或排除可选特征。在该示例中,由描述符中枢实行的通信包括半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
示例34包括示例32的系统,其包括或排除可选特征。在该示例中,设备关联表和输入输出存储器映射单元(IOMMU)被配置成由管理程序初始化。
示例35包括示例32的系统,其包括或排除可选特征。在此示例中,输入输出存储器映射单元(IOMMU)要针对客户机存储器和主机存储器实行直接存储器访问(DMA)重新映射和中断重新映射。
示例36包括示例32-35的任何组合的系统,其包括或排除可选特征。在该示例中,虚拟功能驱动器初始化虚拟功能设备,并且利用指向客户机存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符。
示例37包括示例32的系统,其包括或排除可选特征。在该示例中,半虚拟化网络接口控制器(NIC)设备后端与虚拟机进行交互,以便基于驻留在客户机存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。
示例38包括示例32的系统,其包括或排除可选特征。在该示例中,半虚拟化网络接口控制器(NIC)设备后端向虚拟功能驱动器标识存储器区域,以在虚拟功能设备上初始化Rx/Tx描述符。
示例39包括示例32的系统,其包括或排除可选特征。在该示例中,描述符中枢在设备关联表中搜索虚拟功能设备的标识以标识相关联的虚拟机。
示例40包括示例32-35的任何组合的系统,其包括或排除可选特征。在该示例中,半虚拟化网络接口加速器没有中央处理单元。
并非在本文中描述和图示的全部组件、特征、结构、特性等都需要被包括在特定的一个或多个方面中。例如,如果说明书陈述组件、特征、结构或特性“可以”、“可能”、“能够”或“可”被包括在内,则该特定组件、特征、结构或特性不要求被包括在内。如果说明书或权利要求指代“一”或“一个”元件,这不意味着仅存在一个元件。如果说明书或权利要求指代“附加的”元件,这不排除存在多于一个附加的元件。
要指出的是,虽然已经参考特定的实现方式描述了一些方面,但根据一些方面,其他实现方式也是可能的。附加地,附图中图示和/或本文中描述的电路元件或其他特征的布置和/或次序不需要以所图示和描述的特定方式来布置。根据一些方面,许多其他的布置是可能的。
在附图中所示的每一个系统中,在一些情况下的元件可以均具有相同的附图标记或不同的附图标记以暗示所表示的元件可以是不同的和/或类似的。然而,元件可以足够灵活以具有不同的实现方式以及与本文中示出和描述的一些或全部系统一起工作。附图中示出的各种元件可以是相同的或不同的。哪一个被称为第一元件以及哪一个被称为第二元件是任意的。
要理解的是,前述示例中的细节可以在一个或多个方面中的任何地方使用。例如,上面描述的计算设备的全部可选特征也可以关于本文中描述的方法或计算机可读介质中的任一者来实现。此外,虽然流程图和/或状态图可能在本文中已被用来描述各方面,但该技术并不限于那些示图或限于本文中的对应描述。例如,流程不需要移动经过每一个图示的框或状态,或者以与本文中图示和描述的确切相同的次序移动。
本技术不限于本文中列出的特定细节。事实上,受益于本公开的本领域技术人员将领会到,可以在本技术的范围内做出出自于前述描述和附图的许多其他变型。因此,正是所附权利要求(包括对其的任何修改在内)限定了本技术的范围。
Claims (27)
1.一种用于加速半虚拟化网络接口的电子装置,所述电子装置包括:
描述符中枢,其被配置成实行与可由客户机访问的客户机存储器以及与可由主机访问的主机存储器的双向通信,其中所述客户机包括多个虚拟机,每个虚拟机配置有关联的半虚拟化PV网络接口设备,并且所述主机包括配置有多个虚拟功能设备的网络接口卡NIC,所述虚拟机通过中央处理单元通信地耦合到所述电子装置,所述通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符;
设备关联表,其通信地耦合到所述描述符中枢并且配置成存储所述虚拟机与所述虚拟功能设备之间的关联,其中所述关联定义所述虚拟机的相应PV网络接口设备与相应虚拟功能设备之间的相应一对一映射;以及
输入输出存储器映射单元(IOMMU),配置成基于存储的关联来实行直接存储器访问(DMA)重新映射和中断重新映射,以实现经由所述描述符中枢在相应虚拟机与相应虚拟功能设备之间的直接双向通信。
2.如权利要求1所述的电子装置,其中由所述描述符中枢实行的通信包括所述半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
3.如权利要求1所述的电子装置,其中所述描述符中枢、所述设备关联表和所述输入输出存储器映射单元(IOMMU)包括现场可编程门阵列或专用集成电路。
4.如权利要求1所述的电子装置,其中所述设备关联表和所述输入输出存储器映射单元(IOMMU)被配置成由管理程序初始化,所述管理程序通信地耦合到所述虚拟机以及耦合到所述中央处理单元。
5.如权利要求1所述的电子装置,其中所述输入输出存储器映射单元(IOMMU)要针对所述客户机存储器和所述主机存储器实行直接存储器访问(DMA)重新映射和中断重新映射。
6.如权利要求1-5中的任一项所述的电子装置,其包括与所述描述符中枢进行双向通信的虚拟功能驱动器,所述虚拟功能驱动器要初始化所述虚拟功能设备,并且利用指向所述客户机存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符。
7.如权利要求1所述的电子装置,其包括与所述描述符中枢进行双向通信的半虚拟化网络接口控制器(NIC)设备后端,所述半虚拟化网络接口控制器(NIC)设备后端要与虚拟机进行交互,以便基于驻留在所述客户机存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。
8.如权利要求7所述的电子装置,其包括与所述描述符中枢进行双向通信的虚拟功能驱动器,所述半虚拟化网络接口控制器(NIC)设备后端要向所述虚拟功能驱动器标识存储器区域,以在所述虚拟功能设备上初始化Rx/Tx描述符。
9.如权利要求1-5中的任一项所述的电子装置,其中所述描述符中枢要在所述设备关联表中搜索所述虚拟功能设备的标识以标识相关联的虚拟机。
10.如权利要求1-5中的任一项所述的电子装置,其中所述电子装置没有中央处理单元。
11.一种在两个设备之间进行对接的方法,所述方法包括:
经由中央处理单元在多个虚拟机与多个虚拟功能设备之间连接电子装置,每个虚拟机配置有关联的半虚拟化PV网络接口设备;
经由所述电子装置内的描述符中枢来实行与可由客户机访问的客户机存储器以及与可由主机访问的主机存储器的双向通信,所述客户机包括多个虚拟机,所述主机包括配置有所述虚拟功能设备的网络接口卡NIC,所述通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符;
经由设置在所述电子装置内并且通信地耦合到所述描述符中枢的设备关联表,存储所述虚拟机与所述虚拟功能设备之间的关联,其中所述关联定义所述虚拟机的相应PV网络接口设备与相应虚拟功能设备之间的相应一对一映射;以及
经由设置在所述电子装置内的输入输出存储器映射单元(IOMMU),基于存储的关联来实行直接存储器访问(DMA)重新映射和中断重新映射,以实现经由所述描述符中枢在相应虚拟机与相应虚拟功能设备之间的直接双向通信。
12.如权利要求11所述的方法,其中由所述描述符中枢实行的通信包括所述半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
13.如权利要求11所述的方法,其中所述描述符中枢、所述设备关联表和所述输入输出存储器映射单元(IOMMU)包括现场可编程门阵列或专用集成电路。
14.如权利要求11所述的方法,其包括:经由通信地耦合到所述虚拟机以及耦合到所述中央处理单元的管理程序来初始化所述设备关联表和所述输入输出存储器映射单元(IOMMU)。
15.如权利要求11所述的方法,其中,所述输入输出存储器映射单元(IOMMU)针对所述客户机存储器和所述主机存储器实行直接存储器访问(DMA)重新映射和中断重新映射。
16.如权利要求11-15中的任一项所述的方法,其包括初始化所述虚拟功能设备,并且利用指向所述客户机存储器中的对应的Rx/Tx分组缓冲器的存储器指针来填充分组Rx/Tx描述符,所述初始化和填充由与所述描述符中枢进行双向通信的虚拟功能驱动器实行。
17.如权利要求11所述的方法,其包括:经由与所述描述符中枢进行双向通信的半虚拟化网络接口控制器(NIC)设备后端,与所述虚拟机进行交互,以用于基于驻留在所述客户机存储器中的接收(Rx)和发送(Tx)队列对来进行分组输入/输出(I/O)。
18.如权利要求17所述的方法,其包括:经由所述半虚拟化网络接口控制器(NIC)设备后端,向虚拟功能驱动器标识存储器区域,以在所述虚拟功能驱动器上初始化Rx/Tx描述符,其中虚拟功能驱动器与所述描述符中枢进行双向通信。
19.如权利要求11-15中的任一项所述的方法,其中所述描述符中枢在所述设备关联表中搜索所述虚拟功能设备的标识以标识相关联的虚拟机。
20.如权利要求11所述的方法,其中所述电子装置没有中央处理单元。
21.如权利要求11-15中的任一项所述的方法,其包括:经由所述电子装置来实行至少一个述虚拟机的实时迁移。
22.一种用于加速半虚拟化网络接口的系统,所述系统包括:
用于实行与可由包括多个虚拟机的客户机访问的客户机存储器以及与可由包括配置有多个虚拟功能设备的网络接口卡NIC的主机访问的主机存储器的双向通信的装置,每个虚拟机配置有关联的半虚拟化PV网络接口设备,所述虚拟机通过中央处理单元通信地耦合到所述系统,所述通信基于半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符;
用于存储所述虚拟机与所述虚拟功能设备之间的关联的装置,其中所述关联定义所述虚拟机的相应PV网络接口设备与相应虚拟功能设备之间的相应一对一映射,用于存储关联的装置通信地耦合到用于实行双向通信的装置;以及
用于基于存储的关联来实行直接存储器访问(DMA)重新映射和中断重新映射以实现经由用于实行双向通信的装置在相应虚拟机与相应虚拟功能设备之间的直接双向通信的装置。
23.如权利要求22所述的系统,其中由用于实行双向通信的装置实行的通信包括所述半虚拟化分组描述符和网络接口控制器虚拟功能特定描述符的转换。
24.如权利要求22所述的系统,其中用于实行双向通信的装置、用于存储关联的装置以及用于实行DMA重新映射和中断重新映射的装置包括现场可编程门阵列或专用集成电路。
25.如权利要求22-24中的任一项所述的系统,其中所述用于存储关联的装置和所述用于实行DMA重新映射和中断重新映射的装置被配置成由管理程序初始化,所述管理程序通信地耦合到所述虚拟机以及耦合到所述中央处理单元。
26.一种计算机可读介质,具有存储于其上的指令,所述指令在被计算设备执行时,使所述计算设备执行根据权利要求11至21中的任一项所述的方法。
27.一种设备,包括用于执行根据权利要求11至21中的任一项所述的方法中的步骤的装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/111463 WO2018112827A1 (en) | 2016-12-22 | 2016-12-22 | Accelerating para-virtualization network interface using direct memory access (dma) remapping |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109983438A CN109983438A (zh) | 2019-07-05 |
CN109983438B true CN109983438B (zh) | 2024-02-02 |
Family
ID=62624597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680091031.XA Active CN109983438B (zh) | 2016-12-22 | 2016-12-22 | 使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11853784B2 (zh) |
EP (1) | EP3559806B1 (zh) |
CN (1) | CN109983438B (zh) |
WO (1) | WO2018112827A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537419B2 (en) * | 2016-12-30 | 2022-12-27 | Intel Corporation | Virtual machine migration while maintaining live network links |
EP3693854B1 (en) * | 2017-01-20 | 2024-06-12 | Huawei Technologies Co., Ltd. | Data packet forwarding method, network adapter, host device, and computer system |
US20230111884A1 (en) * | 2020-02-28 | 2023-04-13 | Anhui Cambricon Information Technology Co., Ltd. | Virtualization method, device, board card and computer-readable storage medium |
US11550941B2 (en) | 2020-04-30 | 2023-01-10 | Red Hat, Inc. | Secure modular devices |
CN111580994B (zh) * | 2020-05-11 | 2023-09-15 | 南京英锐创电子科技有限公司 | 蓝牙模块、蓝牙模块的事件控制方法及电子设备 |
WO2023184513A1 (en) * | 2022-04-01 | 2023-10-05 | Intel Corporation | Reconfigurable packet direct memory access to support multiple descriptor ring specifications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751284A (zh) * | 2009-12-25 | 2010-06-23 | 北京航空航天大学 | 一种分布式虚拟机监控器的i/o资源调度方法 |
WO2012129729A1 (en) * | 2011-03-31 | 2012-10-04 | Intel Corporation | Memory mirroring and redundancy generation for high availability |
CN103034524A (zh) * | 2011-10-10 | 2013-04-10 | 辉达公司 | 半虚拟化的虚拟gpu |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8151265B2 (en) * | 2007-12-19 | 2012-04-03 | International Business Machines Corporation | Apparatus for and method for real-time optimization of virtual machine input/output performance |
US8990799B1 (en) * | 2008-01-30 | 2015-03-24 | Emc Corporation | Direct memory access through virtual switch in device driver |
US8667187B2 (en) * | 2008-09-15 | 2014-03-04 | Vmware, Inc. | System and method for reducing communication overhead between network interface controllers and virtual machines |
US20100262722A1 (en) * | 2009-04-10 | 2010-10-14 | Christophe Vauthier | Dynamic Assignment of Graphics Processing Unit to a Virtual Machine |
WO2012044700A1 (en) * | 2010-10-01 | 2012-04-05 | Huawei Technologies Co., Ltd. | System and method for controlling the input/output of a virtualized network |
US9317444B2 (en) * | 2013-03-15 | 2016-04-19 | Vmware, Inc. | Latency reduction for direct memory access operations involving address translation |
US20140358848A1 (en) | 2013-05-28 | 2014-12-04 | Unisys Corporation | Interconnect partition binding api, allocation and management of application-specific partitions |
WO2015081308A2 (en) * | 2013-11-26 | 2015-06-04 | Dynavisor, Inc. | Dynamic i/o virtualization |
GB201406392D0 (en) | 2014-04-09 | 2014-05-21 | Advanced Risc Mach Ltd | Data processing systems |
US9934057B2 (en) * | 2014-04-21 | 2018-04-03 | Oracle International Corporation | Shadow VNICs for the control and observability of IO virtual functions |
US9262197B2 (en) | 2014-07-16 | 2016-02-16 | Dell Products L.P. | System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint |
US9898430B2 (en) | 2014-11-12 | 2018-02-20 | Vmware, Inc. | Tracking virtual machine memory modified by a single root I/O virtualization (SR-IOV) device |
US9747249B2 (en) * | 2014-12-29 | 2017-08-29 | Nicira, Inc. | Methods and systems to achieve multi-tenancy in RDMA over converged Ethernet |
US10387343B2 (en) * | 2015-04-07 | 2019-08-20 | International Business Machines Corporation | Processing of events for accelerators utilized for parallel processing |
CN106250166B (zh) | 2015-05-21 | 2019-09-20 | 阿里巴巴集团控股有限公司 | 一种半虚拟化网卡内核加速模块升级方法和装置 |
-
2016
- 2016-12-22 CN CN201680091031.XA patent/CN109983438B/zh active Active
- 2016-12-22 US US16/463,473 patent/US11853784B2/en active Active
- 2016-12-22 WO PCT/CN2016/111463 patent/WO2018112827A1/en unknown
- 2016-12-22 EP EP16924729.3A patent/EP3559806B1/en active Active
-
2023
- 2023-11-09 US US18/388,505 patent/US20240184607A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751284A (zh) * | 2009-12-25 | 2010-06-23 | 北京航空航天大学 | 一种分布式虚拟机监控器的i/o资源调度方法 |
WO2012129729A1 (en) * | 2011-03-31 | 2012-10-04 | Intel Corporation | Memory mirroring and redundancy generation for high availability |
CN103034524A (zh) * | 2011-10-10 | 2013-04-10 | 辉达公司 | 半虚拟化的虚拟gpu |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
Non-Patent Citations (3)
Title |
---|
《pvFPGA: Accessing an FPGA-based Hardware Accelerator in a Paravirtualized Environment》;wei wang et al.;《2013 international conference of hardware/software codesign and and system synthesis》;20130929;正文第2页左栏第3段-第5页左栏第1段 * |
X86虚拟机的实现;张伦;《计算机与网络》;20070526(第10期);全文 * |
一种网卡硬件辅助虚拟化技术;龚珊珊;戴新发;黄晋;;计算机与数字工程(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP3559806B1 (en) | 2022-08-31 |
US20190354387A1 (en) | 2019-11-21 |
US11853784B2 (en) | 2023-12-26 |
EP3559806A4 (en) | 2020-09-02 |
WO2018112827A1 (en) | 2018-06-28 |
US20240184607A1 (en) | 2024-06-06 |
EP3559806A1 (en) | 2019-10-30 |
CN109983438A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109983438B (zh) | 使用直接存储器访问(dma)重新映射来加速半虚拟化网络接口 | |
US9529773B2 (en) | Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller | |
US7941812B2 (en) | Input/output virtualization through offload techniques | |
KR101747518B1 (ko) | 소프트웨어 정의 네트워크에서의 가상화된 컨테이너 및 가상 머신을 통한 로컬 서비스 체이닝 | |
US10402341B2 (en) | Kernel-assisted inter-process data transfer | |
US10152441B2 (en) | Host bus access by add-on devices via a network interface controller | |
US8601496B2 (en) | Method and system for protocol offload in paravirtualized systems | |
US20180109471A1 (en) | Generalized packet processing offload in a datacenter | |
US11757796B2 (en) | Zero-copy processing | |
US20070050520A1 (en) | Systems and methods for multi-host extension of a hierarchical interconnect network | |
CN106557444B (zh) | 实现sr-iov网卡的方法和装置、实现动态迁移的方法和装置 | |
WO2019079960A1 (en) | MATERIAL ASSISTED VIRTUAL SWITCH | |
CN105049464B (zh) | 用于加速网络虚拟化的技术 | |
KR102389028B1 (ko) | 가상 데스크탑 간의 데이터 고속 전송 장치 및 방법 | |
US9483290B1 (en) | Method and system for virtual machine communication | |
US8392629B1 (en) | System and methods for using a DMA module for a plurality of virtual machines | |
US20180181421A1 (en) | Transferring packets between virtual machines via a direct memory access device | |
US20170149694A1 (en) | Shim layer used with a virtual machine virtual nic and a hardware platform physical nic | |
WO2017026931A1 (en) | Implementing input/output in a virtualized environment | |
US11979459B1 (en) | Configuration of data connections between a host and a shared network adapter | |
US20240143528A1 (en) | Programmable User-Defined Peripheral-Bus Device Implementation Using Data-Plane Accelerator (DPA) | |
Meth et al. | Zero-Copy Receive for Virtualized Network Devices | |
Wang et al. | High Performance Network Virtualization Architecture on FPGA SmartNIC | |
CN116737403A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
Nanos et al. | Xen2MX: towards high-performance communication in the cloud |
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 |