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

确认到网络装置的卸载的制作方法

2022-03-22 22:06:18 来源:中国专利 TAG:

确认到网络装置的卸载


背景技术:

1.联网主机计算机传统上已使用主机软件处理网络和运输层处的通信任务以及链路层处的一些任务,同时将其余的链路和物理层通信任务留给附带的网络适配器。因此,对于由网络适配器所传送或接收的大量包,主机处理器在处理分组、报头操作、接收确认以及错误控制方面花费资源。服务器系统在较高的传送和接收速率通常将具有最大网络传送速率,其受到主机处理器处理它的网络和传输层任务的能力而不是受到物理连接或网络适配器速度限制。因此,主机实现的联网任务可以减少带宽使用并且占用可能另外专用于运行应用的处理器吞吐量。
附图说明
2.图1示出接收器核使用的示例。
3.图2描绘了网络装置中的ack卸载引擎(aoe)的示例。
4.图3示出包和加密包的示例。
5.图4示出包处理流水线的示例概述。
6.图5描绘了示例过程。
7.图6描绘了示例网络接口。
8.图7描绘了系统。
9.图8描绘了示例环境。
具体实施方式
10.用户空间传送控制协议(tcp)堆栈(例如,mtcp、fstack、ans、tldk、vpp等等)可用于提供传输层协议处理。互联网工程任务组(ietf)快速用户数据报协议(udp)互联网连接(quic)传输规范是基于udp的演进传输层标准。一些quic实现利用用户空间实现,其使堆栈易于更新、调试和建立简档(profile),并且那些quic服务器/客户端中的udp套接字的使用是相似的。在堆栈中,网络实例选择可用的套接字文件描述符(fd),如果有任何未完成的数据准备用于传送的话则将其写入套接字缓冲器或者从套接字缓冲器读取数据。
11.然而,对于quic的一些实现,接收器平台花费处理器周期来处理确认(ack)消息的生成。在一些情况下,处理器(例如,中央处理单元(cpu))生成ack消息可以花费比处理所接收包内容甚至更多的处理器周期。例如,用户空间中http_quic的使用可以产生与单向业务(例如,上游或下游业务)的确认生成有关的显著的处理成本。单向业务的一些示例可以包括文件下载或块数据备份或在线视频/音频。另外,ack生成可以在用户空间中得到处理,这牵涉遍历包括内核空间的软件堆栈到用户空间边界。
12.例如,对于http-get操作,quic确认的传送花费约20%的cpu资源来生成ack以确认到达的传输层包号。图1示出其中接收器核花费约15.8%的cpu资源处理1.03gb/s有效载荷,而消耗21.4%的cpu资源仅发送33mb/s ack消息的示例。如示出的,ack的生成可以触发相当大的用户-内核系统调用来运送尺寸较小的包(例如,37个字节),由此实现非常低的吞吐
量。
13.一些技术方案延迟了ack消息的生成,由此多个quic ack响应可以在一起组合成一个单一响应,这可以减少协议处理开销。例如,可以应用传输参数max_ack_delay来确保每往返时间(rtt)ack被发送至少一次。可以减少确认消息发送频率,同时允许接近实时的拥挤管理。然而,被延迟的ack所引入的额外等待时间在一些情况下可以导致另外的延迟。来自接收器的反馈减少可以使发送方的损失和拥挤响应减小。
14.用户空间udp协议可以用于绕过内核堆栈并且用并行且高性能的用户空间实现来代替网络堆栈。业务拥挤控制、握手和顺序可以由quic协议层处理。然而,并行用户空间联网堆栈可具有安全性、可管理性、鲁棒性和协议兼容性问题。
15.至少对于只包括stream帧或内容的包,各种实施例将至少quic包的接收确认卸载到网络接口,对于所述stream帧或内容的接收可以在对帧或内容的应用处理之前被确认,以减少整体cpu使用并且提高网络应用的功率效率。各种实施例可以与任何传输层协议和加密/解密方案一起使用,其包括但不限于远程直接存储器访问(rdma)、传送控制协议(tcp)、多路径tcp(mptcp)、infiniband、fibrechannel、用户数据报协议(udp)、google quic(gquic)、传输层安全性(tls)、ip安全性(ipsec)及其变体。例如,可以使用在udp上实现的tcp和tls以及http/2。各种实施例可以使用用户空间软件堆栈来实现。
16.图2描绘了网络装置中的与密码加速器一起工作来生成并且传送确认的ack卸载引擎(aoe)的示例。各种实施例提供网络接口卡,其执行基于包的密码卸载和对包保护已得到验证且被去除的stream帧的实时确认。描述首先转向使用网络接口卡(nic)200来处理包,然后转向nic 200的初始化来处理包的ack生成,所述包只包括在对内容应用处理之前针对该内容的接收可以被确认的内容。
17.在一些示例中,如下处理进入quic包。在nic 200的所接收包被业务归类器202处理来将如与quic连接上下文相关联的quic包归类。quic连接上下文可以被流上下文208跟踪。例如,流上下文209可以包括密码信息(例如,适用于解密或加密的算法以及在密码操作期间使用的对应密钥)。流上下文208可以包括连接状态。密码引擎204可以使用流上下文208中的密码信息来验证且去除基于quic密码的包保护并且提供明文帧内容。如果所接收包的解密失败,则可以向网络装置驱动器252发送通知来指示卸载已经失败并且quic层260可以执行包的处理来尝试解密。如果密码密钥已经改变且更新过的密钥还未传播到密码引擎204则可出现这样的情况。如果解密成功,则流上下文208中的quic连接上下文可以用来自所接收包的报头的(pn)来更新。
18.在一些示例中,密码引擎204可以是与执行ipsec和tls的装置分开的装置。在一些示例中,密码引擎204还可以执行所卸载的ipsec解密/加密、所卸载的tls解密或加密或所卸载的内核tls(ktls)解密/加密(例如,tls-hw-tx-offload和tls-hw-rx-offload)。ktls是tls数据路径的linux内核实现,由此加密和解密步骤移入内核并且与进出计算机或服务器的业务流一致。
19.ack卸载引擎206可以确定所接收包是否只包括stream帧或内容,针对所述stream帧或内容的接收确认在应用访问或处理内容之前被准许进行。根据互联网工程任务组(ietf)起草标准“quic:基于udp的多路和安全传输”(draft-ietf-quic-transport-29(2020)),stream帧是即使未被任何应用交付和处理、访问或消耗也可以被确认的一般应用
有效载荷。例如在draft-ietf-quic-transport-latest(2020年8月)的章节19.8中描述了stream帧及其变体。stream帧可以承载流数据。流多路复用可以通过使来自多个流的stream帧交织为一个或多个quic包而实现。单个quic包可以捆绑来自多个流的stream帧。stream帧在它的报头中可以包括识别该帧是stream帧的值。例如,在0x08-0x0f之间的帧类型的值将帧识别为stream帧。
20.例如,接收器(例如,ack卸载引擎206)可以解析所破译的包并且对所有帧迭代来检测包只包括stream帧。例如,非stream帧可以包括控制消息、所接收的ack、在被应用处理、消耗或访问之前其接收无法被确认的帧以及ping帧(例如,用于检查到对等体的可达性)或reset_stream帧(例如,用于突然中止流的发送部分)。
21.如果所接收包只包括stream帧,则nic 200可以将来自所接收包的任何stream帧复制到缓冲器以供软件堆栈处理并且在描述符中包括对所接收包执行了ack操作的指示。nic 200可以向网络装置驱动器252所管理的缓冲器提供经解密的包内容并且对完整的描述符提供其中存储经解密的包与指示已执行ack操作的ack卸载(ako)标志的缓冲器的指示。另外,ack卸载引擎206可以根据上下文内部的信息(例如,以太网报头、ip源和目的地地址以及udp端口标识符)来构造ack消息或包,密码引擎204可以对该ack消息或包加密,并且可以将经加密的ack消息或包插入外出端口的规定tx队列以传送到包的发送方(例如,对等体)。因此,各种实施例可以释放处理器资源用于在服务器或计算平台中的其他使用,其否则将用于生成ack消息或包。在一些示例中,通过使用nic 200可以比使用计算平台250的处理器更快速地生成ack消息或包。
22.应用264可以处理经解密的包。例如,可以使用任何类型的应用,诸如视频流播应用、数据库、web服务器、web浏览器等等。应用264可以使用http/3或域名系统(dns)以用于网络或结构通信。
23.如果在所接收包中存在任何非stream帧,则nic 200可以将来自所接收包的任何stream帧和非stream帧复制到缓冲器以供软件堆栈处理。网络装置驱动器252可以管理缓冲器的内容,并且可以通过内核堆栈处理缓冲器中的所接收包并经由套接字258将其呈现给用户空间quic层262。nic 200还可以在描述符中包括对所接收包不曾执行ack操作的指示。软件堆栈可以对于包括非stream帧或在被应用处理之前无法确认其接收的帧的任何接收包处理ack消息或包的生成。nic 200可以传送由软件堆栈生成的ack消息或包。
24.在一些示例中,nic 200包括网络接口、网络接口控制器或网络接口卡。在一些示例中,网络接口可以是带有诸如处理器或存储器之类的装置的片上系统或交换机的部分。
25.计算平台250可以包括一个或多个中央处理单元(cpu)、核、图形处理单元(gpu)、加速器、存储器、存储设备和接口装置(例如,结构接口、总线接口或互连接口)。计算平台250可以执行与管理包传送和接收有关的各种软件层。可以执行操作系统(未示出),诸如但不限于,vmware
®
、linux
®
、windows
®
服务器、freebsd、android
®
、macos
®
、ios
®
,或任何其他操作系统。计算平台250可以在虚拟机或容器环境中执行任何软件。
26.例如,操作系统可以确定与装置驱动器252相关联的装置的能力。例如,操作系统可以接收装置(例如,nic 200)的能力的指示来执行以下中的一个或多个:所接收包的解密、对于只包括stream帧的包生成ack、生成nack或选择性ack(sack)(rfc 2018)。对于sack,接收器(例如,nic 200)可以告知发送方已成功到达的段,因此该发送方可以只重传
还未到达接收器的段。操作系统可以请求驱动器252启用或停用nic 200来执行以下中的一个或多个:所接收包的解密、对于只包括stream帧的包生成ack、生成nack或sack。在一些示例中,操作系统本身可以启用或停用nic 200来执行以下中的一个或多个:所接收包的解密、对于只包括stream帧的包生成ack、生成nack或sack。操作系统可以向nic 200提供使用nic 200的一个或多个特征的请求(例如,来自应用、虚拟机或容器),所述一个或多个特征是诸如以下中的任一个:所接收包的解密、对于只包括stream帧的包生成ack、生成nack或sack。
27.例如,应用264中的任何应用可以对nic 200请求使用或不使用密码卸载或ack卸载性能。nic 200的数据表、程序引导或nic 200的装置驱动器源代码可以使用硬件寄存器或软件配置流和样本代码来访问密码卸载或ack卸载性能。
28.ip层254可以核实所接收包的目的地ip报头来确保该目的地ip报头与本地quic实例的ip地址一致。ip层254可以用ip报头来封装外出包并且将数据报交付给nic 200。ip层254可以在内核空间中执行。
29.udp层256可以执行进入包的完整性检查(例如,核实校验和)并且基于udp端口号将该进入包分配给quic连接。对于要传送的数据,udp层256可以用udp报头封装数据并且将包交付给ip层254。udp层256可以在内核空间中执行。
30.udp套接字层258可以用于运送quic有效载荷并且控制在udp套接字上运送的消息。从实现的角度来看,该套接字可以分解为多个套接字,因此可以分别处理quic数据路径和控制路径。udp套接字层258可以在内核空间中执行并且向在用户空间中执行的软件或用户空间层提供网关。内核空间可以是被保留以供特权操作系统内核、内核扩展、一些装置驱动器和其他软件使用的存储器区域,并且可以提供安全操作。相比之下,用户空间(user space或userspace)可以是其中应用软件和一些驱动器执行且写或读内容的存储器区域。
31.quic层260可以用于执行用户空间quic堆栈处理,其包括至少由任何quic规范所定义的传输层功能性。quic层260可以在用户空间中执行。quic tls层262可以在quic的连接初始化阶段期间实现密钥交换。经协商的密钥可以被提供给nic 200以在完成握手之后供密码引擎204使用。
32.图3示出加密之前的包和被加密的包的示例。然而,本文描述的示例可以适用于任何类型的包。在quic连接建立之后,连接内的数据路径stream帧用短报头运送。具有短报头的包不包括用于指示包长度的长度字段。stream帧可以是udp数据报中的最后包。网络装置可以对外出的部分报头字段和帧加密,并且反过来对于进入的也一样。例如,如示出的,干净包(clear packet)300可以包括各种报头字段(例如,以太网、ip、udp和quic)以及帧1到n。加密包350可以包括具有最低有效位(lsb)的报头和添加的包号以及密文。密文可以包括帧1到n的加密版本。密文对于例如aead_aes_128_gcm加密方案可以包括16字节验证标签,但可以使用其他加密方案。
33.图4示出包处理流水线的示例概述。在系统400中,网络控制器402(例如,网络接口卡、网络接口控制器或网络接口)可以配置成响应于通过至少quic连接接收的包来执行ack操作,其中所述包包括stream帧而不包括非stream帧。在用远程网络接口卡或平台执行quic握手之后,构造连接上下文404来维持进入和外出连接上下文。进入上下文可以包括诸如下列表中的信息之类的信息。
上下文信息示例访问控制列表(acl)acl可以包括源或目的地ip地址、udp端口、连接id或用于过滤包的其他包特性(例如,流标识符)。acl可以用于对进入quic业务归类并且规定包是要被丢弃还是被准许由网络控制器402或平台450处理。密文信息密文信息可以包括密码算法或算法的识别、密钥和初始化向量(iv)。进入密码信息可以用于验证和破译进入包。还可以包括外出密码信息并且将其用于在网络控制器402处生成外出ack。包号所接收包号的状态。可以更新上下文来包括所接收包号。
34.连接上下文404中的上下文信息可以由quic软件堆栈或在平台450上执行的其他协议软件堆栈(例如,驱动器或操作系统)提供给网络控制器402。在一些示例中,连接上下文404可以在连接建立之后被提供给网络控制器402。
35.归类器412可以基于连接上下文404(诸如流)中的可适用acl规则来执行所接收包的过滤。包在本文可以用于指可以跨网络发送的位的各种格式化集合,诸如以太网帧、ip包、tcp段、udp数据报等。对l2、l3、l4和l7层(或层2、层3、层4和层7)的引用分别是对osi(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。物理层接口(phy)和媒体访问控制器(mac)410可以接收进入包并且根据可适用的物理层规范或标准来对数据包解码并且对所接收包执行mac地址过滤、从所接收包中分解数据以及执行错误检测。流可以是在两个端点之间运送的包的序列,一般代表使用已知协议的单个会话。因此,流可以通过所定义的n个元组的集合来识别,并且为了路由选择目的,流可以通过识别端点的元组(例如,源和目的地地址)来识别。对于基于内容的服务(例如,负载平衡器、防火墙、入侵检测系统等),流可以通过使用五个或更多元组(例如,源地址、目的地地址、ip协议、传输层源端口和目的地端口)以较细粒度来识别。流中的包预期具有与包报头中相同的元组集合。解密414可以基于连接上下文404中的进入密文信息来执行包内容的解密。
36.包号可以是由ack卸载引擎416基于传入或进入包业务的包号来跟踪和更新的所接收包的动态状态。接口(例如,寄存器)可以用于使在平台450上执行的软件堆栈与网络控制器402之间的所接收包号同步。如果所接收包具有之前接收的包号,则可以丢弃具有重复包号的所接收包。
37.在网络控制器402处接收具有新的包号的包之后,ack卸载引擎416接收新包号的接收的指示。ack卸载引擎416可以确定所接收包是包括任何stream帧而不包括非stream帧还是只包括即使未被任何应用交付和处理、访问或消耗也可以被确认的内容。基于具有新包号的所接收包正在被接收,以及包包括任何stream帧而不包括非stream帧或只包括即使未被任何应用交付和处理、访问或消耗也可以被确认的内容,ack卸载引擎416可以基于当前包号状态和连接上下文404中的层2信息来生成明文ack包(例如,quic ack包)。ack包可以包括至少源和目的地地址、包是确认的指示符字段以及正在进行接收的确认所针对的所接收包的(一个或多个)包号。在一些示例中,可以至少在draft-ietf-quic-transport-29(2020)(或其变体)的章节19.3中定义ack帧格式,但可以使用任何传输层的ack帧格式。
38.经解密的包可以发送给平台450可访问的主机接收(rx)队列,其中rx包描述符(未示出)内部具有ack卸载(ako)标志。描述符可以至少包括其中存储所接收包的存储器缓冲器(例如,rx缓冲器)的识别。ako标志可以指示网络控制器402已生成ack使得在平台450上执行的软件不需要复制ack生成且对所接收包生成另一个ack。
39.包修改器418可以基于配置来修改包。例如,包转发操作可以用于更新包报头来指
示下一目的地。
40.主机接口420和430可以在网络控制器402与平台450之间提供连接性。例如,主机接口420和430可以执行直接存储器访问(dma)操作来将数据、描述符、上下文或其他元数据从网络控制器402复制到平台450或反之亦然。例如,主机接口420和430可以与任何标准(诸如pcie、cxl)和任何其他规范兼容。
41.为了将ack包生成和传送卸载给网络控制器402,平台450(例如,软件堆栈、驱动器或操作系统)可以提供ack绑定440用于由网络控制器402生成外出ack包。ack绑定440中的信息可以包括元数据,其用于ack卸载引擎432向所接收包的发送方或中间方而不是生成ack包的平台450构造该ack包。例如,ack卸载引擎416可以生成明文ack包(例如,未加密的ack包)或请求ack卸载引擎432生成明文ack包。元数据可以包括以太网层2信息,诸如目的地mac地址、源mac地址、虚拟局域网(vlan)或优先级以及以太网传送(tx)队列id,用于存储由网络控制器402生成的ack包。ack卸载引擎432可以将ack包插入要调度的规定tx队列以供网络控制器402传输。
42.在一些示例中,ack卸载引擎432可以将多个包号的多个ack合并为单个ack包来减少生成且传送给特定发送方的ack包的数量。在一些示例中,ack卸载引擎432可以将多个包号的ack合并为单个ack包,而不管ack是否针对只包括一个或多个stream帧而不包括非stream帧的包。例如,来自平台450的一个或多个ack可以与由网络控制器402生成的一个或多个ack合并。在一些示例中,对一个或多个stream帧的nack生成可以卸载给nic。在一些示例中,选择性ack(rfc 2018)的执行可以卸载给网络控制器402。
43.业务管理器434可以调度包从网络控制器402到其他装置的传送。例如,业务管理器434可以调度由网络控制器402或平台450(或两者)生成的ack包的传送以用于传送。加密436可以在传送之前将连接上下文404所规定的加密应用于一个或多个包。phy/mac 438可以根据可适用的物理层规范或标准来执行编码并且组装包中待传送的数据,其包括目的地和源地址连同网络控制信息和错误检测散列值。
44.图5描绘了示例过程。在过程500中,在502,至少对于通过quic连接发送的包,可以启用ack卸载和密码操作以在nic处执行。在一些示例中,nic驱动器可以启用将ack消息的生成卸载到nic的能力来确认接收在被应用处理一个或多个帧之前被准许进行接收确认所针对的帧。在一些示例中,nic驱动器可以启用将ack消息的生成卸载到nic的能力来确认接收只包括stream帧的包并且对只包括stream帧的包执行密码操作。
45.在504,可以做出关于在应用处理包之前是否可以确认包的接收的确定。在一些示例中,nic可以使用对包可适用的密码上下文来执行包的解密。例如,根据quic规范,如果所接收包的解密版本(例如,具有明文有效载荷的包)只包括stream帧,则可以做出确定。如果经解密的版本接收包只包括在被应用处理之前可以确认其接收的帧,则过程继续到506。如果所接收包包括在被应用处理之前无法确认其接收的任何帧,则过程继续到520。
46.在506,nic可以向计算平台提供所接收包的内容用于访问和生成ack消息或包来确认一个或多个包的接收。在nic确认了包的接收的情况下,nic可以指示做出了确认并且所接收包的内容是可用于供应用访问的解密内容。例如,nic可以指示做出了确认使得在计算平台中执行的协议堆栈未复制接收的确认。所接收包的内容可以存储在缓冲器中以供应用和/或协议堆栈或其他软件或硬件访问。
47.例如,nic可以用确认字段中指示消息或包确认包的接收的一个位或多个位以及所接收包的其他标识符(例如,包号)来形成ack消息或包。在一些示例中,nic可以包括ack消息或包中的包号来指示接收了哪些包。连接上下文可以被nic用于确定如何对所接收包解密以及通过包号来跟踪所接收包。在508,nic可以提供ack消息或包以用于传送到发送方或中间方。例如,nic可以访问来自连接上下文的加密信息来确定如何对ack消息或包加密并且使用这样的加密信息来加密ack消息或包。例如,nic可以访问来自连接上下文的层2报头字段来确定ack消息或包的接收方并且将层2报头字段插入ack消息或包。例如,nic可以确定来自连接上下文的传送队列标识符以确定用于传送ack消息或包的传送队列并且使ack消息或包与所确定的传送队列相关联。在一些示例中,nic可以合并或捆绑包中的一个或多个确认消息以发送到相同的目的地。
48.在520,nic可以向计算平台的缓冲器提供所接收包的内容以供计算平台处理。由计算平台执行的协议堆栈可以对包解密、将经解密的包存储到缓冲器内以及在应用已处理来自所接收包的数据时或之后生成确认消息。确认消息可以提供给nic以用于传送到源对等装置。经解密的包内容可以被应用、软件堆栈或其他软件或硬件访问。
49.图6描绘了网络接口的示例。网络接口的各种实施例可以至少执行用于提供包括某些类型的内容(例如,在应用处理一个或多个帧之前被准许进行接收确认所针对的帧)的包的接收确认的本文描述的实施例以及其他实施例。收发器602可以能够按照可适用的协议(诸如如在ieee 802.3中描述的以太网)使用各种端口601-0至601-z来接收和传送包,但可以使用其他协议。收发器602可以经由网络介质(未描绘)从网络接收包以及向网络传送包。网络介质可以是有线或无线介质。有线介质可以传导电和/或光信号。例如,介质可以是任何类型的线缆,诸如但不限于光纤(例如,25gbase-sx、25gbase-lx、1000base-x、1000base-sx、1000base-lx、1000base-bx、1000base-rhx或1000base-px)、双绞线线缆(例如,1000base-t、1000base-t1、1000base-tx)、屏蔽平衡铜线缆(例如,1000base-cx)、铜背板(例如,1000base-kx)以及其他速度(例如,10gbps)。在一些示例中,网络接口可以包括以下中的一个或多个:主机结构接口(hfi)、主机总线适配器(hba)、连接到总线或连接的网络接口(例如,pcie、cxl、ddr等等)。
50.收发器602可以包括phy电路614和媒体访问控制(mac)电路616。phy电路614可以包括编码和解码电路(未示出),用于根据可适用的物理层规范或标准对数据包编码和解码。mac电路616可以配置成对所接收包执行mac地址过滤、通过核实数据完整性来处理所接收包的mac报头、去除前导码和填充以及提供包内容以供较高层处理。mac电路616可以配置成将待传送的数据组装成包,其包括目的地和源地址连同网络控制信息和错误检测散列值。
51.处理器604和包处理电路可以包括以下的任何组合:处理器、核、图形处理单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)或允许对网络接口600编程的其他可编程硬件装置。例如,处理器604可以提供用于执行工作负载的资源的识别以及供在所选资源上执行的位流的生成。例如,“智能网络接口”可以在网络接口中使用处理器604提供包处理能力。
52.包分配器624可以提供所接收包的分发以供多个cpu或核使用本文描述的时隙分配或rss来处理。当包分配器624使用rss时,包分配器624可以基于所接收包的内容计算散
列或做出另一个确定来确定哪个cpu或核将处理包。
53.中断合并622可以执行中断节制,由此网络接口中断合并622在对主机系统生成中断来处理(一个或多个)所接收包之前等待多个包到达,或等待超时到期。接收段合并(rsc)可以由网络接口600执行,由此传入包的部分组合为包的多个段。网络接口600向应用提供该合并包。
54.直接存储器访问(dma)引擎652可以将包报头、包有效载荷和/或描述符直接从主机存储器复制到网络接口或反之亦然,而不是将包复制到主机处的中间缓冲器并且然后使用从中间缓冲器到目的地缓冲器的另一复制操作。
55.存储器610可以是任何类型的易失性或非易失性存储器装置并且可以存储用于对网络接口600编程的任何队列或指令。传送队列606可以包括供网络接口传输的数据或数据的引用。接收队列608可以包括网络接口从网络接收了的数据或数据的引用。描述符队列620可以包括引用传送队列606或接收队列608中的数据或包的描述符。总线接口612可以对接口提供主机装置(未描绘)。例如,总线接口612可以与pci、pci express、pci-x、串行ata和/或usb兼容接口兼容(但可以使用其他互连标准)。
56.在一些示例中,根据本文描述的实施例,处理器604可以确定包是否包括在被应用处理之前可以确认接收所针对的内容。在一些示例中,处理器604可以执行以下中的一个或多个以分配队列或核来处理有效载荷:大的接收卸载(lro)、大的发送/分段卸载(lso)、tcp分段卸载(tso)、传输层安全(tls)卸载、接收侧缩放(rss)。lro可以指将传入网络包和运送包内容(例如,有效载荷)重新组装成更大的内容并且运送所得的更大内容但更少的包以供主机系统或虚拟化执行环境访问。
57.lso可以指生成多包缓冲器并且提供该缓冲器的内容以供传输。主机装置可以构建较大的tcp消息(或其他传输层)(例如,在长度上64kb)并且处理器604可以将消息分段成较小的数据包以供传输。tls至少在传输层安全(tls)协议版本1.3,rfc 8446(2018年8月)中定义。tls卸载可以指根据处理器604中的tls来卸载内容的加密或解密。网络接口600可以接收数据以用于加密并且在传送一个或多个包中的加密数据之前执行数据的加密。网络接口600可以接收包并且在将解密数据运送到主机系统之前对包的内容解密。在一些示例中,执行任何类型的加密或解密,诸如但不限于安全套接字层(ssl)。
58.图7描绘了系统。各种实施例可以被系统700用于提供包括某些类型的内容的包的接收确认和本文描述的其他实施例。系统700包括处理器710,其为系统700提供处理、操作管理和指令执行。处理器710可以包括任何类型的微处理器、中央处理单元(cpu)、图形处理单元(gpu)、处理核或为系统700提供处理的其他处理硬件,或处理器的组合。处理器710控制系统700的整体操作,并且可以是或包括,一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑装置(pld)或类似物,或这样的装置的组合。
59.在一个示例中,系统700包括耦合到处理器710的接口,其可以代表系统组件的需要更高带宽连接的更高速接口或高吞吐量接口,诸如存储器子系统720或图形接口组件740或加速器742。接口712代表接口电路,其可以是独立组件或集成到处理器管芯上。在存在的情况下,图形接口740接口连接到图形组件以用于向系统700的用户提供视觉显示。在一个示例中,图形接口740可以驱动高清(hd)显示器,其向用户提供输出。高清可以指显示具有
约100 ppi(每英寸像素)或更大的像素密度的显示器并且可以包括诸如全hd(例如,1080p)、视网膜显示器、4k(超高清或uhd)或其他之类的格式。在一个示例中,显示器可以包括触屏显示器。在一个示例中,图形接口740基于存储器730中存储的数据或基于处理器710执行的操作或基于两者来生成显示。在一个示例中,图形接口740基于存储器730中存储的数据或基于处理器710执行的操作或基于两者来生成显示。
60.加速器742可以是固定功能或可编程卸载引擎,其可以被处理器710访问或使用。例如,加速器742之中的加速器可以提供压缩(dc)能力、密码服务(诸如公共密钥加密(pke))、密文、散列/验证能力、解密或其他能力或服务。在一些实施例中,另外或备选地,加速器742之中的加速器提供如本文描述的字段选择控制器能力。在一些情况下,加速器742可以集成到cpu套接字(例如,到母板或电路板的连接器,所述母板或电路板包括cpu并且提供与cpu的电接口)。例如,加速器742可以包括单核或多核处理器、图形处理单元、逻辑执行单元单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(asic)、神经网络处理器(nnp)、可编程控制逻辑和可编程处理元件,诸如现场可编程门阵列(fpga)或可编程逻辑装置(pld)。加速器742可以提供多个神经网络、cpu、处理器核、通用图形处理单元,或图形处理单元可以可用于供人工智能(ai)或机器学习(ml)模型使用。例如,ai模型可以使用或包括以下中的任一个或组合:强化学习方案、q学习方案、深度q学习或异步优势动作评价(a3c)、组合神经网络、递归组合神经网络或其他ai或ml模型。多个神经网络、处理器核或图形处理单元可以可用于供ai或ml模型使用。
61.存储器子系统720代表系统700的主存储器并且提供要被处理器710执行的代码或要在执行例程中使用的数据值的存储。存储器子系统720可以包括一个或多个存储器装置730,诸如只读存储器(rom)、闪速存储器、随机存取存储器(ram)的一个或多个变体,诸如dram,或其他存储器装置,或这样的装置的组合。除其他以外,存储器730还存储和托管操作系统(os)732来提供软件平台用于执行系统700中的指令。另外,应用734可以在来自存储器730的os 732的软件平台上执行。应用734代表具有它们自己的操作逻辑来执行一个或多个功能的执行的程序。过程736代表向os 732或一个或多个应用734或组合提供辅助功能的代理或例程。os 732、应用734和过程736提供软件逻辑来为系统700提供功能。在一个示例中,存储器子系统720包括存储器控制器722,其是用于生成命令并且将其发送给存储器730的存储器控制器。将理解存储器控制器722可以是处理器710的物理部分或接口712的物理部分。例如,存储器控制器722可以是与处理器710集成到电路上的集成存储器控制器。
62.尽管未专门说明,但将理解系统700可以包括装置之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其他。总线或其他信号线可以使组件通信或电耦合在一起,或使组件既通信又电耦合在一起。总线可以包括物理通信线、点到点连接、网桥、适配器、控制器或其他电路或组合。总线可以包括例如以下中的一个或多个:系统总线、外围组件互连(pci)总线、超传输或工业标准架构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)或电气和电子工程师协会(ieee)标准1394总线(firewire)。
63.在一个示例中,系统700包括接口714,其可以耦合到接口712。在一个示例中,接口714代表接口电路,其可以包括独立组件和集成电路。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口714。网络接口750对系统700提供通过一个或多个网络与远程
装置(例如,服务器或其他计算装置)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、usb(通用串行总线)或其他基于有线或无线标准或专用接口。网络接口750可以向位于相同数据中心或机架中的装置或者远程装置传送数据,其可以包括发送存储器中存储的数据。网络接口750可以从远程装置接收数据,其包括将接收的数据存储到存储器内。各种实施例可以连同网络接口750、处理器710和存储器子系统720一起使用。网络接口750的各种实施例使用本文描述的实施例来接收或传送定时相关信号并且提供保护以防止错误配置的端口使用引起的电路损坏,同时提供可接受的传播延迟。
64.在一个示例中,系统700包括一个或多个输入/输出(i/o)接口760。i/o接口760可以包括一个或多个接口组件,用户通过所述接口组件与系统700交互(例如,音频、字母数字、触觉/触摸或其他接口技术)。外围接口770可以包括上文未专门提到的任何硬件接口。外围设备一般指依赖地连接到系统700的装置。依赖连接是这样的连接,其中系统700提供在其上执行操作并且用户与之交互的软件平台或硬件平台或两者。
65.在一个示例中,系统700包括存储设备子系统780,用于采用非易失性的方式存储数据。在一个示例中,在某些系统实现中,存储设备780的至少某些组件可以与存储器子系统720的组件重叠。存储设备子系统780包括(一个或多个)存储装置784,其可以是或包括用于采用非易失性方式存储大量数据的任何常规介质,诸如一个或多个磁、固态或基于光的盘,或组合。存储设备784采用持久状态保持代码或指令和数据786(即,尽管对系统700的电力中断,值也得以保留)。存储设备784一般可以视为“存储器”,但存储器730典型地是执行或操作存储器,用于向处理器710提供指令。而存储设备784是非易失性的,存储器730可以包括易失性存储器(即,如果到系统700的电力被中断,则数据的值或状态不确定)。在一个示例中,存储设备子系统780包括控制器782,用于与存储设备784接口连接。在一个示例中,控制器782是接口714或处理器710的物理部分或可以包括处理器710和接口714两者中的电路或逻辑。
66.易失性存储器是如果到装置的电力被中断则其状态(以及因此存储在其中的数据)不确定的存储器。动态易失性存储器使用刷新装置中存储的数据来维持状态。动态易失性存储器的一个示例包括dram(动态随机存取存储器),或一些变体,诸如同步dram(sdram)。易失性存储器的示例包括高速缓存。如本文描述的存储器子系统可以与许多存储器技术兼容,诸如ddr3(双数据速率版本3,jedec(电子器件工程联合会)在2007年6月27日的原版发行)、ddr4(ddr版本4,jedec在2012年9月发布的初始规范)、ddr4e(ddr版本4)、lpddr3(jedec在2013年8月的低功率ddr版本3、jesd209-3b)、lpddr4(jedec在2014年8月最初发布的lpddr版本4,jesd209-4)、wio2(jedec在2014年8月最初发布的宽输入/输出版本2,jesd229-2)、hbm(jedec在2013年10月最初发布的高宽带存储器,jesd325)、lpddr5(jedec当前在讨论中)、hbm2(hbm版本2,jedec当前在讨论中)或其他或存储器技术的组合,以及基于这样的规范的衍生或扩展的技术。jedec标准在www.jedec.org可获得。
67.非易失性存储器(nvm)装置是即使到装置的电力被中断其状态也是确定的存储器。在一个实施例中,nvm装置可以包括块可寻址存储器装置,诸如nand技术,或更具体地,多阈值级nand闪速存储器(例如,单级单元(“slc”)、多级单元(“mlc”)、四级单元(“qlc”)、三级单元(“tlc”)或一些其他nand)。nvm装置还可以包括字节可寻址就地写入(write-in-place)三维交叉点存储器装置,或其他字节可寻址就地写入nvm装置(也称为持久存储器),
诸如单级或多级相变存储器(pcm)或具有交换机的相变存储器(pcms)、intel
®ꢀ
optane

