CN114930283A - 利用可编程网络接口进行分组处理 - Google Patents
利用可编程网络接口进行分组处理 Download PDFInfo
- Publication number
- CN114930283A CN114930283A CN202180006713.7A CN202180006713A CN114930283A CN 114930283 A CN114930283 A CN 114930283A CN 202180006713 A CN202180006713 A CN 202180006713A CN 114930283 A CN114930283 A CN 114930283A
- Authority
- CN
- China
- Prior art keywords
- nvme
- node
- connection
- network interface
- nvmeof
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/188—Time-out mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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
-
- 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/28—Timers or timing mechanisms used in protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1848—Time-out mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种用于服务器的可编程网络接口,该可编程网络接口包括:至少一个存储器,该至少一个存储器存储与不同NVMe节点的多个先前活动的基于网络结构的非易失性存储器Express(NVMeoF)连接的连接参数。从NVMe节点接收NVMeoF连接请求,并且确定该NVMe节点是否与存储在该至少一个存储器中的连接参数相关联。响应于确定该NVMe节点与存储在该至少一个存储器中的连接参数相关联,建立用于使用存储的连接参数与该NVMe节点通信的新NVMeoF连接。在一个方面,对该服务器的地址空间进行分区,并且对该地址空间的每个分区分配NVMe请求队列。识别接收到的NVMeoF消息中的至少一个地址,并且确定用于执行包括在该NVMeoF消息中的NVMe请求的NVMe请求队列。
Description
相关申请的交叉引用
本专利申请要求2020年12月11日提交的名称为“利用可编程网络接口进行分组处理(PACKET PROCESSING BY PROGRAMMABLE NETWORK INTERFACE)”的第63/124,597号美国临时专利申请(代理人案号:WDA-5230P-US)的优先权,该美国临时专利申请通过引用整体并入本文。本专利申请还要求2021年2月10日提交的名称为“利用可编程网络接口进行分组处理(PACKET PROCESSING BY PROGRAMMABLE NETWORK INTERFACE)”的第17/172,513号美国专利申请(代理人案号:WDA-5230-US)的优先权,该美国专利申请通过引用整体并入本文。
背景技术
云计算、大数据和输入/输出(I/O)密集型应用的当前趋势使得在低延迟、高吞吐量和带宽方面对数据中心中的高性能分布式共享存储器系统的需求增加。新兴的高性能非易失性存储器Express(NVMe)存储设备,例如固态驱动器(SSD),由于其在每秒输入/输出操作(IOPS)方面的性能提高而变得越来越常见。虽然NVMe最初被设计成与计算机系统内的外围部件互连Express(PCIe)接口一起使用,但最新的NVMe扩展,例如基于网络结构的NVMe(NVMeoF)可以支持对NVMe设备的远程访问,例如远程直接存储器访问(RDMA)(例如,基于聚合以太网的RDMA(RoCE)和iWarp)和光纤通道(FC)传输结构。
尽管RoCe和iWARP都支持高性能,但它们需要支持RDMA的设备和昂贵的支持数据中心桥接(DCB)的交换机,这些设备和交换机可能不易获得,并且会限制可扩展性。另一方面,使用传输控制协议(TCP)的NVMeoF允许NVMe使用最普遍的传输协议在数据中心的现有以太网网络上运行。然而,使用TCP的此类NVMeoF系统的效率取决于TCP栈的性能。在这方面,TCP分组处理可能是处理器密集型的,这会导致较大的性能损失,从而导致较大的延迟和较低的吞吐量。虽然网络带宽不断增加,但用于网络处理的标准网络接口(例如,网络接口卡(NIC))的低效率限制了数据中心存储器和计算性能。
实际上,内核空间TCP栈操作消耗大部分中央处理单元(CPU)周期来进行有状态的TCP操作和连接布置。这可能导致显著的处理开销和性能降低,尤其是对于相对短的连接,以及对于数据中心中常见的只有几个分组的对延迟敏感的流(例如,“突发鼠标流”)。
在一些情况下,内核旁路可用于将分组处理从服务器的内核空间传输到在服务器的用户空间中执行的应用程序。然而,内核旁路通常仍然无法跟上现代以太网速度,例如100Gbps或200Gbps,或者也无法支持当今数据中心的每个流资源分配要求。尽管使用了内核旁路,但TCP性能的改善有限,这主要是由于维护协议规范的复杂协议操作的开销。还尝试从服务器的处理器上卸载一些基本操作,例如校验和处理以及分组分割,然而,内核的TCP栈处理通常仍是性能瓶颈。此外,这些方法不能提供性能相关分组处理操作的灵活操作卸载。特别是,这些方法不支持快速适应不同协议的演变,也不支持当今数据中心节点执行的应用程序不断变化的需求。
附图说明
通过下文所述的具体实施方式并且结合附图,本公开的实施方案的特征和优势将变得更加显而易见。提供附图和相关联描述是为了说明本公开的实施方案,而不是限制所要求保护的范围。
图1示出根据一个或多个实施方案的用于实现分组处理卸载的示例性网络环境。
图2是根据一个或多个实施方案的包括在可编程网络接口中的示例性部件的框图。
图3是根据一个或多个实施方案的可编程网络接口的示例性可编程流水线。
图4是根据一个或多个实施方案的示例性基于网络结构的非易失性存储器Express(NVMeoF)/传输控制协议(TCP)连接建立。
图5是根据一个或多个实施方案的示例性NVMeoF写入事务。
图6是根据一个或多个实施方案的NVMeoF/TCP连接建立过程的流程图。
图7是根据一个或多个实施方案的NVMe请求管理过程的流程图。
图8是根据一个或多个实施方案的NVMeoF消息重传过程的流程图。
具体实施方式
在以下具体实施方式中阐述了许多具体细节,以便提供对本公开的彻底理解。然而,对于本领域普通技术人员显而易见的是,可在不具有这些具体细节中的一些细节的情况下实践所公开的各种实施方案。在其他情况下,并未详细示出众所周知的结构和技术以避免不必要地模糊各种实施方案。
示例性网络环境
图1示出根据一个或多个实施方案的用于实现分组处理卸载的示例性网络环境100。如图1所示,节点104A、104B和104C经由网络102彼此通信。节点104可以包括服务器,该服务器例如可以用作处理节点,该处理节点包括一个或多个处理器,例如精简指令集计算机(RISC)-V核心,和/或用作存储器节点,该存储器节点包括一个或多个固态驱动器(SSD)或硬盘驱动器(HDD)。在一些实现方式中,图1中的网络环境100可以用作数据中心的至少一部分和/或用于分布式处理,例如用于分布式机器学习或大数据分析。如本领域普通技术人员将理解的,出于说明的目的示出了节点104,并且网络环境100可以包括比图1所示节点更多的节点。另外,本领域普通技术人员将理解,网络环境100可以包括比图1所示部件更多的部件,例如聚集的交换机、架顶(ToR)交换机以及网络控制器。
节点104经由网络102彼此通信。网络102可以包括例如存储区域网络(SAN)、局域网(LAN)和/或广域网(WAN),例如互联网。就这一点而言,节点104A、104B和104C可能不位于同一地理位置中。节点104可以使用如例如以太网等一个或多个标准进行通信。就这一点而言,连接114A、114B和114C分别将可编程网络接口112A、112B和112C连接到网络102。可编程网络接口112可以包括用于连接114的一个或多个以太网端口。
节点104中的每个节点包括一个或多个处理器106、存储器108和可编程网络接口112。节点104的这些部件可经由总线110彼此通信,该总线可包括例如外围部件互连Express(PCIe)总线。节点104在本文中可被称为基于网络结构的非易失性存储器Express(NVMeoF)节点,其中节点104被配置成使用NVMe消息(例如,NVMe命令和响应)与其他节点104通信,该NVMe消息可使用传输控制协议(TCP)胶囊包封在以太网分组中。
处理器106可以执行指令,例如来自在节点104的用户空间中执行的应用程序的指令,或作为由节点104使用的操作系统(OS)的一部分的指令。处理器106可包括电路,例如中央处理单元(CPU)、图形处理单元(GPU)、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、一个或多个RISC-V核心、硬连线逻辑、模拟电路和/或它们的组合。在一些实现方式中,处理器106可以包括片上系统(SoC),该系统可与存储器108组合。
存储器108可包括例如诸如静态RAM(SRAM)、动态RAM(DRAM)的易失性随机存取存储器(RAM)、非易失性RAM或由一个或多个处理器106使用的其它固态存储器。存储在存储器108中的数据可包括从另一个节点104读取的数据、待存储在另一个节点104中的数据、从应用程序加载的用于由处理器106执行的指令和/或用于执行此类应用程序的数据。
在一些实现方式中,存储器108可以包括例如一个或多个旋转磁盘或非易失性固态存储器,例如闪存存储器。在此类实现方式中,存储器108可以包括一个或多个存储设备,例如一个或多个SSD和/或HDD。尽管本文中的描述通常是指固态存储器,但应理解,固态存储器可包括各种类型的存储器设备中的一种或多种,诸如闪存集成电路、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器(即,两层或更多层)或它们的任何组合)、NOR存储器、EEPROM、其他离散的非易失性存储器(NVM)芯片或它们的任何组合。在其他实现方式中,例如,存储器108可以包括存储级存储器(SCM),例如硫族化物RAM(C-RAM)、相变存储器(PCM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向通用存储器(OUM)、电阻式RAM(RRAM)、铁电存储器(FeRAM)、磁阻RAM(MRAM)、3D-XPoint存储器和/或其他类型的固态存储器。
可编程网络接口112可以包括例如智能网络接口卡(NIC)、网络接口控制器或可以使用例如P4等编程语言编程的网络适配器等设备。例如,可编程网络接口112可以包括智能NIC,例如Netronome Agilio NIC、Mellanox Bluefield NIC或Broadcom Stingray NIC。如图1所示,每个可编程网络接口112存储连接管理模块10、传输模块12、流量控制模块14、请求队列16和连接参数18。
如下文更详细地讨论的,连接管理模块10、传输模块12和流量控制模块14可以启用从处理器106到可编程网络接口112的硬件的NVMe和TCP处理卸载。这种卸载可以允许节点104在减少存储器访问延迟和增加吞吐量方面的更高性能。请求队列16可以允许对在节点104的可访问地址空间的不同分区中执行的NVMe请求或命令进行排队。地址空间可以表示节点104处的可由其他节点104访问的存储装置或存储器的量,例如存储器108中的量。
另外,可编程网络接口112存储连接参数18,该连接参数包括与不同节点104的先前活动连接的连接参数。此类连接参数可以包括例如连接状态的指示、先前活动连接期间节点104之间的协商参数、分组序号和/或在未从其他节点104接收到确认的情况下重新发送消息的重传超时值。协商参数可以包括例如用于先前活动连接的协议版本、与NVMe中使用的协议数据单元(PDU)的开始的数据偏移对准、用于标头的位掩码或用于确保数据完整性的数据摘要、最大数据长度、权限级别(例如,只读、读/写权限)和/或允许流量控制的最大信用数。如下文更详细地讨论的,在可编程网络接口112处存储连接参数18可以通过重新使用来自相同节点104之间的先前活动连接的存储的连接参数来缩短在节点之间建立新连接所需的时间。在一些实现方式中,可移除不太新和/或不太频繁的连接的连接参数以释放连接参数18的空间,用于较新连接和/或较频繁连接的连接参数。
本领域普通技术人员参考本公开将理解,与图1的示例中所示相比,其他实现方式可以包括不同数量或布置的节点104。就这一点而言,图1中所示的网络环境100是出于说明的目的,并且本领域普通技术人员将理解,网络环境100可以包括比图1的示例中所示更多的节点104以及额外部件,例如路由器和交换机。
图2是根据一个或多个实施方案的包括在可编程网络接口112A中的示例性部件的框图。如图2所示,可编程网络接口112A包括端口1161A和1162A、电路118A、存储器120A和接口122A。
端口1161A和1162A允许可编程网络接口112A分别经由连接1141A和1142A与其他节点104通信。在其他实现方式中,可编程网络接口112A可以包括不同数量的端口116,例如单个端口116。
电路118A可以执行指令,例如来自连接管理模块10A、传输模块12A和流量控制模块14A的指令。连接管理模块10A、传输模块12A和流量控制模块14A可以包括可编程网络接口112A的固件和/或现场可编程指令。如上所述,可以使用例如P4等编程语言在现场对可编程网络接口112A进行编程。这可以允许可编程网络接口112A适应网络环境100中使用的协议的新版本,和/或改变对于由节点104执行的应用程序的要求,例如最小服务质量(QoS)。电路118A可以包括电路,例如微控制器、DSP、ASIC、FPGA、多核处理器、硬连线逻辑、模拟电路和/或它们的组合。在一些实现方式中,电路118A可以包括SoC,该SoC可以与存储器120A或例如DRAM等其他存储器组合。
存储器120A可以包括例如内容可寻址存储器(CAM)或三元CAM(TCAM)表或其他类型的匹配动作表,其通常可以提供比常规网络接口(例如,NIC)更快的消息处理,例如以线速率或接近线速率进行的消息处理。在一些实现方式中,CAM或TCAM表可以存储在寄存器中,例如SRAM寄存器阵列。在其他实现方式中,存储器120A可以包括固态存储器,例如闪存存储器或SCM。如图2所示,存储器120A存储连接管理模块10A、传输模块12A、流量控制模块14A、请求队列16A和连接参数18A。
连接管理模块10A负责NVMeoF/TCP连接建立、连接维护和连接拆除。如下文参考图4更详细地讨论的,可编程网络接口112A可与另一个节点104的可编程网络接口112(例如,图1中的可编程网络接口112B)交换连接管理消息以建立NVMeoF/TCP连接,并且随后向节点104A的一个或多个处理器106A通知已经建立了连接。在由节点或从执行应用程序的一个或多个处理器106A接收到断开请求之后,连接管理模块10A执行NVMeoF/TCP连接拆除。
此外,可编程网络接口112A的连接管理模块10A还可负责发现和识别节点104可访问的NVMe子系统或NVMe节点104。NVMe发现可以包括用于与每个发现的NVMe子系统和NVMe节点104通信的识别路径。在一些实现方式中,使用连接管理模块10A的可编程网络接口112A可在节点104A的初始化期间广播发现消息。接收发现消息的每个NVMe节点104可以利用其可用NVMe子系统信息(例如,NVMe子系统名称和地址)来进行回复。然后,连接管理模块10A在可编程网络接口112A的存储器(例如,存储器120A)中创建数据结构,该数据结构包括用于节点104A基于从其他NVMe节点104收集的信息而连接到不同NVMe子系统的信息。
传输模块12A负责NVMe读取和写入操作期间节点104之间的数据和命令传输。这可包括识别胶囊包封在传入NVMeoF/TCP分组中的NVMe命令,移除以太网、TCP和/或NVMe标头,并且基于传输模块12A针对命令识别的至少一个地址仅将操作代码和所需参数发送到请求队列18A中的请求队列。换句话说,传输模块12A可将NVMeoF/TCP分组转换成由节点104A的一个或多个处理器106A执行的实际读取和写入命令。
此外,传输模块12A可以维护数据结构,该数据结构指示存储器120A中的各个运行事务(即,发送到目标节点或从启动器节点接收的每个待决的NVMe命令)的状态。在一些实现方式中,并且如下文参考图5中的片段化NVMeoF写入事务的示例更详细地讨论的,传输模块12A可以将大NVMeoF/TCP数据传输进行分段或片段化,其中NVMe PDU大于网络最大传输单元(MTU),例如1,500字节。
流量控制模块16A负责负载平衡、拥塞控制、控制NVMe重传超时值和NVMe胶囊重传。在一些实现方式中,流量控制模块16A将可由其他节点104访问的节点104A的存储器的地址空间(例如,图1中的存储器108A的地址空间中的一些或全部)进行分区,并且对地址空间的每个分区分配NVMe请求队列以形成请求队列18A。然后,基于NVMe请求或命令的NVMeoF消息中包括的至少一个地址将NVMe请求或命令引导到适当队列。流量控制模块16A还可以通过设置请求的不同权重或数量以在给定循环(例如,在循环法算法中)中执行每个队列来平衡队列。请求的权重或数量还可取决于应用程序执行要求(例如,最小QoS)和/或例如通过使用分组中包括的802.1Qbb优先级标签针对NVMe请求指示的优先级。
此外,流量控制模块14A可以使用基于信用的系统来帮助确保足够的缓冲空间用于接收NVMe命令和数据胶囊。例如,基于由启动器使用的NVMe请求队列的可用容量,可编程网络接口112A可使用流量控制模块14A向启动器节点104发送用于向节点104A发送消息的多个信用的指示。然后,每当节点向节点104A发送NVMeoF消息时,启动器节点104就降低其信用数,例如降低一。可以响应于节点104A向其他节点104返回信用的新指示而增加信用。
流量控制模块14A还可使用一个或多个分组中的显式拥塞通知(ECN)位来识别网络拥塞。响应于已设置ECN位,可编程网络接口112A可通知下一个确认分组中的发送器调整其传输速率。
为了支持可靠的NVMe胶囊递送,流量控制模块14A可以使用选择性确认和超时重传方法。在接收到分组时,流量控制模块14A可以将接收到的分组的分组序号与该数据流或活动连接的预期分组序号进行比较。如果接收到的分组的序号与预期序号匹配,则由可编程网络接口112A进一步处理分组,并且向发送器返回确认(即,ACK)。否则,可编程网络接口112A发送否定确认(即,NACK)或其他错误消息,包括由节点104A接收到的最后一个分组的序号。
流量控制模块14A还可在可编程网络接口112A接收到否定确认的情况下或在由超时值表示的例如重传超时周期(RTO)的时间段内未接收到确定的情况下重传分组。在一些实现方式中,流量控制模块14A可以响应于例如通过可编程网络接口112A的出口流水线发送消息而设置用于接收对应确认的超时寄存器。超时值可以基于例如平均往返分组传输持续时间。在一些实现方式中,可以基于例如采样的往返时间的指数级移动平均值在现场调整超时值。
接口122A提供到节点104A的内部总线110A的接口,如图1所示。在一些实现方式中,接口122A可提供PCIe接口或PCIe切换以用于与节点104A的其他部件通信,例如与图1中的一个或多个处理器106A和存储器108A通信。
如本领域普通技术人员参考本公开将理解的,可编程网络接口112A的部件的布置或数量可以与图2不同。例如,可编程网络接口112A的其他实现方式可包括不同数量的存储器120A、接口122A或不同数量的端口116。
图3是根据一个或多个实施方案的可编程网络接口112A的示例性可编程流水线20A。在节点的可编程网络接口中使用可编程流水线可以允许有效地卸载通常通过虚拟化或由节点的处理器执行的驱动器(例如NVMe驱动器)执行的任务。从节点的一个或多个处理器到可编程网络接口的这种基于硬件的NVMeoF/TCP处理卸载通常可提高吞吐量并且减少延迟以更好地利用NVMeoF和现代以太网速度。在一些实现方式中,可编程网络接口的每个端口,例如端口1161A和1162A中的每个端口,可以具有其自身的可编程流水线20A,用于处理由端口以线速率或接近线速率接收到的分组。
如图3的示例中所示,可编程流水线20A包括解析器22A、一个或多个匹配动作表24A和逆解析器26A。在图3的示例中,入口分组由解析器22A接收,该解析器从分组中提取标头以使用一个或多个匹配动作表24A执行匹配动作操作或阶段。可以定制每个匹配动作表24A以根据预定义规则对来自分组的一个或多个提取值执行匹配操作,然后执行动作,例如,添加、移除或修改标头的字段,基于提取的地址和/或优先级指示符将NVMe请求路由到适当队列18,或者发送连接管理响应,例如用于调整由于提取的ECN位而产生的传输速率的消息、用于建立连接的消息、或用于终止活动连接的消息。逆解析器26A可以响应于以下项来组装分组而不涉及节点104A的在可编程网络接口112A外部的其他部件(例如,图1中的一个或多个处理器106A):接收到的分组,例如确认(ACK消息)、错误消息(例如,NACK消息)或其他通知,例如用于调整流量控制的传输速率或可用信用数量的通知。
示例性过程
图4是根据一个或多个实施方案的节点104A与104B之间的示例性NVMeoF/TCP连接建立。如图4所示,连接建立可由分别执行连接管理模块10A和10B的节点104A和104B的可编程网络接口112A和112B执行。在一些实现方式中,可编程网络接口112A与112B之间交换的几乎所有通信都可以在节点104A和104B的其他部件最小程度参与的情况下由相应可编程流水线(例如,上文讨论的可编程流水线20A)执行,这提高了可建立NVMeoF/TCP连接的速度。
如图4所示,连接建立可从TCP三向握手开始,其中可编程网络接口112A将可包括序号的TCP同步分组(即,TCP Syn)发送到可编程网络接口112B。作为响应,例如通过递增接收到的序号并且向可编程网络接口112A提供其自身的序号,可编程网络接口112B返回TCP同步分组,确认其从可编程网络接口112A接收到TCP同步分组(即,TCP Syn ACK)。连接建立确认(即,ACK)可以例如递增由可编程网络接口112B提供的序号。
然后,可编程网络接口112A通过向可编程网络接口112B发送NVMe/TCP连接初始化请求来执行NVMe/TCP连接建立。这可以包括从可编程网络接口112A发送的PDU以提供NVMe/TCP连接参数,例如由节点104A支持的特征和/或要在可编程网络接口112A与112B之间协商的参数。
此类协商参数可以包括例如要使用的协议版本、要在PDU中使用的数据偏移、用于标头的位掩码或用于确保PDU的完整性的数据摘要,以及用于每个PDU的最大数据长度。作为响应,可编程网络接口112B返回NVMe/TCP连接初始化响应,该响应可以确认由可编程网络接口112A提出的特征和/或参数,并且可以包括额外信息,例如可编程网络接口112A可用于发送消息的最大信用数。如上所述,可编程网络接口112B的流量控制模块可以基于可编程网络接口112B的缓冲区或队列大小来设置最大信用数。
在建立NVMe/TCP连接之后,可编程网络接口112A通过发送NVMeoF连接请求建立NVMeoF连接。NVMeoF连接请求可以包括例如用于NVMeoF绑定的信息,例如对某些能力的限制(例如,用于大型数据传输的散集列表(SGL)描述符、数据放置限制、数据传输能力和认证能力)。NVMeoF连接请求还可以包括例如关于可编程网络控制器112A使用的队列的信息,例如队列的大小和数量。可编程网络接口112A可以向请求连接的节点104A的处理器106A通知已经建立连接,使得可以在可编程网络接口112A已经建立NVMeoF/TCP连接之后将命令传输到节点104B。处理器106A可以通过例如执行请求存储在节点104B的NVMe命名空间中的数据或请求在节点104B的NVMe命名空间中写入数据的应用程序来请求连接。
如上所述,使用可编程网络接口来建立NVMeoF/TCP连接可以显著减少在节点104A与104B之间建立NVMeoF/TCP连接所需的时间量,同时还从处理器106卸载此类处理以进一步提高节点104的性能。类似地,连接管理模块10也可以用于NVMeoF/TCP连接拆除。在此类情况下,可编程网络接口112可以从其他NVMe节点接收断开请求或从在节点104处执行的应用程序接收断开请求,并且向其他NVMe节点发送完成消息,而不涉及节点104的其他部件。然后可以向节点104的处理器106提供指示连接不再处于活动状态的通知。
另外,可编程网络接口112A和112B可以在连接终止之后保留用于连接的参数。此类参数可以作为连接参数18的一部分存储,以促进更快的连接建立,用于可编程网络接口112A与112B之间的未来NVMeoF/TCP连接。就这一点而言,如果可以针对包括其他可编程网络接口的其他NVMe节点识别存储在连接参数18中的连接参数,则可以跳过图4中的NVMe/TCP连接建立和NVMeoF连接建立中的一些或全部。
参考图4的序列,可编程网络接口112B可以使用连接参数18A来抢先发送NVMe/TCP连接初始化响应,以确认与可编程网络接口112A的最后一个活动连接所使用的连接参数,并且还可以抢先发送NVMeoF连接响应,以确认与可编程网络接口112A的最后一个活动连接所使用的其他连接参数。如下文参考图6的连接建立过程更详细地讨论的,重新使用来自与同一节点的先前连接的存储的连接参数通常可以减少建立NVMeoF/TCP连接所需的时间和处理。
图5是根据一个或多个实施方案片段化的示例性NVMeoF写入事务。如图5所示,可编程网络接口112A可以对从节点104A的处理器(即,处理器106A)接收到的数据进行片段化以适合网络MTU。图5的片段化写入序列可以主要由分别执行传输模块12A和12B的节点104A和104B的可编程网络接口112A和112B执行。在一些实现方式中,在图5中的可编程网络接口112A与112B之间交换的几乎所有通信可由相应可编程流水线执行,例如由上文所讨论的可编程流水线20A执行,几乎不涉及节点104A和104B的其他部件,这提高了可进行大型数据传输(即,大于MTU)的速度。
可编程网络接口112A开始于在已经建立NVMeoF/TCP连接之后在PDU中发送NVMe写入命令胶囊,如在上面讨论的图4的序列所示,或者通过使用连接参数18,如下文参考图6的NVMeoF/TCP连接建立过程更详细地讨论的。从图5中的可编程网络接口112A发送的NVMe写入命令胶囊包括NVMe写入命令。
响应于接收到NVMe写入命令胶囊,可编程网络接口112B返回准备传输PDU。如上所述,可编程控制器112B经由连接管理模块10A可以为可编程网络接口112A提供在从可编程网络接口112B接收确认之前可以发送的多个消息或PDU的最大信用数。在其他实现方式中,准备传输PDU可以包括针对分配给将执行写入命令的地址空间部分的特定队列定制的信用数,这可以由初始NVMe写入命令胶囊中包括的一个或多个地址指示。
然后,可编程网络接口112A对其从节点的处理器(例如,图1中的处理器106A)接收到的数据进行片段化,并且将要写入一系列数据PDU的数据打包。就这一点而言,传输模块12A可以为每个PDU提供序号以确保以正确的顺序接收数据。传输模块12A可以在最后一个数据PDU中包括指示符或标记以指示传输完成。
在接收到最后一个数据PDU之后,可编程网络接口112B向可编程网络接口112A返回指示已经接收到所有数据PDU的响应胶囊PDU。就这一点而言,由可编程网络接口112B执行的传输模块12B可以在响应胶囊PDU中包括指示以正确顺序接收到所有数据PDU的指示或标记。在其他实现方式中,可以省略响应胶囊PDU,使得可编程网络接口112A假设所有数据PDU都以正确顺序成功接收,除非从可编程网络接口112B接收到错误消息或NACK。
在一些实现方式中,传输模块12B可以响应于未以正确顺序接收到数据PDU而发送错误消息或NACK。在此类情况下,并且如下文参考图8的示例性消息重传过程更详细地讨论的,可编程网络接口112A的传输模块12A可以在节点104A的其他部件(例如,节点104A的处理器106A)最小程度参与的情况下重新发送无序或丢失的数据PDU。
在节点之间的活动连接或活动通信会话期间,在一些实现方式中,每个可编程网络接口112可以跟踪每个事务的当前状态,其中已向另一个NVMe节点发送命令或由另一NVMe节点接收命令。在一些实现方式中,此类信息可以存储在与连接参数18不同的数据结构中或存储在相同数据结构中。
如上所述,使用可编程网络接口,例如可编程网络接口112A和112B,可以显著减少在节点104A与104B之间使用NVMeoF/TCP传输数据所需的时间量,同时还从处理器106卸载此类处理以进一步提高节点104的性能。
图6是根据一个或多个实施方案的NVMeoF/TCP连接建立过程的流程图。图6的过程可以由例如执行连接管理模块10的可编程网络接口112的电路118执行。
在框602中,可编程网络接口从NVMe节点(例如从图1中的另一个节点104)接收NVMeoF连接请求。在一些实现方式中,连接请求可以遵循例如TCP连接建立和/或NVMe/TCP连接建立,如图4所示的示例性连接序列。
在框604中,可编程网络接口确定NVMe节点是否与存储在连接参数18中的连接参数相关联。在一些实现方式中,可以使用NVMe命名空间ID或其他标识符来确定是否存在与NVMe节点相关联的条目或连接参数。如上所述,可编程网络接口可以本地存储先前NVMeoF/TCP连接的参数,例如,连接状态的指示、先前活动连接期间可编程网络接口112之间的协商参数、分组序号和/或在未从其他节点104接收到确认的情况下重新发送消息的重传超时值。协商参数可以包括例如用于先前活动连接的协议版本、与PDU的开始的数据偏移对准、用于标头的位掩码、最大数据长度、权限级别(例如,只读、读/写权限)和/或允许流量控制的最大信用数。
响应于在框604中确定NVMe节点与存储在连接参数18中的连接参数相关联,在框606中建立新NVMeoF连接以使用所存储的连接参数与NVMe节点通信。如上参考图4的连接建立序列所述,大部分NVMe/TCP连接建立和NVMeoF连接建立可以替代与NVMe节点相关联的存储的连接参数。在一些实现方式中,可编程网络接口112可以发送对存储参数的确认,但是即使在这种情况下,其他NVMe节点也可能不需要发送其NVMe/TCP连接初始化请求和/或NVMeoF连接请求,这可以减少建立NVMeoF/TCP连接所需的处理量。
另一方面,响应于在框604中确定NVMe节点不与存储在连接参数18中的连接参数相关联,在框608中,可编程网络接口在连接参数18中创建一个或多个新条目以存储其他NVMe节点的连接参数。例如,在建立NVMeoF/TCP连接之后,例如在上面讨论的图4的连接建立序列之后,可以存储其他NVMe节点的连接参数。如上所述,在一些实现方式中,存储连接参数可能受制于可用存储空间,使得仅最近和/或最频繁使用的连接的连接参数存储或保留在连接参数18中。就这一点而言,连接参数18还可以包括针对所建立的连接的最后活动时间和/或使用指示符,其可以用于确定是否移除非最近使用的和/或不太频繁使用的连接参数。
如上所述,在可编程网络接口112处存储连接参数18可以通过重新使用来自相同节点104之间的先前活动连接的存储的连接参数来缩短在节点之间建立新NVMeoF/TCP连接所需的时间。
图7是根据一个或多个实施方案的NVMe请求管理过程的流程图。图7的过程可以由例如执行传输模块12的可编程网络接口112的电路118执行。
在框702中,可编程网络接口112对其节点104的地址空间进行分区。如上所述,节点104可以是包括例如图1中的存储器108的至少一个存储器或一个或多个存储设备(例如,HDD和/或SSD)的服务器。可编程网络接口可以对可以作为NVMe命名空间由其他NVMe节点访问的表示存储器或存储装置的地址空间进行分区,例如通过将地址空间分区为预先确定数量的相等大小的地址范围。
在框704中,可编程网络接口112对来自框702的每个分区分配NVMe请求队列。可以在节点的建立或初始化期间或在离线阶段期间执行NVMe请求队列的分区和分配,如框704下方的虚线所示。
在操作期间,在框706中,可编程网络接口从另一个NVMe节点接收NVMeoF消息。NVMeoF消息可以包括由可编程网络接口解析以执行匹配动作的NVMeoF和TCP分组标头。例如通过识别NVMeoF消息中包含的NVMe胶囊中的操作代码,可编程网络接口可以识别嵌入在NVMeoF消息中的NVMe请求。操作代码可以指示例如从节点104(例如,服务器)的NVMe命名空间中的地址读取数据的读取命令,或者指示将数据写入节点104的NVMe命名空间的写入命令。
在框708中,可编程网络接口识别接收到的NVMeoF消息中的至少一个地址,以用于访问节点104的NVMe命名空间中的数据。在解析NVMeoF消息之后,可编程网络接口可以移除NVMeoF消息中包括的一些或所有以太网、TCP和NVMe标头。然后,可编程网络接口112可以仅向节点104的处理器106或具有其他NVMe参数的其他部件提供读取或写入命令,以有效地将接收到的NVMeoF消息转换为将由节点104执行的NVMe读取或写入命令。可编程网络接口112的此类转化减少了节点104的处理器否则需要的处理开销,从而释放处理器的资源并提高节点104的总体性能。
在框710中,可编程网络接口112基于框708中识别的地址确定来自在框704中分配的NVMe请求队列中的NVMe请求队列,用于执行NVMeoF消息中包括的NVMe请求。可编程网络接口112可以使用匹配动作表来识别NVMe请求队列,例如,该匹配动作表与对应于NVMe命名空间的分区的地址范围内的所识别地址匹配。队列可以在可编程网络接口112的芯片上存储器中缓冲或临时存储NVMe请求(例如,写入命令和读取命令),例如在图2中的请求队列16中。然后,可编程网络接口112经由流量控制模块14可以例如通过使用循环算法以特定顺序或序列将NVMe请求从NVMe请求队列18发送到节点104的总线110上,以负载平衡NVMe请求队列18中的NVMe消息的性能。通过可编程网络接口112进行的此类负载平衡通常可以帮助防止大型数据流阻断较小的数据流,较小的数据流可能是时间敏感的或以其他方式需要用于访问数据的最小QoS。
在一些实现方式中,可编程网络接口112的匹配动作表可以被编程为在确定NVMe请求的NVMe请求队列时识别并考虑NVMeoF消息中包括的优先级值(例如,802.1Qbb值)。可以由发送NVMeoF消息的NVMe节点使用此类优先级值以将某些NVMeoF消息与生成可能具有不同QoS需求(例如用于访问数据的最大延迟)的底层NVMe请求的不同应用程序相关联。在此类实现方式中,可编程网络接口112可以具有单独的队列,该队列可以比用于非源自包括高优先级值的NVMeoF消息的NVMe消息的其他低优先级队列更频繁地或以更大的每周期数量调度NVMe消息。
图8是根据一个或多个实施方案的消息重传过程的流程图。图8的过程可以由例如执行流量控制模块14的可编程网络接口112的电路118执行。
在框802中,可编程网络接口112向NVMe节点发送NVMeoF消息。NVMeoF消息可以源自由包括可编程网络接口112的节点104的处理器106执行的应用程序。可编程网络接口可以经由节点104的总线110向从处理器106接收到的NVMe消息添加标头,例如TCP、以太网和NVMeoF标头。
在框804中,可编程网络接口112临时存储来自发送到另一NVMe节点的NVMeoF消息的数据,例如有效载荷。来自消息的数据可以在可编程接口112处本地存储,例如存储在图2中的存储器120A中。通过存储来自由可编程网络接口112发送的NVMeoF消息的有效载荷或数据,通常可以在需要时更快速地重新发送NVMeoF消息,例如在接收到错误消息或NACK之后,或者在接收确认的超时值到期之后,如下文所述。可编程网络接口112可以在不涉及例如处理器104等节点104的其他部件的情况下处理此类错误和重传,以进一步提高节点104的总体性能。
在框806中,可编程网络接口112确定是否已经达到用于接收发送到另一NVMe节点的NVMeoF消息的确认的超时值。在一些实现方式中,可编程网络接口112可以响应于例如通过可编程网络接口的出口流水线发送NVMeoF消息而设置用于接收对应确认的超时寄存器。超时值可以基于例如平均往返分组传输持续时间。在一些实现方式中,可以基于例如采样的往返时间的指数级移动平均值在现场调整超时值。
响应于在框806中在没有接收到确认的情况下达到超时值,可编程网络接口112使用临时存储在框804中的数据或有效载荷将NVMeoF消息重新发送到另一NVMe节点。如上所述,可编程网络接口112还可以响应于从其他NVMeoF接收到错误消息或NACK而重新发送NVMeoF消息。NVMeoF消息的重新发送可以由可编程网络接口112完全处理,而不涉及节点104的其他部件。
响应于在到达超时值之前在框806中接收到确认,可编程网络接口112可以在框808中发送下一个NVMeoF消息。下一个NVMeoF消息可以包括来自在节点104上执行的应用程序的NVMe请求,或者可以包括例如“保持活动”消息以确定与其他NVMe节点的连接是否仍处于活动状态。就这一点而言,可编程网络接口112可以周期性地发送此类保持活动消息以维护或测试与其他NVMe节点的连接,而不涉及节点104的其他部件,例如节点的处理器106。
如果未确认保持活动消息或者如果其他NVMe节点发送断开请求,则可编程网络接口112例如通过释放用于维护NVMeoF/TCP连接的资源来执行连接拆除。在一些实现方式中,如果再次激活与其他NVMe节点的连接,则用于保持关于连接的元数据的一个或多个值(例如用于连接的最后一个序号)可以被存储为连接参数18的一部分以用于将来使用。如上所述,可编程网络接口使用连接参数18可以减少重新建立NVMeoF/TCP连接所需的时间和处理。
如上所述,将NVMeoF/TCP处理卸载到可编程网络接口通常可以提高例如服务器等节点的性能,因为像TCP分组处理这样的分组处理可能是处理器密集型的。就这一点而言,可以通过此类可编程网络接口的匹配动作阶段以线速率或接近线速率处理此类NVMeoF/TCP处理的许多操作。另外,可编程网络接口使用例如P4的编程语言的可编程性通常可以允许灵活性,以更好地适应所使用的多个协议的较新版本,并且更好地适应对当今数据中心中节点执行的应用程序不断变化的需求。
其他实施方案
本领域的普通技术人员将会知道,结合本文公开的示例所描述的各种例示性逻辑块、模块和过程可以实现为电子硬件、计算机软件或两者的组合。此外,前述过程可体现在计算机可读介质上,该计算机可读介质使处理器或控制器电路执行或实施某些功能。
为了清楚地说明硬件和软件的这种可互换性,上面已经在其功能方面对各种例示性部件、块和模块进行了总体描述。将此功能性实现为硬件还是软件取决于特定应用和施加在整个系统的设计约束。本领域的普通技术人员可以针对每个特定应用以不同方式实现所描述的功能,但这种实现决策不应被解释为导致脱离本公开的范围。
结合本文公开的示例所描述的各种例示性逻辑块、单元、模块、处理器电路和控制器电路可以用被设计用于执行本文所述功能的通用处理器、DSP、ASIC、FPGA或其他可编程逻辑器件、离散门或晶体管逻辑、分立硬件部件或它们的任何组合来实现或执行。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器或控制器电路还可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、SoC、结合DSP内核的一个或多个微处理器,或任何其他此类配置。
结合本文公开的示例而描述的方法或过程的活动可直接体现于硬件中、由处理器或控制器电路执行的软件模块中或两者的组合中。该方法或算法的步骤也可以以与示例中提供的顺序另选的顺序执行。软件模块可驻留在RAM存储器、闪存存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动介质、光学介质或本领域中已知的任何其他形式的存储介质中。示例性存储介质联接到处理器或控制器电路,使得该处理器或控制器电路可从该存储介质读取信息和向该存储介质写入信息。在替代方案中,存储介质可以是处理器或控制器电路的组成部分。处理器或控制器电路和存储介质可驻留在ASIC或SoC中。
提供了本公开的示例性实施方案的上述描述,以使得任何本领域普通技术人员能够制作或使用本公开的实施方案。对这些示例的各种修改对于本领域普通技术人员而言将是显而易见的,并且在不脱离本公开的实质或范围的情况下,本文公开的原理可以应用于其他示例。所述实施方案将在所有方面被认为仅仅是示例性的而非限制性的。此外,在以下权利要求书中以“A和B中的至少一者”的形式使用的语言应理解为意指“仅A、仅B或A和B两者”。
Claims (20)
1.一种用于服务器的可编程网络接口,所述可编程网络接口包括:
至少一个存储器,所述至少一个存储器被配置成存储与不同非易失性存储器Express(NVMe)节点的多个先前活动的基于网络结构的非易失性存储器Express(NVMeoF)连接的连接参数;和
电路,所述电路被配置成:
从NVMe节点接收NVMeoF连接请求;
确定所述NVMe节点是否与存储在所述至少一个存储器中的连接参数相关联;以及
响应于确定所述NVMe节点与存储在所述至少一个存储器中的连接参数相关联,建立用于使用所存储的连接参数与所述NVMe节点通信的新NVMeoF连接。
2.根据权利要求1所述的可编程网络接口,其中所存储的连接参数包括连接状态的指示、先前活动连接期间所述服务器与所述NVMe节点之间的协商参数、分组序号和重传超时值中的至少一者。
3.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成在以消息发送数据后临时存储发送到所述NVMe节点的数据。
4.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成:
通过网络结构向所述NVMe节点发送消息;
确定是否已经达到存储在所述连接参数中的用于从所述NVMe节点接收所发送的消息的确认的超时值;以及
响应于在未从所述NVMe节点接收到所述确认的情况下达到所述超时值,通过网络结构向所述NVMe节点重新发送所述消息。
5.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成:
从所述NVMe节点或从由所述服务器执行的应用程序接收NVMeoF断开请求;以及
响应于所接收到的NVMeoF断开请求,对新连接执行NVMeoF/TCP连接拆除。
6.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成执行与所述NVMe节点的NVMeoF/传输控制协议(TCP)连接的连接建立,所述连接建立包括:
基于从所述服务器的处理器接收的命令向所述NVMe节点发送NVMe/传输控制协议(TCP)初始化请求;
从所述NVMe节点接收NVMe/TCP初始化响应;
向所述NVMe节点发送NVMeoF连接请求;以及
从所述NVMe节点接收NVMeoF连接响应。
7.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成:
解析通过网络结构从所述NVMe节点接收到的消息的以太网标头;
解析从所述NVMe节点接收到的所述消息的NVMe胶囊;以及
向所述服务器的处理器提供所述NVMe胶囊的一部分,而不提供所解析的以太网标头和所述NVMe胶囊的剩余部分。
8.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成:
将从所述服务器的处理器接收到的数据片段化以适合网络最大传输单元(MTU);以及
向所述NVMe节点发送多个消息以用于所片段化的数据。
9.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成:
对所述服务器的地址空间进行分区;
对所述地址空间的每个分区分配NVMe请求队列;
从所述NVMe节点接收NVMeoF消息;
识别所接收到的NVMeoF消息中的至少一个地址;以及
基于所识别的至少一个地址,确定用于执行包括在所述NVMeoF消息中的NVMe请求的NVMe请求队列,其中所述NVMe请求由所述服务器的一个或多个处理器执行。
10.根据权利要求1所述的可编程网络接口,其中所述电路被进一步配置成基于所确定的NVMe请求队列的可用容量向所述NVMe节点发送用于向所述服务器发送消息的预先确定数量的信用的指示,所述预先确定数量的信用随着每个NVMeoF消息发送到所述服务器而由所述NVMe节点减少。
11.一种由可编程网络接口执行的方法,所述方法包括:
对服务器的地址空间进行分区;
对所述地址空间的每个分区分配非易失性存储器Express(NVMe)请求队列;
从NVMe节点接收基于网络结构的NVMe(NVMeoF)消息;
识别所接收到的NVMeoF消息中的至少一个地址;以及
基于所识别的至少一个地址,确定用于执行包括在所述NVMeoF消息中的NVMe请求的NVMe请求队列,其中所述NVMe请求由所述服务器的一个或多个处理器执行。
12.根据权利要求11所述的方法,所述方法进一步包括基于所确定的NVMe请求队列的可用容量向所述NVMe节点发送用于向所述服务器发送消息的预先确定数量的信用的指示,所述预先确定数量的信用随着每个NVMeoF消息发送到所述服务器而由所述NVMe节点减少。
13.根据权利要求11所述的方法,所述方法进一步包括:
确定所述NVMe节点是否与存储在所述可编程网络接口的至少一个存储器中的先前活动连接的连接参数相关联;以及
响应于确定所述NVMe节点与存储在所述至少一个存储器中的所述连接参数相关联,建立用于使用所存储的连接参数与所述NVMe节点通信的新NVMeoF连接。
14.根据权利要求11所述的方法,所述方法进一步包括在以消息发送数据后临时存储发送到所述NVMe节点的数据以便重传所述消息。
15.根据权利要求11所述的方法,所述方法进一步包括:
通过网络结构向所述NVMe节点发送消息;
确定是否已经达到存储在所述连接参数中的用于从所述NVMe节点接收所发送的消息的确认的超时值;以及
响应于在未从所述NVMe节点接收到所述确认的情况下达到所述超时值,通过网络结构向所述NVMe节点重新发送所述消息。
16.根据权利要求11所述的方法,所述方法进一步包括:
从所述NVMe节点或从在所述服务器上执行的应用程序接收NVMeoF断开请求;以及
响应于所接收到的NVMeoF断开请求,对与所述NVMe节点的活动连接执行NVMeoF/TCP连接拆除。
17.根据权利要求11所述的方法,所述方法进一步包括执行NVMeoF/传输控制协议(TCP)连接的连接建立,所述连接建立包括:
基于从所述服务器的处理器接收到的命令向不同NVMe节点发送NVMe/TCP初始化请求;
从所述不同NVMe节点接收NVMe/TCP初始化响应;
向所述不同NVMe节点发送NVMeoF连接请求;以及
从所述不同NVMe节点接收NVMeoF连接响应。
18.根据权利要求11所述的方法,所述方法进一步包括:
将从所述服务器的处理器接收到的数据片段化以适合网络最大传输单元(MTU);以及
向不同NVMe节点发送多个消息以用于所片段化的数据。
19.一种可编程网络接口,所述可编程网络接口包括:
至少一个存储器,所述至少一个存储器被配置成存储与不同非易失性存储器Express(NVMe)节点的多个先前活动的基于网络结构的非易失性存储器Express(NVMeoF)连接的连接参数;和
用于以下操作的装置:
向NVMe节点发送NVMeoF消息;
确定是否已经达到存储在所述连接参数中的用于从所述NVMe节点接收所发送的消息的确认的超时值;以及
响应于在未从所述NVMe节点接收到所述确认的情况下达到所述超时值,通过网络结构向所述NVMe节点重新发送所述消息。
20.根据权利要求19所述的可编程网络接口,所述可编程网络接口进一步包括用于以下操作的装置:
在以消息发送所述数据后将发送到所述NVMe节点的数据临时存储在所述至少一个存储器中;以及
响应于在未从所述NVMe节点接收到所述确认的情况下达到所述超时值,使用所临时存储的数据通过网络结构向所述NVMe节点重新发送所述消息。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063124597P | 2020-12-11 | 2020-12-11 | |
US63/124,597 | 2020-12-11 | ||
US17/172,513 US11503140B2 (en) | 2020-12-11 | 2021-02-10 | Packet processing by programmable network interface |
US17/172,513 | 2021-02-10 | ||
PCT/US2021/039087 WO2022125146A1 (en) | 2020-12-11 | 2021-06-25 | Packet processing by programmable network interface |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114930283A true CN114930283A (zh) | 2022-08-19 |
Family
ID=81942050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180006713.7A Pending CN114930283A (zh) | 2020-12-11 | 2021-06-25 | 利用可编程网络接口进行分组处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11503140B2 (zh) |
CN (1) | CN114930283A (zh) |
DE (1) | DE112021000196T5 (zh) |
WO (1) | WO2022125146A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550377A (zh) * | 2022-11-25 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种nvmf存储集群节点互联方法、装置、设备及介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11934672B2 (en) * | 2021-08-26 | 2024-03-19 | International Business Machines Corporation | Cached workload management for a multi-tenant host |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7313623B2 (en) | 2002-08-30 | 2007-12-25 | Broadcom Corporation | System and method for TCP/IP offload independent of bandwidth delay product |
US9658782B2 (en) | 2014-07-30 | 2017-05-23 | Excelero Storage Ltd. | Scalable data using RDMA and MMIO |
US9934177B2 (en) | 2014-11-04 | 2018-04-03 | Cavium, Inc. | Methods and systems for accessing storage using a network interface card |
US9674090B2 (en) | 2015-06-26 | 2017-06-06 | Microsoft Technology Licensing, Llc | In-line network accelerator |
US11327475B2 (en) * | 2016-05-09 | 2022-05-10 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for intelligent collection and analysis of vehicle data |
US10346041B2 (en) | 2016-09-14 | 2019-07-09 | Samsung Electronics Co., Ltd. | Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host |
US10728172B2 (en) * | 2018-03-28 | 2020-07-28 | Quanta Computer Inc. | Method and system for allocating system resources |
US10592162B2 (en) * | 2018-08-22 | 2020-03-17 | Intel Corporation | Distributed storage location hinting for non-volatile memories |
US11509606B2 (en) | 2018-06-29 | 2022-11-22 | Intel Corporation | Offload of storage node scale-out management to a smart network interface controller |
CN109684029A (zh) | 2018-11-02 | 2019-04-26 | 新华三云计算技术有限公司 | 存储内容访问方法、装置、电子设备及计算机存储介质 |
US11379254B1 (en) * | 2018-11-18 | 2022-07-05 | Pure Storage, Inc. | Dynamic configuration of a cloud-based storage system |
US11038852B2 (en) * | 2019-02-08 | 2021-06-15 | Alibaba Group Holding Limited | Method and system for preventing data leakage from trusted network to untrusted network |
US11301398B2 (en) * | 2020-03-16 | 2022-04-12 | Dell Products L.P. | Symbolic names for non-volatile memory express (NVMe™) elements in an NVMe™-over-fabrics (NVMe-oF™) system |
US20200319812A1 (en) * | 2020-06-03 | 2020-10-08 | Intel Corporation | Intermediary for storage command transfers |
US11782634B2 (en) * | 2020-09-28 | 2023-10-10 | EMC IP Holding Company LLC | Dynamic use of non-volatile ram as memory and storage on a storage system |
US11716383B2 (en) * | 2020-09-28 | 2023-08-01 | Vmware, Inc. | Accessing multiple external storages to present an emulated local storage through a NIC |
-
2021
- 2021-02-10 US US17/172,513 patent/US11503140B2/en active Active
- 2021-06-25 DE DE112021000196.5T patent/DE112021000196T5/de active Pending
- 2021-06-25 CN CN202180006713.7A patent/CN114930283A/zh active Pending
- 2021-06-25 WO PCT/US2021/039087 patent/WO2022125146A1/en active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550377A (zh) * | 2022-11-25 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种nvmf存储集群节点互联方法、装置、设备及介质 |
CN115550377B (zh) * | 2022-11-25 | 2023-03-07 | 苏州浪潮智能科技有限公司 | 一种nvmf存储集群节点互联方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US11503140B2 (en) | 2022-11-15 |
US20220191306A1 (en) | 2022-06-16 |
DE112021000196T5 (de) | 2022-10-13 |
WO2022125146A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11184439B2 (en) | Communication with accelerator via RDMA-based network adapter | |
US20210119930A1 (en) | Reliable transport architecture | |
US11210148B2 (en) | Reception according to a data transfer protocol of data directed to any of a plurality of destination entities | |
CN108536543B (zh) | 具有基于跨步的数据分散的接收队列 | |
US10129153B2 (en) | In-line network accelerator | |
US9965441B2 (en) | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics | |
CN113711547A (zh) | 促进网络接口控制器(nic)中的高效包转发的系统和方法 | |
CN115516832A (zh) | 网络和边缘加速瓦片(next)体系结构 | |
US8903935B2 (en) | Remote direct memory access over datagrams | |
Wang et al. | {SRNIC}: A scalable architecture for {RDMA}{NICs} | |
US20040190557A1 (en) | Signaling packet | |
US10880204B1 (en) | Low latency access for storage using multiple paths | |
US20130138836A1 (en) | Remote Shared Server Peripherals Over an Ethernet Network For Resource Virtualization | |
WO2005006124A2 (en) | Read/write command buffer pool resource management using read-path prediction of future resources | |
US11503140B2 (en) | Packet processing by programmable network interface | |
EP3298739A1 (en) | Lightweight transport protocol | |
US20140223026A1 (en) | Flow control mechanism for a storage server | |
EP4027249A1 (en) | Connection management in a network adapter | |
US20220407824A1 (en) | Connection management in a network adapter | |
US8150996B2 (en) | Method and apparatus for handling flow control for a data transfer | |
WO2023027854A1 (en) | System for storage of received messages | |
CN116783877A (zh) | 控制路径和数据路径的解聚 | |
Jie et al. | Implementation of TCP large receive offload on multi-core NPU platform | |
US20240089219A1 (en) | Packet buffering technologies |
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 |