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

用于网络消息排序的装置和方法与流程

2022-07-10 13:30:50 来源:中国专利 TAG:

用于网络消息排序的装置和方法
1.相关申请的交叉引用
2.本技术要求于2020年8月17日提交的名称为“devices and methods for network message sequencing”(代理人案卷号:wda-5072p-us)的美国临时申请第63/066,754号的优先权,其通过引用整体并入本文。本技术还要求于2021年2月12日提交的名称为“devices and methods for network message sequencing”(代理人案卷号:wda-5072-us)的美国申请第17/174,681号的优先权,其通过引用整体并入本文。本技术涉及于2019年8月22日提交的名称为“distributed cache with in-network prefetch”的美国申请第16/548,116号(代理人案卷号:wda-4307-us)),并于2020年11月5日公开为美国专利申请公开第2020/0349080号,其通过引用整体并入本文。本技术还涉及于2019年11月26日提交的名称为“fault tolerant data coherence in large-scale distributed cache systems”的美国申请第16/697,019号(代理人案卷号:wda-4500-us),并于2020年11月5日公开为美国专利申请公开第2020/0351370号,其通过引用整体并入本文。本技术还涉及于2020年6月26日提交的名称为“devices and methods for managing network traffic for a distributed cache”的美国申请第16/914,206号(代理人案卷号:wda-4952-us),其通过引用整体并入本文。本技术还涉及于2020年6月30日提交的名称为“devices and methods for failure detection and recovery for a distributed cache”的美国申请第16/916,730号(代理人案卷号:wda-4977-us),其通过引用整体并入本文。本技术还涉及于2021年2月12日提交的名称为“management of non-volatile memory express nodes”的美国申请第17/175,449号(代理人案卷号:wda-5254-us),其通过引用整体并入本文。


背景技术:

