部分延迟的报文访问的制作方法

文档序号:16995289发布日期:2019-03-02 01:19阅读:186来源:国知局
部分延迟的报文访问的制作方法

本申请要求于2016年6月30日提交的、申请序列号为15/199,373、申请名称为“部分延迟的报文访问(partiallydeferredpacketaccess)”的美国非临时专利申请的优先权,其全部内容通过引用结合在本申请中。

本公开涉及直接内存访问,尤其涉及部分延迟的报文访问。



背景技术:

软件交换机可以在诸如服务器之类的主机上实现,并且可以用于将数据从一个连接的设备转发到另一个连接的设备,非常类似于硬件路由器。执行报文的直接内存访问(directmemoryaccess,dma)可将数据传送到软件交换机,确定数据的目的地,然后向目的地发起数据的进一步传送。操作软件交换机的主机可能需要相当大的缓冲器空间,以便接收数据并确定目的地。

在实现软件交换机的一些服务器中,可以使用网络加速器来加速网络功能,包括例如虚拟交换。在网络加速器上,将数据作为报文接收,并且基于由主机上的系统软件提供的元数据和所解析的报文头做出报文交换决策。该报文通常是来自主机系统的访问的直接内存(directmemoryaccessed,dma'ed),例如通过快捷外围部件互连标准(peripheralcomponentinterconnectexpress,pci-e)总线。

网络加速器能够将整个报文dma到加速器,然后解析该报文并做出转发决策。当报文的目的地是虚拟端口/接口时,可以发起第二dma。这使得加速器具有大到足以缓冲报文的存储器,每个报文大小可以为64b-64k。第二dma还增加了报文处理的等待时间。



技术实现要素:

一种方法包括:互连执行报文的部分直接内存访问以获得报文头的报文头数据,所述互连使用所述报文头数据来生成报文转发决策,所述报文转发决策用于标识一个报文目的地址,并且所述互连向所述报文目的地址发起报文有效载荷的直接内存访问。

非暂时性计算机可读存储设备上存储有用于由主机执行以执行操作的指令。所述操作包括:执行报文的部分直接内存访问以获得报文头的报文头数据;使用所述报文头数据来生成标识报文目的地址的报文转发决策;以及向所述报文目的地址发起报文有效载荷的直接内存访问。

一种系统包括处理电路和具有耦合到所述处理电路的报文缓冲器的存储设备。所述处理电路用于执行以下操作,包括:执行报文的部分直接内存访问以获得报文头的报文头数据;使用所述报文头数据来生成标识报文目的地址的报文转发决策;以及向所述报文目的地址发起报文有效载荷的直接内存访问。

附图说明

图1是示例实施例提供的用于通过在主机上执行的虚拟交换操作来执行高效数据传输的系统的框图;

图2是示例实施例提供的待传送的报文的框图;

图3是示例实施例提供的图1所述系统的操作流程框图;

图4是示例实施例提供的包括耦合到多个虚拟机的交换机的系统的框图,其中该多个虚拟机包括用于提供联网通信服务的虚拟网络功能(virtualnetworkfunction,vnf);

图5是示例实施例提供的报文转发方法的流程图;且

图6是示例实施例提供的用于实现算法和执行方法的电路的框图。

具体实施方式

以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。足够详细地描述这些实施例以使所属领域的技术人员能够实践本发明,并且应理解可利用其它实施例,并且可在不脱离本发明的范围的情况下作出结构、逻辑和电性变化。因此,以下描述的示例性实施例并不当作限定,本发明的范围由所附权利要求书界定。

在一个实施例中,本文所述的功能或算法可在软件中实施。软件可由存储在本地或联网的计算机可读介质或计算机可读存储设备,如一种或多种基于非瞬时性存储器或其它类型的硬件的存储设备,上的计算机可执行指令组成。另外,此类功能对应于模块,该模块可以是软件、硬件、固件或其任何组合。可视需要在一个或多个模块中执行多个功能,且描述的实施例仅仅是示例。软件可在数字信号处理器、asic、微处理器或运行于计算机系统(如个人计算机、服务器或其它计算机系统)的其它类型的处理器上执行,将此类计算机系统转变成经过专门编程的机器。

在主机上操作的软件交换机用于以有效的方式在多个不同设备之间传输数据。为了加速数据传输,该互连接收待传输的报文,并发起报文的报文头的部分dma。使用部分dma以便获得足够的报文头来做出转发决策。部分dma可以获得一部分或全部的报文头。使用所获得的报文头部分,执行部分dma以识别报文的目的地。然后发起有效载荷的dma(即,报文头的剩余部分,可能包括报文头的最后部分),以便将报文转发到目的地。在一些示例中,转发包括整个报文,既有报文头又有有效载荷。

与为了传送数据而执行两个完整的dma的现有方法相比,使用根据本文任一实施例的部分dma节约了时间。在此根据本文中任一实施例的部分dma的使用比传统dma操作使用更少的存储器。在此根据本文中任一实施例的部分dma的使用比传统dma操作使用更少的系统资源来传送数据,且允许推迟dma,该dma至少包括报文的有效载荷的剩余部分,直到通过使用部分dma来识别目的地为止。

图1是示例实施例提供的用于执行有效数据传输的系统100的框图。诸如机器1110到机器n115之类的多个设备可以通过诸如有线或无线网络之类的通信链路120或诸如外设元件互连(peripheralcomponentinterconnect,pci)标准总线之类的内部总线来耦合。在一些实施例中,设备可以在单独的系统上,并且还可以包括通过内部总线耦合的单个系统中的设备。在另外的实施例中,设备可以是虚拟机或容器。可以认为容器是轻量级形式的虚拟机,其位于诸如linux之类的操作系统之上,并且共享操作系统内核功能。

互连(interconnect)125可以通过通信链路120耦合。该互连125通过通信链路120在组件或系统之间传送报文。在一些示例中,互连125包括或类似于网桥、虚拟交换机、路由器、网关或其它类似设备。这些示例仅仅是示例,而不是穷尽性或限制性示例。互连125可以包括交换机和操作交换机并提供路由功能的处理系统。在一些示例中,交换机包括以软件实现的虚拟交换机。在一些实施例中,互连125执行报文处理功能,该报文处理功能包括部分dma和延迟dma数据传送,例如在设备/系统之间传送报文。在一些示例中,互连125执行数据传送,包括路由正在传送的报文。在一些示例中,互连125可用于配置硬件以执行数据传送。在另外的实施例中,在互连125中可以包括硬件加速器以加速数据传送操作。

图2是示例实施例提供的待传送的报文200的框图。报文200包括报文头210和有效载荷220。在各种实施例中,有效载荷220通常显著大于报文头210。报文头210包括诸如目的地标识符225之类的信息,互连130可以使用该信息来将报文200传送到一个或多个目的地设备。在一个实施例中,目的地标识符225可以位于报文头的不同位置。所示的位置位于或靠近报文头的末端,但是在另外的实施例中或在不同系统的实施方式中也可以靠近报文头的中间或开始。在一个实施例中,报文头的从开始到包括目的地标识符225的部分称为必要的报文头长度。在一些实施例中,必要的报文头长度可以包括整个报文头,或者可以刚好足够长以确保目的地标识符225包括在将报文头传送到互连130的传送中。

图3是图1系统的操作流程框图300。在310处,将源机器示为应用程序/vm/容器。应用程序/vm/容器310具有以图2所示的一个或多个报文200的形式传送的数据。在315处,执行(必要报文头长度的)部分dma以向互连325传送部分报文头数据。互连325解析报文头210以获得目的地标识符225(见图2)并确定将分组200路由到何处。在330处,用描述有效载荷的直接内存访问路径的路由信息扩充的报文头可传送到335处的目的地应用程序/vm/容器,以发起有效载荷220的dma。传送到335处的目的地应用程序/vm/容器的传送也可以是dma类型的传送。应用程序/vm/容器335使用从报文头dma获得的报文头来通过进一步的dma操作直接从应用程序/vm/容器310中获得有效载荷220。由于报文头210通常比有效载荷220短得多,因此主机和机器之间的报文头的初始部分dma比多次dma整个报文的现有方法使用更少的计算资源。

图4是包括耦合到多个应用程序/vm/容器415、420的虚拟交换机410的系统400的框图。系统400包括虚拟网络功能(virtualnetworkfunction,vnf),以允许通过网络或虚拟网络传送数据。在一个实施例中,应用程序/vm/容器包括用于在虚拟机上运行隔离操作系统或容器的linux容器(container)。

应用程序/vm/容器415和420可以包括在425、430处指示的虚拟网络接口卡(virtualnetworkinterfacecard,vnic),以耦合到虚拟交换机410的端口,其中将端口指示为小矩形432。在一个实施例中,网络加速器435可以耦合到虚拟交换机410以提供快速数据路径。该加速器435还可以耦合到交换机440,交换机440又可以耦合到物理网络450,例如数据中心或因特网。虚拟交换机410可以在也称为主机的服务器上操作,该服务器还可以包括加速器435和交换机440。在一个实施例中,虚拟交换机410可以是在主机上执行的基于软件的交换机。主机可以直接在服务器上运行,或者可以是由运行在服务器上的管理程序管理的虚拟主机。

在一个实施例中,虚拟交换机410可以接收将报文从一个应用程序/vm/容器415转发到另一个应用程序/vm/容器420的请求,或者在一些实施例中,转发到通过物理网络450耦合的另一个设备。该请求可以包括虚拟机415中的报文的地址,或者指定当交换机准备好开始转发报文的过程时可以在何处找到该地址。

在一个实施例中,虚拟交换机或主机软件将知道用于报文解析和转发的协议。这样的知识允许在元数据中配置报文转发决策长度,也称为“必要报文头长度”(necessaryheaderlength,nhl),其可以与加速器435交换。加速器435读取nhl并且仅通过部分直接内存访问455或复制功能获得目标报文的指定长度,以从应用程序/vm/容器415的存储器获得nhl。部分直接内存访问可以获得填充到报文的字对齐长度中的报文头的一部分。使用与报文头的该部分相对应的报文的所检索的部分,虚拟交换机410在460处解析所检索的部分,并在465处将其提供给目的地应用程序/vm/容器420。随后,执行第二有效载荷dma/复制470以将有效载荷直接dma到目的地址(或仅丢弃报文)。

部分延迟报文访问可以大大降低总线的利用率,例如快捷外围部件互连标准(peripheralcomponentinterconnectexpress,pci-e)总线。与整个分组的完整的dma相比,部分dma报文的通信负载显著降低。此外,可以避免等待dma整个报文的等待时间。

第二dma470可在解析460的转发决策之后完成,因此dma可将有效载荷直接移动到由报文头的第一部分dma确定的目的地址。目的地址可以是另一个系统存储器。可以极大地节约加速器435上的缓冲资源,并且可以提高性能。

可以在虚拟交换机410和虚拟nic425或430之间使用相同的方法,其中可以遵循相同的机制来部分延迟从前端dma/复制数据。

图5是报文转发方法500的流程图。在一个实施例中,在步骤510,通过互连执行报文的部分直接内存访问,以获得报文头的报文头数据。部分直接内存访问获得报文头的至少一部分,包括标识报文的目的地的目的地标识符。在步骤520,报文头数据用于生成标识报文目的地址的报文转发决策。该互连使用所获得的报文头数据的部分来生成报文转发决策。在步骤530,由互连向报文目的地址发起报文有效载荷的直接内存访问。在一些示例中,互连既发起有效载荷dma操作,又随后执行有效载荷dma操作。或者,互连发起有效载荷dma操作,且另一设备、组件或应用程序执行有效载荷dma操作。

在一个实施例中,报文转发决策长度确定在部分直接内存访问操作中要获得的报文头的量。获得报文转发决策长度,并将其用于确定通过部分直接内存访问获得的数据量。报文转发决策长度可以作为元数据获得,例如从主机或类似设备或系统获得。可以将报文的部分直接内存访问填充到报文的字对齐长度中。在一些实施例中,互连可以是报文交换机。在一些实施例中,互连可以是报文交换机硬件加速器。

在一个实施例中,报文交换机包括虚拟交换机和虚拟网络接口卡。在另一个实施例中,部分直接内存访问包括在报文交换机处接收用于转发报文的请求。可以基于使交换机能够发起部分直接内存访问的请求来获得报文的地址。

图6是示例实施例提供的用于实现算法并执行包括虚拟交换在内的操作的客户端、服务器、主机或云资源的电路的框图。在各种实施例中不需要使用所有组件。

呈计算机600形式的一个示例计算设备可包括处理单元602、存储器603、可移动存储器610和不可移动存储器612。在一些实施例中,存储器603可用于提供报文缓冲器,该报文缓冲器可用于接收部分和/或全部dma的。虽然将示例计算设备图示并描述为计算机600,但该计算设备在不同实施例中可呈不同形式。例如,计算设备或者也可以为智能电话、平板电脑、智能手表或能够执行软件交换机并且包括与图6示出和描述相同或相似部件的其它计算设备。诸如智能电话、图形输入板和智能手表之类的设备通常统称为移动设备或用户设备。此外,虽然将各种数据存储部件示为计算机600的一部分,但是存储器还可以或可替换地包括可通过网络访问的基于云的存储器,诸如基于因特网或服务器的存储器。

存储器603可以包括易失性存储器614和/或非易失性存储器608。计算机600可包括或能够接入包括多种计算机可读介质的计算环境,该计算机可读介质例如易失性存储器614和非易失性存储器608、可移动存储器610和不可移动存储器612。计算机存储器包括随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)和电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、快闪存储器或其它存储器技术、压缩光盘只读存储器(compactdiscread-onlymemory,cdrom)、数字通用光盘(digitalversatiledisks,dvd)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁性存储设备,或能够存储计算机可读指令的任何其它介质。

