用于对出口上的网络分组进行重排序的技术

文档序号:1601345 发布日期:2020-01-07 浏览:19次 >En<

阅读说明:本技术 用于对出口上的网络分组进行重排序的技术 (Techniques for reordering network packets on egress ) 是由 B.理查森 A.坎宁安 A.J.莱基 B.赖安 P.弗勒明 P.康诺尔 D.亨特 A. 于 2019-05-29 设计创作,主要内容包括:用于对出口上的网络分组进行重排序的技术包括网络接口控制器(NIC),其被配置成使所接收的网络分组与描述符相关联,生成所接收的网络分组的序列标识符,并且将所生成的序列标识符插入到相关联的描述符中。NIC还被配置成确定所接收的网络分组是否要被从与NIC相关联的计算设备传输至另一计算设备,并且响应于所接收的网络分组要被传输至另一计算设备的确定而将描述符插入到描述符传输队列中。此外,NIC被配置成基于描述符在描述符传输队列中的位置来传输网络分组,所述位置基于所生成的序列标识符。本文中描述了其他实施例。(Techniques for reordering network packets on an egress include a Network Interface Controller (NIC) configured to associate a received network packet with a descriptor, generate a sequence identifier for the received network packet, and insert the generated sequence identifier into the associated descriptor. The NIC is further configured to determine whether the received network packet is to be transmitted from the computing device associated with the NIC to another computing device, and insert the descriptor into the descriptor transmission queue in response to a determination that the received network packet is to be transmitted to the other computing device. Further, the NIC is configured to transmit the network packet based on a location of the descriptor in the descriptor transmission queue, the location based on the generated sequence identifier. Other embodiments are described herein.)

用于对出口上的网络分组进行重排序的技术

背景技术

现代计算设备已经成为用于个人、商业和社交用途的普遍存在的工具。照此,许多现代计算设备能够连接到各种数据网络,包括因特网,以通过各种数据网络以不同的速率传输和接收数据通信。为了促进计算设备之间的通信,数据网络通常包括一个或多个网络计算设备(例如,计算服务器、存储服务器等),以(例如,经由交换机、路由器等)路由进入/离开网络的通信(例如,北-南网络业务(traffic))和在网络中的网络计算设备之间的通信(例如,东-西网络业务)。在目前的分组交换网络架构中,以联网计算设备之间的网络分组的形式传输数据。在高级别处,在一个计算设备处将数据分组化成网络分组,并且通过网络经由传输设备(例如,计算设备的网络接口控制器(NIC))将所得分组传输到另一计算设备。

然而,某些网络基础设施,诸如数据中心,可以包括成千上万或更多个这样的计算节点,使得网络分组以顺序次序的传输和接收在最好的情况下也是困难的。照此,已经实现了各种乱序的端到端协议以管理传输和接收可能在任何给定时间处于飞行中(in flight)的可能数千个网络分组。例如,为了处置这样大的乱序网络业务量,已经实现了微架构技术来提供硬件级别端到端重试协议以利用简单地接受网络分组序列中的下一分组,而不管它们被接收的次序。在一些情况下,已经利用软件来通过重定序网络分组的头部以在没有硬件检查的情况下恢复顺序次序而施加可靠性;然而,这样的基于软件的重定序通常不适用于直接的数据放置操作或原子操作。类似地,传输控制协议(TCP)支持选择性拒绝能力;然而,这样的使用情况通常取决于主机存储器中的所接收的乱序网络分组的重组,其通常引入开销和延时。

具体实施方式

虽然本公开的概念容许有各种修改和替代形式,但是已经通过示例的方式在图中示出并且将在本文中详细描述其特定实施例。然而,应当理解,不存在将本公开的概念限制到所公开的特定形式的意图,而相反,意图是覆盖与本公开和随附权利要求一致的所有修改、等同物和替代方案。

在说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可能包括特定特征、结构或特性,但是每一个实施例可能或可能不一定包括该特定特征、结构或特性。而且,这样的短语不一定是指相同的实施例。另外,当结合实施例描述特定特征、结构或特性时,主张:结合其他实施例实现这样的特征、结构或特性处于本领域技术人员的知识内,无论是否被明确地描述。此外,应当领会,被包括在以“A、B和C中的至少一个”的形式的列表中的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。

在一些情况下,可以以硬件、固件、软件或其任何组合来实现所公开的实施例。所公开的实施例还可以被实现为一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质所承载的或存储在其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以体现为任何存储设备、机构或用于存储或传输以可由机器读取的形式的信息的其他物理结构(例如,易失性或非易失性存储器、媒体盘或其他媒体设备)。

