CN110389711A - 帮助端点设备实现sr-iov功能的方法、设备和计算机程序产品 - Google Patents
帮助端点设备实现sr-iov功能的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN110389711A CN110389711A CN201810360793.6A CN201810360793A CN110389711A CN 110389711 A CN110389711 A CN 110389711A CN 201810360793 A CN201810360793 A CN 201810360793A CN 110389711 A CN110389711 A CN 110389711A
- Authority
- CN
- China
- Prior art keywords
- tlp
- request
- address
- equipment
- adapter
- 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
Classifications
-
- 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
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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
- 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
- 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
- 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/0058—Bus-related hardware virtualisation
Abstract
本公开提供了一种用于帮助端点设备实现SR‑IOV功能的方法、设备和计算机程序产品。该方法包括:在适配器处,接收来自虚拟机的请求消息,该请求消息指示该虚拟机将要对该端点设备执行的操作;对该请求消息进行解析,以得到第一请求TLP;确定第一请求TLP的类型是支持对等传输的TLP还是不支持对等传输的TLP;响应于确定该第一请求TLP的类型是支持对等传输的TLP,基于该第一请求TLP来生成第二请求TLP;以及向该端点设备发送该第二请求TLP。利用本公开的方案,在不需要修改端点设备的情况下,帮助不支持SR‑IOV功能的端点设备实现了SR‑IOV功能。
Description
技术领域
本公开涉及存储管理领域,更具体地,涉及一种用于帮助端点设备实现单根输入/输出虚拟化(Single Root Input/Output Virtualization,SR-IOV)功能的方法、设备和计算机程序产品,以使得不支持SR-IOV功能的端点设备能够实现SR-IOV功能。
背景技术
虚拟化一直是当今数据中心的基本要求,也是云的基础,因为它可以提高硬件利用率并降低成本。在当前的虚拟环境中,SR-IOV变得越来越重要,因为它允许多个系统映像(System Image,SI)(例如在虚拟机管理器(hypervisor)上运行的虚拟机)共享相同的外设部件互连(Peripheral Component Interconnect,PCI)硬件资源。SR-IOV是高速PCI(PCIe)设备的新型虚拟化方法,其是由PCI特殊兴趣组织(Special Interest Group,SIG)开发的与系统芯片组协同工作的标准。它不需要虚拟机管理器参与输入/输出(I/O)操作,并允许将支持SR-IOV功能的设备直接分配给虚拟机,因此提供了更好的性能和更低的延迟。
许多端点设备在设计时完全没有考虑云虚拟化,因此有很多PCIe端点设备都不支持SR-IOV功能。如果要支持SR-IOV功能,需要对专用集成电路(Application SpecificIntegrated Circuit,ASIC)端点控制器进行重新设计并且重写固件。然而,众所周知,ASIC的设计和开发周期很长,很难跟上快速变化的软件需求。例如,许多快速非易失性存储器(Non-Volatile memory express,NVMe)固态硬盘(Solid State Disk,SSD)都不支持SR-IOV功能。因此,存在着在不支持SR-IOV功能的端点设备上使用SR-IOV功能以进行虚拟化的需要。
当前,如果想在虚拟化环境中使用不支持SR-IOV功能的设备,可能的解决方案是将设备传递到虚拟机或使用虚拟机管理器软件堆栈来虚拟化该设备。但是这两种方案都有一些缺点。
对于将端点设备传递给一个虚拟机的方案来说,该设备将由该虚拟机专用,其他虚拟机无法访问此设备,从而硬件利用率非常低。
对于使用虚拟机管理器软件堆栈来虚拟化该设备的方案来说,来自不同虚拟机的所有访问都必须通过此软件堆栈。在这种情况下,软件堆栈将成为访问路径中的一个瓶颈,这将导致较低的性能和较大的延迟。
发明内容
鉴于此,本公开提供了一种用于帮助端点设备实现SR-IOV功能的方法、适配器以及计算机程序产品,以使得不支持SR-IOV功能的端点设备能够实现SR-IOV功能。
根据本公开的一个方面,提供了一种用于帮助端点设备实现SR-IOV功能的方法。该方法包括:在适配器处,接收来自虚拟机的请求消息,该请求消息指示该虚拟机将要对该端点设备执行的操作;对该请求消息进行解析,以得到第一请求TLP;确定第一请求TLP的类型是支持对等传输的TLP还是不支持对等传输的TLP;响应于确定该第一请求TLP的类型是支持对等传输的TLP,基于该第一请求TLP来生成第二请求TLP;以及向该端点设备发送该第二请求TLP
根据本公开的另一个方面,提供了一种用于帮助端点设备实现SR-IOV功能的设备。该设备包括:接收模块,其被配置为接收来自虚拟机的请求消息,该请求消息指示该虚拟机将要对该端点设备执行的操作;解析模块,其被配置为对该请求消息进行解析,以得到第一请求TLP;判断模块,其被配置为确定第一请求TLP的类型是支持对等传输的TLP还是不支持对等传输的TLP;数据包生成模块,其被配置为响应于确定该第一请求TLP的类型是支持对等传输的TLP,基于该第一请求TLP来生成第二请求TLP;以及发送模块,其被配置为向该端点设备发送该第二请求TLP。
根据本公开的又一个方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行根据上述方面所述的方法。
根据本公开的方案,能够利用SR-IOV适配器在不改变端点设备的情况下,使得不支持SR-IOV功能的端点设备支持SR-IOV功能。主机可以将所有端点设备视为支持SR-IOV功能的设备,可以享受SR-IOV的好处而不需要更改端点设备的硬件/固件,从而更易于设备虚拟化的实现。此外,通过硬件和软件协同设计使用诸如现场可编程门阵列(Field-Programmable Gate Array,FPGA)之类的可重配置硬件自动重新加载相应SR-IOV适配器来将不支持SR-IOV功能的设备更改为支持SR-IOV功能的设备。
附图说明
通过参考下列附图所给出的本公开的具体实施方式的描述,将更好地理解本公开,并且本公开的其他目的、细节、特点和优点将变得更加显而易见,其中:
图1示出了根据本公开的实施例的虚拟环境的示意图;
图2示出了根据本公开的适配器的物理拓扑结构的示意图;
图3示出了根据本公开的实施例的用于帮助端点设备实现SR-IOV功能的方法的流程图;
图4示出了根据本公开的设备的逻辑结构的示意图;以及
图5示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本公开的实施例的虚拟环境100的示意图。如图1中所示,虚拟环境100包括云端110,其包含至少一个虚拟机。图1中示例性地示出了三个虚拟机112-1、112-2和112-3,以下统称为虚拟机112。虚拟环境100还包括一个或多个端点设备130(图1中示例性地示出了一个端点设备130),其例如可以是支持或不支持SR-IOV功能的PCIe硬件设备,如SSD等。
虚拟环境100中的虚拟机管理器(hypervisor)140用于实现虚拟机112对端点设备130的调用。端点设备130可以被定义为虚拟环境100中的一个物理功能(PhysicalFunction,PF)模块。支持SR-IOV功能的端点设备130可以与虚拟机管理器140直接交互,以实现虚拟机112对端点设备130的调用。然而,对于不支持SR-IOV功能的端点设备130来说,虚拟机112不能直接调用该端点设备130。为此,根据本公开的虚拟环境100还包括适配器120,其用于帮助不支持SR-IOV功能的端点设备130实现SR-IOV功能。换句话说,适配器120可以被视为不支持SR-IOV功能的端点设备130的代理,其模拟端点设备130,并为虚拟机管理器140上的多个虚拟机112分别提供多个虚拟功能(Virtual Function,VF)。因此,适配器120被视为虚拟环境100中的一个PF,其也与虚拟机管理器140相连。
虚拟机管理器140可以包括驱动器142和管理接口144。驱动器142用于,在某些情况下,与适配器120配合使用来帮助实现端点设备130的SR-IOV功能。管理接口144用于管理分别与不同端点设备130配对的多个适配器120,并且可以根据使用的端点设备自动加载相应的比特流。
适配器120例如可以通过可重配置硬件(如FPGA)来实现,这将在下面详述。
图2示出了根据本公开的适配器120的物理拓扑结构的示意图。如图2中所示,根控制器(如虚拟机的主机的中央处理单元等)直接或通过交换器与端点设备相连。对于不支持SR-IOV功能的端点设备(如图2中所示的端点设备1),可以为其配置独立的适配器120,以模拟该端点设备并向虚拟机提供一个或多个虚拟功能(VF)。
图3示出了根据本公开的实施例的用于帮助端点设备实现SR-IOV功能的方法300的流程图。方法300例如可以在如图1和图2所示的用于不支持SR-IOV功能的端点设备130的适配器120中实现。
如图300所示,在框302,适配器120接收来自虚拟机112(如图1中所示的至少一个虚拟机112中的任一个)的请求消息。该请求消息指示该虚拟机112将要对端点设备130执行的操作。该请求消息例如可以是适配器120使用其与虚拟机112之间的至少一个虚拟功能从虚拟机112接收的。在虚拟环境中,虚拟机112对端点设备130执行的操作例如可以包括存储器读取操作、存储器写入操作、配置读取操作和配置写入操作中的至少一种。
该请求消息通常以不同于适配器120的协议格式从虚拟机112发送给适配器120,因此,为了对该请求消息进行处理,适配器120需要对其进行协议解析,并且例如通过重新封装的形式生成端点设备130能够解析的传输层数据包(TLP)。
在框304,适配器120对接收到的请求消息进行解析,以得到第一请求TLP。
用于PCIe端点设备的TLP可以分为两类:支持对等通信(P2P)的TLP和不支持P2P的TLP。前者例如包括存储器读取TLP或存储器写入TLP,后者例如包括配置读取TLP或配置写入TLP。
对于支持P2P的TLP,适配器120可以直接对其进行处理,而对于不支持P2P的TLP,适配器120可以与其驱动器(如图1中所示的驱动器142)配合来进行处理。
为此,在框306,适配器120确定框304得到的第一请求TLP的类型是支持P2P的TLP还是不支持P2P的TLP。
如果在框306确定第一请求TLP的类型是支持P2P的TLP,则在框308,适配器120基于第一请求TLP来生成第二请求TLP。
TLP可以包括源地址字段、目标地址字段、类型字段、长度字段、数据载荷字段等,其中源地址指示该TLP的源设备的地址或标识符(ID),目标地址指示该TLP的目的地设备的地址或ID。TLP的其他字段在本文中不做详细描述。
具体地,在该第一请求TLP中,源地址是发送该请求消息的虚拟机112的地址,目标地址是适配器120的地址。
在一些实施例中,适配器120将第一请求TLP中的源地址从虚拟机112的地址改变为适配器120的地址,以作为第二请求TLP中的源地址,并且将第一请求TLP中的目标地址从适配器120的地址改变为端点设备130的地址,以作为第二请求TLP中的目标地址。这里,端点设备130的地址可以是虚拟机112对端点设备130执行该请求消息中所述的操作所需的存储器地址。
由于一个端点设备130/适配器120可被多个虚拟机访问,为了正确寻址对该端点设备130进行请求的虚拟机,适配器120还可以存储该请求消息与该请求消息的源地址(如虚拟机112的地址或ID)之间的映射关系。
在框310,适配器120将第二请求TLP直接发送给端点设备130。由于第二请求TLP是支持P2P的TLP,适配器120可以通过P2P方式将其直接发送给端点设备130。端点设备130可以对该请求TLP进行处理并以P2P方式返回响应TLP作为处理结果。
上述方法步骤302至310描述了利用适配器120将来自虚拟机112的请求传送给不支持SR-IOV功能的端点设备130以帮助其实现SR-IOV功能的过程。通过上述过程,能够在不对端点设备130进行任何改变的情况下帮助其实现SR-IOV功能。
在一些实施例中,方法300还可以可选地包括将来自端点设备130的响应传送给虚拟机112的过程,如图3的虚线框所示。在框312,适配器120接收来自端点设备130的该响应TLP,并根据该响应TLP生成第二响应TLP(框314和316)。具体地,该响应TLP包括端点设备130的地址作为源地址和适配器120的地址作为目标地址。
在框314,适配器120将响应TLP中的源地址从端点设备130的地址改变为适配器120的地址,以作为第二响应TLP中的源地址。
在框316,适配器120例如根据请求消息与虚拟机112之间的映射关系将响应TLP中的目标地址从适配器120的地址改变为虚拟机112的地址,以作为第二响应TLP中的目标地址。
在框318,适配器120根据第二响应TLP中的目标地址将第二响应TLP发送给虚拟机112。
通过这种方式,对于支持P2P的TLP,适配器120作为端点设备130的代理将其转换为P2P事务以与端点设备130进行通信,从而帮助不支持SR-IOV功能的传统端点设备130实现了SR-IOV功能。
另一方面,由于PCIe路由规则,不支持P2P的TLP不能被诸如FPGA形式的适配器120直接处理。这种TLP的类型很少,并且时间不敏感,因此在本文中建议利用适配器120的驱动器(例如位于图1所示的虚拟机管理器140中的软件驱动器142)与适配器120配合来进行处理。
具体地,仍然参考图3,响应于在框306确定第一请求TLP的类型是不支持P2P的TLP,在框320,适配器120将第一请求TLP发送给适配器120的驱动器。适配器120的驱动器例如是位于虚拟机112的管理器140中的驱动器142。
在一些实施例中,适配器120可以通过中断指令向驱动器142通知该第一请求TLP是不支持P2P的TLP。
在这种情况下,驱动器142可以根据该第一请求TLP直接对端点设备130执行操作,例如对端点设备130的配置寄存器进行读取或写入操作等。然后,驱动器142可以将处理结果返回给适配器120。
在框322,适配器120从驱动器142接收驱动器142对第一请求TLP的处理结果。
在框324,适配器120根据处理结果构造响应TLP。例如,适配器120可以将响应TLP中的源地址设置为适配器120的地址,并且根据请求消息与虚拟机112之间的映射关系将响应TLP中的目标地址设置为虚拟机112的地址,以将该响应TLP正确寻址到发出请求消息的虚拟机112。
在框326,适配器120例如基于该响应TLP中的目标地址将该响应TLP发送给虚拟机112。
在适配器120以可重配置硬件(如FPGA)实现的情况下,适配器120可以根据其功能划分为静态分区和可重配置分区。静态分区是电路功能不变的分区,负责适配器120的功能管理,如上述结合框302至308或302至326所述的功能。可重配置分区是电路可改变的分区,可以将不同用户所需的比特流编程到该分区,从而即使不重新启动系统,也可以使得适配器120适应于不同的端点设备130。
例如,由于适配器120可以与多个虚拟机112相连,因此存在着多个虚拟机112同时对端点设备的相同目标地址发出多个请求消息(如执行存储器写入操作的请求消息)的情况。取决于端点设备130本身的功能,可能需要在可重配分区中为其配置处理这种情况的功能。在一些实施例中,适配器120例如可以在对该多个请求消息进行解析以得到多个第一请求TLP之后,对来自多个虚拟机的具有相同目标地址的多个第一请求TLP进行排序,并且依次对排序后的每个第一请求TLP执行操作。为了保证对相同地址的更新正确实现,适配器在对每个请求TLP进行处理之前应当对该目标地址进行锁定。
图4示出了根据本公开的设备400的逻辑结构的示意图。设备400例如可以是上面结合图1至图3所述的适配器120或者实现在适配器120中。
如图4中所示,设备400可以包括接收模块410,其被配置为接收来自虚拟机112的请求消息。该请求消息指示虚拟机112将要对端点设备130执行的操作。设备400还可以包括解析模块420,其被配置为对该请求消息进行解析,以得到第一请求TLP。设备400还可以包括判断模块430,其被配置为确定第一请求TLP的类型是支持P2P的TLP还是不支持P2P的TLP。设备400还可以包括数据包生成模块440,其被配置为响应于确定第一请求TLP的类型是支持P2P的TLP,基于第一请求TLP来生成第二请求TLP。设备400还可以包括发送模块450,其被配置为向端点设备130发送第二请求TLP。
在一些实施例中,支持P2P的TLP包括存储器读取TLP或存储器写入TLP。
在一些实施例中,第一请求TLP包含虚拟机112的地址作为源地址和适配器120的地址作为目标地址。在这种情况下,数据包生成模块440还被配置为:将第一请求TLP中的源地址从虚拟机112的地址改变为适配器120的地址,以作为第二请求TLP中的源地址,将第一请求TLP中的目标地址从适配器120的地址改变为端点设备130的地址,以作为第二请求TLP中的目标地址,并且存储第二请求TLP与虚拟机112的地址之间的映射关系。
在一些实施例中,接收模块410还被配置为从端点设备130接收响应于第二请求TLP的响应TLP。该响应TLP包括端点设备130的地址作为源地址和适配器120的地址作为目标地址。数据包生成模块440还被配置为将响应TLP中的源地址从端点设备130的地址改变为适配器120的地址,以作为第二响应TLP中的源地址,并且根据请求消息与虚拟机112的地址之间的映射关系将响应TLP中的目标地址从适配器120的地址改变为虚拟机112的地址,以作为第二响应TLP中的目标地址。发送模块450还被配置为将第二响应TLP发送给虚拟机112。
在一些实施例中,不支持P2P的TLP包括配置读取请求TLP或配置写入请求TLP。
在一些实施例中,发送模块450还被配置为响应于确定第一请求TLP的类型是不支持P2P的TLP,将第一请求TLP发送给适配器120的驱动器142,适配器120的驱动器142位于虚拟机112的管理器140中。
在一些实施例中,发送模块450还被配置为通过中断指令向适配器120的驱动器142通知请求TLP是不支持P2P的TLP,以使得适配器120的驱动器142处理该不支持对等传输的TLP。
在一些实施例中,接收模块410还被配置为从适配器120的驱动器142接收驱动器142对该不支持对等传输的TLP的处理结果。数据包生成模块440还被配置为根据该处理结果构造响应TLP。发送模块450还被配置为将响应TLP发送给虚拟机112。
在一些实施例中,接收模块410还被配置为:利用虚拟机112与适配器120之间的至少一个虚拟功能从虚拟机112接收该请求消息。
在一些实施例中,解析模块420还被配置为:确定是否接收到来自多个虚拟机112的具有相同目标地址的多个第一请求TLP,以及如果确定接收到来自多个虚拟机112的具有相同目标地址的多个第一请求TLP,对该多个第一请求TLP进行排序。
利用本公开的方案,在不需要修改端点设备的情况下,帮助不支持SR-IOV功能的端点设备(如PCIe端点设备)实现了SR-IOV功能。所建议的适配器通过软硬件协同设计方法,将对PCIe端点设备的访问从主机的处理器重定向到该端点设备,并从端点设备重定向到主机的处理器,以便端点设备具有对主机的管理程序的SR-IOV支持。
此外,在一些实施例中,适配器120具有可重配置分区,因此可以连续轻松地为设计添加新的功能单元,并且可以根据新的软件需求随时修复或增强本地设备功能。例如,如果需要,可以轻松卸载访问路径中的一些完整性检查。
在上文的描述中,以诸如FPGA之类的可重配置硬件为例对适配器120/设备400的实现进行了描述。然而,本公开并不局限于此,而是可以以其他可重配置或不可重配置的硬件、软件或固件的形式实现。
图5示出了可以用来实施本公开内容的实施例的示例设备500的示意性框图。如图所示,设备500包括中央处理单元(CPU)510,其可以根据存储在只读存储器(ROM)520中的计算机程序指令或者从存储单元580加载到随机访问存储器(RAM)530中的计算机程序指令,来执行各种适当的动作和处理。在RAM 530中,还可存储设备500操作所需的各种程序和数据。CPU 510、ROM 520以及RAM 530通过总线540彼此相连。输入/输出(I/O)接口550也连接至总线540。
设备500中的多个部件连接至I/O接口550,包括:输入单元560,例如键盘、鼠标等;输出单元570,例如各种类型的显示器、扬声器等;存储单元580,例如磁盘、光盘等;以及通信单元590,例如网卡、调制解调器、无线通信收发机等。通信单元590允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300,可由处理单元510执行。例如,在一些实施例中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元580。在一些实施例中,计算机程序的部分或者全部可以经由ROM 520和/或通信单元590而被载入和/或安装到设备500上。当计算机程序被加载到RAM 530并由CPU 510执行时,可以执行上文描述的方法300的一个或多个动作。
本公开可以是方法、设备和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言-诸如Smalltalk、C++等,以及常规的过程式编程语言-诸如"C"语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实施例中,框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (21)
1.一种用于帮助端点设备实现单根输入/输出虚拟化(SR-IOV)功能的方法,包括:
在适配器处,接收来自虚拟机的请求消息,所述请求消息指示所述虚拟机将要对所述端点设备执行的操作;
对所述请求消息进行解析以得到第一请求传输层数据包(TLP);
确定第一请求TLP的类型是支持对等传输的TLP还是不支持对等传输的TLP;
响应于确定所述第一请求TLP的类型是支持对等传输的TLP,基于所述第一请求TLP来生成第二请求TLP;以及
向所述端点设备发送所述第二请求TLP。
2.如权利要求1所述的方法,其中所述支持对等传输的TLP包括存储器读取TLP或存储器写入TLP。
3.如权利要求1所述的方法,其中所述第一请求TLP包含所述虚拟机的地址作为源地址和所述适配器的地址作为目标地址,并且其中基于所述第一请求TLP来生成第二请求TLP包括:
将所述第一请求TLP中的源地址从所述虚拟机的地址改变为适配器的地址,以作为所述第二请求TLP中的源地址;
将所述第一请求TLP中的目标地址从所述适配器的地址改变为所述端点设备的地址,以作为所述第二请求TLP中的目标地址;以及
存储所述请求消息与所述虚拟机之间的映射关系。
4.如权利要求3所述的方法,还包括:
从所述端点设备接收响应于所述第二请求TLP的响应TLP,所述响应TLP包括所述端点设备的地址作为源地址和所述适配器的地址作为目标地址;
将所述响应TLP中的源地址从所述端点设备的地址改变为所述适配器的地址,以作为第二响应TLP中的源地址;
根据所述请求消息与所述虚拟机之间的映射关系将所述响应TLP中的目标地址从所述适配器的地址改变为所述虚拟机的地址,以作为所述第二响应TLP中的目标地址;以及
将所述第二响应TLP发送给所述虚拟机。
5.如权利要求1所述的方法,其中所述不支持对等传输的TLP包括配置读取请求TLP或配置写入请求TLP。
6.根据权利要求1所述的方法,还包括:
响应于确定所述第一请求TLP的类型是不支持对等传输的TLP,将所述第一请求TLP发送给所述适配器的驱动器,所述适配器的驱动器位于所述虚拟机的管理器中。
7.根据权利要求6所述的方法,其中将所述第一请求TLP发送给所述适配器的驱动器包括:
通过中断指令向所述适配器的驱动器通知所述第一请求TLP是不支持P2P的TLP,以使得所述适配器的驱动器处理所述不支持对等传输的TLP。
8.根据权利要求6所述的方法,还包括:
从所述适配器的驱动器接收所述适配器的驱动器对所述不支持对等传输的TLP的处理结果;
根据所述处理结果构造响应TLP;以及
将所述响应TLP发送给所述虚拟机。
9.根据权利要求1所述的方法,其中接收来自虚拟机的请求消息包括:
利用所述虚拟机与所述适配器之间的至少一个虚拟功能从所述虚拟机接收所述请求消息。
10.根据权利要求1所述的方法,还包括:
确定是否接收到来自多个虚拟机的具有相同目标地址的多个第一请求TLP;以及
如果确定接收到来自多个虚拟机的具有相同目标地址的多个第一请求TLP,对所述具有相同目标地址的多个第一请求TLP进行排序。
11.一种用于帮助端点设备实现单根输入/输出虚拟化(SR-IOV)功能的设备,包括:
接收模块,其被配置为接收来自虚拟机的请求消息,所述请求消息指示所述虚拟机将要对所述端点设备执行的操作;
解析模块,其被配置为对所述请求消息进行解析,以得到第一请求传输层数据包(TLP);
判断模块,其被配置为确定第一请求TLP的类型是支持对等传输的TLP还是不支持对等传输的TLP;
数据包生成模块,其被配置为响应于确定所述第一请求TLP的类型是支持对等传输的TLP,基于所述第一请求TLP来生成第二请求TLP;以及
发送模块,其被配置为向所述端点设备发送所述第二请求TLP。
12.如权利要求11所述的设备,其中所述支持对等传输的TLP包括存储器读取TLP或存储器写入TLP。
13.如权利要求11所述的设备,其中所述第一请求TLP包含所述虚拟机的地址作为源地址和所述设备的地址作为目标地址,并且其中所述数据包生成模块还被配置为:
将所述第一请求TLP中的源地址从所述虚拟机的地址改变为设备的地址,以作为所述第二请求TLP中的源地址;
将所述第一请求TLP中的目标地址从所述设备的地址改变为所述端点设备的地址,以作为所述第二请求TLP中的目标地址;以及
存储所述第二请求TLP与所述虚拟机的地址之间的映射关系。
14.如权利要求13所述的设备,其中
所述接收模块还被配置为从所述端点设备接收响应于所述第二请求TLP的响应TLP,所述响应TLP包括所述端点设备的地址作为源地址和所述设备的地址作为目标地址;
所述数据包生成模块还被配置为将所述响应TLP中的源地址从所述端点设备的地址改变为所述设备的地址,以作为第二响应TLP中的源地址,并且根据所述请求消息与所述虚拟机的地址之间的映射关系将所述响应TLP中的目标地址从所述设备的地址改变为所述虚拟机的地址,以作为所述第二响应TLP中的目标地址;以及
所述发送模块还被配置为将所述第二响应TLP发送给所述虚拟机。
15.如权利要求11所述的设备,其中所述不支持对等传输的TLP包括配置读取请求TLP或配置写入请求TLP。
16.根据权利要求11所述的设备,其中所述发送模块还被配置为:
响应于确定所述第一请求TLP的类型是不支持对等传输的TLP,将所述第一请求TLP发送给所述设备的驱动器,所述设备的驱动器位于所述虚拟机的管理器中。
17.根据权利要求16所述的设备,其中所述发送模块还被配置为:
通过中断指令向所述设备的驱动器通知所述请求TLP是不支持P2P的TLP,以使得所述设备的驱动器处理所述不支持对等传输的TLP。
18.根据权利要求16所述的方法,其中
所述接收模块还被配置为从所述设备的驱动器接收所述设备的驱动器对所述不支持对等传输的TLP的处理结果;
所述数据包生成模块还被配置为根据所述处理结果构造响应TLP;以及
所述发送模块还被配置为将所述响应TLP发送给所述虚拟机。
19.根据权利要求11所述的设备,其中所述接收模块还被配置为:
利用所述虚拟机与所述设备之间的至少一个虚拟功能从所述虚拟机接收所述请求消息。
20.根据权利要求11所述的设备,其中所述解析模块还被配置为:
确定是否接收到来自多个虚拟机的具有相同目标地址的多个第一请求TLP;以及
如果确定接收到来自多个虚拟机的具有相同目标地址的多个第一请求TLP,对所述具有相同目标地址的多个第一请求TLP进行排序。
21.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至10任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810360793.6A CN110389711B (zh) | 2018-04-20 | 2018-04-20 | 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质 |
US16/298,431 US10621124B2 (en) | 2018-04-20 | 2019-03-11 | Method, device and computer program product for enabling SR-IOV functions in endpoint device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810360793.6A CN110389711B (zh) | 2018-04-20 | 2018-04-20 | 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110389711A true CN110389711A (zh) | 2019-10-29 |
CN110389711B CN110389711B (zh) | 2023-04-04 |
Family
ID=68236453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810360793.6A Active CN110389711B (zh) | 2018-04-20 | 2018-04-20 | 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10621124B2 (zh) |
CN (1) | CN110389711B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113498597A (zh) * | 2020-01-22 | 2021-10-12 | 华为技术有限公司 | 一种基于PCIe的数据传输方法及装置 |
CN114285834A (zh) * | 2021-12-24 | 2022-04-05 | 山石网科通信技术股份有限公司 | 一种报文传输方法、装置及终端设备 |
US11604742B2 (en) * | 2019-06-25 | 2023-03-14 | Huawei Technologies Co., Ltd. | Independent central processing unit (CPU) networking using an intermediate device |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115914251A (zh) * | 2022-09-29 | 2023-04-04 | 歌尔科技有限公司 | 数据帧传输方法、装置及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547705A (zh) * | 2001-08-24 | 2004-11-17 | ض� | 用于实现流控制的通用输入/输出体系结构、协议和方法 |
US20090248973A1 (en) * | 2008-03-26 | 2009-10-01 | Venkatesh Deshpande | System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment |
US20120166690A1 (en) * | 2010-12-28 | 2012-06-28 | Plx Technology, Inc. | Multi-root sharing of single-root input/output virtualization |
CN102650976A (zh) * | 2012-04-01 | 2012-08-29 | 中国科学院计算技术研究所 | 一种支持单根io虚拟化用户级接口控制装置及其方法 |
CN103392175A (zh) * | 2011-02-25 | 2013-11-13 | 国际商业机器公司 | Pci快速多根i/o虚拟化环境中的低延迟优先排序 |
US20170344391A1 (en) * | 2016-05-26 | 2017-11-30 | International Business Machines Corporation | Extending trusted hypervisor functions with existing device drivers |
-
2018
- 2018-04-20 CN CN201810360793.6A patent/CN110389711B/zh active Active
-
2019
- 2019-03-11 US US16/298,431 patent/US10621124B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547705A (zh) * | 2001-08-24 | 2004-11-17 | ض� | 用于实现流控制的通用输入/输出体系结构、协议和方法 |
US20090248973A1 (en) * | 2008-03-26 | 2009-10-01 | Venkatesh Deshpande | System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment |
US20120166690A1 (en) * | 2010-12-28 | 2012-06-28 | Plx Technology, Inc. | Multi-root sharing of single-root input/output virtualization |
CN103392175A (zh) * | 2011-02-25 | 2013-11-13 | 国际商业机器公司 | Pci快速多根i/o虚拟化环境中的低延迟优先排序 |
CN102650976A (zh) * | 2012-04-01 | 2012-08-29 | 中国科学院计算技术研究所 | 一种支持单根io虚拟化用户级接口控制装置及其方法 |
US20170344391A1 (en) * | 2016-05-26 | 2017-11-30 | International Business Machines Corporation | Extending trusted hypervisor functions with existing device drivers |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11604742B2 (en) * | 2019-06-25 | 2023-03-14 | Huawei Technologies Co., Ltd. | Independent central processing unit (CPU) networking using an intermediate device |
CN113498597A (zh) * | 2020-01-22 | 2021-10-12 | 华为技术有限公司 | 一种基于PCIe的数据传输方法及装置 |
CN113498597B (zh) * | 2020-01-22 | 2022-10-28 | 华为技术有限公司 | 一种基于PCIe的数据传输方法及装置 |
CN114285834A (zh) * | 2021-12-24 | 2022-04-05 | 山石网科通信技术股份有限公司 | 一种报文传输方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110389711B (zh) | 2023-04-04 |
US20190324930A1 (en) | 2019-10-24 |
US10621124B2 (en) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10700979B2 (en) | Load balancing for a virtual networking system | |
US9760391B2 (en) | Method and apparatus for network virtualization | |
CN105993009B (zh) | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 | |
WO2017113201A1 (zh) | 一种网络服务的生命周期管理方法及设备 | |
CN104320350B (zh) | 用于提供基于信用的流控制的方法及系统 | |
CN104104620B (zh) | 用于按优先级进行业务流处理的方法和系统 | |
CN104753715B (zh) | 混合sdn控制器 | |
CN102334112B (zh) | 用于虚拟机网络的方法和系统 | |
US9374241B2 (en) | Tagging virtual overlay packets in a virtual networking system | |
CN110389711A (zh) | 帮助端点设备实现sr-iov功能的方法、设备和计算机程序产品 | |
CN104618264A (zh) | 为了高效资源利用而在数据中心网络中自适应调度数据流的方法和系统 | |
US20110078679A1 (en) | Provisioning virtual machine placement | |
CN110275761A (zh) | 调度方法、装置和主节点 | |
CN104170334A (zh) | 利用事务来计算和传播网络转发状态 | |
US10230795B2 (en) | Data replication for a virtual networking system | |
CN105978817B (zh) | 用于传输数据的方法、存储器和网络适配器 | |
CN107959582A (zh) | 一种切片实例的管理方法及装置 | |
CN110519379A (zh) | 基于微服务的请求处理方法及设备 | |
CN110380992A (zh) | 报文处理方法、装置及网络流量采集设备 | |
US9753883B2 (en) | Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory | |
CN108141384A (zh) | Lisp移动性网络的自动配设 | |
CN109417507A (zh) | 部分延迟的报文访问 | |
CN103092676A (zh) | 虚拟机集群的模拟输入输出方法、装置及系统 | |
CN105491082B (zh) | 远程资源访问方法和交换设备 | |
GB2603996A (en) | Internet of Things device orchestration |
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 |