计算机600可包括或能够接入包括输入606、输出604和通信连接616的计算环境。输出604可包括也可用作输入设备的显示设备,例如触摸屏。输入606可包括触摸屏、触摸板、鼠标、键盘、相机、一个或多个设备专用按钮、集成在计算机600内或通过有线或无线数据连接耦合到计算机600的一个或多个传感器和其它输入设备中的一个或多个。计算机可使用通信连接连接到一或多个远程计算机(例如数据库服务器)来在联网环境中操作。远程计算机可包括个人计算机(personalcomputer,pc)、服务器、路由器、网络pc、对等装置或其它共同网络节点,等等。通信连接可包括局域网(localareanetwork,lan)、广域网(wideareanetwork,wan)、蜂窝网、wifi、蓝牙或其它网络。

存储在计算机可读介质(即,程序618)上的计算机可读指令可由计算机600的处理单元602执行,以在不同实施例中的这些dma中涉及的各种组件中执行上述部分和全部的dma。术语“计算机可读介质和存储设备”不包括载波,在某种程度上,人们认为载波过于短暂。存储器还可以包括诸如在620处指示的存储区域网络(storageareanetwork,san)之类的联网存储器。

示例:

1.在示例1中,一种方法包括互连,该互连执行报文的部分直接内存访问以获得报文头的报文头数据,该互连使用该报文头数据来生成标识报文目的地址的报文转发决策,并且该互连向该报文目的地址发起报文有效载荷的直接内存访问。