在图中,可能以特定布置和/或排序示出一些结构特征或方法特征。然而,应当领会,可能不需要这样的特定布置和/或排序。更准确地说,在一些实施例中,可以以与说明性附图中所示的方式和/或次序不同的方式和/或次序布置这样的特征。此外,结构特征或方法特征在特定图中的包括不意在暗示这样的特征在所有实施例中都被需要,并且在一些实施例中可以不被包括或者可以与其他特征组合。

现在参考图1,在说明性实施例中,用于对出口上的网络分组进行重排序的系统100包括源计算设备102、中间计算设备106和目的地计算设备108,其中的每一个经由网络104而通信地耦合。虽然被说明性地示出为具有单个源计算设备102、单个中间计算设备106和单个目的地计算设备108,但是系统100可以包括可以根据特定网络分组的路径而标识为源、中间或目的地计算设备的多个计算设备。相应地,应当领会,出于向描述提供清楚的目的,已经在本文中将源计算设备102、中间计算设备106和目的地计算设备108说明性地指定为是“源”、“中间物”和“目的地”中的一个,并且源计算设备102、中间计算设备106和/或目的地计算设备108可以能够执行本文中描述的任何功能。还应当领会,源计算设备102、中间计算设备106和/或目的地计算设备108可以驻留在同一数据中心或高性能计算(HPC)环境中。换言之,源计算设备102、中间计算设备106和目的地计算设备108中的一个或多个可以驻留在同一网络中,其经由一个或多个互连而被连接。

在使用中,源计算设备102通过网络104经由中间计算设备106向目的地计算设备108传输网络业务(例如,网络分组、帧等)。换言之,中间计算设备106从源计算设备102接收网络分组,在其上执行某个级别的处理,并且然后向目的地计算设备108传输经处理的网络分组。应当领会,源计算设备102、中间计算设备106和目的地计算设备108中的每一个可以在适用时通过网络而传输/接收网络业务。

当接收到网络分组时,中间计算设备106,或更特别地,中间计算设备106的网络接口控制器(NIC)212,(例如,经由直接存储器访问(DMA)操作)将与所接收的网络分组相关联的数据的至少一部分存储到数据缓冲器(buffer)中。此外,如以下将进一步详细描述的,NIC 212为每一个所接收的网络分组配置描述符。应当领会,在适用时,每一个描述符包括描述网络分组的信息,以及分组处理/卸载信息。每一个描述符包括可用于标识已经存储了网络分组数据的主机存储器中的数据缓冲器的物理地址的信息(例如,指向数据缓冲器的指针)。NIC 212此外被配置成为每一个所接收的网络分组生成序列标识符,并且不同于目前的技术,将序列标识符包括在与相应网络分组相关联的描述符的指定字段中。序列标识符可以是可用于标识所接收的网络分组相对于其他先前接收的和/或将来接收的网络分组的次序的任何类型的数据,诸如时间戳、序列号、递增计数器的值等。在一些实施例中,序列标识符可以基于网络分组的特性,诸如流或工作负荷类型、源、目的地等。

NIC 212然后可以在与所接收的网络分组相关联的数据的至少一部分上执行一个或多个处理操作。在完成(多个)处理操作时,NIC 212还被配置成调度经处理的网络分组以供传输(例如,到目的地计算设备108)并且使对应的描述符在传输描述符队列中入队。相应地,不同于目前的技术,NIC 212被配置成基于其对应的序列标识符而对入队的网络分组描述符进行重排序,并且基于描述符在传输描述符队列中的次序来传输网络分组。

换言之,以与NIC 212可以在接收时提供定序元数据相同的方式,序列标识符可以被NIC 212在传输时再次检索,使得NIC 212可以在传输网络分组之前执行网络分组在传输队列中的重排序。应当领会,通过将序列标识符包括在描述符中,可以在传输描述符队列上做出对传输的重排序(即,而不迫使NIC 212首先获取网络分组)。相应地,由于对描述符而不是网络分组本身执行重排序,因此可以节省如在NIC 212上存储所获取的网络分组可能所需要的通信带宽(例如,***组件互连(PCI)带宽)和任何附加的贮存器。虽然在本文中被说明性地描述为由NIC 212执行,但是应当领会,重排序可以由诸如I/O设备、加速器等的任何其他设备在卸载操作期间执行。

