一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于处理错序递送事务的系统和方法与流程

2022-05-26 20:46:19 来源:中国专利 TAG:
1.本公开在一些实施例中涉及通信系统,并且更具体地但非排他地,涉及用于处理错序递送事务的系统和方法。
背景技术
::2.远程直接内存访问(remotedirectmemoryaccess,rdma)是从一台计算机的内存到另一台计算机的内存的直接内存访问,不涉及任何一台计算机的操作系统。rdma方法允许高吞吐量和低时延联网,这在大规模并行计算机集群中尤其有用。3.基于融合以太网的远程直接内存访问(rdmaoverconvergedethernet,roce)是一种标准协议,能使rdma通过以太网进行高效的数据传输,从而允许采用硬件rdma引擎实现方式的传输分流,并且实现卓越的性能。roce是在无线带宽贸易协会(infinibandtradeassociation,ibta)标准中定义的标准协议。roce对用户数据报协议(userdatagramprotocoludp)封装的使用允许其超越层3(layer3)网络。rdma是无线带宽(infiniband)互连技术本身使用的一项关键能力。infiniband和以太网roce共享公共用户应用程序编程接口(applicationprogramminginterface,api),但两者具有不同的物理层和链路层。技术实现要素:4.本公开的目的是提供一种用于发送多个事务的设备、一种用于接收多个错序事务的设备、一种用于发送多个事务的方法、以及一种用于接收多个错序事务的方法。5.通过独立权利要求的特征实现上述目的和其他目的。在从属权利要求、说明书、以及附图中,进一步的实施方式是显而易见的。6.根据本公开的第一方面,公开了一种用于发送多个事务的设备。该设备用于:7.在根据网络传输协议编码的操作的多个基于数据包的事务的每一个中:识别包含在主机数据中的递送索引指示;将递送索引指示合并到相应的基于数据包的事务的多个数据包的每一个中;以及,指示发送合并有递送索引指示的多个数据包。8.根据本公开的第二方面,公开了一种用于接收多个事务的设备。该设备用于:接收根据网络传输协议编码的操作的多个基于数据包的事务,其中,在相应的基于数据包的事务的多个数据包的每一个中合并有递送索引指示;根据索引指示,管理多个基于数据包的事务中的错序数据包的处理。9.根据本公开的第三方面,公开了一种用于发送事务的方法。该方法包括:10.在根据网络传输协议编码的操作的多个基于数据包的事务的每一个中:识别包含在主机数据中的递送索引指示;将索引指示合并到相应的基于数据包的事务的多个数据包中;以及,指示发送合并有递送索引指示的多个数据包。11.根据本公开的第四方面,公开了一种用于接收所发送的事务的方法。该方法包括:接收根据网络传输协议编码的操作的多个基于数据包的事务,其中,在相应的基于数据包的事务的多个数据包的每一个中合并有递送索引指示;根据索引指示,管理多个基于数据包的事务中的错序数据包的处理。12.在第一方面的另一实施方式中,该索引指示基于以下至少之一:主机内部队列索引、特定事务类型递增计数器、特定的基于数据包的事务指示、绝对数、以及无限运行索引指示。13.在第一方面的另一实施方式中,索引指示被合并到以下之一中:相应的基于数据包的事务的多个数据包的多个有效载荷;相应的基于数据包的事务的一个数据包;以及,相应的基于数据包的事务的多个数据包的至少一个头。按此方式,索引指示可被合并到数据包的任何可用位置中。14.在第一方面的另一实施方式中,在多个基于数据包的事务的每一个中,该设备用于通过重写相应的基于数据包的事务的多个数据包的至少一个头中的未使用字段,合并索引指示。15.在第一方面的另一实施方式中,在多个基于数据包的事务的每一个中,该设备用于将索引指示合并到相应的基于数据包的事务的多个数据包的每一个的至少一个头的专用字段中,该专用字段旨在用于事务信息目的。16.在第一方面的另一实施方式中,在多个基于数据包的事务的每一个中,该设备还用于接收成功发送操作的相应的基于数据包的事务的第一数据包的肯定应答ack,并且响应于接收到的ack,停止将索引指示合并到操作的相应的基于数据包的事务的多个数据包中。因此,节省了将索引指示合并到每个数据包中的计算能力。17.在第一方面的另一实施方式中,在多个基于数据包的事务的每一个中,该设备还用于接收成功发送操作的相应的基于数据包的事务的第一数据包的肯定应答ack,并且响应于接收到的ack,继续将索引指示合并到操作的相应的基于数据包的事务的多个数据包中。18.在第一方面的另一实施方式中,索引指示与最近一次接收到对于索引指示的ack相对。在这一实施方式中,索引指示从最近确认的事务之后重新开始对事务计数。按此方式,使用的是代表索引指示的可能的最小数字,因此在发送新的事务时,在合并有索引指示的头或有效载荷上所使用的比特数较少。19.在第二方面的另一实施方式中,该设备还用于:根据索引指示,处理基于数据包的事务的多个数据包中的至少一个错序数据包;或者,通过在第一次接收到操作的相应的基于数据包的事务的数据包时为操作的每一个基于数据包的事务生成元素,创建与操作的基于数据包的事务的递送顺序对应的队列;以及,在操作的相应的基于数据包的事务完成时,从队列中移除操作的每一个基于数据包的事务的元素。从而,每个事务通过事务的索引指示标识,设备知道接收到的每个数据包属于哪个事务。按此方式,接收数据包的设备可以进行错序处理。20.在第四方面的另一实施方式中,管理的步骤包括:21.根据索引指示,处理基于数据包的事务的多个数据包中的至少一个错序数据包;或者22.通过在第一次接收到操作的相应的基于数据包的事务的数据包时为操作的每一个基于数据包的事务生成元素,创建与操作的基于数据包的事务的递送顺序对应的队列;以及23.在操作的相应的基于数据包的事务完成时,从队列中移除操作的每一个基于数据包的事务的元素。24.在第五方面,本公开涉及一种计算机程序产品,包括计算机可读代码指令,该计算机可读代码指令在计算机中运行时使得计算机执行根据本公开的第三方面和第四方面中任何一个的方法及其实施方式。25.在研究附图和具体实施方式之后,本公开的其他系统、方法、特征、和优点对于本领域技术人员来说是或变得显而易见。预期所有这些其他系统、方法、特征、和优点包括在本说明书中及本公开的范围内,并且受所附权利要求的保护。26.除非另有定义,本文所使用的所有技术和/或科学术语的含义与实施例领域的普通技术人员所公知的含义相同。与本文所描述的方法和材料类似或等同的方法和材料可以用于实施例的实践或测试,下文描述示例性的方法和/或材料。若存在冲突,则以包括定义在内的专利说明书为准。此外,材料、方法、以及示例都只用于说明,并非必要限定。附图说明27.本文仅通过举例的方式结合附图描述了一些实施例。现在具体结合附图,需要强调的是所示细节是作为示例,并且是为了说明性讨论实施例。就这点而言,根据说明书和附图,如何实践实施例对于本领域技术人员而言是显而易见的。28.在附图中:29.图1示意性地示出了事务错序地到达接收器的问题示例;30.图2示意性地示出了根据本公开的一些实施例的用于发送和接收多个基于数据包的事务的装置,其中一些基于数据包的事务未按事务的顺序接收;31.图3示意性地示出了根据本公开的一些实施例的错序接收基于数据包的事务的示例;32.图4示意性地示出了根据本公开的一些实施例的错序接收基于数据包的事务的另一示例。33.图5示意性地示出了根据本公开的一些实施例的错序地接收三个rdma发送操作的基于数据包的事务的示例;34.图6示意性地示出了根据本公开的一些实施例的用于处理从发送器到接收器的多个基于数据包的事务的发送的方法的流程图,该多个基于数据包的事务在接收器处被错序地接收;以及35.图7示意性地示出了根据本公开的一些实施例的用于处理多个基于数据包的事务的接收的方法的流程图,该多个基于数据包的事务在接收器处被错序地接收。具体实施方式36.在本公开中描述的一些实施例涉及通信系统,更具体但非排他地,涉及用于处理错序递送事务的系统和方法。37.远程直接内存访问(rdma)需要底层可靠传输。数据包从发送器(sender/transmitter)发送到接收器,并在必要时(例如,在数据包丢失而没有到达目的地的情况下)进行重传。programmableread-onlymemory,eprom或闪存)、静态随机存取存储器(staticrandomaccessmemory,sram)、便携式压缩盘只读存储器(portablecompactdiscread-onlymemory,cd-rom)、数字多功能盘(digitalversatiledisk,dvd)、记忆棒、软盘,以及上述任意适当组合。本文所使用的计算机可读存储介质本身不应被解释为瞬态信号本身,例如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲),或者通过电线传输的电信号。44.本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到相应计算/处理装置,或通过例如因特网、局域网、广域网和/或无线网络等网络下载到外部计算机或外部存储装置。网络可包括铜传输电缆、光学传输光纤、无线传输、路由器、防火墙、交换器、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发所述计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。45.用于执行实施例的操作的计算机可读程序指令可以是以一种或多种编程语言的任何组合编写的汇编指令、指令集架构(instruction-set-architecture,isa)指令、机器指令、机器相关指令、微码、固件指令、状态设定数据或源码或目标代码,该一种或多种编程语言包括例如smalltalk、c 等的面向对象的编程语言,以及例如“c”编程语言或类似编程语言的常规程序编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上作为独立软件包执行,部分在用户的计算机上和部分在远程计算机或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过包括局域网(localareanetwork,lan)或广域网(wideareanetwork,wan)的任何类型的网络而连接到用户的计算机,或者可以对外部计算机进行连接(例如,使用因特网服务供应商通过因特网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(field-programmablegatearray,fpga)或可编程逻辑阵列(programmablelogicarray,pla)的电子电路可以通过利用计算机可读程序指令的状态信息将电子电路个性化而执行计算机可读程序指令,以便执行实施例的各方面。46.本文参考根据实施例的方法、装置(系统)、和计算机程序产品的流程图说明和/或框图来描述实施例的各方面。应理解,可以通过计算机可读程序指令实施流程图说明和/或框图中的每个框,以及流程图说明和/或框图中的框的组合。47.这些计算机可读程序指令可以被提供给通用计算机、专用计算机,或者其他可编程数据处理装置的处理器,以制造机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图框中指定的功能/动作的手段。这些计算机可读程序指令也可以存储在计算机可读存储介质中,可以控制计算机、可编程数据处理装置、和/或其他设备以特定的方式运行,使得有指令存储于其中的计算机可读存储介质包括制造品,其中包括实现流程图和/或框图框中指定的功能/动作的方面的指令。48.计算机程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他装置上,以使得在计算机、其他可编程装置、或其他装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机、其他可编程装置、或其他装置上执行的指令实现流程图和/或框图框中特定的功能/动作。49.图中的流程图和框图示出了根据各实施例的系统、方法和计算机程序产品的架构、功能和操作的可能实施方式。就这点而言,流程图或框图中的每个框可以表示指令的模块、片段或部分,其中包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代性实施方式中,框中指出的功能可能不按图中指出的顺序进行。例如,连续显示的两个框实际上可以基本同时执行,或者根据所涉及的功能,有时可以以相反的顺序执行该框。还应注意,框图和/或流程图说明中的每个框,以及框图和/或流程图说明中的框的组合可以通过专用的基于硬件的系统实施,该系统执行指定功能或动作,或实行专用硬件和计算机指令的组合。50.现在参考图2,图2示意性地示出了根据本公开的一些实施例的用于发送和接收多个基于数据包的事务的装置,其中一些基于数据包的事务是未按事务的顺序接收的。装置200包括发送器210和接收器220。发送器210包括处理器211、存储器212、和主机软件213。接收器220包括处理器221、存储器222、和主机软件223。发送器的处理器211在操作的每个事务中识别出递送的主机索引指示,该主机索引指示包含在主机软件213中。事务是基于数据包的事务且包括多个数据包。操作可以是例如读操作、写操作、发送操作等。处理器211将索引指示合并到该操作的事务的多个数据包中的每个中,并指示通过网络传输协议将合并有索引指示的该操作的多个基于数据包的事务发送到接收器220。处理器211可以在发送器中、可以是网络设备上的专用硬件块或处理单元、或者可以是主机软件上的处理器。51.根据本公开的一些实施例,基于主机内部队列索引的索引指示是工作队列元素(wqe)。根据本公开的一些其他实施例,索引指示是特定事务类型计数器。该特定事务类型计数器可以在固件、硬件、或软件中实现。特定事务类型计数器可以实现为例如网络设备内部的操作码计数器。52.根据本公开的一些实施例,索引指示被合并到相应的基于数据包的事务的多个数据包的有效载荷中。替代地,索引指示被合并到相应的基于数据包的事务中的多个数据包中的每个的至少一个头(header)中。53.根据本公开的一些实施例,索引指示也可以合并到每个数据包的头中。在本公开的一些实施例中,在多个基于数据包的事务的每一个中,发送器的处理器211通过重写(overwritting)相应的基于数据包的事务的多个数据包的头中的未使用字段,合并该索引指示。根据本公开的一些实施例,在多个基于数据包的事务的每一个中,发送器将索引指示合并到旨在用于事务信息目的的专用字段中,该专用字段在相应的基于数据包的事务的多个数据包的每一个的至少一个头中。54.接收器220接收所发送的根据网络传输协议编码的操作的基于数据包的事务,其中,相应的基于数据包的事务的多个数据包的每一个中合并有递送的索引指示。接收器之后根据该索引指示管理对该多个基于数据包的事务中的错序数据包的处理。在本公开的一些实施例中,接收器220的处理器221对该多个基于数据包的事务中的错序数据包的处理进行管理。处理器221可以在发送器中、可以是网络设备上的专用硬件块或处理单元、或者可以是主机软件上的处理器。在数据包符合事务顺序的情况下,处理器221根据索引指示处理基于数据包的事务的多个数据包中的至少一个错序数据包。替代地,在接收到的数据包不符合事务顺序的情况下,接收器220的处理器221处理特殊的接收队列,该队列对应于操作的事务的递送顺序。在首次接收到来自操作的相应的基于数据包的事务的数据包时,该处理器为该操作的每个基于数据包的事务生成一个元素,并将该元素存储在接收器220的存储器222中。当操作的相应的基于数据包的事务完成时,处理器221从特殊的接收队列中移除操作的每个基于数据包的事务的元素。55.可选地,本公开的索引指示基于主机内部队列索引或基于特定事务类型递增计数器。56.根据本公开的一些实施例,索引指示可以是绝对数、或相对数、和/或无限运行索引指示。57.根据本公开的一些实施例,在多个基于数据包的事务的每一个中,发送器接收来自接收器的成功发送操作的相应的基于数据包的事务中的第一个数据包的肯定应答(acknowledgment,ack)。由于事务的第一个数据包通常包括用于放置该事务的每个数据包的地址,因此响应于该ack,发送器可以停止将索引指示合并到操作的相应的基于数据包的事务的多个数据包中。根据本公开的一些其他实施例,响应于接收到的ack,发送器可以继续将索引指示合并到操作的相应的基于数据包的事务的多个数据包中。也就是说,事务的第一个数据包中的信息并不总是足以放置所有错序地接收到的数据包。例如,在操作的六个事务已经发送,接收器接收到该操作的三个事务的三个第一数据包的情况下,接收器不知道除了接收器已经接收到的三个第一数据包的三个事务之外,有多少事务丢失。58.根据本公开的一些实施例,索引指示可以与最近一次接收到对索引指示的ack相对。这意味着当发送器接收到对于特定事务的所有数据包的ack,从而该特定事务的所有数据包在接收器处被接收时,发送器可以重新开始索引指示的计数。因此,发送器使用尽可能小的数字作为索引指示,并在发送数据包时在头或有效载荷(payload)上消耗很少的比特。在索引指示是相对的这种情况下,每次或每隔几次发送器接收到对于特定事务的所有数据包在接收器处被成功处理的ack时,发送器会重新开始计算事务的索引指示。在这种情况下,主机数据掌握着指示事务总数量的数字,这个数字与索引指示不同,索引指示在接收到最近的ack后重新开始对事务计数。在索引指示是无限的情况下,根据本公开的一些实施例,索引指示被限制为可以由可用比特表示的最大数字,该可用比特是用于在数据包中合并索引指示的比特。在这种情况下,一旦索引指示达到可被表示的最大数字,索引指示就重新开始计数。59.图3示意性地示出了根据本公开的一些实施例的错序接收基于数据包的事务的示例。在这个示例中,发送器310向接收器320发送了事务a3、事务b3、和事务c3这三个事务。60.首先发送包括数据包301、302、和303的事务a3。发送器的处理器识别出发送器的主机软件中的索引指示,并将该索引指示合并到事务a3的数据包301、302、和303中。由于a3是第一个事务,事务a3的索引指示可以是例如绝对数1,将该绝对数1合并到事务a3的所有数据包中。替代地,索引指示可以是相对数,例如x 1,其中x是预定义的数字。接收器320首先接收数据包301,接收器的处理器生成标记为“1”的元素,该标记为“1”的元素对应于事务a3,取自数据包301。所有属于事务a3的数据包都存储在元素“1”中。在接收到数据包301后,接收器接收数据包303。由于数据包303包含与数据包1相同的索引指示,接收器的处理器将数据包3存储在元素“1”处。之后接收器接收到数据包302。由于数据包302包含与数据包301和数据包303相同的索引指示,接收器将数据包2存储在元素“1”处。一旦事务a3完成且事务中的所有数据包都被接收到,就将元素“1”从接收器的特殊接收队列中移除。61.第二个事务即事务b3包含数据包304、305和306。在发送器处,在主机软件识别出事务b3的索引指示,并将该索引指示合并到事务b3的每个数据包中。由于事务b3是第二个事务,索引指示可以是绝对数2,或相对数x 2,其中x是预定义的数字。按以下顺序发送事务b3的数据包:304、305和306。接收器320接收到第一个数据包304。由于数据包304是接收器第一次接收到的事务b3中的数据包,接收器的处理器在接收器的特殊接收队列中生成标记为“2”的新元素,该标记为“2”的元素取自数据包304,对应于事务b3。在元素“2”中,存储所有属于事务b3且包含的索引指示与事务b3相同的数据包。之后接收器接收到数据包305,该数据包305包含与数据包304相同的索引指示。接收器的处理器将数据包305存储在元素“2”处。之后接收器接收到数据包307,该数据包307不属于事务b3。数据包307属于新的事务c3,因此数据包307包含的索引指示与事务a3和b3的索引指示不同。由于事务c3是第三个事务,索引指示可以是绝对数3,也可以是相对数x 3,其中x是预定义的数字。因此,接收器的处理器生成标记为“3”的新元素,该标记为“3”的元素取自数据包307,对应于事务c3。一旦生成元素“3”,特殊接收队列中就包含“2”和“3”两个元素。在数据包307之后,接收器接收到数据包306,这是事务b3的最后一个数据包,该数据包306包含事务b3的索引指示。接收器的处理器将数据包306存储在元素“2”中。在这个阶段,由于事务b3所有的数据包都已经接收到,接收器320的处理器将元素“2”从特殊接收队列中移除。之后接收器接收到数据包308,该数据包308属于事务c3,因此数据包308包含与数据包307相同的索引指示。接收器320的处理器将数据包308存储在元素“3”处,由于事务c3所有的数据包都已经接收到,接收器将元素“3”从特殊接收队列中移除。62.图4示意性地示出了根据本公开的一些实施例的错序接收基于数据包的事务的另一示例。在这个示例中,发送器410向接收器420发送了事务a4、事务b4、和事务c4这三个事务。63.首先发送包括数据包401、402和403的事务a4。发送器410的处理器识别出发送器的主机软件中的索引指示,并将该索引指示合并到事务a4的数据包401、402、403中。接收器420首先接收数据包401,接收器的处理器生成标记为“1”的元素,该元素对应于事务a4。在元素“1”中存储所有属于事务a4的数据包。在接收到数据包401后,接收器接收数据包403。由于数据包403包含的索引指示与数据包401相同,接收器420的处理器将数据包403存储在元素“1”处。之后,接收器接收到数据包402。由于数据包402包含的索引指示与数据包401和403的相同,接收器的处理器将数据包402存储在元素“1”处。一旦事务a4完成,且事务a4所有的数据包都被接收并存储在元素“1”中,从接收器的特殊接收队列中移除元素“1”。64.第二个事务即事务b4包含数据包404、405、和406。在发送器处,在主机软件识别出事务b4的索引指示,并将该索引指示合并到事务b4的每个数据包中。事务b4的数据包按以下顺序传送:404、405、和406。接收器320接收第一个数据包405。由于数据包405属于新的事务,并且包含新的事务b4的索引指示,故接收器420的处理器在接收器的特殊接收队列中生成标记为“2”新元素,该元素对应于事务b4的索引指示。之后,接收器接收到数据包406,该数据包406包含的索引指示与数据包405的相同。接收器的处理器将数据包406存储在特殊接收队列的元素“2”中。之后,接收器接收到数据包407,该数据包407是来自事务c4的数据包。由于407是新的事务的数据包,所以数据包407包含新的索引指示,该新的索引指示不同于事务a4和b4的索引指示。因此,在特殊接收队列中,接收器420的处理器生成标记为“3”的新元素。数据包407存储在元素“3”中,并且由于在数据包407之后被接收器420接收到的数据包408也属于事务c4,数据包408也存储在元素“3”中。由于事务c4仅包含数据包407和408,一旦该事务c4的所有数据包都被接收和存储,从特殊接收队列中移除元素“3”。在元素“3”被移除后,接收器接收到数据包404。由于数据包404属于事务b4,该事务b4已经有对应的元素“2”,该数据包404被存储在元素“2”中。由于数据包404是事务b4的最后一个数据包,并且已经接收到事务b4所有的数据包,从接收器420的特殊接收队列中移除元素“2”。65.可选地,将索引指示合并到相应的基于数据包的事务的一个数据包中。66.根据本公开的一些实施例,多个事务是基于无线带宽的rdma协议、rocev1协议、以及rocev2协议。事务可以用于有标记的操作和/或无标记的操作。例如,事务可以用于发送操作,该发送操作是无标记的操作,事务也可以是读操作,该读操作是有标记的操作。67.图5示意性地示出了根据本公开的一些实施例的错序地接收三个rdma发送操作的基于数据包的事务的示例。在接收器520中,生产者生成n个wqe(索引),其中消费者指向下一个预期事务,接收器预期接收该下一个预期事务。因此,在接收器接收到事务之前,消费者指向wqe索引1。当接收器520接收到事务a5(该事务a5是rdma发送操作的事务)的第一个数据包501时,接收器读取数据包501中的索引指示,并看到数据包501包含的索引指示为“1”。接收器因此从接收队列(rq)中取出wqe元素“1”,并将数据包501直接处理到wqe元素“1”代表的缓冲器。元素“1”取自数据包501的索引指示,与第一个rdma发送操作的事务a5的索引指示对应。在接收器接收到第一个事务(意味着第一个事务中的任何数据包)时,接收队列(rq)中的消费者指向下一个预期事务。在这种情况下,消费者指向wqe索引2。之后,在成功地完成事务a5后,没有如同消费者预期的那样接收到rdma发送操作的第二个事务。相反,接收到具有数据包507和508的第三个rdma发送操作。因此,接收器520的处理器生成元素“3”,该元素取自数据包507的索引指示字段(有效载荷或至少一个头),该元素对应于事务c5,接收器因此从接收队列中取wqe元素“3”,并将数据包507直接处理到wqe元素“3”代表的缓冲器。之后,消费者跳转到索引4,该索引4是索引3之后的下一个预期索引。之后,在接收器处接收到事务b5(即第二个rdma发送操作),数据包接收顺序如下:506、505、和504。在这种情况下,接收器读取合并到数据包506中的索引指示,并看到数据包506包含的索引指示为“2”。接收器因此从接收队列(rq)中取出wqe元素“2”,并将数据包506直接处理到wqe元素“2”代表的缓冲器。元素“2”取自数据包506的索引指示,与第二个rdma发送操作的事务b5的索引指示对应。然而,消费者仍然指向接收队列(rq)中的索引4,因为4仍然是事务b5完成后的下一个预期索引。68.图6示意性地示出了根据本公开的一些实施例的用于处理从发送器到接收器的多个基于数据包的事务的发送方法的流程图,这些事务在接收器处被错序地接收。在601,在根据网络传输协议编码的操作的多个基于数据包的事务的每一个中,发送器的处理器识别包含在主机软件的主机数据中的递送索引指示。在602,将识别出的递送索引指示合并到相应的事务的多个数据包的每一个数据包中。该索引指示可以基于主机内部队列索引,例如,工作队列元素(wqe),或者该索引指示可以基于特定事务类型计数器。该索引指示可以是绝对数、相对数、和/或无限运行索引。在本公开的一些实施例中,索引指示被合并到每个数据包的至少一个头中,或者被合并到每个数据包的有效载荷中。通过重写相应的基于数据包的事务的多个数据包的至少一个头中的未使用字段,将索引指示合并到该至少一个头中。在本公开的一些其他实施例中,将该索引指示合并到每个数据包的至少一个头中的旨在用于事务信息目的的专用字段中。可选地,也可以将该索引指示合并到相应事务的一个数据包中。69.在603,发送器的处理器给出用于发送多个数据包的指令,该多个数据包合并有递送索引指示。70.图7示意性地示出了根据本公开的一些实施例的用于处理接收多个基于数据包的事务的方法的流程图,这些事务在接收器处被错序地接收。在701,在接收器处接收根据网络传输协议编码的操作的多个基于数据包的事务,其中,在相应的基于数据包的事务的多个数据包的每一个中合并有递送索引指示。71.在702,接收器的处理器根据递送索引指示,管理对多个基于数据包的事务中的错序数据包的处理。根据本公开的一些实施例,在错序数据包不符合事务顺序的情况下,创建特殊接收队列,该特殊接收队列对应于操作的基于数据包的事务的递送顺序。在特殊接收队列中,在第一次接收到操作的相应的基于数据包的事务的数据包时,为操作的每个基于数据包的事务生成元素。在操作的相应的基于数据包的事务完成时,从队列中移除该元素。根据本公开的一些实施例,在错序数据包符合事务顺序的情况下,根据索引指示错序地对数据包进行处理。72.根据本公开的一些实施例,从接收器向发送器发送成功发送操作的相应的基于数据包的事务的第一个数据包的ack。根据本公开的一些实施例,作为响应,可以停止将索引指示合并到每个数据包中。根据本公开的一些其他实施例,响应于接收到ack,可以继续将索引指示合并到每个数据包中。73.根据本公开的一些其他实施例,索引指示是与最近一次接收到对于索引指示的ack相对的。74.根据本公开的一些实施例,发送和接收错序递送事务的方法可以指示数据包丢包或指示事务的第一个数据包的错序递送。在rdma和/或roce中,只有事务的第一个数据包提供上下文,并包括发生事务的内存地址。由于甚至在接收到事务的第一个数据包之前就能够将事务的数据包存储于在特殊接收队列中生成的元素中,因此,本公开的错序递送事务的发送和接收方法对于rdma的实现方式可能具有很高的重要性。75.根据本公开的一些实施例,提供了一种计算机程序产品。该计算机程序产品包括计算机可读代码指令,该计算机可读代码指令在计算机中运行时使得计算机执行上述图6和图7中描述的方法。76.对各个实施例的描述只是为了说明的目的,并不旨在穷举或限于所公开的实施例。在不脱离所描述实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员显而易见。在本文中使用的术语经选择以尽可能地解释本文实施例的原理、实际应用、或与市场上可找到的技术相比的技术进步,或能使本领域的其他普通技术人员理解本文所公开的实施例。77.预期在从本技术走向成熟的专利有效期间,将开发许多用于处理错序递送事务的相关设备和方法,并且用于处理错序递送事务的设备和方法这一术语的范围旨在先验地包括所有这些新技术。78.本文所使用的术语“约”是指±10%。79.术语“包括”、“包含”、“有”、“具有”表示“包括但不限于”。这个术语包括了术语“由……组成”和“基本上由……组成”。80.短语“基本上由……组成”表示组成物或方法可以包括额外成分和/或步骤,但前提是上述额外成分和/或步骤不会实质上改变所要求的组成物或方法的基本和新颖特性。81.除非上下文中另有明确说明,本文使用的单数形式“一个”和“所述”包括复数含义。例如,术语“一个复合物”或“至少一个复合物”可以包括多个复合物,包括其混合物。82.本文使用的词语“示例性的”表示“用作示例、实例、或说明”。任何描述为“示例性的”实施例并不一定理解为优先于或优于其他实施例和/或排除其他实施例的特征的组合。83.本文使用的词语“可选地”表示“在一些实施例中提供且在其他实施例中没有提供”。任何特定实施例可以包括多个“可选的”特征,除非这些特征相互冲突。84.在整个申请中,各种实施例可以以范围格式呈现。应理解,以范围格式的描述仅为了方便和简洁,并且不应该解释为对实施例范围的固化限制。因此,对范围的描述应认为是已经具体地公开所有可能的子范围以及上述范围内的单独的数值。例如,对例如从1到6的范围的描述应当认为已经具体公开了例如从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等的子范围,以及上述范围内的单独的数字,例如1、2、3、4、5、6。不管范围的宽度如何,这都适用。85.无论何时当在本文中指示数字范围时,表示包括了所指示的这个范围内任何列举的数字(分数或整数)。短语“在第一指示数和第二指示数之间的范围内”以及“从第一指示数到第二指示数的范围内”在本文中可互换使用并且表示包括第一指示数和第二指示数以及其之间的所有分数和整数。86.应理解,为简洁起见,在单独实施例的上下文中描述的实施例的某些特征还可以组合提供于单个实施例中。相反地,为简洁起见,在单个实施例的上下文中描述的实施例的各个特征也可以单独地或以任何适合的子组合或以合适的方式提供于任何其他所描述的实施例中。在各个实施例的上下文中描述的某些特征不视为那些实施例的基本特征,除非没有这些元素上述实施例无效。87.尽管已经结合具体的实施例对实施例进行了描述,但许多替代性方案、修改、和变化对于本领域的技术人员来说,显然是显而易见的。因此,所附权利要求的精神和广泛范围旨在包括所有这些替代性方案、修改、和变化。88.说明书中提及的所有出版物、专利、和专利申请通过引用全部并入本说明书,如同每个单独的出版物、专利、或专利申请被具体且单独地指示为通过引用并入本文。此外,在本技术中对任何参考文献的引用或标识都不应解释为承认该参考文献可作为实施例的现有技术。就节标题的使用而言,不应将节标题解释为必要的限定。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献