2.根据示例1的方法,该方法还包括预备操作:获得与报文头的量相对应的报文转发决策长度,以在部分直接内存访问中获得。

3.根据示例2的方法,报文转发决策长度是从元数据推导的。

4.根据示例2的方法,将报文的部分直接内存访问填充到报文的字对齐长度中。

5.根据示例1-4中任一项的方法,转发决策是通过包括报文交换机硬件加速器的报文交换机生成的。

6.根据示例1-5中任一项的方法,转发决策是通过包括虚拟交换机和虚拟网络接口卡的报文交换机生成的。

7.根据示例1-6中任一项的方法,该方法还包括接收用于转发该报文的请求。

8.根据示例7的方法,该方法还包括基于该请求获得该报文的目的地址。

9.在示例9中,一种非暂时性计算机可读存储设备上存储有用于由主机执行以执行以下操作的指令。该操作包括:向互连执行报文的部分直接内存访问,以获得报文头的报文头数据;使用该报文头数据生成标识报文目的地址的报文转发决策;以及向报文目的地址发起报文有效载荷的直接内存访问。

10.示例9的计算机可读存储设备还包括:获得与该报文头的量相对应的报文转发决策长度,以在该部分直接内存访问中获得。

11.根据示例10的计算机可读存储设备,其中报文转发决策长度是作为元数据获得的。