3.非易失性存储器express(nvme)是一种用于存储装置(如固态驱动器(ssd))的新兴主机控制器接口,以提高每秒输入/输出操作(iops)的性能。尽管nvme最初被设计成与在计算机系统内的外围组件互连express(pcie)接口一起使用,但是最新的nvme扩展(如基于fabric的nvme(nvmeof))可以支持对nvme装置的远程访问,如使用远程直接内存访问(rdma)(例如,基于融合以太网的rdma(roce)和(iwarp)和光纤通道(fc)传输结构体。然而,这种协议通常依赖于无损且可预测的无限带宽(inifiniband)网络,而不是数据中心中常见的有损以太网。
4.将nvmeof部署在基于树的网络拓扑或以太网结构的数据中心中会遇到处理无序的消息传递的挑战。当前nvmeof协议(如roce、iwarp和fc)不能有效地处理无序的消息传递。在这方面,当前nvmeof协议通过丢弃消息或分组并依靠发送装置来重新传输被丢弃的分组,以处理这种无序的消息传递。这种方法会给终端节点装置带来显著的延迟和开销,从而阻碍nvme的其他高速性能。这对于具有密集输入/输出(i/o)操作的大规模数据中心而言尤其是个问题。
5.另外,取决于完全可靠的传输结构体的现有rdma nvmeof协议需要昂贵的支持数据中心桥接(dcb)的交换机来提供无损通信,并且其可扩展性有限。现有的分组丢失检测和
恢复通常也依赖于端节点装置来检测丢失的分组并请求对丢失的分组进行重新传输。然而,这种方法会对使用nvme的低延迟性能优势产生负面影响。
附图说明
6.通过下文所述的具体实施方式并且结合附图,本公开的实施方案的特征和优势将变得更加显而易见。提供附图和相关联描述是为了说明本公开的实施方案,而不是限制所要求保护的范围。
7.图1示出了根据一个或多个实施方案的用于实现消息排序的示例性网络环境。
8.图2是根据一个或多个实施方案的包括在图1的网络环境中的示例性组件的框图。
9.图3是根据一个或多个实施方案的示例性分组格式。
10.图4是根据一个或多个实施方案的消息排序过程的流程图。
11.图5是根据一个或多个实施方案的消息检索过程的流程图。
12.图6是根据一个或多个实施方案的可编程开关选择和编程过程的流程图。
具体实施方式
13.在以下具体实施方式中阐述了许多具体细节,以便提供对本公开的彻底理解。然而,对于本领域普通技术人员显而易见的是,可在不具有这些具体细节中的一些细节的情况下实践所公开的各种实施方案。在其他情况下,并未详细示出众所周知的结构和技术以避免不必要地模糊各种实施方案。
14.示例性网络环境
15.图1示出了根据一个或多个实施方式的用于实现消息排序的示例性网络100。如图1所示,服务器机架101a、101b、101c和101d中的终端节点装置(例如,图2中的终端节点装置103)分别使用架顶(tor)交换机102a、102b、102c和102d来与其他终端节点装置进行通信。服务器机架101中的终端节点装置可以包括例如服务器或处理节点(如精简指令集计算机(risc)-v内核)以及存储器装置(如固态驱动器(ssd)或硬盘驱动器(hdd))。在一些实施方式中,图1中的网络环境100可以用作数据中心的至少一部分和/或用于分布式处理,如用于分布式机器学习或大数据分析。
16.网络100可以包括例如存储区域网络(san)、局域网(lan)和/或广域网(wan),如互联网。在这方面,服务器机架101、tor交换机102、聚合交换机104、核心交换机106、缓冲服务器105和/或网络控制器120中的一个或多个的物理位置可以不同。服务器支架101、tor交换机102、聚合交换机104、核心交换机106、缓冲服务器105和/或网络控制器120可以使用一个或多个标准(例如以太网)进行通信。
17.如图1的实例所示,服务器机架101a、101b、101c和101d中的每一个都连接到tor或边缘交换机102。在其他实施方式中,每个机架101可以与多个tor或边缘交换机102进行通信来实现冗余。tor交换机102可以包括可编程交换机(如64端口tor p4可编程交换机),其向位于服务器机架101中的终端节点路由消息以及从位于服务器机架101中的终端节点路由消息。此类可编程交换机可以包括例如具有被配置为提供40千兆以太网(ge)帧速率的端口的barefoot networks tofino专用集成电路(asic)。可以用作tor交换机102的其他类型的可编程交换机可以包括例如cavium xpliant可编程交换机或broadcom trident 3可编
程交换机。在一些实施方式中,并且如以上通过引用的方式并入本文中的申请第16/697,019号、第16/914,206号和第16/916,730号中所讨论的,每个tor交换机102可以为存储在其相应服务器机架101的终端节点装置中的数据提供集中式数据一致性管理,如用于分布式缓存。
18.聚合交换机104a和104b在tor交换机102a和102b之间为保留在集群1081中的消息路由消息。另外,聚合交换机104a和104b将消息从tor交换机102a和102b路由到核心交换机106a和106b,用于在集群1081和1082之间行进的消息。在图1的实例中,机架101a和101b、tor交换机102a和102b以及聚合交换机104a和104b被组合在一起作为集群1081。机架101c和101d、tor交换机102c和102d以及聚合交换机104c和104d被组合在一起作为集群1082。
19.聚合交换机104a、104b、104c和104d可以包括可编程交换机(如64端口tor p4可编程交换机),其向其集群108中的tor交换机102路由消息或从其集群108中的tor交换机102路由消息。此类可编程交换机可以包括例如具有被配置为提供40千兆以太网(ge)帧速率的端口的barefoot networks tofino专用集成电路(asic)。可以用作聚合交换机104的其他类型的可编程交换机可以包括例如cavium xpliant可编程交换机或broadcom trident 3可编程交换机。
20.核心交换机106a和106b提供集群108之间的通信以及集群与网络控制器120的通信。网络控制器120与聚合交换机104和核心交换机106进行通信。在一些实施方式中,网络控制器120可以包括软件定义网络(sdn)控制器。如下面更详细讨论的,网络控制器120可以使用网络拓扑来选择可编程交换机(例如,聚合交换机104或核心交换机106)作为消息定序器,用于对从第一终端装置发送到第二终端装置的一系列相关消息中的无序消息进行重新排序。另外,网络控制器120可以使用所存储的网络拓扑来对所选的可编程开关进行编程,以使得能够使用网络100中具有相同跳数或分段数的不同路径来以近似相同的行进时间从所选择的可编程交换机向第二终端装置发送一系列相关消息中的不同消息。
21.通常,使用来自被选作消息定序器的可编程交换机的拓扑感知路由可以减少由目标终端装置所接收的无序分组的数量。在图1的实例中,网络控制器120可以选择聚合交换机104来对同一集群内的两个终端装置之间的消息进行排序。对于在集群之间行进的消息,网络控制器120可以选择核心交换机106作为消息定序器。在一些实施方式中,tor交换机102可以用作消息定序器,该消息定序器用于同一服务器机架101中的两个终端节点装置之间发送的一系列相关消息。
22.当用作消息定序器时,核心交换机106或聚合开关104可以将针对一系列相关消息接收的消息发送到缓冲服务器105,以临时存储所接收的消息。如果确定来自一系列相关消息的消息丢失,则缓冲服务器105可以用于检索丢失消息,或者可以从发起一系列相关消息的传输的第一终端装置检索丢失消息。在这方面,一些实施方式可以包括多级缓冲服务器105和消息定序器,使得离朝向目标终端装置的路径更远的消息定序器可以从较低级别的消息定序器所使用的缓冲服务器中检索丢失消息。因为可编程交换机(例如,聚合交换机104和核心交换机106)的本地存储器可能是有限的,所以使用缓冲服务器105可以提供额外的存储器用于存储消息。另外,通常情况下,从网络内位置(如缓冲服务器105)检索丢失消息比从第一终端装置恢复丢失消息更快,这是因为缓冲服务器105的位置更靠近目标终端装置,并且可编程交换机提供了更快的消息处理。
23.通过以下方式前述布置可以改进无序消息的处理:检索丢失消息并且在一系列相关消息仍在传输中或在网络中时将该一系列相关消息正确地排序回其预期顺序。通常,这改善了在有损网络(如以太网)中采用无损通信的接口(如nvme)的使用。如上所述,通常,当前nvme over fabric(nvmeof)协议通过丢弃消息来处理无序消息递送,并且依靠发送端装置以重新传输丢弃的分组。这种方法会给终端装置带来显著的延迟和开销,从而阻碍nvme的预期高速性能。这对于具有大量网络流量的大规模数据中心而言尤其是个问题。将可编程交换机(如图1的实例中的聚合交换机104和核心交换机106)作为网络内消息定序器也不需要昂贵的数据中心桥接(dcb)能力,该能力也会限制可扩展性。
24.在一些实施方式中,tor交换机102、聚合交换机104和核心交换机106可以包括例如可编程交换机,该可编程交换机可以编程以处理不同的自定义协议。可编程交换机102、104和106可以包括可编程匹配动作管线,以提供可配置的数据平面和自定义的分组处理能力。此类可编程开关的实例可以在共同待决的美国申请第16/548,116号、第16/697,019号、第16/914,206号和第16/916,730号中找到,其通过引用并入本文。
25.图1的实例中的可编程交换机102、104和106的数据平面可以控制可编程交换机的点对点分组转发行为,如使用l1/l2以太网分组交换、分组准入控制以及可以形成图2所示的交换机模块24a和31a的一部分的调度或排队。可编程交换机102、104和106的数据平面是可编程的并且与高级控制平面分隔,该高级控制平面为网络100中的装置之间的分组或消息确定端到端路由。在这方面,控制平面可以用于处理不同的过程,如下面更详细讨论的图4和图5中的过程。
26.可编程开关的使用允许通过限定自定义分组格式和处理行为来配置高性能和可扩展的以存储器为中心的架构,如下文参考图3至5所讨论的那些。可编程交换机102、104和106还允许协议无关交换机架构和使用现成的交换机(与专门设计的片上网络(noc)相反)进行消息排序。另外,通常情况下,可编程交换机102、104和106的处理资源(如使用内容可寻址存储器(cam)或三元cam(tcam)表格或其他类型的匹配动作表)可以比在终端节点装置上更快地处理一系列相关消息。
27.参考本公开,本领域普通技术人员将理解,其他实施方式可以包括与图1的实例中所示不同数量或布置的服务器机架101、聚合交换机104或核心交换机106。在这方面,图1中所示的网络100用于说明的目的,并且本领域普通技术人员将理解,网络100可以包括比图1的实例中所示更多的服务器机架101以及交换机或路由器。在这方面,其他实施方式可以包括网络100中的附加级别,所述附加级别可以包括附加的缓冲服务器105和/或可编程交换机。在一个实例变型中,可以省略聚合开关104,使得除tor开关102之外,核心开关106也充当消息定序器。作为另一实例变型,在可编程交换机可以本地缓冲一系列相关消息的消息的实施方式中,可以省略缓冲服务器105。
28.图2是根据一个或多个实施方案的包括在图1的网络100中的示例性组件的框图。如图2所示,终端节点装置103包括处理器136、存储器138和用于在网络100上进行通信的接口140。尽管在图2的实例中仅示出了终端节点装置103,但是图1中的服务器机架101中的其他终端节点装置可以具有与终端节点装置103相似或不同的组件。
29.处理器136可以执行指令(如来自终端节点模块26指令)以及应用程序27,所述应用程序可以包括操作系统(os)和/或由终端节点装置103使用的其他应用程序。处理器136
可包括电路,如中央处理单元(cpu)、图形处理单元(gpu)、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、硬连线逻辑、模拟电路和/或它们的组合。在一些实施方式中,处理器136可以包括片上系统(soc),该系统可以与存储器138和接口140中的一个或两个组合。处理器136可以包括一个或多个缓存级别(例如,l1、l2和/或l3缓存),其中数据从存储器138上加载或刷新到存储器中。此类数据可以包括例如由处理器136处理的部分代码和相关数据。在一些实施方式中,终端节点装置103可以形成分布式缓存的一部分,如相关申请第16/548,116号、第16/697,019号、第16/914,206号和第16/916,730号所述,这些申请通过引用并入本文。在此类实施方式中,可以经由一个或多个可编程交换机(如聚合交换机104和/或核心交换机106)从例如不同服务器机架101上的远程存储器装置或终端节点加载数据或缓存行或将其刷新到远程存储器装置或终端节点。
30.存储器138可以包括例如易失性ram(如sram、dram)、非易失性ram或其他固态存储器,其由处理器136用作内部主存储器以存储数据。存储在存储器138中的数据可以包括从另一个终端节点装置读取的数据、待存储在另一个终端节点装置中的数据、从终端节点模块26或应用程序27加载以供处理器136执行的指令和/或在执行这些应用程序时使用的数据。
31.在一些实施方式中,存储器138可以包括例如一个或多个旋转磁盘或非易失性固态存储器(如闪存)。尽管本文中的描述通常是指固态存储器,但应理解,固态存储器可包括各种类型的存储器设备中的一种或多种,如闪存集成电路、nand存储器(例如,单层单元(slc)存储器、多层单元(mlc)存储器(例如,两层或更多层)或它们的任何组合)、nor存储器、eeprom、其他离散的非易失性存储器(nvm)芯片或它们的任何组合。在其他实施方式中,存储器138可以包括,例如,存储级内存(scm),如硫族化合物ram(c-ram)、相变存储器(pcm)、可编程金属化单元ram(pmc-ram或pmcm)、双向通用存储器(oum)、电阻式ram(rram)、铁电存储器(feram)、磁阻ram(mram)、3d-xpoint存储器和/或其他类型的固态存储器。在一些实施方式中,终端节点装置103可以包括存储装置(如与存储器138分离的ssd或hdd)。
32.如图2所示,存储器138存储终端节点模块26,该模块可以提供用于指令,以将nvme消息封装在以太网帧中(例如,使用图3所示的分组格式32),对这些消息进行优先级排序以便在网络100中更快地处理,与可编程交换机(例如,tor交换机102、聚合交换机104和核心交换机106)进行通信,以及对一系列相关消息进行排序,如下文参考图4和图5的过程更详细讨论的。此类指令还可以包括用于维护存储在分布式缓存中的数据(例如,缓存行)的一致性的协议。在一些实施方式中,终端节点模块26可以包括终端节点装置103的os使用的驱动程序。
33.接口140被配置为将终端节点装置103与网络100中的装置(如tor交换机102、聚合交换机104a或核心交换机106a)对接。接口140可以使用例如以太网等标准进行通信。在这方面,图2中的终端节点装置103、聚合交换机104a、核心交换机106a、网络控制器120和缓冲服务器1051的物理位置可以不同,而是可以通过网络(如lan或wan)进行通信。如本领域普通技术人员将理解的,接口140可以作为处理器136的一部分。
34.在图2的实例中,聚合交换机104a包括端口131a、电路133a和存储器135a。端口131a可以包括例如一个或多个不同类型的端口(如以太网、光纤通道或infiniband端口),以经由图1中的tor交换机102、核心交换机106a和缓冲服务器1051与网络100中的装置(如
终端节点装置103)进行通信。电路133a可以包括电路,如asic、微控制器、dsp、fpga、硬连线逻辑、模拟电路和/或其组合。在一些实施方式中,电路133a可以包括可以与存储器135a组合的soc。
35.聚合交换机104a的存储器135a可以包括例如易失性ram(如dram)、非易失性ram或其他固态存储器(如寄存器阵列),电路133a使用这些存储器来执行从聚合交换机模块31a或聚合交换机104a的固件加载的指令和/或在执行这些指令时使用的数据(如聚合交换机104a或网络路径30a的连接状态28a)。连接状态28a可以包括由聚合交换机104a维护的数据结构,该数据结构指示第一终端节点装置和第二终端节点装置之间的通信的连接状态。在一个实施方式中,连接状态可以包括nvme连接状态,例如初始化、数据传输和终止化。网络路径30a可以包括由网络控制器120编程的转发规则,使得来自一系列相关消息的消息从聚合交换机104a向目标终端节点装置行进相同跳数或分段数。
36.如下文更详细地讨论的,聚合交换机模块31a可以包括用于执行如下文参考图4和图5讨论的过程的指令,以对一系列相关消息进行排序并从一系列相关消息中检索丢失消息。如上所述,聚合交换机104a可以包括可编程匹配动作阶段,例如具有tcam。在此类实施方式中,电路133a和存储器135a可以包括这样的可编程匹配动作阶段。
37.在图2的实例中,网络控制器120可以将特定的可编程交换机(如聚合交换机104a或核心交换机106a)指定或设置为用于待从第一终端装置发送到第二终端装置的一系列相关消息的网络内消息定序器。如下文参考图6的过程更详细地讨论的,网络控制器120可以基于第一终端装置和第二终端装置的位置选择可编程交换机作为一系列相关消息的消息定序器。例如,网络控制器120可以选择核心交换机106a作为消息定序器,该消息定序器用于待从终端节点装置103发送到位于不同集群(例如,图1中的集群1082)中的不同终端节点装置的一系列相关消息。在另一实例中,网络控制器120可以选择聚合交换机104a作为消息定序器,该消息定序器用于待从终端节点装置103发送到位于同一集群(例如,图1中的集群1081)中的不同服务器机架101内的不同终端节点装置的一系列相关消息。
38.图2的实例中的网络控制器120维护网络拓扑16。如下文参考图4至6更详细讨论的,网络拓扑16向网络控制器120提供关于网络100中装置之间的路径的信息。网络拓扑16可以在初始化或网络发现过程中构建。可以基于网络拓扑16选择可编程交换机作为一系列相关消息的消息定序器。在一些实施方式中,可以选择多个消息定序器,使得一系列相关消息在多个路径上可编程交换机处被定序或排序。
39.另外,网络控制器120可以对已经被选作消息定序器的可编程交换机进行编程,该可编程交换机具有不同路径,这些不同路径从可编程交换机到终端节点装置具有相同跳数或分段数,以接收一系列相关消息。这可以允许可编程交换机使用具有类似延迟的路径,用于一系列相关消息中不同消息的路径传输。在这方面,网络内或路径上消息定序器的这种编程可以提供消息的智能拓扑感知路由。
40.网络控制器120的处理器124执行网络控制器模块18,以根据需要选择消息定序器并对消息定序器进行编程。处理器124可以包括电路,如cpu、gpu、微控制器、dsp、asic、fpga、硬连线逻辑、模拟电路和/或其组合。在一些实施方式中,处理器124可以包括soc,该系统可以与存储器126和接口128中的一个或两个组合。存储器126可以包括例如易失性ram(如dram)、非易失性ram或其他固态存储器,其被处理器124用于存储数据。网络控制器120
经由接口128与核心交换机106a进行通信,该接口被配置为与核心交换机106a的端口130a进行对接,并且可以根据标准(如以太网)进行对接。
41.核心交换机106a包括端口130a、电路132a和存储器134a。端口130a可以包括例如一个或多个不同类型的端口(如以太网、光纤通道或infiniband端口),以与网络100中的装置(如核心交换机106a和缓冲服务器1051)进行通信。电路132a可以包括电路,如asic、微控制器、dsp、fpga、硬连线逻辑、模拟电路和/或其组合。在一些实施方式中,电路132a可以包括可以与存储器134a组合的soc。
42.核心交换机106a的存储器134a可以包括例如易失性ram(如dram)、非易失性ram或其他固态存储器(如寄存器阵列),电路132a使用这些存储器来执行从核心交换机模块24a或核心交换机106a的固件加载的指令和/或在执行这些指令时使用的数据(如连接状态20a或网络路径22a)。连接状态20a可以包括由核心交换机106a维护的数据结构,该数据结构指示第一终端节点装置和第二终端节点装置之间的通信的连接状态。在一个实施方式中,连接状态可以包括nvme连接状态,例如初始化、数据传输和终止化。网络路径22a可以包括由网络控制器120编程的转发规则,使得来自一系列相关消息的消息从核心交换机106a向目标终端节点装置行进相同跳数或分段数。
43.如下文更详细地讨论的,核心交换机模块24a可以包括用于执行如下文参考图4和图5讨论的过程的指令,以对一系列相关消息进行排序并从一系列相关消息中检索丢失消息。如上所述,核心交换机106a可以包含可编程匹配动作阶段,例如具有tcam。在此类实施方式中,电路132a和存储器134a可以包括这样的可编程匹配动作阶段。
44.缓冲服务器1051包括处理器1161、存储器1181和接口1221。如下文参考图5更详细地讨论的,缓冲服务器1051可以由网络内或路径内消息定序器(例如,核心交换机106a或聚合交换机104a)使用,以在一系列相关消息中丢失消息的情况下,将一系列相关消息缓冲或临时存储为存储器1181中的缓冲消息121。在这种情况下,消息定序器可以从缓冲服务器1051(如果可用)或者从发送一系列相关消息的设备中检索丢失消息。然后,消息定序器可以从缓冲服务器1051检索缓冲的消息,以正确的顺序对消息(包括检索到的丢失消息)进行排序或发送。
45.如上所述,某些接口(如nvme)可能需要起始终端节点装置与目标终端节点装置之间的无损通信。当需要发送和接收终端节点装置对丢失的和无序的消息进行处理时,例如通过丢弃后续无序消息并重新发送一系列相关消息的整个剩余部分,使用数据中心中常见的以太网结构或其他有损传输结构会抵消使用nvme的低延迟优势。此问题进一步由在大多数数据中心中使用多级树形拓扑加剧,在这些数据中心中,具有不同延迟的不同路径可以用于在一系列相关消息中对不同消息进行路由。如在本公开中使用网络内或路径上消息定序器可以更好地确保以正确的顺序传递一系列相关消息。
46.缓冲服务器1051的处理器1161执行缓冲服务器模块141,以根据需要缓冲和发送缓冲的消息121。处理器1161可以包括电路,如cpu、gpu、微控制器、dsp、asic、fpga、硬连线逻辑、模拟电路和/或其组合。在一些实施方式中,处理器1161可以包括soc,该系统可以与存储器1181和接口1221中的一个或两个组合。存储器1181可以包括例如易失性ram(如dram)、非易失性ram或其他固态存储器,其被处理器1161用于存储数据。缓冲服务器1051经由接口1221与核心交换机106a和聚合交换机104a进行通信,该接口被配置为与核心交换机106a的
一个或多个端口130a和聚合交换机104a的一个或多个端口131a进行对接。如下文更详细讨论的,接口1221可以根据标准(如rdma)进行对接,其中消息定序器(例如,核心交换机106a或聚合交换机104a)使用rdma读取和写入命令来直接访问缓冲服务器1051的存储器1181中的消息。
47.如本领域普通技术人员参考本公开将理解的,其他实施方式可以包括与图2的实例中所示不同的组件或模块的布置或数量。例如,在一些实施方式中,除了存储器138之外,终端节点装置103可以包括存储装置,或者可以省略缓冲服务器1051,使得聚合交换机104a或核心交换机106a可以本地缓冲所接收的消息,以便以正确的顺序传输。
48.图3是根据一个或多个实施方案的示例性分组格式32。图3的示例性分组格式包括在以太网分组内封装或隧道传送的nvme封装或消息,用于在网络100的以太网结构上传输。如图3所示,分组格式32包括以太网报头、互联网协议(ip)报头、用户数据报协议(udp)报头和nvme封装。在一些实施方式中,分组格式32符合标准802.3第1层帧格式,这可以允许分组与现有的和即将出现的可编程交换机一起操作,例如barefoot tofino asic交换机。通常,分组格式32可以对应于infiniband架构(iba)分组格式。终端节点模块(如图2中的终端节点模块26)可以允许发起终端节点装置的消息以图3所示的格式构建消息或分组。
49.如上所述,由图1的可编程交换机(例如,核心交换机106、聚合交换机104和tor交换机102)处理的消息可以具有自定义分组格式,使得这种可编程交换机可以将一系列相关消息与其他网络流量区分开来。在这样的实施方式中,前导码、起始帧定界符和分组间间隙可以遵循标准802.3第1层帧格式,但是第2层中的部分可以被可编程交换机解析的自定义报头字段所替换,如参考共同待决的相关申请第16/697,019号、第16/914,206号和第16/916,730号更详细讨论的。
50.在待从源或发送端节点装置发送的数据大于分配给有效载荷的1024字节的情况下,数据被分成一系列相关消息。发送端节点装置可以使用ip报头、udp报头和基区传输报头的序号、源端口、目的端口、源地址和目的地址(例如,图3中的序号、seqno、s-port、d-port、sip和dip)的字段组合来对这一系列相关消息进行排序。然后,可编程交换机可以从所接收的消息中解析这些字段,以确定一系列相关消息的顺序或者消息是否被无序接收。在这方面,消息定序器可以在其存储器(例如,tcam)中保留与特定连接相关的所接收消息的一个或多个序号,以识别无序的消息接收。
51.如上所述,如图1所示,网络或数据中心的多级结构创建多根树形网络拓扑。在图1的实例中,机架101中的服务器或终端节点装置可以通过多个不同路径对不同机架101中的另一终端节点装置的nvme子系统进行远程nvme访问。尽管使用多个路径可以提高带宽和延迟方面的整体性能,但是对于终端节点装置之间的给定nvme连接,其也可能导致无序的nvme封装传递。当给定连接的nvme封装大小大于配置的最大传输单元(mtu)(如1500字节)时,nvme封装的有效载荷被分段,并且包括分段数据的消息可以通过多个不同路径进行传输。
52.如上所述,每个消息定序器(例如,图2中的聚合交换机104a或核心交换机106a)可以维护用于跟踪与每个nvme连接(如图2中的连接状态20a或连接状态28a)相关的分组或消息的数据结构。在起始-目标终端节点装置对之间的nvme连接进行初始化时,消息定序器可以在用于该连接的数据结构中创建一个或多个条目,以在存储器(如tcam)中指示该连接的
状态(如初始化、数据传输和终止化),以跟踪nvme连接状态。
53.消息定序器可以基于可编程交换机的数据平面中的事件来更新连接状态。例如,接收连接的“connectionrequest”消息可以触发初始化状态,而“readytouse”消息可以将连接状态更改为数据传输状态。当可编程交换机接收到分组时,入站管线可以解析该消息的报头字段,以检查它是否是nvmeof消息,以及消息类型(例如,读取或写入请求)。然后,可编程交换机基于所接收的nvme消息的操作码、发起方和目标id字段更新nvme连接状态。
54.在一些实施方式中,可以执行tcam操作,以基于操作类型确定待执行的动作,并生成元数据信息(如用于从可编程交换机向目标终端节点装置发送消息的队列)。可编程交换机的流量管理器可以根据所执行的匹配动作将消息发送到特定的出站端口。
55.另外,可编程交换机可以将已处理的消息的副本缓冲到缓冲服务器105,以用于低延迟丢失消息恢复。在一些实施方式中,可编程交换机可以创建rdma写入请求,并将其发送到连接至缓冲服务器105的端口。可编程交换机可以通过向所接收的分组添加新的rdma报头,并且利用如操作类型(例如,rdma写入)和缓冲服务器105的远程存储器地址的信息来填充字段,以创建rdma写入请求。
56.当路径上消息定序器或终端节点装置确定消息已经丢失时,其可以针对所述特定的丢失消息向最近的缓冲服务器105发送消息重传请求。在用作消息定序器的可编程交换机请求丢失消息的实例中,可编程交换机可以生成对丢失消息的rdma读取请求,并将其发送到缓冲服务器105。响应于rdma读取请求,缓冲服务器105可以返回所请求的丢失消息的副本。
57.如图3所示,以太网报头包括目的地址、源地址、802.1q标签和类型字段。目的地址可以包括用于目标终端节点装置接收消息的媒体访问控制(mac)地址,并且源地址可以包括用于正在发送消息的起始终端节点装置的mac地址。类型字段可以指示在帧中封装了哪些协议。例如,类型字段可以指示消息中使用了nvme协议,这可以使得消息定序器进一步解析消息的其他部分(如udp报头和nvme封装),以识别消息中的序号。
58.如上文通过引用并入的相关申请第16/916,730号中更详细讨论的,如以上通过引用并入的相关申请号16/916,730中更详细讨论的,以太网报头中的802.1q标签可以用作优先级指示符,作为ieee 802.1qbb基于优先级的流量控制(pfc)标准的一部分。尽管通过具有相同跳数或分段数的路径传输分组可以减少nvme流量所需的重新排序量,但是其他网络流量可能会导致不同路径上的排队延迟量不同。使用802.1q标签根据消息中的这种优先级字段使nvme消息的处理优先于未被识别为nvme消息的其他消息的处理,这可以允许在其他类型的网络流量之前从可编程交换机发送nvme消息,以进一步减少对消息重新排序或排序的需要。
59.在一些实施方式中,可编程交换机可以使用在给定传输周期中的其他队列之前提供的nvme消息的专用队列,或者可以被分配更大的权重,以便与用于相同端口的其他队列相较而言,每个周期中传输更多的消息。nvme消息的这种优先化还可以降低由于传输消息的队列过载而导致nvme消息在可编程交换机处丢失或被丢弃的可能性。
60.在一些实施方式中,消息定序器可以根据802.1q标签对消息的处理和传输进行优先级排序。如上文通过引用并入的相关申请第16/914,206号中所讨论的,802.1q标签的服务等级可以具有八个值中的一个,可编程交换机可以使用该值来确定消息的队列。可编程
交换机可以为nvme消息分配最高优先级,以减少nvme消息的网络延迟,并减少nvme消息在可编程交换机处被丢弃的可能性。
61.在其他实施方式中,响应于可编程交换机识别出嵌入在消息中的nvme封装(如通过使用以太网报头的类型字段或解析消息来识别nvme封装),可以在不使用优先级标签的情况下为nvme消息分配更高的优先级。在又其他实施方式中,只有当nvme消息是由消息中的字段(如序号、源端口、目的端口、源ip地址和目的ip地址的字段的组合)标识的一系列相关消息的一部分时,nvme消息的优先化才会发生,从而有助于减少由于网络中的其他流量而导致的无序消息。
62.可编程交换机(例如,图1中的核心交换机106或聚合交换机104)可以基于一系列相关消息中包括的所述nvme封装来将一系列相关消息识别为nvme消息。例如,解析器和可编程交换机的一个或多个匹配动作级可以识别图3所示的nvme封装中的非零序号,这可以指示该消息是一系列相关消息的一部分。然后,可编程交换机可以保持跟踪或以其他方式存储所接收的序号,以确定是否接收到无序消息。无序消息的接收可以触发丢失消息确定过程,如下文参考图4更详细讨论的。
63.如图3的实例中所示,分组格式32的ip报头包括用于ip版本、服务类型、报头长度(h-length)、区分服务代码点(dscp)、总长度(t-length)、标识符(id)、标记、分段偏移、生存时间(ttl)、协议、报头校验和(h-checksum)、源ip地址(sip)和目的ip地址(dip)的字段。本领域普通技术人员将理解ip报头的这些字段,因此这里不提供对这些字段中的每一个的详细解释。
64.图3的实例中的分组格式32的udp报头包括用于源端口、目的端口、长度、校验和、序号和时间戳的字段。与分组格式32的ip报头一样,本领域普通技术人员将理解图3中的udp报头的字段,因此这里不提供对这些字段中的每一个的详细解释。
65.分组格式32的nvme封装包括基区传输报头和rdma扩展传输报头,以及i-crc校验和字段。基区传输报头包括用于opcode、请求的事件(se)、迁移请求(m)、填充计数(padcnt)、传输报头版本(t-ver)、分区键(p-key)、第一保留字段(res)、目的队列对(d-qp)、确认请求(ack-req)、第二保留字段(rsv)和分组序号(seqno)的字段。
66.分组格式32中的rdma扩展传输报头为rdma操作提供了附加字段(如消息定序器和缓冲服务器105之间的字段)。在这方面,从终端节点装置发送的消息可以不包括rdma扩展传输报头。相反,作为消息定序器的可编程交换机可以向消息添加rdma扩展传输报头,以执行rdma写入和rdma读取操作,从而直接访问缓冲服务器处的存储器中的缓冲区(例如,图2中的存储器1181中的缓冲消息121)。如图3所示,rdma扩展传输报头包括用于rdma操作的虚拟存储器地址(virtual mem.addr.)、授权访问rdma操作的远程密钥(key),以及指示dma操作长度的直接存储器访问长度(dma-len)。
67.图3中的示例性分组格式32的剩余1024字节是用于承载nvme消息的数据的有效载荷。如上所述,如果消息的大小超过mtu大小,则发送装置将消息的数据分割成一系列相关消息以适应该数据大小。nvme封装和udp报头的序号可用于指示对应于消息有效载荷中的数据片段的消息顺序。
68.如本领域普通技术人员根据本公开将理解的,其他消息或分组格式可以与可编程交换机一起用于消息排序。例如,与单独的802.1q标签相反,其他实施方式可以在有效载荷
中包括优先级指示符,或者可以根本不包括优先级指示符。在另一实例变型中,其他格式可能不包括rdma扩展传输报头,如在消息定序器处本地缓冲消息而不是使用缓冲服务器的情况下。
69.示例性过程
70.图4是根据一个或多个实施方案的消息排序过程的流程图。图4的过程可以由例如执行核心交换机模块24a的图2中的核心交换机106a的电路132a来执行和/或由执行聚合交换机模块31a的图2中的聚合交换机104a的电路133a来执行。
71.在方框402中,可编程交换机经由可编程交换机的至少一个端口从第一装置接收一系列相关消息。基于例如序号、源端口和目的端口以及在一系列相关消息的消息中找到的地址,可编程交换机可以将消息识别为属于一系列相关消息。
72.在方框404中,可编程交换机确定在一系列相关消息中是否接收到一个或多个无序消息。在一些实施方式中,可编程交换机可以保持跟踪相关消息的序号,如通过更新用于存储从消息中提取的序号的存储器位置以指示顺序中最近所接收的消息。可以将新序号与在当前消息之前所接收的消息的先前序号进行比较。如果新序号与先前序号相比没有增加1,则可编程交换机可以确定所接收的消息是无序接收的。
73.如果在方框404中确定消息尚未按顺序接收,则在方框406中,可编程交换机按照一系列相关消息中包括的序号所指示的顺序,将一系列相关消息发送到第二装置。在一些实施方式中,如果消息的序号没有指示消息是无序接收的,则可以在接收消息时批量发送一系列消息。
74.另一方面,如果在方框404中确定一系列相关消息中的一个或多个消息被无序接收,则在方框408中,可编程交换机延迟发送一系列相关消息中的至少一个消息,以将一系列相关消息按顺序发送到第二装置。在一些实施方式中,可编程交换机可以本地缓冲第一无序消息之后的阈值数量的消息,直到接收到丢失消息。然后,可编程交换机在收到延迟消息后按顺序发送消息。如下文参考图5更详细讨论的,在对丢失消息应该被接收的序号之后接收的预定数量的消息进行计数之后,或者在用于接收丢失消息的定时器达到阈值之后,可编程交换机可以确定所述丢失消息应该为丢失消息。
75.参考本公开,本领域普通技术人员将理解,在其他实施方式中,图6的消息排序过程的方框的顺序可以不同。例如,在一些实施方式中,在方框404中确定已经接收到一个或多个无序消息的同时,充当消息定序器的可编程交换机可以在方框406中发送一系列相关消息中的一些消息。
76.图5是根据一个或多个实施方案的消息检索过程的流程图。图5的过程可以由例如执行核心交换机模块24a的图2中的核心交换机106a的电路132a来执行和/或由执行聚合交换机模块31a的图2中的聚合交换机104a的电路133a来执行。
77.在方框502中,可编程交换机将所接收的一系列相关消息发送到缓冲服务器(例如,图2中的缓冲服务器1051),以临时存储相关消息。可编程交换机可以使用rdma写入命令将消息直接添加到缓冲服务器的存储器中的缓冲区。
78.在方框504中,可编程交换机至少部分基于相关消息中包括的序号来确定丢失消息已经丢失。如上文针对图4的排序过程所述,可编程交换机可以基于一系列相关消息的所接收消息中的序号来确定尚未按顺序接收到丢失消息。在一些实施方式中,可编程交换机
可以对在应该接收到丢失消息的序号之后接收到的一系列相关消息中的消息数量进行计数。替代地,响应于接收到序号在丢失消息的预期序号之后的消息,可编程交换机可以启动用于接收丢失消息的定时器。当定时器超过阈值时或者当所计数的消息数量超过消息数量的阈值时,可编程交换机可以确定丢失消息丢失。
79.在方框506中,响应于所计数的消息数量或计时器超过相应的阈值,可编程交换机向缓冲服务器和第一终端节点装置中的至少一者请求丢失消息。在一系列相关消息的路径上有多个缓冲服务器和消息定序器的情况下,可编程交换机可以将请求发送至比可编程交换机更靠近起始终端节点装置的最近的较早消息定序器。较早消息定序器可以使用例如rdma读取请求从其缓冲服务器请求丢失消息,以检索丢失消息。在可编程交换机是唯一的消息定序器或者是离发起一系列相关消息的第一终端节点装置最近的消息定序器的情况下,可编程交换机可以向第一终端节点装置发送对丢失消息的请求,以重新传输丢失消息。
80.在方框508中,可编程交换机从缓冲服务器或第一装置接收丢失消息。可编程交换机可以使用丢失消息中的序号来识别丢失消息。
81.在方框510中,按照相关消息的序号所指示的顺序,可编程交换机将一系列相关消息中的剩余消息发送至第二装置。在一些实施方式中,可编程交换机可以在本地缓冲剩余消息,然后可以在方框508中接收到丢失消息之后以正确的顺序发送消息。在其他实施方式中,可编程交换机可以通过例如发出rdma读取请求从缓冲服务器检索剩余消息中的部分或全部,所述rdma读取请求允许可编程交换机直接访问存储在缓冲服务器中的缓冲消息。
82.图6是根据一个或多个实施方案的可编程开关选择和编程过程的流程图。图6的过程可以例如由执行网络控制器模块18的网络控制器120的处理器124来执行。
83.在方框602中,网络控制器从第一终端节点装置接收待发送到网络中第二终端节点装置的一系列相关消息的指示。第一装置可以被配置为如通过图2中的终端节点模块26向tor交换机发送这样的指示,作为准备用于传输的一系列相关消息的一部分。然后,tor交换机可以经由聚合交换机和/或核心交换机将该指示路由到网络控制器。
84.在方框604中,网络控制器在第一终端节点装置和第二终端节点装置之间的多个可编程交换机中选择一个作为一系列相关消息的消息定序器。网络控制器可以使用存储的网络拓扑(如图2中的网络拓扑16)来选择可编程交换机作为消息定序器。
85.在方框606中,网络控制器对在方框604中选择的可编程交换机进行编程,以使得能够使用具有相等跳数的不同路径来将一系列相关消息中的不同消息从所选择的可编程交换机发送到第二终端节点装置。网络控制器可以使用所存储的网络拓扑来确定所选择的可编程交换机和网络中具有相同跳数或分段数的第二终端节点装置之间的路径。在一些实施方式中,网络控制器可以使用例如p4编程来对可编程交换机的一个或多个匹配动作级进行编程,以控制一系列相关消息中的消息的路由。
86.如上所述,路径上或网络内消息定序器的前述使用可以减少由终端节点装置所接收的无序消息的产生。这对于在有损结构(如以太网)上充分利用依赖于无损通信的低延迟接口(如nvme)尤其有用。另外,使用如上所述的网络内缓冲服务器可以便于将可编程交换机(如核心交换机和聚合交换机)用作消息定序器,以提供比传统上由终端节点装置提供的消息排序和丢失消息的恢复更快的消息排序和丢失消息的恢复。
87.其他实施方案
88.本领域的普通技术人员将会知道,结合本文公开的示例所描述的各种例示性逻辑块、模块和过程可以实现为电子硬件、计算机软件或两者的组合。此外,前述过程可体现在计算机可读介质上,该计算机可读介质使处理器或控制器电路执行或实施某些功能。
89.为了清楚地说明硬件和软件的这种可互换性,上面已经在其功能方面对各种例示性部件、块和模块进行了总体描述。将此功能性实现为硬件还是软件取决于特定应用和施加在整个系统的设计约束。本领域的普通技术人员可以针对每个特定应用以不同方式实现所描述的功能,但这种实现决策不应被解释为导致脱离本公开的范围。
90.结合本文公开的示例所描述的各种例示性逻辑块、单元、模块、处理器电路和控制器电路可以用被设计用于执行本文所述功能的通用处理器、dsp、asic、fpga或其他可编程逻辑器件、离散门或晶体管逻辑、分立硬件部件或它们的任何组合来实现或执行。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器或控制器电路还可以实现为计算设备的组合,例如dsp和微处理器的组合、多个微处理器、soc、结合dsp内核的一个或多个微处理器,或任何其他此类配置。
91.结合本文公开的示例而描述的方法或过程的活动可直接体现于硬件中、由处理器或控制器电路执行的软件模块中或两者的组合中。该方法或算法的步骤也可以以与示例中提供的顺序另选的顺序执行。软件模块可驻留在ram存储器、闪存存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动介质、光学介质或本领域中已知的任何其他形式的存储介质中。示例性存储介质联接到处理器或控制器电路,使得该处理器或控制器电路可从该存储介质读取信息和向该存储介质写入信息。在替代方案中,存储介质可以是处理器或控制器电路的组成部分。处理器或控制器电路和存储介质可驻留在asic或soc中。
92.提供了本公开的示例性实施方案的上述描述,以使得任何本领域普通技术人员能够制作或使用本公开的实施方案。对这些示例的各种修改对于本领域普通技术人员而言将是显而易见的,并且在不脱离本公开的实质或范围的情况下,本文公开的原理可以应用于其他示例。所述实施方案将在所有方面被认为仅仅是示例性的而非限制性的。此外,在以下权利要求书中以“a和b中的至少一者”的形式使用的语言应理解为意指“仅a、仅b或a和b两者”。
再多了解一些

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

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

相关文献