中间计算设备106可以体现为能够执行本文中描述的功能的任何类型的计算或计算机设备,包括但不限于计算机、服务器(例如,独立的、机架安装的、刀片式等)、滑板(sled)(例如,计算滑板、加速器滑板、存储滑板、存储器滑板等)、增强或智能NIC(例如,主机结构接口(HFI))、网络器具(例如,物理的或虚拟的)、web器具、分布式计算系统、基于处理器的系统和/或多处理器系统。应当领会,可以在利用一对一入口(ingress)/出口端口(例如,网关、因特网协议安全(IPSec)器具等)但是并非所有分组处理工作负荷(例如,向多个端口分发业务的路由器或交换机)的任何线缆中的块(bump-in-the-wire)应用上执行本文中描述的功能。

现在参考图2,示出说明性的中间计算设备106。说明性的中间计算设备106包括计算引擎200、I/O子系统206、一个或多个数据存储设备208、通信电路210,并且在一些实施例中,包括一个或多个***设备214。应当领会,在其他实施例中,中间计算设备106可以包括其他或附加的组件,诸如在典型的计算设备中通常发现的那些(例如,各种输入/输出设备和/或其他组件)。此外,在一些实施例中,说明性组件中的一个或多个可以被合并在另一组件中或者以其他方式形成另一组件的一部分。

计算引擎200可以体现为能够执行如在本文中描述的各种计算功能的任何类型的设备或设备集合。在一些实施例中,计算引擎200可以体现为单个设备,诸如集成电路、嵌入式系统、现场可编程阵列(FPGA)、片上系统(SOC)、专用集成电路(ASIC)、可重配置的硬件或硬件电路、或促进本文中描述的功能的执行的其他专用硬件。此外,在一些实施例中,计算引擎200可以包括或者可以体现为一个或多个处理器202(即,一个或多个中央处理单元(CPU))和存储器204。

(多个)处理器202可以体现为能够执行本文中描述的功能的任何类型的(多个)处理器。例如,(多个)处理器202可以体现为一个或多个单核处理器、多核处理器、数字信号处理器(DSP)、微控制器或其他(多个)处理器或(多个)处理/控制电路。在一些实施例中,(多个)处理器202可以体现为、包括或以其他方式耦合到FPGA、ASIC、可重配置的硬件或硬件电路、或促进本文中描述的功能的执行的其他专用硬件。

存储器204可以体现为能够执行本文中描述的功能的任何类型的易失性或非易失性存储器或数据贮存器。应当领会,存储器204可以包括主存储器(即,主要存储器)和/或高速缓冲存储器(即,可以被比主存储器更快地访问的存储器)。易失性存储器可以是存储介质,所述存储介质需要功率来维持由该介质存储的数据的状态。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。