12.根据示例10的计算机可读存储设备,其中将该报文的部分直接内存访问填充到该报文的字对齐长度中。

13.根据示例9-12中任一项的计算机可读存储设备,其中生成标识报文目的地址的报文转发决策是由报文交换机硬件加速器执行的。

14.根据示例9-13中任一项的计算机可读存储设备,其中该互连包括虚拟交换机和虚拟网络接口卡。

15.在示例15中,一种系统包括处理电路和具有耦合到该处理电路的报文缓冲器的存储设备。在一些实施例中,存储设备可以包括报文缓冲器。该处理电路用于执行以下操作,包括:执行报文的部分直接内存访问以获得报文头的报文头数据;使用该报文头数据来生成标识报文目的地址的报文转发决策;以及向该报文目的地址发起报文有效载荷的直接内存访问。

16.根据示例15的系统,该操作还包括获得与报文头的量相对应的报文转发决策长度,以在该部分直接内存访问中获得。其中,将该报文转发决策长度作为元数据获得,并且其中,将该报文的部分直接内存访问填充到该报文的字对齐长度中。

17.根据示例15-16中任一项的系统,该系统还包括执行该报文转发决策操作的报文交换机加速器。

18.根据示例15-17中任一项的系统,其中与存储在存储设备上的代码组合的处理电路包括虚拟交换机和虚拟网络接口卡。

19.根据示例15-18中任一项的系统,其中该操作还包括在报文交换机处接收用于转发报文的请求。

20.根据示例19的系统,其中该操作还包括基于请求获得报文的地址。

尽管上文已详细描述若干实施例,但是其它修改也是可能的。例如,图式中所描述的逻辑流程不需要按所示出的特定次序或先后次序来达到所需结果。可以提供其它步骤,或可以从所描述的流程中除去步骤,并且可以向所描述的系统添加其它组件或从该系统去除其它组件。其它实施例可在所附权利要求书的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1