存储器、使用硫系相变材料(例如,硫系玻璃)的nvm装置、电阻存储器,其包括金属氧化物基、氧空位基和导电桥随机存取存储器(cb-ram)、纳米线存储器、铁电随机存取存储器(feram、fram)、包含忆阻器技术的磁阻随机存取存储器(mram)、自旋转移矩(stt)-mram、基于自旋电子磁结存储器的装置、基于磁性隧道结(mtj)的装置、基于dw(畴壁)和sot(自旋轨道转移)的装置、基于晶闸管的存储器装置或上述中的任一个的组合,或其他存储器。
68.电源(未描绘)向系统700的组件提供电力。更具体地,电源典型地与系统700中的一个或多个电力供应接口连接来向系统700的组件提供电力。在一个示例中,电力供应包括ac到dc(交流电到直流电)适配器,用以插到墙上的插座上。这样的ac电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括dc电源,诸如外部ac到dc转换器。在一个示例中,电源或电力供应包括无线充电硬件,用于经由接近充电场来充电。在一个示例中,电源可以包括外部电池、交流电供应、基于运动的电力供应、太阳能电力供应或燃料电池源。
69.在示例中,系统700可以使用处理器、存储器、存储设备、网络接口和其他组件的互连计算雪橇来实现。可以使用高速互连,诸如:以太网(ieee 802.3)、远程直接存储器访问(rdma)、infiniband、互联网广域rdma协议(iwarp)、传送控制协议(tcp)、用户数据报协议(udp)、快速udp互联网连接(quic)、聚合以太网rdma(roce)、外围组件互连高速(pcie)、intel快速路径互连(qpi)、intel超级路径互连(upi)、intel片上系统结构(iosf)、全路径、计算高速链路(cxl)、超传输、高速结构、nvlink、高级微控制器总线架构(amba)互连、opencapi、gen-z、加速器高速缓存一致互连(ccix)、3gpp长期演进(lte)(4g)、3gpp 5g及其变形。数据可以复制或存储到虚拟化存储节点或使用诸如结构上的nvme(nvme-of)或nvme之类的协议来访问。
70.本文的实施例可以在各种类型的计算和联网设备中实现,诸如交换机、路由器、机架和刀片式服务器,诸如数据中心和/或服务器场环境中采用的那些。在数据中心和服务器场中使用的服务器包括阵列式服务器配置,诸如基于机架的服务器或刀片式服务器。这些服务器经由各种网络配给而在通信中互连,诸如用lan之间合适的交换和路由设施将服务器集划分为局域网(lan)来形成专用内联网。例如,云托管设施可以典型地采用具有大量服务器的大的数据中心。刀片包括独立的计算平台,其配置成执行服务器型功能,即,“卡上服务器”。因此,每个刀片包括常规服务器共有的组件,其包括提供内部布线(例如,总线)用于使合适的集成电路与安装到板的其他组件耦合的主印刷电路板(主板)。
71.图8描绘了环境800,其包括多个计算机架802,每个包括机架顶部(tor)交换机804、网荚(pod)管理器806和多个池化系统抽屉。根据本文描述的实施例以及本文描述的其他实施例,环境可以提供包括某些类型的内容的包的接收的确认。一般而言,池化系统抽屉可以包括池化计算抽屉和池化存储设备抽屉。可选地,池化系统抽屉还可以包括池化存储器抽屉和池化输入/输出(i/o)抽屉。在图示的实施例中,池化系统抽屉包括intel
®ꢀ
xeon
®
处理器池化计算机抽屉808,和intel
®ꢀ
atom

