CN116489115A - 使用提示的有效数据包重新排序 - Google Patents
使用提示的有效数据包重新排序 Download PDFInfo
- Publication number
- CN116489115A CN116489115A CN202211664688.4A CN202211664688A CN116489115A CN 116489115 A CN116489115 A CN 116489115A CN 202211664688 A CN202211664688 A CN 202211664688A CN 116489115 A CN116489115 A CN 116489115A
- Authority
- CN
- China
- Prior art keywords
- dpu
- host
- original order
- header
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 48
- 238000004891 communication Methods 0.000 claims abstract description 41
- 230000002093 peripheral effect Effects 0.000 claims abstract description 37
- 238000000034 method Methods 0.000 claims description 37
- 239000000872 buffer Substances 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- 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
-
- 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/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及使用提示的有效数据包重新排序。耦合到主机的外围设备包括网络接口、数据包处理器和数据处理单元(DPU)。数据包处理器经由网络接口从通信网络接收数据包,这些数据包以原始顺序从源发出并以不同于原始顺序的顺序在外围设备被接收。数据包处理器将接收到的数据包拆分为报头和有效载荷,发送有效载荷以存储在主机存储器中,并无有效载荷地发送报头以存储在DPU存储器中,并基于报头产生提示,该提示指示将由DPU应用于报头的处理,用于识别原始顺序。基于提示,DPU通过将由提示指示的处理应用于DPU存储器中的相应报头来识别数据包的原始顺序,并向主机通知原始顺序。
Description
技术领域
这里描述的实施例一般涉及数据通信,特别涉及使用提示进行有效数据包重新排序的方法和系统。
背景技术
在各种计算系统中,源设备通过通信网络将数据包发送到目的地设备。源自主机的数据包按某种原始顺序发送,但可能在目的地以不同的顺序接收。基于传输层处理,目的地可以恢复接收到的数据包的原始顺序。
发明内容
本文描述的实施例提供了一种外围设备,其包括网络接口、主机接口、数据包处理器和数据处理单元(DPU)。网络接口通过通信网络传送数据包。主机接口与耦合到外围设备的主机通信。数据包处理器通过通信网络从远程源接收多个数据包,这些数据包以原始顺序从远程源发出,并且以与原始顺序不同的到达顺序在外围设备处被接收。数据包处理器将接收到的数据包拆分为相应的报头和有效载荷,经由主机接口发送有效载荷以存储在主机的主机存储器中,并无有效载荷地发送报头以存储在DPU存储器中,并基于接收到的数据包的报头,产生指示将由DPU应用于DPU存储器中的报头的处理的提示,用于识别多个数据包中的至少一些的原始顺序。DPU从数据包处理器接收提示,通过将由提示指示的处理应用于DPU存储器中的相应报头来识别数据包中的至少一些数据包的原始顺序,并向主机通知原始顺序。
在一些实施例中,数据包处理器在多个数据包中识别以原始顺序被接收的两个或更多个数据包,并且在所述提示中向所述DPU报告以所述原始顺序被接收的所述两个或更多个数据包的相应标识,该提示指示DPU避免识别已识别的两个或更多个数据包的所述原始顺序。在其它实施例中,DPU向所述主机通知合并的有效载荷,所述合并的有效载荷包括已识别的两个或更多个数据包的所述有效载荷。在其它实施例中,DPU识别以不同于原始顺序的顺序被接收的数据包的原始顺序。
在实施例中,数据包处理器通过将与分配给在所述主机上运行的管理程序或虚拟机(VM)的地址空间相关联的虚拟地址转换为所述主机存储器中的相应物理地址,来发送所述有效载荷以存储在所述主机存储器中。在另一个实施例中,DPU通过在所述DPU存储器中执行工作队列元素(WQE)来访问所述DPU存储器中一个或更多个报头缓冲区中的所述报头。在又一个实施例中,DPU根据用于主机和远程源之间通信的传输层协议来处理DPU存储器中的报头。在又一实施例中,传输层协议属于包括传输控制协议(TCP)和数据报拥塞控制协议(DCCP)的列表。
根据本文描述的实施例,还提供了一种用于通信的方法,包括:在通过通信网络调解主机和远程设备之间通信的外围设备中,由数据包处理器通过通信网络从远程源接收多个数据包,所述数据包以原始顺序从远程源发出并以不同于所述原始顺序的到达顺序在所述外围设备处被接收。所接收的数据包被拆分为相应的报头和有效载荷。有效载荷被发送以存储在主机的主机存储器中,并且报头在无有效载荷的情况下发送以存储在数据处理单元(DPU)的DPU存储器中。基于所接收的数据包的报头,产生提示,该提示指示将由所述DPU应用于所述DPU存储器中的报头的处理,用于识别所述多个数据包中的至少一些数据包的所述原始顺序。来自数据包处理器的提示由DPU接收。通过将由所述提示指示的处理应用于所述DPU存储器中的相应报头来识别数据包中的所述至少一些数据包的所述原始顺序。通知主机原始顺序。
根据本文描述的实施例,还另外提供了一种用于数据包重新排序的方法,包括:以与数据包从远程源发出的原始顺序不同的顺序,接收发往主机的数据包。数据包的有效载荷被存储在主机的主机存储器中,并且数据包的报头在无有效载荷的情况下存储在数据处理单元(DPU)的DPU存储器中。如由基于所接收的数据包的所述报头产生的提示所指示的,通过处理所述DPU存储器中的所述报头来识别所述数据包的所述原始顺序。通知主机原始顺序。
附图说明
这些和其它实施例将从其实施例的以下详细描述连同附图被更充分地理解,在附图中:
图1是根据本文描述的实施例示意性地示出计算机系统的框图,其中提示有助于有效的数据包重新排序;
图2是根据本文描述的实施例示意性地示出用于使用提示进行有效数据包重新排序的方法的流程图;以及
图3是根据本文描述的实施例示意性地示出数据包的序列的图,其中一些数据包不需要如提示所指示的重新排序。
具体实施方式
概述
本文描述的实施例提供了改进的方法和系统,用于使用提示有效地识别发送的数据包的原始顺序。
在各种计算系统中,主机通过包括底层传输层协议(诸如传输控制协议(TCP))的通信网络与远程设备进行通信。传输层协议可能需要大量的主机资源,因此有时会卸载到主机外部的另一个处理器。外部处理器可包括例如数据处理单元(DPU),其驻留在例如在主机和通信网络之间调解的外围设备中。外围设备通常包括网络适配器(诸如用于访问通信网络的网络接口控制器(NIC)),以及用于访问主机存储器的存储器访问接口。
在如上所述的计算系统中,远程设备可以以某种原始顺序向主机发送数据包序列。但是,由于各种原因,数据包可能会以与原始顺序不同的到达顺序在外围设备被接收。例如,不同的数据包可以穿过通信网络中具有不同相应延迟的不同路径。作为另一个示例,由于更高优先级的数据包穿过网络交换机,某些数据包可能在该网络交换机中延迟。
在一些实施例中,NIC在接收的数据包的报头和有效载荷之间进行拆分,发送有效载荷以存储在主机存储器中,并发送报头以存储在DPU存储器中。原则上,DPU可以使用底层传输层协议处理报头,包括根据原始顺序对所有数据包进行重新排序。但是,处理整个接收的数据包以恢复其原始顺序而不是仅处理乱序接收的数据包,可能会导致长的延迟、降低接收吞吐量并消耗DPU计算资源。
用于传输层数据包重新排序的技术是本领域已知的。例如,Eran等人的美国专利申请号17/488,362描述了一种网络接口控制器设备,其包括网络接口、存储器访问接口、数据处理单元和数据包处理单元。网络接口用于连接到数据包数据网络,并通过数据包数据网络接收数据包。存储器访问接口用于与主机设备共享数据。数据包处理电路用于将数据包的数据拆分为相应的报头和相应的有效载荷,将相应的有效载荷存储在主机设备的主机存储器中的相应位置,并将相应报头在无相应有效载荷的情况下存储在数据处理单元存储器中,描述符指示主机存储器中存储相应有效载荷的相应位置。数据处理单元用于处理相应的报头,其中数据包处理电路被配置为在数据处理单元完成对相应报头的处理时,通过存储器访问接口向主机设备发送相应的完成消息。
在所公开的实施例中,NIC识别以原始顺序接收的接收数据包的子序列,因此不需要重新排序。NIC向DPU生成指示此类子序列的提示,DPU进而根据提示跳过对报告的数据包进行重新排序。
考虑包括网络接口、网络接口、主机接口、数据包处理器和DPU的外围设备的实施例。网络接口通过通信网络传输数据包。主机接口与耦合到外围设备的主机通信。数据包处理器通过通信网络从远程源接收多个数据包,其中数据包以原始顺序从远程源发出,并以不同于原始顺序的到达顺序在外围设备接收。数据包处理器将接收到的数据包拆分为相应的报头和有效载荷,并且(i)经由主机接口发送有效载荷以存储在主机的主机存储器中,以及(ii)发送不带有效载荷的报头以存储在数据处理单元(DPU)存储器中。根据收到的数据包的报头,数据包处理器产生指示由DPU将应用于DPU存储器中的报头的处理的提示,用于识别多个数据包中至少一些的原始顺序。DPU从数据包处理器接收提示,通过将由提示指示的处理应用于DPU存储器中的相应报头来识别至少一些数据包的原始顺序,并将原始顺序通知给主机。
在一些实施例中,数据包处理器在多个数据包中识别以原始顺序接收的两个或更多个数据包,并在提示中向DPU报告以原始顺序接收的两个或更多个数据包的各自标识,其中提示指示DPU避免识别已识别的两个或更多个数据包的原始顺序。在一些实施例中,DPU向主机通知包括已识别的两个或更多个数据包的有效载荷的合并有效载荷。DPU进一步识别以不同于原始顺序的顺序接收的数据包的原始顺序。
在一些实施例中,DPU根据用于主机和远程源之间通信的传输层协议来处理DPU存储器中的报头。传输层协议可以属于包括传输控制协议(TCP)和数据报拥塞控制协议(DCCP)的列表。
在所公开的技术中,从主机卸载传输层处理的DPU使用由数据包处理器生成的提示来执行有效的数据包重新排序。提示指示要应用于按原始顺序接收的数据包的处理,因此可以跳过它们的重新排序。因此,DPU可以以低延迟报告此类数据包,并减少DPU消耗的计算资源和功率。此外,少量数据从DPU复制到主机,因为DPU仅向主机发送指定原始顺序的通知,而不是已排序的数据包本身。
相对于传统的数据包重新排序方法,使用所公开的实施例导致处理传入流量的吞吐量得到提高。
系统描述
图1是根据本文描述的实施例示意性地示出计算机系统20的框图,其中提示有助于有效的数据包重新排序。
计算机系统20包括主机24,其通过通信网络36经由外围设备32与远程设备28通信。计算机系统20可用于各种应用中,诸如例如数据中心、高性能计算(HPC)系统等。
一般而言,所公开的实施例适用于受益于接收从接收的数据包的多个有效载荷组装的大数据块而不是接收单独的小的有效载荷的应用和/或协议。示例相关应用包括存储应用和协议,诸如基于TCP的NVM Express(NVMe)协议、因特网小型计算机系统接口(iSCSI)协议、服务器消息块(SMB)协议和网络文件系统(NFS)协议。所公开的实施例也适用于使用图形处理单元(GPU)直接技术的协议,以及需要传递大数据块的远程过程调用(RPC)应用。
通信网络36可以包括按照任何合适的通信协议操作的任何合适的数据包网络。在一些实施例中,通信网络36包括以太网网络,数据包根据合适的传输层协议通过该网络通信。传输层协议可以包括例如传输控制协议(TCP)、数据报拥塞控制协议(DCCP)或其它合适的可靠协议。
在本示例中,主机24包括中央处理单元(CPU)40和主机存储器44。CPU 40可以运行任何合适的程序和/或应用程序,虚拟化或非虚拟化。在图1的示例中,CPU 40运行控制一个或更多个虚拟机(VM)52的虚拟化的管理程序48。主机24还包括主机接口56,外围设备32通过该接口访问主机存储器44。主机接口56可以包括任何合适的接口,诸如例如外围组件互连高速(PCIe)总线。
外围设备32在主机24和通信网络36之间调解。为此,外围设备包括用于访问主机存储器44的主机存储器访问接口60,以及用于访问通信网络36的网络适配器64。网络适配器64可以包括例如网络接口控制器(NIC)或任何其他合适类型的网络适配器。NIC 64包括用于与通信网络36接口的网络接口68,以及处理传入和传出数据包的数据包处理器72。
外围设备32还包括耦合到DPU存储器76的数据处理单元(DPU)74。DPU可以包括任何合适类型的处理单元,例如具有精简指令集计算(RISC)架构的处理器,例如ARM处理器。
在其它任务中,DPU 74运行例如作为TCP堆栈实现的传输层处理78,以应用于传入(和传出)数据包。因此,DPU从主机24卸载传输层处理。传输层处理78通常包括对接收到的数据包的数据包重新排序,如下所述。
数据包处理器72经由网络接口68接收源自远程设备28的数据包80,其中每个数据包包括报头82和有效载荷84。数据包80发往主机24,这意味着该数据包由远程设备通过通信网络发送到主机24上的目的地目标,例如,VM 52或主机上运行的某个应用程序(未示出)。数据包由远程设备以原始顺序发送,但在外围设备中可能以与原始顺序不同的到达顺序被接收。数据包由于例如通过通信网络上的多个不同路径发送而乱序到达,这些不同路径可能具有不同的延迟。数据包还可能基于例如穿过交换机的其他数据包的优先级,在通信网络中的交换机内被不同地排队和延迟。
在一些实施例中,数据包处理器72将每个接收到的数据包80拆分为其报头82和有效载荷84,并且(i)发送有效载荷(84)以存储在主机存储器44中的数据缓冲区86中,以及(ii)发送报头(82)以存储在DPU存储器76中的报头缓冲区88中。在一些实施例中,数据包处理器向DPU发送描述符90,其每个描述符指示主机存储器44中存储相应有效载荷84的相应位置。基于所接收的数据包的报头,数据包处理器生成提示92,指示要应用于DPU存储器中的报头以识别原始顺序的处理。
在一些实施例中,数据包处理器72发送有效载荷以存储在主机存储器中的选定物理地址空间中。物理地址空间分别与管理程序48和/或一个或更多个VM 52相关联。在实施例中,数据包处理器保存地址转换94,每个地址转换由本文中称为存储器密钥(MKey)的处理程序识别。数据包处理器使用地址转换94来在主机存储器中的虚拟地址和相应的物理地址之间进行转换。在一些实施例中,数据包处理器还使用地址转换94来将虚拟地址转换为DPU存储器中的相应物理地址。
在一些实施例中,DPU 74从数据包处理器72接收提示92,并将这些提示用于执行有效的数据包重新排序。基于提示92,DPU 74处理DPU存储器中的报头82,以有效地识别所接收的数据包的原始顺序。DPU将所识别的原始顺序通知主机24,使得主机24可以根据原始顺序处理主机存储器中的有效载荷84。例如,DPU根据原始顺序向主机24发送报告有效载荷在主机存储器44中的位置的通知95。
在一些实施例中,DPU通过在DPU存储器中执行工作队列元素(WQE)96来访问DPU存储器中的报头。在一些实施例中,WQE指向DPU存储器中的相应的报头缓冲区88。
在一些实施例中,DPU包括共享接收队列(SRQ)98。SRQ包括指向主机存储器中的数据缓冲区86的描述符(例如,描述符90)。在一些实施例中,在从通信网络接收到数据包时,数据包处理器向DPU发送指示,该指示指定(i)用于存储数据包的报头的报头缓冲区88中的索引,以及(ii)报头大小。在实施例中,DPU使用SRQ在主机24建立的多个通信连接之间共享报头缓冲区88。
通信计算机系统20、主机24、外围设备32和通信网络36的配置是示例配置,选择它们纯粹是为了概念清晰。在替代实施例中,也可以使用任何其他合适的计算机系统、主机、外围设备和通信网络配置。为清楚起见,图中省略了对于理解本发明的原理不必要的元件,诸如各种接口、寻址电路、定时和排序电路以及调试电路。
主机24的一些元件(诸如CPU 40和主机接口56),外围设备32的某些元件(诸如NIC64的数据包处理器72和网络接口68、主机存储器访问接口60和DPU 74),可以在硬件中实现,例如在一个或更多个专用集成电路(ASIC)或FPGA中。另外或可选地,数据包处理器72、网络接口68、主机存储器访问接口60和DPU 74,可以使用软件来实现,或者使用硬件和软件元件的组合来实现。主机24的主机存储器44和DPU 74的DPU存储器76可以包括任何合适的存储元件,例如随机存取存储器(RAM)或非易失性(NVM)存储器(诸如闪存设备)。
在一些实施例中,数据包处理器72、CPU 40和DPU 74的某些功能可以由通用处理器执行,它们在软件中被编程以执行本文中描述的功能。例如,软件可以通过网络以电子形式下载到相关处理器,或者可以替代地或另外地被提供和/或存储在非暂时性有形介质上,诸如磁性、光学或电子存储器。
使用提示进行有效数据包重新排序的方法
图2是根据本文描述的实施例示意性地示出使用提示进行有效数据包重新排序的方法的流程图。
该方法可以由图1的计算机系统20的外围设备32的元件执行。
该方法从数据包接收步骤150开始,数据包处理器72通过通信网络36接收由远程源(例如,远程设备28)以原始顺序发送的数据包80。接收的数据包的序列可能包括数据包不按原始顺序的子序列,以及数据包按原始顺序的其他子序列。
在数据包拆分步骤152,数据包处理器将每个数据包80拆分为报头82和有效载荷84。在存储步骤154,数据包处理器发送有效载荷84以存储在主机存储器44中的数据缓冲区86中,并发送报头82(无有效载荷84)以存储在DPU存储器76中的报头缓冲区88中。在一些实施例中,数据包处理器为接收到的数据包产生描述符,并发送描述符以与数据包的报头相关联的存储在DPU存储器中。在实施例中,数据包描述符指示相应有效载荷在主机存储器中的位置。
在提示生成步骤158,数据包处理器处理接收的数据包80的报头82,并且基于所接收的数据包的报头,产生指示由DPU要应用于DPU存储器中的报头的处理的提示92,用于识别至少一些接收的数据包的原始顺序。在示例实施例中,提示指示以原始顺序接收的两个或更多个数据包,因此不需要由DPU重新排序。在这种情况下,提示指示DPU避免对这两个或更多个数据包进行重新排序。
在实施例中,主机使用合适的传输层协议(例如,TCP)与远程设备通信。在这样的实施例中,数据包处理器通过根据底层传输层协议解析所接收的数据包的报头来识别按原始顺序接收的两个或更多个数据包。这种报头解析允许检索分别在所接收的数据包的报头中携带的序列号,并且允许在具有连续序列号的接收的数据包中检测两个或更多个连续数据包。在一些实施例中,数据包处理器在提示中向DPU报告以原始顺序接收的两个或更多个数据包的各自标识,其中提示指示DPU避免识别已识别的两个或更多个数据包的原始顺序。
在提示接收步骤162,DPU 74从数据包处理器接收提示92。在非提示重新排序步骤166,DPU识别一些所接收的数据包的原始顺序,其到达顺序与原始顺序不同。例如,DPU基于这些数据包的相应序列号识别这些数据包的原始顺序。
在基于提示的处理步骤170,DPU将由提示指示的处理应用于DPU存储器中的两个或更多个数据包(其以原始顺序接收)的相应报头。在一些实施例中,基于提示,DPU避免识别以原始顺序接收的所接收数据包的原始顺序,如提示92所示。
在通知步骤174,DPU通知在步骤166重新排序的数据包和在步骤170中不需要重新排序的数据包的原始顺序。在步骤174之后,该方法终止。在一些实施例中,从DPU到主机的通知消息包括主机存储器中的有效载荷位置的有序列表,与由DPU识别的原始顺序一致。
在一些实施例中,DPU不是向主机单独通知按原始顺序接收的每个数据包,而是向主机通知合并的有效载荷,该合并的有效载荷包括按原始顺序接收的数据包的有效载荷。
在图2的方法中,通过跳过(基于主机)对按原始顺序接收的数据包的重新排序,通知主机原始顺序的延迟减少,并且整体入口吞吐量显著提高。
图3是根据本文描述的实施例示意性地示出数据包的序列的图,其中一些数据包不需要如提示所指示的重新排序。
图3描绘了由远程源按表示为PCKT1...PCKT8的原始顺序发出的数据包80的序列200。序列204描绘了以不同于原始顺序的顺序到达外围设备32的序列200的数据包。如图所示,数据包按顺序PCKT2、PCKT1、PCKT3、PCKT4、PCKT5、PCKT7、PCKT6、PCKT8到达。
序列212描绘了数据包处理器已从接收到的数据包80中分离出来的报头82。在本示例中,每个子序列(PCKT1,PCKT2)和(PCKT6,PCKT7,PCK8)以与原始顺序不同的顺序接收,因此需要DPU识别这些子序列中数据包的原始顺序。另一方面,数据包PCKT3、PCKT4和PCKT5按原始顺序接收,因此在提示92中被报告给DPU,如上所述。基于该提示,DPU可以有效地跳过数据包PCKT3、PCKT4和PCKT5的重新排序,并相应地通知主机。跳过PCKT3、PCKT4和PCKT5的重新排序减少了向主机通知原始顺序的延迟,并减少了DPU所需的计算资源和消耗的功率。
以上描述的实施例作为示例给出,也可以使用其它合适的实施例。
尽管本文描述的实施例主要解决TCP中接收的数据包的有效重新排序,但本文描述的方法和系统也可用于各种应用,诸如例如网络存储、使用GPU直接技术的应用和远程过程调用(RPC)。
可以理解的是,上面描述的实施例是作为示例引用的,并且以下权利要求不限于上面已经特别示出和描述的内容。相反,该范围包括上述各种特征的组合和子组合,以及本领域技术人员在阅读前述描述时将想到的并且未在现有技术中公开的其变化和修改。通过引用并入本专利申请中的文件应被视为申请的组成部分,除非这些并入文件中以与本说明书中明确或隐含的定义相冲突的方式定义任何术语,仅应考虑本说明书中的定义。
Claims (17)
1.一种外围设备,包括:
网络接口,用于通过通信网络传输数据包;
主机接口,用于与耦合到所述外围设备的主机通信;
数据包处理器,用于:
通过所述通信网络从远程源接收多个数据包,其中所述数据包以原始顺序从所述远程源发出并以与所述原始顺序不同的到达顺序在所述外围设备处被接收;
将所接收的数据包拆分为相应的报头和有效载荷;
经由所述主机接口发送所述有效载荷以存储在所述主机的主机存储器中,并无所述有效载荷地发送所述报头以存储在数据处理单元DPU存储器中;以及
基于所接收的数据包的报头,产生指示将由所述DPU应用于所述DPU存储器中的报头的处理的提示,用于识别所述多个数据包中的至少一些数据包的所述原始顺序;以及
数据处理单元DPU,用于:
从所述数据包处理器接收所述提示;
通过将由所述提示指示的所述处理应用于所述DPU存储器中的相应报头,识别所述数据包中的所述至少一些数据包的所述原始顺序;以及
向所述主机通知所述原始顺序。
2.根据权利要求1所述的外围设备,其中所述数据包处理器用于在所述多个数据包中识别以所述原始顺序被接收的两个或更多个数据包,以及在所述提示中向所述DPU报告以所述原始顺序被接收的所述两个或更多个数据包的相应标识,其中所述提示指示所述DPU避免识别已识别的两个或更多个数据包的所述原始顺序。
3.根据权利要求2所述的外围设备,其中所述DPU用于向所述主机通知合并的有效载荷,所述合并的有效载荷包括已识别的两个或更多个数据包的所述有效载荷。
4.根据权利要求1所述的外围设备,其中所述DPU用于识别以不同于所述原始顺序的顺序被接收的数据包的所述原始顺序。
5.根据权利要求1所述的外围设备,其中所述数据包处理器用于通过将与分配给在所述主机上运行的管理程序或虚拟机VM的地址空间相关联的虚拟地址转换为所述主机存储器中的相应物理地址,来发送所述有效载荷以存储在所述主机存储器中。
6.根据权利要求1所述的外围设备,其中所述DPU用于通过在所述DPU存储器中执行工作队列元素WQE来访问所述DPU存储器中一个或更多个报头缓冲区中的所述报头。
7.根据权利要求1所述的外围设备,其中所述DPU用于根据用于所述主机与所述远程源之间通信的传输层协议来处理所述DPU存储器中的所述报头。
8.根据权利要求7所述的外围设备,其中所述传输层协议属于包括传输控制协议TCP和数据报拥塞控制协议DCCP的列表。
9.一种用于通信的方法,包括:
在通过通信网络调解主机和远程设备之间通信的外围设备中,
由数据包处理器通过所述通信网络从远程源接收多个数据包,其中所述数据包以原始顺序从远程源发出并以不同于所述原始顺序的到达顺序在所述外围设备处被接收;
将所接收的数据包拆分为相应的报头和有效载荷;
发送所述有效载荷以存储在所述主机的主机存储器中,并无所述有效载荷地发送所述报头以存储在数据处理单元DPU的DPU存储器中;
基于所接收的数据包的所述报头,产生指示将由所述DPU应用于所述DPU存储器中的报头的处理的提示,用于识别所述多个数据包中的至少一些数据包的所述原始顺序;
由所述DPU从所述数据包处理器接收所述提示;
通过将由所述提示指示的所述处理应用于所述DPU存储器中的相应报头来识别所述数据包中的所述至少一些数据包的所述原始顺序;以及
向所述主机通知所述原始顺序。
10.根据权利要求9所述的方法,其中识别所述原始顺序包括:在所述多个数据包中识别以所述原始顺序被接收的两个或更多个数据包;以及在所述提示中向所述DPU报告以所述原始顺序被接收的所述两个或更多个数据包的相应标识,其中所述提示指示所述DPU避免识别已识别的两个或更多个数据包的所述原始顺序。
11.根据权利要求10所述的方法,包括由所述DPU向所述主机通知合并的有效载荷,所述合并的有效载荷包括已识别的两个或更多个数据包的所述有效载荷。
12.根据权利要求9所述的方法,包括识别以不同于所述原始顺序的顺序被接收的数据包的所述原始顺序。
13.根据权利要求9所述的方法,其中发送所述有效载荷以存储在所述主机存储器中包括:将与分配给在所述主机上运行的管理程序或虚拟机VM的地址空间相关联的虚拟地址转换为所述主机存储器中的相应物理地址。
14.根据权利要求9所述的方法,包括通过在所述DPU存储器中执行工作队列元素WQE来访问所述DPU存储器中的一个或更多个报头缓冲区中的所述报头。
15.根据权利要求9所述的方法,包括根据用于所述主机和所述远程源之间通信的传输层协议来处理所述DPU存储器中的所述报头。
16.根据权利要求15所述的方法,其中所述传输层协议属于包括传输控制协议TCP和数据报拥塞控制协议DCCP的列表。
17.一种用于数据包重新排序的方法,包括:
以与数据包从远程源发出的原始顺序不同的顺序,接收发往主机的数据包;
将所述数据包的有效载荷存储在所述主机的主机存储器中,并且无所述有效载荷地将所述数据包的所述报头存储在数据处理单元DPU的DPU存储器中;
如由基于所接收的数据包的所述报头产生的提示所指示的,通过处理所述DPU存储器中的所述报头来识别所述数据包的所述原始顺序;以及
向所述主机通知所述原始顺序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/582,047 | 2022-01-24 | ||
US17/582,047 US11792139B2 (en) | 2022-01-24 | 2022-01-24 | Efficient packet reordering using hints |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116489115A true CN116489115A (zh) | 2023-07-25 |
Family
ID=87068796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211664688.4A Pending CN116489115A (zh) | 2022-01-24 | 2022-12-23 | 使用提示的有效数据包重新排序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11792139B2 (zh) |
CN (1) | CN116489115A (zh) |
DE (1) | DE102023200379A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12132665B2 (en) | 2022-11-21 | 2024-10-29 | Mellanox Technologies, Ltd. | Handling of out-of-order transport-layer packets using reorder buffer |
Family Cites Families (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728265B1 (en) | 1999-07-30 | 2004-04-27 | Intel Corporation | Controlling frame transmission |
US6799200B1 (en) | 2000-07-18 | 2004-09-28 | International Business Machines Corporaiton | Mechanisms for efficient message passing with copy avoidance in a distributed system |
US7177967B2 (en) | 2003-09-30 | 2007-02-13 | Intel Corporation | Chipset support for managing hardware interrupts in a virtual machine system |
US7222203B2 (en) | 2003-12-08 | 2007-05-22 | Intel Corporation | Interrupt redirection for virtual partitioning |
US20050165985A1 (en) * | 2003-12-29 | 2005-07-28 | Vangal Sriram R. | Network protocol processor |
US7209994B1 (en) | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US7613813B2 (en) | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
US20060075142A1 (en) * | 2004-09-29 | 2006-04-06 | Linden Cornett | Storing packet headers |
US7545749B2 (en) | 2005-02-15 | 2009-06-09 | Microsoft Corporation | High-accuracy packet pair for network bottleneck bandwidth measurement |
US20060200616A1 (en) | 2005-03-02 | 2006-09-07 | Richard Maliszewski | Mechanism for managing resources shared among virtual machines |
US7721299B2 (en) | 2005-08-05 | 2010-05-18 | Red Hat, Inc. | Zero-copy network I/O for virtual hosts |
US7616563B1 (en) | 2005-08-31 | 2009-11-10 | Chelsio Communications, Inc. | Method to implement an L4-L7 switch using split connections and an offloading NIC |
GB0600417D0 (en) | 2006-01-10 | 2006-02-15 | Level 5 Networks Inc | Virtualisation support |
EP2075696A3 (en) | 2007-05-10 | 2010-01-27 | Texas Instruments Incorporated | Interrupt- related circuits, systems and processes |
US8589587B1 (en) | 2007-05-11 | 2013-11-19 | Chelsio Communications, Inc. | Protocol offload in intelligent network adaptor, including application level signalling |
US7853744B2 (en) | 2007-05-23 | 2010-12-14 | Vmware, Inc. | Handling interrupts when virtual machines have direct access to a hardware device |
US8365272B2 (en) | 2007-05-30 | 2013-01-29 | Yoggie Security Systems Ltd. | System and method for providing network and computer firewall protection with dynamic address isolation to a device |
GB0723422D0 (en) | 2007-11-29 | 2008-01-09 | Level 5 Networks Inc | Virtualised receive side scaling |
JP5323828B2 (ja) | 2008-06-24 | 2013-10-23 | パナソニック株式会社 | 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路 |
GB2462258B (en) | 2008-07-28 | 2012-02-08 | Advanced Risc Mach Ltd | Interrupt control for virtual processing apparatus |
US8667187B2 (en) | 2008-09-15 | 2014-03-04 | Vmware, Inc. | System and method for reducing communication overhead between network interface controllers and virtual machines |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
US8306062B1 (en) | 2008-12-31 | 2012-11-06 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus of adaptive large receive offload |
US20100174841A1 (en) | 2008-12-31 | 2010-07-08 | Zohar Bogin | Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller |
US8055827B2 (en) | 2009-01-26 | 2011-11-08 | Advanced Micro Devices, Inc. | Guest interrupt controllers for each processor to aid interrupt virtualization |
US8018961B2 (en) | 2009-06-22 | 2011-09-13 | Citrix Systems, Inc. | Systems and methods for receive and transmission queue processing in a multi-core architecture |
JP5434616B2 (ja) | 2010-01-15 | 2014-03-05 | 富士通株式会社 | 仮想計算機、仮想計算機モニタ、および計算機の制御方法 |
US8897132B2 (en) | 2010-03-31 | 2014-11-25 | Blue Coat Systems, Inc. | Enhanced random early discard for networked devices |
WO2012050935A2 (en) | 2010-09-28 | 2012-04-19 | Fusion-Io, Inc. | Apparatus, system, and method for data transformations within a data storage device |
WO2012092263A1 (en) | 2010-12-28 | 2012-07-05 | Citrix Systems, Inc. | Systems and methods for policy based routing for multiple next hops |
US9704393B2 (en) | 2011-01-11 | 2017-07-11 | Videonetics Technology Private Limited | Integrated intelligent server based system and method/systems adapted to facilitate fail-safe integration and/or optimized utilization of various sensory inputs |
CN103609071B (zh) | 2011-03-28 | 2017-04-12 | 思杰系统有限公司 | 用于通过多连接中间装置跟踪应用层流的系统和方法 |
US8566494B2 (en) | 2011-03-31 | 2013-10-22 | Intel Corporation | Traffic class based adaptive interrupt moderation |
US8949498B2 (en) | 2011-08-11 | 2015-02-03 | Mellanox Technologies Ltd. | Interrupt handling in a virtual machine environment |
US8886862B2 (en) | 2011-08-11 | 2014-11-11 | Mellanox Technologies Ltd. | Virtualization of interrupts |
US8645663B2 (en) | 2011-09-12 | 2014-02-04 | Mellanox Technologies Ltd. | Network interface controller with flexible memory handling |
CN103999068B (zh) | 2011-12-23 | 2016-11-23 | 英特尔公司 | 共享的发送队列 |
US8996718B2 (en) | 2012-02-02 | 2015-03-31 | Apple Inc. | TCP-aware receive side coalescing |
US20140006667A1 (en) | 2012-06-27 | 2014-01-02 | Broadcom Corporation | Adaptive hardware interrupt moderation |
CN103546424A (zh) | 2012-07-10 | 2014-01-29 | 华为技术有限公司 | 一种tcp数据传输方法、tcp卸载引擎及系统 |
US9009367B2 (en) | 2012-08-03 | 2015-04-14 | Intel Corporation | Adaptive interrupt moderation |
US10505747B2 (en) | 2012-10-16 | 2019-12-10 | Solarflare Communications, Inc. | Feed processing |
US8924605B2 (en) | 2012-11-21 | 2014-12-30 | Mellanox Technologies Ltd. | Efficient delivery of completion notifications |
US9172756B2 (en) | 2013-03-12 | 2015-10-27 | Cisco Technology, Inc. | Optimizing application performance in a network environment |
US9692820B2 (en) | 2013-04-06 | 2017-06-27 | Citrix Systems, Inc. | Systems and methods for cluster parameter limit |
US9697149B2 (en) | 2013-04-11 | 2017-07-04 | Said Bshara | Low latency interrupt with existence of interrupt moderation |
US9998991B2 (en) | 2013-08-28 | 2018-06-12 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatuses for discontinuous reception cycle estimation by data packet monitoring |
US10110518B2 (en) | 2013-12-18 | 2018-10-23 | Mellanox Technologies, Ltd. | Handling transport layer operations received out of order |
US9755981B2 (en) | 2014-03-11 | 2017-09-05 | Vmware, Inc. | Snooping forwarded packets by a virtual machine |
US20150304281A1 (en) | 2014-03-14 | 2015-10-22 | Avni Networks Inc. | Method and apparatus for application and l4-l7 protocol aware dynamic network access control, threat management and optimizations in sdn based networks |
US10380047B2 (en) | 2014-04-07 | 2019-08-13 | Mellanox Technologies, Ltd. | Traffic-dependent adaptive interrupt moderation |
US9894008B2 (en) | 2014-08-20 | 2018-02-13 | Citrix Systems, Inc. | Systems and methods for implementation of jumbo frame over existing network stack |
US9678758B2 (en) * | 2014-09-26 | 2017-06-13 | Qualcomm Incorporated | Coprocessor for out-of-order loads |
US9674297B2 (en) | 2015-02-09 | 2017-06-06 | International Business Machines Corporation | Handling packet reordering at a network adapter |
US9929968B2 (en) | 2015-03-19 | 2018-03-27 | Oracle International Corporation | Inter-layer communication of events between TCP layer and higher layers when implemented in different concurrent execution entities |
US10805392B2 (en) | 2015-08-13 | 2020-10-13 | Advanced Micro Devices, Inc. | Distributed gather/scatter operations across a network of memory nodes |
US9965412B2 (en) | 2015-10-08 | 2018-05-08 | Samsung Electronics Co., Ltd. | Method for application-aware interrupts management |
US9965441B2 (en) | 2015-12-10 | 2018-05-08 | Cisco Technology, Inc. | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics |
US10505848B2 (en) | 2015-12-24 | 2019-12-10 | Intel Corporation | Congestion management techniques for communication networks |
CN106982108B (zh) | 2016-01-18 | 2019-05-28 | 华为技术有限公司 | 一种数据传输的方法以及相关设备 |
US9785359B2 (en) | 2016-02-26 | 2017-10-10 | Intel Corporation | Sending packets using optimized PIO write sequences without sfences and out of order credit returns |
US9916269B1 (en) * | 2016-04-14 | 2018-03-13 | Amazon Technologies, Inc. | Packet queueing for network device |
US10467161B2 (en) | 2016-05-25 | 2019-11-05 | Mellanox Technologies, Ltd. | Dynamically-tuned interrupt moderation |
US10461892B2 (en) | 2016-12-09 | 2019-10-29 | Oracle International Corporation | Low latency communications |
EP3406052B1 (en) | 2016-12-27 | 2020-02-12 | Chicago Mercantile Exchange, Inc. | Message processing protocol which mitigates manipulative messaging behavior |
US10362149B2 (en) | 2016-12-30 | 2019-07-23 | Intel Corporation | Intelligent packet aggregation |
US20180191629A1 (en) | 2016-12-30 | 2018-07-05 | Intel Corporation | Time-based flexible packet scheduling |
US11172054B2 (en) | 2017-01-03 | 2021-11-09 | Maxlinear, Inc. | Cross-device segmentation offload |
US10210125B2 (en) | 2017-03-16 | 2019-02-19 | Mellanox Technologies, Ltd. | Receive queue with stride-based data scattering |
US11502948B2 (en) | 2017-10-16 | 2022-11-15 | Mellanox Technologies, Ltd. | Computational accelerator for storage operations |
US11005771B2 (en) | 2017-10-16 | 2021-05-11 | Mellanox Technologies, Ltd. | Computational accelerator for packet payload operations |
US10785020B2 (en) | 2018-01-19 | 2020-09-22 | Microsoft Technology Licensing, Llc | Hardware offload for QUIC connections |
US11451609B2 (en) | 2018-03-16 | 2022-09-20 | Intel Corporation | Technologies for accelerated HTTP processing with hardware acceleration |
US10938965B2 (en) | 2018-06-18 | 2021-03-02 | Mellanox Technologies, Ltd. | Message segmentation |
KR102619952B1 (ko) | 2018-08-08 | 2024-01-02 | 삼성전자주식회사 | 데이터 패킷을 처리하기 위한 장치 및 방법 |
US11689470B2 (en) | 2018-12-17 | 2023-06-27 | Intel Corporation | Allocation of processors for processing packets |
US11681625B2 (en) | 2018-12-20 | 2023-06-20 | Intel Corporation | Receive buffer management |
US10951525B2 (en) | 2019-01-04 | 2021-03-16 | Intel Corporation | Availability of context information for packet processing |
US10944660B2 (en) | 2019-02-08 | 2021-03-09 | Intel Corporation | Managing congestion in a network |
US12117956B2 (en) | 2019-03-04 | 2024-10-15 | Intel Corporation | Writes to multiple memory destinations |
US11595289B2 (en) | 2019-03-29 | 2023-02-28 | Barefoot Networks, Inc. | Network testing using a programmable packet engine |
US11595303B2 (en) | 2019-06-10 | 2023-02-28 | Vmware, Inc. | Packet handling in software-defined net working (SDN) environments |
US11916800B2 (en) | 2019-06-28 | 2024-02-27 | Intel Corporation | Dynamic virtual cut-through and dynamic fabric bandwidth allocation between virtual cut-through and store-and-forward traffic |
US10642775B1 (en) | 2019-06-30 | 2020-05-05 | Mellanox Technologies, Ltd. | Size reduction of completion notifications |
US20210320866A1 (en) | 2020-01-28 | 2021-10-14 | Intel Corporation | Flow control technologies |
US20210328930A1 (en) | 2020-01-28 | 2021-10-21 | Intel Corporation | Predictive queue depth |
US12026110B2 (en) | 2020-03-10 | 2024-07-02 | Intel Corporation | Dynamic interrupt provisioning |
US11863469B2 (en) | 2020-05-06 | 2024-01-02 | International Business Machines Corporation | Utilizing coherently attached interfaces in a network stack framework |
US11934330B2 (en) | 2020-05-08 | 2024-03-19 | Intel Corporation | Memory allocation for distributed processing devices |
US20220021629A1 (en) | 2020-07-19 | 2022-01-20 | Mellanox Technologies, Ltd. | Coalescing packets based on hints generated by network adapter |
US11909642B2 (en) | 2020-09-03 | 2024-02-20 | Intel Corporation | Offload of acknowledgements to a network device |
US11595502B2 (en) | 2020-10-15 | 2023-02-28 | Pensando Systems Inc. | Methods and systems for layer 7 hardware assist and CPU task offloads |
US20210288910A1 (en) | 2020-11-17 | 2021-09-16 | Intel Corporation | Network interface device with support for hierarchical quality of service (qos) |
US20210092069A1 (en) | 2020-12-10 | 2021-03-25 | Intel Corporation | Accelerating multi-node performance of machine learning workloads |
US20210243247A1 (en) | 2021-04-23 | 2021-08-05 | Intel Corporation | Service mesh offload to network devices |
-
2022
- 2022-01-24 US US17/582,047 patent/US11792139B2/en active Active
- 2022-12-23 CN CN202211664688.4A patent/CN116489115A/zh active Pending
-
2023
- 2023-01-18 DE DE102023200379.1A patent/DE102023200379A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230239257A1 (en) | 2023-07-27 |
DE102023200379A1 (de) | 2023-07-27 |
US11792139B2 (en) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888827B (zh) | 数据传输方法、装置、设备及存储介质 | |
US8255475B2 (en) | Network interface device with memory management capabilities | |
US7996569B2 (en) | Method and system for zero copy in a virtualized network environment | |
JP5869135B2 (ja) | コプロセッサのためのダイレクトi/oアクセス | |
US8671152B2 (en) | Network processor system and network protocol processing method | |
US11750418B2 (en) | Cross network bridging | |
CN113490927B (zh) | 具有硬件集成和乱序放置的rdma输送 | |
EP4160424A2 (en) | Zero-copy processing | |
CN109983741B (zh) | 经由直接存储器访问设备在虚拟机之间传送分组 | |
US11068412B2 (en) | RDMA transport with hardware integration | |
CN113326228A (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
US11563830B2 (en) | Method and system for processing network packets | |
US6742075B1 (en) | Arrangement for instigating work in a channel adapter based on received address information and stored context information | |
CN117240935A (zh) | 基于dpu的数据平面转发方法、装置、设备及介质 | |
CN116489115A (zh) | 使用提示的有效数据包重新排序 | |
CN106790162B (zh) | 虚拟网络优化方法与系统 | |
US20220124046A1 (en) | System for storage of received messages | |
US20220217098A1 (en) | Streaming communication between devices | |
CN116157785A (zh) | 减少远程直接内存访问系统中的事务丢弃 | |
Zhao et al. | Design and implementation of a content-aware switch using a network processor | |
Saito et al. | Low-latency remote-offloading system for accelerator offloading | |
Bie et al. | Vhost-User | |
Narappa et al. | Z-Stack: A High-Performance DPDK-Based Zero-Copy TCP/IP Protocol Stack |
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 |