计算引擎200经由I/O子系统206而通信地耦合到中间计算设备106的其他组件,所述I/O子系统206可以体现为促进利用处理器202、存储器204和中间计算设备106的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统206可以体现为或以其他方式包括存储器控制器中枢(hub)、输入/输出控制中枢、集成传感器中枢、固件设备、通信链路(例如,点到点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统206可以形成SoC的一部分,并且连同处理器202、存储器204和中间计算设备106的其他组件中的一个或多个一起合并在单个集成电路芯片上。

所述一个或多个数据存储设备208可以体现为被配置用于数据的短期或长期存储的任何类型的(多个)存储设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。每一个数据存储设备208可以包括存储用于数据存储设备208的数据和固件代码的系统分区。每一个数据存储设备208还可以包括存储用于操作系统的数据文件和可执行文件的操作系统分区。

通信电路210可以体现为能够实现中间计算设备106与诸如源计算设备102之类的其他计算设备以及诸如接入点、网络交换机/路由器等的任何网络通信实现设备之间的通信以允许通过网络104的通信的任何通信电路、设备或其集合。相应地,通信电路210可以被配置成使用任何一个或多个通信技术(例如,无线或有线通信技术)和相关联的协议(例如,以太网、蓝牙®、Wi-Fi®、WiMAX、LTE、5G等)来实现这样的通信。

应当领会,在一些实施例中,通信电路210可以包括执行流水线(pipeline)逻辑(例如,硬件算法)以用于执行本文中描述的功能的专用电路、硬件或其组合,执行本文中描述的功能包括处理网络分组(例如,解析所接收的网络分组、为每一个所接收的网络分组确定目的地计算设备、将网络分组转发到中间计算设备106的相应主机缓冲器的特定缓冲队列等)、执行计算功能等。

在一些实施例中,如在本文中描述的通信电路210的功能中的一个或多个的执行可以由通信电路210的专用电路、硬件或其组合来执行,所述专用电路、硬件或其组合可以体现为SoC或以其他方式形成中间计算设备106的SoC的一部分(例如,连同处理器202、存储器204和/或中间计算设备106的其他组件一起合并在单个集成电路芯片上)。替代地,在一些实施例中,专用电路、硬件或其组合可以体现为中间计算设备106的一个或多个分立的处理单元,其中的每一个可以能够执行本文中描述的功能中的一个或多个。

说明性的通信电路210包括NIC 212,所述NIC 212在一些实施例(例如,高性能计算(HPC)环境)中也可以被称为主机结构接口(HFI)。NIC 212可以体现为一个或多个内插板、子插件板、网络接口卡、控制器芯片、芯片组或可以被中间计算设备106用于与另一计算设备(例如,源计算设备102)连接的其他设备。在一些实施例中,NIC 212可以体现为包括一个或多个处理器的SoC的一部分,或者被包括在还包含一个或多个处理器的多芯片封装上。在一些实施例中,NIC 212可以包括本地处理器(未示出)和/或本地存储器(未示出),其两者在NIC 212本地。在这样的实施例中,NIC 212的本地处理器可以能够执行本文中描述的处理器202的功能中的一个或多个。此外或替代地,在这样的实施例中,NIC 212的本地存储器可以在板级别、插座级别、芯片级别和/或其他级别处集成到中间计算设备106的一个或多个组件中。

所述一个或多个***设备214可以包括可用于向中间计算设备106中输入信息和/或从中间计算设备106接收信息的任何类型的设备。***设备214可以体现为可用于向中间计算设备106中输入信息的任何辅助设备,诸如键盘、鼠标、麦克风、条形码阅读器、图像扫描器等,或者可用于从中间计算设备106输出信息的任何辅助设备,诸如显示器、扬声器、图形电路、打印机、投影仪等。应当领会,在一些实施例中,***设备214中的一个或多个可以起输入设备和输出设备两者(例如,触摸屏显示器、显示屏上方的数字转换器等)的作用。还应当领会,连接到中间计算设备106的***设备214的类型可以取决于例如中间计算设备106的类型和/或预期用途。此外或替代地,在一些实施例中,***设备214可以包括一个或多个端口,诸如USB端口,例如用于将外部***设备连接到中间计算设备106。

源计算设备102和目的地计算设备108可以体现为能够执行本文中描述的功能的任何类型的计算或计算机设备,包括但不限于智能电话、移动计算设备、平板计算机、膝上型计算机、笔记本计算机、计算机、服务器(例如,独立的、机架安装的、刀片式等)、滑板(例如,计算滑板、加速器滑板、存储滑板、存储器滑板等)、网络器具(例如,物理的或虚拟的)、web器具、分布式计算系统、基于处理器的系统和/或多处理器系统。虽然未说明性地示出,但是应当领会,源计算设备102和目的地计算设备108中的每一个包括与说明性的中间计算设备106的那些组价类似和/或相同的组件。照此,为了描述的清楚,不在本文中重复相同组件的图和描述,其中要理解,在适用时,以上关于中间计算设备106所提供的对应组件的描述同样适用于源计算设备102和目的地计算设备108的对应组件。当然,应当领会,取决于实施例,源计算设备102和目的地计算设备108可以包括附加的和/或替代的组件。

网络104可以体现为任何类型的有线或无线通信网络,包括但不限于无线局域网(WLAN)、无线个域网(WPAN)、边缘网络(例如,多接入边缘计算(MEC)网络)、雾网络、蜂窝网络(例如,全球移动通信系统(GSM)、长期演进(LTE)、5G等)、电话网络、数字订户线(DSL)网络、电缆网络、局域网(LAN)、广域网(WAN)、全球网络(例如,因特网)或其任何组合。应当领会,在这样的实施例中,网络104可以充当集中式网络,并且在一些实施例中可以通信地耦合到另一网络(例如,因特网)。相应地,网络104可以包括多种其他虚拟和/或物理网络计算设备(例如,路由器、交换机、网络中枢、服务器、存储设备、计算设备等),如促进中间计算设备106与源计算设备102以及中间计算设备106与目的地计算设备108之间的通信所需要的,这未被示出以保持描述的清楚。

现在参考图3,在使用中,中间计算设备106在操作期间建立环境300。说明性的环境300包括网络业务入口管理器308、网络业务出口管理器312、描述符队列管理器316和处理操作管理器318。环境300的各种组件可以体现为硬件、固件、软件或其组合。照此,在一些实施例中,环境300的组件中的一个或多个可以体现为电路或电气设备的集合(例如,网络业务入口管理电路308、网络业务出口管理电路312、描述符队列管理电路316、处理操作管理电路318等)。

应当领会,在这样的实施例中,所述电路(例如,网络业务入口管理电路308、网络业务出口管理电路312、描述符队列管理电路316、处理操作管理电路318等)中的一个或多个可以形成计算引擎200(即,(多个)处理器202和/或存储器204)、I/O子系统206、网络接口控制器212、(多个)数据存储设备208、专用集成电路(ASIC)、诸如现场可编程门阵列(FPGA)之类的可编程电路和/或中间计算设备106的其他组件中的一个或多个的一部分。

例如,如示意性示出的,网络业务入口管理电路308、网络业务出口管理电路312、描述符队列管理电路316和处理操作管理电路318形成NIC 212的一部分。然而,应当领会,在其他实施例中,在本文中被描述为由网络业务入口管理电路308、网络业务出口管理电路312、描述符队列管理电路316和/或处理操作管理电路318执行的一个或多个功能可以至少部分地由中间计算设备106的一个或多个其他组件(诸如计算引擎200、I/O子系统206、通信电路210和/或中间计算设备106的其他组件)执行。还应当领会,相关联的指令可以存储在存储器204、数据存储设备208和/或其他数据存储位置中,其可以由处理器202和/或其他计算处理器执行。

此外,在一些实施例中,说明性组件中的一个或多个可以形成另一组件的一部分,和/或说明性组件中的一个或多个可以独立于彼此。另外,在一些实施例中,环境300的组件中的一个或多个可以体现为虚拟化的硬件组件或仿真架构,其可以由NIC 212、计算引擎200或中间计算设备106的其他软件/硬件组件建立和维护。还应当领会,环境300的组件中的一个或多个的功能性中的一些可能要求硬件实现,在此情况下,实现这样的功能性的组件的实施例将至少部分地体现为硬件。应当领会,中间计算设备106可以包括其他组件、子组件、模块、子模块、逻辑、子逻辑和/或在计算设备中通常发现的设备(例如,设备驱动器、接口等),为了描述的清楚而未在图3中图示它们。

在说明性的环境300中,中间计算设备106此外包括接收队列数据302、描述符数据304和传输队列数据306,其中的每一个可以由中间计算设备106的各种组件和/或子组件访问。另外,接收队列数据302、描述符数据304和传输队列数据306中的每一个可以由中间计算设备106的各种组件访问。此外,应当领会,在一些实施例中,存储在接收队列数据302、描述符数据304和传输队列数据306中的每一个中或以其他方式由接收队列数据302、描述符数据304和传输队列数据306中的每一个表示的数据可以不相对于彼此互斥。例如,在一些实现方式中,存储在描述符数据304中的数据还可以被作为接收队列数据302和/或传输队列数据306的一部分或者以另一替代布置进行存储。照此,尽管在本文中将由中间计算设备106利用的各种数据描述为特定的离散数据,但是在其他实施例中,这样的数据可以被组合、聚合和/或以其他方式形成单个或多个数据集的部分,其包括重复的副本。

网络业务入口管理器308,其如以上所讨论的那样可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合,被配置成接收入站网络业务。为了这么做,网络业务入口管理器308被配置成促进到中间计算设备106的入站网络通信(例如,网络业务、网络分组、网络流等),其诸如可以被从源计算设备102接收。相应地,网络业务入口管理器308被配置成(例如,经由通信电路210)管理(例如,创建、修改、删除等)到中间计算设备106的物理和虚拟网络端口(即,虚拟网络接口)的连接。说明性的网络业务入口管理器308包括被配置成管理中间计算设备106的入口缓冲器/队列的接收队列管理器310。此外,网络业务入口管理器308被配置成将描述符与每一个所接收的网络分组相关联。

网络业务入口管理器还被配置成为每一个所接收的网络分组生成序列标识符并且将所生成的序列标识符***到相关联的描述符中。如先前所描述的,序列标识符可以是可用于标识所接收的网络分组相对于其他先前接收的和/或将来接收的网络分组的次序的任何类型的数据,诸如时间戳、序列号、递增计数器的值等。在一些实施例中,网络业务入口管理器308可以被配置成基于所接收的网络分组的流或其他特性而生成序列标识符。相应地,在这样的实施例中,网络业务入口管理器308还被配置成标识所接收的网络分组的流或其他特性,其可用于生成对应于其的序列标识符。例如,在其中使用计数器值的这样的实施例中,应当领会,一个或多个流可以被指派到特定计数器。

在一些实施例中,可以(例如,经由DMA操作)将网络分组的至少一部分(例如,网络分组的头部的至少一部分、网络分组的有效载荷的至少一部分、网络分组的尾部(footer)的至少一部分等)存储在NIC 212本地的缓冲器和/或NIC 212外部的主机缓冲器中。此外或替代地,在一些实施例中,可以将关于网络分组的信息(例如,网络分组的流/工作负荷类型、网络分组的源、网络分组的目的地、与网络分组相关联的协议等)存储在接收队列数据302、描述符数据304和/或传输队列数据306中。

网络业务出口管理器312,其如以上所讨论的那样可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合,被配置成路由/传输出站网络业务。为了这么做,网络业务出口管理器312被配置成促进来自中间计算设备106的出站网络通信(例如,网络业务、网络分组流、网络流等),其诸如可以被传输至目的地计算设备108。为了这么做,网络业务出口管理器312被配置成(例如,经由通信电路210)管理(例如,创建、修改、删除等)到中间计算设备106的物理和虚拟网络端口/接口的连接。说明性的网络业务出口管理器312包括被配置成管理中间计算设备106的出口缓冲器/队列的传输队列管理器310。

此外,网络业务出口管理器312被配置成移动要被传输至描述符的适当传输队列中的网络分组的描述符,其诸如可以由描述符队列管理器316执行。为了这么做,网络业务出口管理器312被配置成(例如,基于完成标志、已经接收到状态指示符/消息、网络分组被放置在完成队列中等)标识要在网络分组的至少一部分上执行的任何处理操作是否已经完成。网络业务出口管理器312还被配置成基于传输队列而按顺序传输来自中间计算设备106的网络分组。相应地,网络业务出口管理器312此外被配置成发起对(多个)描述符传输队列的重排序操作,其诸如可以由描述符队列管理器316执行。

描述符队列管理器316,其如以上所讨论的那样可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合,被配置成管理中间计算设备106的所述一个或多个描述符队列。在一些实施例中,描述符信息(即,序列标识符、(多个)数据缓冲器位置、控制信息等)可以存储在描述符数据304中。在一些实施例中,描述符可以存储在一个或多个描述符环数据结构(即,圆形缓冲队列)中。相应地,在这样的实施例中,与其相关联的信息(例如,头部/尾部信息、接收描述符环的起始位置、描述符环的长度等)可以存储在描述符数据304中。

处理操作管理器318,其如以上所讨论的那样可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合,被配置成管理要在在入口与出口之间的所接收的网络分组的至少一部分上执行的任何操作的执行。为了这么做,处理操作管理器318可以被配置成从所接收的网络分组和/或相关联的描述符(例如,在控制信息字段中)检索信息以标识要在所接收的网络分组的数据的至少一部分上执行哪个(哪些)操作(例如,预处理和/或卸载操作)。

现在参考图4,示出了可以由计算设备(例如,图1-3的中间计算设备106)或更特别地由计算设备的NIC(例如,图2和3的NIC 212)执行的用于处理入口上的网络分组的方法400。方法400以框402开始,在框402中NIC 212确定是否已经(例如,从图1的源计算设备102)接收到网络分组。如果是这样,则方法400前进到框404,在框404中NIC 212将所接收的网络分组与来自可用描述符的池的描述符相关联。应当领会,在方法400被执行之前(即,在描述符被关联之前),NIC 212先前已经分配了可以被配置成与所接收的网络分组相关联的可用描述符的池。

在框406中,NIC 212生成所接收的网络分组的序列标识符。如先前所描述的,序列标识符可以是可用于标识所接收的网络分组相对于其他先前接收的和/或将来接收的网络分组的次序的任何类型的数据,诸如时间戳、序列号、递增计数器的值等。为了生成序列标识符,例如,在框408中,NIC 212可以基于与所接收的网络分组对应的流而生成序列标识符。相应地,应当领会,在这样的实施例中,NIC 212被配置成标识与所接收的网络分组相关联的流,其诸如可以被基于网络分组的头部和/或有效载荷中所包括的数据而确定。在框410中,NIC 212将所生成的序列标识符***到相关联的描述符中的序列标识符字段中。

在框412中,NIC 212标识要在所接收的网络分组的至少一部分上执行的一个或多个处理操作。在框414中,NIC 212执行(多个)所标识的处理操作。应当领会,在一些实施例中,与处理操作相关联的一个或多个功能可以由NIC 212的组件(例如,本地处理器、本地加速器等)执行,和/或被卸载到中间计算设备106的另一组件(例如,图2的计算引擎200),其诸如可能是在中间计算设备106的一个或多个虚拟机上执行(多个)操作所需的。

现在参考图5,示出了可以由计算设备(例如,图1-3的中间计算设备106)或更特别地由计算设备的NIC(例如,图2和3的NIC 212)或与其相关联的设备驱动器执行的用于管理出口上的网络分组的传输的方法500。应当领会,描述符先前已经与要传输的网络分组相关联,序列标识符已经被生成并且***到相关联的描述符中,并且先前已经在其上执行了任何操作(例如,如以上关于图4的方法400所描述的),使得网络分组现在准备好传输至目的地计算设备(例如,图1的目的地计算设备108)。在框502中,NIC 212确定决定在网络数据的至少一部分上执行的任何处理操作是否已经完成。如果是这样,则方法500前进到框504。

在框504中,NIC 212将与经处理的网络分组相关联的描述符***到描述符传输队列中。例如,在框506中,NIC 212可以基于与经处理的网络分组相关联的描述符的序列标识符相对于目前在传输队列中排队的描述符的序列标识符而将与经处理的网络分组相关联的描述符***到传输队列中。在另一示例中,在框508中,NIC 212可以在传输队列的尾部处***所述描述符。在框510中,NIC 212确定是否对传输队列进行重排序,诸如在其中NIC212在传输队列的尾部处***所述描述符的那些实施例中。

如果NIC 212确定不对传输队列进行重排序(例如,NIC 212基于所***的描述符的序列标识符而将该描述符***到传输队列中),则方法跳到以下描述的框516。应当领会,在一些实施例中,可以使用流指示符,使得仅在给定流内或仅对某些流执行乱序处理和重排序。否则,如果NIC 212在框510中确定对传输队列进行重排序,则方法500进行到框512,在框512中NIC 212基于与传输队列中的每一个描述符相关联的序列标识符而对传输队列的描述符进行重排序,使得在队列中按从最小(即,在队列的头部处)到最大(即,在队列的尾部处)的次序对序列标识符进行排序。应当领会,虽然在本文中被说明性地描述为由NIC212执行,但是重排序操作可以被卸载到中间计算设备106的另一组件,诸如I/O设备、加速器等。

在框514中,NIC 212基于与经处理的网络分组相关联的描述符是否在传输队列的头部处而确定是否传输该经处理的网络分组。如果是这样,则方法500前进到框516,在框516中NIC 212向目的地计算设备(例如,图1的目的地计算设备108)传输该网络分组。

示例

以下提供了本文中公开的技术的说明性示例。所述技术的实施例可以包括以下描述的示例中的任何一个或多个以及其任何组合。

示例1包括一种用于对出口上的网络分组进行重排序的网络接口控制器(NIC),NIC包括:网络业务入口管理电路,用来使由NIC接收的网络分组与描述符相关联,生成所接收的网络分组的序列标识符,并且将所生成的序列标识符***到相关联的描述符中;网络业务出口管理电路,用来确定所接收的网络分组是否要被从与NIC相关联的计算设备传输至另一计算设备,响应于所接收的网络分组要被传输至另一计算设备的确定而将描述符***到描述符传输队列中,并且基于描述符在描述符传输队列中的位置来传输网络分组,所述位置基于所生成的序列标识符。

示例2包括示例1的主题,并且其中网络业务入口管理电路还要标识与所接收的网络分组相关联的流,其中生成所接收的网络分组的序列标识符包括基于所标识的流而生成所接收的网络分组的序列标识符。

示例3包括示例1和2中的任何示例的主题,并且其中将描述符***到描述符传输队列中包括基于描述符的所生成的序列标识符而将描述符***到描述符传输队列中。

示例4包括示例1-3中的任何示例的主题,并且其中将描述符***到描述符传输队列中包括将描述符***在描述符传输队列的尾部处。

示例5包括示例1-4中的任何示例的主题,并且其中网络业务出口管理电路还要基于描述符传输队列中的每一个描述符的序列标识符而对描述符传输队列进行重排序。

示例6包括示例1-5中的任何示例的主题,并且还包括处理操作管理电路,用来编排一个或多个处理操作在所接收的网络分组的至少一部分上的执行,并且其中确定所接收的网络分组是否要被从所述计算设备传输至另一计算设备包括确定所述一个或多个处理操作已被执行。

示例7包括示例1-6中的任何示例的主题,并且其中将所生成的序列标识符***到相关联的描述符中包括将所生成的序列标识符***到相关联的描述符的预定义序列标识符字段中。

示例8包括示例1-7中的任何示例的主题,并且其中生成序列标识符包括生成时间戳、序列号或递增计数器的值中的一个。

示例9包括一个或多个机器可读存储介质,其包括存储在其上的多个指令,所述多个指令响应于被执行而使得网络接口控制器(NIC):使由NIC接收的网络分组与描述符相关联;生成所接收的网络分组的序列标识符;将所生成的序列标识符***到相关联的描述符中;确定所接收的网络分组是否要被从与NIC相关联的计算设备传输至另一计算设备;响应于所接收的网络分组要被传输至另一计算设备的确定而将描述符***到描述符传输队列中;并且基于描述符在描述符传输队列中的位置来传输网络分组,所述位置基于所生成的序列标识符。

示例10包括示例9的主题,并且其中所述多个指令还使得NIC标识与所接收的网络分组相关联的流,其中生成所接收的网络分组的序列标识符包括基于所标识的流而生成所接收的网络分组的序列标识符。

示例11包括示例9和10中的任何示例的主题,并且其中将描述符***到描述符传输队列中包括基于描述符的所生成的序列标识符而将描述符***到描述符传输队列中。

示例12包括示例9-11中的任何示例的主题,并且其中将描述符***到描述符传输队列中包括将描述符***在描述符传输队列的尾部处。

示例13包括示例9-12中的任何示例的主题,并且其中所述多个指令还使得NIC基于描述符传输队列中的每一个描述符的序列标识符而对描述符传输队列进行重排序。

示例14包括示例9-13中的任何示例的主题,并且其中所述多个指令还使得NIC编排一个或多个处理操作在所接收的网络分组的至少一部分上的执行,并且其中确定所接收的网络分组是否要被从所述计算设备传输至另一计算设备包括确定所述一个或多个处理操作已被执行。

示例15包括示例9-14中的任何示例的主题,并且其中将所生成的序列标识符***到相关联的描述符中包括将所生成的序列标识符***到相关联的描述符的预定义序列标识符字段中。

示例16包括示例9-15中的任何示例的主题,并且其中生成序列标识符包括生成时间戳、序列号或递增计数器的值中的一个。

示例17包括一种用于对出口上的网络分组进行重排序的方法,该方法包括:通过网络接口控制器(NIC)使由NIC接收的网络分组与描述符相关联;通过NIC生成所接收的网络分组的序列标识符;通过NIC将所生成的序列标识符***到相关联的描述符中;通过NIC确定所接收的网络分组是否要被从与NIC相关联的计算设备传输至另一计算设备;通过NIC并且响应于所接收的网络分组要被传输至另一计算设备的确定而将描述符***到描述符传输队列中;以及通过NIC基于描述符在描述符传输队列中的位置来传输网络分组,所述位置基于所生成的序列标识符。

示例18包括示例17的主题,并且还包括通过NIC标识与所接收的网络分组相关联的流,其中生成所接收的网络分组的序列标识符包括基于所标识的流而生成所接收的网络分组的序列标识符。

示例19包括示例17和18中的任何示例的主题,并且其中将描述符***到描述符传输队列中包括基于描述符的所生成的序列标识符而将描述符***到描述符传输队列中。

示例20包括示例17-19中的任何示例的主题,并且其中将描述符***到描述符传输队列中包括将描述符***在描述符传输队列的尾部处。

示例21包括示例17-20中的任何示例的主题,并且还包括通过NIC基于描述符传输队列中的每一个描述符的序列标识符而对描述符传输队列进行重排序。

示例22包括示例17-21中的任何示例的主题,并且还包括通过NIC编排一个或多个处理操作在所接收的网络分组的至少一部分上的执行,其中确定所接收的网络分组是否要被从所述计算设备传输至另一计算设备包括确定所述一个或多个处理操作已被执行。

示例23包括示例17-22中的任何示例的主题,并且其中将所生成的序列标识符***到相关联的描述符中包括将所生成的序列标识符***到相关联的描述符的预定义序列标识符字段中。

示例24包括示例17-23中的任何示例的主题,并且其中生成序列标识符包括生成时间戳、序列号或递增计数器的值中的一个。

示例25包括一种用于对出口上的网络分组进行重排序的网络接口控制器(NIC),NIC包括用于使由NIC接收的网络分组与描述符相关联的电路;用于生成所接收的网络分组的序列标识符的部件;用于将所生成的序列标识符***到相关联的描述符中的部件;用于确定所接收的网络分组是否要被从与NIC相关联的计算设备传输至另一计算设备的电路;用于响应于所接收的网络分组要被传输至另一计算设备的确定而将描述符***到描述符传输队列中的部件;以及用于基于描述符在描述符传输队列中的位置来传输网络分组的电路,所述位置基于所生成的序列标识符。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于多链路聚合的数据发送方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!