处理器池化计算抽屉810、池化存储设备抽屉812、池化存储器抽屉814和池化i/o抽屉816。池化系统抽屉中的每个经由高速链路818连接到tor交换机804,诸如40千兆比特/秒(gb/s)或100gb/s以太网链路或100 gb/s硅光子(siph)光链路。在一个实施例中,高速链路818包括800 gb/s siph光链路。
72.多个计算机架802可以经由它们的tor交换机804(例如,网荚级交换机或数据中心
交换机)而互连,如由到网络820的连接所图示的。在一些实施例中,多组计算机架802作为独立网荚经由(一个或多个)网荚管理器806来管理。在一个实施例中,单个网荚管理器用于管理网荚中的所有机架。备选地,分布式网荚管理器可以用于网荚管理操作。
73.环境800进一步包括管理接口822,其用于管理环境的各种方面。这包括管理机架配置,其中对应的参数作为机架配置数据824被存储。在示例中,环境800可以使用处理器、存储器、存储设备、网络接口和其他组件的互连计算雪橇来实现。
74.本技术还公开了一组技术方案,如下:技术方案1. 一种在网络接口处执行的方法,所述方法包括:对于所接收包:基于所述所接收包只包括接收确认被卸载到所述网络接口所针对的一个或多个帧,生成确认(ack)消息来确认所述所接收包的接收或基于所述所接收包包括接收确认未被卸载到所述网络接口所针对的任何帧,向计算平台提供所述所接收包。
75.技术方案2. 如技术方案1所述的方法,其中接收确认被卸载到所述网络接口所针对的帧包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧。
76.技术方案3. 如技术方案1所述的方法,包括:基于所述所接收包包括接收确认未被卸载到所述网络接口所针对的任何帧,所述计算平台对所述所接收包生成ack消息。
77.技术方案4. 如技术方案1所述的方法,其中生成ack消息来确认所述所接收包的接收包括至少部分基于与所述所接收包相关联的连接的连接上下文来生成ack消息,并且其中所述连接上下文包括密码上下文和至少一个所接收包的包号。
78.技术方案5. 如技术方案4所述的方法,包括:基于来自所述连接上下文的所述密码上下文对所述所接收包解密。
79.技术方案6. 如技术方案4所述的方法,包括:基于与所述所接收包相关联的包号来更新所述连接上下文。
80.技术方案7. 如技术方案1所述的方法,包括:基于所述所接收包只包括接收确认被卸载到所述网络接口所针对的一个或多个帧:对所述所接收包解密;向所述计算平台提供所述所接收包的解密内容;以及指示已向所述计算平台发送对所述所接收包的确认来避免重复确认。
81.技术方案8. 如技术方案1所述的方法,其中生成ack消息来确认所述所接收包的接收包括:基于所述网络接口可访问的元数据对所述ack消息生成报头字段以及为所生成的ack消息提供报头字段以用于传送到所述所接收包的源。
82.技术方案9. 一种设备包括:网络接口卡,包括:电路,用于:对于所接收包:
基于所述所接收包只包括接收确认被卸载到所述网络接口卡所针对的一个或多个帧,生成确认(ack)消息来确认所述所接收包的接收。
83.技术方案10. 如技术方案9所述的装置,其中接收确认被卸载到所述网络接口卡所针对的帧包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧。
84.技术方案11. 如技术方案9所述的设备,包括耦合到所述网络接口卡的计算平台,其中:基于所述所接收包只包括接收确认未被卸载到所述网络接口所针对的任何帧,所述计算平台将对所述所接收包生成ack消息。
85.技术方案12. 如技术方案9所述的设备,其中生成ack消息来确认所述所接收包的接收包括至少部分基于与所述所接收包相关联的连接的连接上下文来生成ack消息,并且其中所述连接上下文包括密码上下文和至少一个所接收包的包号。
86.技术方案13. 如技术方案12所述的设备,包括用于基于所述密码上下文对所述所接收包解密的电路。
87.技术方案14. 如技术方案12所述的设备,包括用于基于所述所接收包的包号来更新所述连接上下文的电路。
88.技术方案15. 如技术方案9所述的设备,包括耦合到所述网络接口卡的计算平台,其中所述电路将:基于所述所接收包只包括接收确认被卸载到所述网络接口卡所针对的一个或多个帧:对所述所接收包解密;向所述计算平台提供所述所接收包的解密内容;以及指示已向所述计算平台发送对所述所接收包的确认来避免重复确认。
89.技术方案16. 如技术方案9所述的设备,其中生成确认(ack)消息来确认所述所接收包的接收,所述电路将:基于所述网络接口可访问的元数据对所述ack消息生成报头字段并且为生成的ack消息提供报头字段以用于传送到所述所接收包的源。
90.技术方案17. 一种系统包括:服务器以及通信地耦合到所述服务器的网络接口卡,所述网络接口卡包括电路,用于:对于所接收包:基于所述所接收包只包括接收确认被卸载到所述网络接口卡所针对的一个或多个帧,生成确认(ack)消息来确认所述所接收包的接收或基于所述所接收包包括接收确认未被卸载到所述网络接口卡所针对的任何帧,向所述服务器提供所述所接收包。
91.技术方案18. 如技术方案17所述的系统,其中接收确认被卸载到所述网络接口卡所针对的帧包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧。
92.技术方案19. 如技术方案17所述的系统,其中所述网络接口卡包括电路,用于:基于所述所接收包只包括接收确认被卸载到所述网络接口卡所针对的一个或多个帧:
对所述所接收包解密;向所述服务器提供所述所接收包的解密内容;以及指示已向所述计算平台发送对所述所接收包的确认来避免重复确认。
93.技术方案20. 如技术方案17所述的系统,其中所述网络接口卡将使多个ack消息合并以用于传送到对等源装置。
94.技术方案21. 一种网络接口卡包括:用于对所接收包的内容解密的电路;用于生成确认(ack)消息来确认所接收包的接收的电路,所述所接收包只包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧;和用于向发送方发送所述ack消息的电路。
95.在一些示例中,本文描述的网络接口和其他实施例可以连同基站(例如,3g、4g、5g等等)、宏基站(例如,5g网络)、微微站(例如,ieee 802.11兼容接入点)、纳米站(例如,对于点到多点(ptmp)应用)、本地数据中心、远程数据中心、边缘网络元件、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义的联网来跨物理数据中心和分布式多云环境交付应用工作负载的数据中心)。
96.各种示例可以使用硬件元件、软件元件或两者的组合来实现。在一些示例中,硬件元件可以包括装置、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器,等等)、集成电路、asic、pld、dsp、fpga、存储器单元、逻辑门、寄存器、半导体装置、芯片、微芯片、芯片集等等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、规程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定示例是否使用硬件元件和/或软件元件实现可以根据许多因素而变化,例如,如对于指定实现所期望的期望计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。注意硬件、固件和/或软件元件在本文可以统称为或单独称为“模块”或“逻辑”。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件中的一个或多个组合。
97.一些示例可以使用或作为制造物品或至少一个计算机可读介质实现。计算机可读介质可以包括非暂时性存储介质来存储逻辑。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一个或多个类型的计算机可读存储介质,其包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器,等等。在一些示例中,逻辑可以包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、规程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
98.根据一些示例,计算机可读介质可以包括非暂时性存储介质来存储或维持指令,其在由机器、计算装置或系统执行时促使该机器、计算装置或系统根据描述的示例执行方法和/或操作。指令可以包括任何适合类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码及类似物。指令可以根据预定义计算机语言、方式或语法实现,
用于指示机器、计算装置或系统执行某个功能。指令可以使用任何适合的高级、低级、面向对象、视觉、编译和/或解释性编程语言来实现。
99.至少一个示例的一个或多个方面可以由存储在至少一个机器可读介质上的代表性指令来实现,其代表处理器内的各种逻辑,所述逻辑在被机器、计算装置或系统读取时促使该机器、计算装置或系统构造逻辑来执行本文描述的技术。这样的表示(称为“ip核”)可以存储在有形的机器可读介质上并且供应给各种客户端或制造设施以加载到实际上制作逻辑或处理器的制造机器内。
100.短语“一个示例”或“示例”的出现不一定都指相同的示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或相似方面结合,而不管是否关于相同的图或元件来描述所述方面。附图中描绘的块功能的划分、省略或包含并不能推断用于实现这些功能的硬件组件、电路、软件和/或元件将一定被划分、省略或包括在实施例中。
101.一些示例可以使用表达“耦合”和“连接”连同它们的派生词来描述。这些术语不一定规定为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”还可以意指两个或更多个元件彼此不直接接触,但仍彼此共同操作或交互。
102.术语“第一”、“第二”及类似物在本文不指示任何顺序、数量或重要性,而相反用于将一个元件与另一个区分开。术语“一(a和an)”在本文不指示数量的限制,而相反指示存在所引用项目中的至少一个。本文参考于信号而使用的术语“断言”指示信号的状态,其中信号是活动的并且这可以通过对信号施加任何逻辑电平(逻辑0或逻辑1)而实现。术语“接着”或“在
……
之后”可以指紧接着或接着某一其他事件或某些其他事件之后。也可以根据备选实施例执行其他步骤序列。此外,取决于特定应用可以增加或去除额外步骤。可以使用变化的任何组合并且从本公开获益的普通技术人员将理解许多改动、修改和其备选实施例。
103.诸如短语“x、y或z中的至少一个”之类的析取语言除非另外专门规定,否则在上下文内理解为一般用来表示项、项目等可以是x、y或z或其任何组合(例如,x、y和/或z)。因此,这样的析取语言一般不意在并且不应暗示某些实施例需要至少一个x、至少一个y或至少一个z各自都存在。另外,诸如短语“x、y和z中的至少一个”之类的连接语言除非另外专门规定,否则还应理解为意指x、y、z或其任何组合,包括“x、y和/或z”。
104.在下文提供本文公开的装置、系统和方法的说明性示例。装置、系统和方法的实施例可以包括下文描述的示例中的任一个或多个,以及其任何组合。
105.如本文图示的流程图提供各种过程动作序列的示例。流程图可以指示软件或固件例程要执行的操作,以及物理操作。在一些实施例中,流程图可以图示可以在硬件和/或软件中实现的有限状态机(fsm)的状态。尽管按特定序列或顺序示出,但除非另外规定,否则可以修改动作的顺序。因此,图示的实施例应只理解为示例,并且可以按不同顺序执行过程,并且可以并行执行一些动作。另外,在各种实施例中可以省略一个或多个动作;因此,在每个实施例中不是所有动作都需要。其他过程流是可能的。
106.本文描述的各种组件可以是用于执行所描述的操作或功能的部件。本文描述的各种组件包括软件、硬件或这些的组合。组件可以实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、专用集成电路(asic)、数字信号处理器(dsp)等)、嵌入式控制器、硬件电路,等等。
107.示例1包括在网络接口处执行的方法,该方法包括:对于所接收包:基于所接收包只包括接收确认被卸载到网络接口所针对的一个或多个帧,生成确认(ack)消息来确认所接收包的接收,或基于所接收包包括接收确认未被卸载到网络接口所针对的任何帧,向计算平台提供所接收包。
108.示例2包括任何示例,其中接收确认被卸载到网络接口所针对的帧包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧。
109.示例3包括任何示例,并且包括基于所接收包包括接收确认未被卸载到网络接口所针对的任何帧,计算平台对所接收包生成ack消息。
110.示例4包括任何示例,其中生成ack消息来确认所接收包的接收包括至少部分基于与所接收包相关联的连接的连接上下文来生成ack消息,并且其中该连接上下文包括密码上下文和至少一个所接收包的包号。
111.示例5包括任何示例,并且包括基于来自连接上下文的密码上下文对所接收包解密。
112.示例6包括任何示例,并且包括基于与所接收包相关联的包号来更新连接上下文。
113.示例7包括任何示例,并且包括基于所接收包只包括接收确认被卸载到网络接口所针对的一个或多个帧:对所接收包解密;向计算平台提供所接收包的经解密内容;以及指示已向计算平台发送所接收包的确认来避免重复确认。
114.示例8包括任何示例,其中生成ack消息来确认所接收包的接收包括:基于网络接口可访问的元数据对ack消息生成报头字段并且对生成的ack消息提供报头字段以用于传送到所接收包的源。
115.示例9包括任何示例,并且包括设备,该设备包括:网络接口卡,其包括:电路,用于:对于所接收包:基于所接收包只包括接收确认被卸载到网络接口卡所针对的一个或多个帧,生成确认消息(ack)来确认所接收包的接收。
116.示例10包括任何示例,其中接收确认被卸载到网络接口卡所针对的帧包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧。
117.示例11包括任何示例,并且包括耦合到网络接口卡的计算平台,其中:基于所接收包只包括接收确认未被卸载到网络接口所针对的任何帧,计算平台对所接收包生成ack消息。
118.示例12包括任何示例,其中生成ack消息来确认所接收包的接收包括至少部分基于与所接收包相关联的连接的连接上下文来生成ack消息并且其中该连接上下文包括密码上下文和至少一个所接收包的包号。
119.示例13包括任何示例,并且包括用于基于密码上下文对所接收包解密的电路。
120.示例14包括任何示例,并且包括用于基于所接收包的包号来更新连接上下文的电路。
121.示例15包括任何示例,并且包括耦合到网络接口卡的计算平台,其中电路将:基于所接收包只包括接收确认被卸载到网络接口卡所针对的一个或多个帧:对所接收包解密;向计算平台提供所接收包的解密内容;以及指示已向计算平台发送对所接收包的确认来避免重复确认。
122.示例16包括任何示例,其中生成确认(ack)消息来确认所接收包的接收,电路将基
于网络接口可访问的元数据对ack消息生成报头字段并且对所生成的ack消息提供报头字段以用于传送到所接收包的源。
123.示例17包括任何示例,并且包括系统,其包括:服务器和通信耦合到该服务器的网络接口卡,该网络接口卡包括电路,用于:对于所接收包:基于所接收包只包括接收确认被卸载到网络接口卡所针对的一个或多个帧,生成确认(ack)消息来确认所接收包的接收或基于所接收包包括接收确认未被卸载到网络接口卡所针对的任何帧,向服务器提供所接收包。
124.示例18包括任何示例,其中接收确认被卸载到网络接口卡所针对的帧包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧。
125.示例19包括任何示例,其中网络接口卡包括电路,用于:基于所接收包只包括接收确认被卸载到网络接口卡所针对的一个或多个帧:对所接收包解密;向服务器提供所接收包的解密内容,以及指示已向计算平台发送对所接收包的确认来避免重复确认。
126.示例20包括任何示例,其中网络接口卡将使多个ack消息合并以用于传送到对等源装置。
127.示例21包括任何示例,并且包括网络接口卡,其包括:用于对所接收包的内容解密的电路;用于生成确认(ack)消息来确认所接收包的接收的电路,所述所接收包只包括与快速用户数据报协议(udp)互联网连接(quic)兼容的stream帧;和用于向发送方发送ack消息的电路。
再多了解一些

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

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

相关文献