CN113490927B - 具有硬件集成和乱序放置的rdma输送 - Google Patents

具有硬件集成和乱序放置的rdma输送 Download PDF

Info

Publication number
CN113490927B
CN113490927B CN202080015706.9A CN202080015706A CN113490927B CN 113490927 B CN113490927 B CN 113490927B CN 202080015706 A CN202080015706 A CN 202080015706A CN 113490927 B CN113490927 B CN 113490927B
Authority
CN
China
Prior art keywords
rnic
rdma
consumer
ulp
hardware
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.)
Active
Application number
CN202080015706.9A
Other languages
English (en)
Other versions
CN113490927A (zh
Inventor
M·G·汉弗莱
V·马克赫瓦克斯
M·K·帕帕米查尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN113490927A publication Critical patent/CN113490927A/zh
Application granted granted Critical
Publication of CN113490927B publication Critical patent/CN113490927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

公开了用于在虚拟化计算环境中实现直接存储器访问的技术。RNIC消费者与RDMA输送之间的新接口映射被定义,它实现了高效的重试、僵尸检测机制以及无效请求的标识和处置,而不会中断RDMA连接。公开了用于ULP请求的乱序放置和递送的技术,而不会将RNIC消费者限制于有序联网行为,如果ULP(例如存储装置)不需要的话。这允许在有损网络配置中高效部署RDMA加速存储工作负载,并且减少时延抖动。

Description

具有硬件集成和乱序放置的RDMA输送
背景技术
数据中心是容纳计算机系统和各种联网、存储和其他相关组件的设施。例如,数据中心可以作为远程计算服务向企业和个人提供计算服务,或提供“软件即服务”(例如云计算)。
许多数据中心使用远程直接存储器访问(RDMA)。RDMA是用于从一个计算机的存储器到另一计算机的存储器中的直接存储器访问的方法,而不涉及任一个操作系统。RDMA允许高吞吐量、低时延联网,这在并行计算环境中特别有用。与TCP相比,RDMA还允许降低CPU使用率,并且递送更高的处理速率。
一些计算环境允许应用直接与支持RDMA的硬件交互,绕过操作系统开销,并且允许应用缓冲区的直接硬件访问和RDMA能力。RDMA系统在与支持RDMA的硬件交互方面存在许多缺点。与支持RDMA的硬件交互的低效率可能不利于计算资源的高效使用。相对于这些考虑和其他考虑,本文进行的公开内容被提出。
发明内容
本公开描述了用于使用支持RDMA的硬件来实现RDMA的技术。在各种实施例中,在硬件设备(用户/客户端)与RNIC而不是软件用户/客户端交互的场景中,集成模型被实现以用于实现支持RDMA的网络接口卡(RNIC)和硬件RNIC消费者之间的接口。在这种场景中,一些软件职责已经被卸载到硬件设备,并且集成模型能够以针对这种场景而不是软件场景进行优化的方式使RNIC功能性可用于该硬件设备。这种硬件设备可以被称为硬件RNIC消费者或硬件RNIC消费者模块,其可以是与RNIC接口连接以利用RNIC的RDMA能力进行I/O操作的任何用户或客户端。例如,硬件RNIC消费者模块可以被实现为FPGA或ASIC。在一些实施例中,硬件RNIC消费者模块可以与RNIC一起被集成在相同的FPGA或ASIC上。
诸如InfiniBand和iWARP规范等当前RDMA规范将动词语义定义为用于与具有RDMA能力的设备进行通信的标准接口。虽然这些动词语义可能适合于软件RNIC消费者,但它们不太适合硬件RNIC消费者。所公开的集成模型简化了交互,减少了接口和交互开销,在支持RNIC和支持RNIC RDMA的硬件之间实现了不同的职责划分,并允许进一步创新和改进RNIC消费者能力,同时仍然利用RDMA输送和联网协议。这可以允许更高效地使用计算资源,诸如处理器周期、存储器、网络带宽和功率。
在所公开的集成模型中,代替利用由RDMA动词规范定义的软件优化的主机接口,硬件优化的事务接口被实现。硬件优化的事务接口有效地减少或消除了RNIC主机接口逻辑,并将一些标准RNIC能力从RNIC移动到RNIC客户端硬件。经修改或消除的逻辑的示例包括存储器注册和远程访问语义。
所公开的集成模型包括硬件优化的RDMA客户端接口。集成模型可以实现在云规模数据中心环境中利用RDMA输送功能性。在一些实施例中,集成模型包括:将RDMA存储器管理解耦,并针对硬件RNIC消费者模块对其进行优化;高效的重试和对放弃请求的响应(僵尸检测(zombie detection)机制);在不中断RDMA连接的情况下标识和处置无效请求;上层协议(ULP)请求的乱序放置和递送,而不会将RNIC消费者限制于标准的有序联网行为;以及允许在有损网络配置中高效部署RDMA加速工作负载,同时减少时延抖动。
该发明内容被提供来以简化的形式介绍对于下面在详细描述中进一步描述的概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或者必要特征,并且该发明内容不旨在被用于限制所要求保护的主题的范围。此外,所要求保护的主题不被限于解决在本公开的任何部分中提到的任何或所有缺点的实现。
附图说明
详细描述参照附图来描述。在本文详述中的描述中,参照形成其一部分并且通过说明的方式示出具体实施例或示例的附图。本文中的附图不是按比例绘制的。在多个附图中,相同的数字表示相同的元素。
图1是图示了根据本公开的数据中心的图;
图2是图示了根据本公开的RDMA的各个方面的图;
图3是图示了根据本公开的RDMA的各个方面的图;
图4是描绘了根据本公开的用于直接存储器访问的示例过程的流程图;
图5是描绘了根据本公开的用于直接存储器访问的示例过程的流程图;
图6是根据本公开的示例计算设备。
具体实施方式
远程直接存储器访问(RDMA)为一个机器提供直接访问另一机器的存储器而不使用任一机器的操作系统联网堆栈的能力,从而允许高吞吐量、低时延的数据转移。虽然RDMA的采用率越来越高,但它作为联网输送的益处可能不仅有益于软件过程之间的联网通信,而且有益于硬件设备之间的直接通信。例如,RDMA可以通过将网络数据转移卸载到外围设备(诸如RNIC)和使用可编程逻辑(诸如FPGA)的增强在数据中心中实现,从而释放主机CPU以专注于用户应用。
在一些计算环境中,主机联网可以被配置为将任务卸载到硬件设备。这种设备可以被称为硬件加速设备。例如,设备可以被配置为执行从CPU卸载的计算和通信任务。该设备可以包括用于实现功能的硬件逻辑,诸如现场可编程门阵列(FPGA)设备、大规模并行处理器阵列(MPPA)设备、图形处理单元(GPU)、专用集成电路(ASIC)、多处理器片上系统(MPSoC)等,并且能够执行通常由其他设备(诸如CPU)完成的许多相同任务。术语硬件加速组件还可以涵盖利用硬件加速设备来执行功能的其他方式,诸如例如a)至少一些任务在硬ASIC逻辑等中实现的情况;b)至少一些任务在软(可配置)FPGA逻辑等中实现的情况;c)至少一些任务作为软件在FPGA软件处理器覆盖等上运行的情况;d)至少一些任务作为软件在硬ASIC处理器等上运行的情况或其任何组合。在一些实施例中,外围设备可以是网络通信设备,诸如网络接口卡(NIC)。这种NIC在本文中可以被称为智能NIC或sNIC。
图1图示了本文描述的实施例可以被实现的示例计算环境。图1图示了数据中心100,其被配置为经由用户计算机102a、102b和102c(在本文中可以被单数地称为“计算机102”或复数地称为“计算机102”)经由通信网络130向用户100a、100b或100c(其在本文中可以被单数地称为“用户100”或复数地称为“用户100”)提供计算资源。由数据中心100提供的计算资源可以包括各种类型的资源,诸如计算资源、数据存储资源、数据通信资源等。每种类型的计算资源可以是通用的,或者可以在许多具体配置中可用。例如,计算资源可以作为虚拟机可用。虚拟机可以被配置为执行应用,包括Web服务器、应用服务器、介质服务器、数据库服务器等。数据存储资源可以包括文件存储设备、块存储设备等。计算资源的每种类型或配置可以在不同的配置中可用,诸如处理器的数量和存储器的大小和/或存储容量。在一些实施例中,资源可以以称为实例的单位被提供给客户端,实例诸如虚拟机实例或存储实例。虚拟计算实例可以被称为虚拟机,并且例如可以包括具有指定计算能力(可以通过指示CPU的类型和数量、主存储器大小等来指定)的一个或多个服务器和指定的软件堆栈(例如操作系统的特定版本,它可以依次在管理程序之上运行)。
数据中心100可以包括服务器116a、116b和116c(其在本文中可以被单数地称为“服务器116”或复数地称为“服务器116”),其提供作为虚拟机118a和118b(在本文中可以被单数地称为“虚拟机118”或复数地称为“虚拟机118”)可用的计算资源。虚拟机118可以被配置为执行应用,诸如Web服务器、应用服务器、介质服务器、数据库服务器等。可以被提供的其他资源包括数据存储资源(未在图1中示出),并且可以包括文件存储设备、块存储设备等。服务器116还可以执行管理和控制数据中心中的资源分配的功能,诸如控制器115。控制器115可以是结构控制器或被配置为管理服务器116上的虚拟机分配的另一类型的程序。
参照图1,通信网络130可以例如是链接网络的公共可访问网络,并且可以由诸如互联网等各种实体操作。在其他实施例中,通信网络130可以是私有网络,诸如公众完全或部分不可访问的公司网络。
通信网络130可以提供对计算机102的访问。计算机102可以是由用户100使用的计算机。计算机102a、102b或102c可以是服务器、台式计算机或膝上型个人计算机、平板计算机、智能手机、机顶盒或能够访问数据中心100的任何其他计算设备。用户计算机102a或102b可以直接连接至互联网(例如经由电缆调制解调器)。用户计算机102c可以在数据中心100内部,并且可以经由内部网络直接连接至数据中心100中的资源。尽管仅三个用户计算机102a、102b和102c被描绘,但是应该了解的是,可以存在多个用户计算机。
计算机102还可以被用于配置由数据中心100提供的计算资源的各个方面。例如,数据中心100可以提供Web界面,通过该Web界面,其操作的各个方面可以通过使用在用户计算机102上执行的Web浏览器应用程序来配置。备选地,在用户计算机102上执行的独立应用程序可以被用于访问由数据中心100公开的应用编程接口(API),以用于执行配置操作。
服务器116可以被配置为提供上述计算资源。服务器116中的一个或多个可以被配置为执行管理器120a或120b(其在本文中可以被单数地称为“管理器120”或复数地称为“管理器120”),其被配置为执行虚拟机。例如,管理器120可以是虚拟机监测器(VMM)、结构控制器或被配置为使得能够在服务器116上执行虚拟机118的另一类型的程序。
应该了解的是,虽然上面公开的实施例是在虚拟机的上下文中讨论的,但是其他类型的实现可以与本文公开的概念和技术一起使用。
在图1所示的示例数据中心100中,网络设备111可以被用于互连服务器116a和116b。网络设备111可以包括一个或多个交换机、路由器或其他网络设备。网络设备111还可以被连接至网关140,该网关140被连接至通信网络130。网络设备111可以支持数据中心100中的网络内的通信,例如通过基于这种通信的特点(例如包括源和/或目的地地址、协议标识符等的报头信息)和/或私有网络的特点(例如基于网络拓扑的路线等)适当地转发分组或其他数据通信。要了解的是,为了简单起见,该示例的计算系统和其他设备的各个方面在没有示出某些常规细节的情况下图示。在其他实施例中,附加计算系统和其他设备可以互连,并且可以以不同方式互连。
应该了解的是,图1所图示的网络拓扑已经被大大简化,并且更多的网络和联网设备可以被用于互连本文公开的各种计算系统。这些网络拓扑和设备对于本领域技术人员来说应该是明显的。
还应该了解的是,图1所描述的数据中心100仅是说明性的,并且其他实现可以被使用。附加地,应该了解的是,本文公开的功能性可以用软件、硬件或软件和硬件的组合来实现。其他实现对于本领域技术人员来说应该是明显的。还应该了解的是,服务器、网关或其他计算设备可以包括可以交互和执行所描述类型的功能性的硬件或软件的任何组合,包括但不限于台式计算机或其他计算机、数据库服务器、网络存储设备和其他网络设备、PDA、平板计算机、智能手机、互联网设备、基于电视的系统(例如使用机顶盒和/或个人/数字录像机)以及包括适当通信能力的各种其他消费产品。另外,在一些实施例中,由所图示模块提供的功能性可以被组合在更少的模块中或分布在附加模块中。类似地,在一些实施例中,一些所图示模块的功能性可能不被提供和/或其他附加功能性可能是可用的。
以下详细描述描述了用于以对于硬件RDMA消费者模块更高效的方式实现RDMA的技术。实现RDMA的接口(诸如RNIC接口)由动词规范描述,并且通常针对与软件的交互进行了优化。RNIC接口专注于异步RNIC/软件交互模型,基于硬件接口的请求和完成队列范例,并具有允许直接访问和远程访问应用缓冲区的存储器注册语义。虽然RNIC动词接口被明确定义且适合于RDMA输送的软件消费者,但由于硬件集成场景中不需要的过程的实现,它对于与硬件设备的直接集成效率不高。
在以下示例中,RNIC消耗硬件消费者模块被描述。该模块实现了存储发起器,并将RDMA用于远程访问存储系统目标。设备在支持RDMA的网络上的通信协议包括:
·模块使用RDMA发送消息向远程目标发送请求
·目标分别使用RDMA读取或RDMA写入消息来读取或写入要被存储或取回的数据。
·目标使用RDMA发送消息向发起器发送响应
针对使用RDMA读取或RDMA写入消息访问发起器的数据缓冲区的目标,这些缓冲区必须先前已使用存储器注册或快速存储器注册动词调用向RNIC注册。
图2图示了用于上述流程的示例存储发起器和RNIC交互。RNIC消费者模块205:
·为响应消息准备缓冲区220
·将接收描述符写入RNIC响应队列(RQ)215,其引用响应缓冲区220
·写入RNIC的存储器映射I/O“门铃”寄存器,以通知RNIC RQ已发布新的描述符
·准备表示数据缓冲区的页面列表225
·将引用页面列表的快速存储器注册(FMR)描述符写入RNIC发送队列(SQ)
·准备请求消息,并将其写入请求缓冲区210
·向RNIC SQ写入引用请求缓冲区210的发送消息描述符230
·写入与SQ相关联的RNIC的存储器映射I/O“门铃”寄存器,通知RNIC新的工作项已被发布到SQ
RNIC 250:
·从SQ读取FMR描述符,读取由该FMR引用的页面列表,然后更新其转化和保护表以支持对由FMR描述的缓冲区的RDMA访问
·从请求缓冲区读取发送SQ描述符和请求,然后通过网络向目标发送请求消息
·接收对发送消息的确认,然后将完成写入发送队列完成队列SQ CQ 255
·从目标接收RDMA读取或RDMA写入消息。针对RDMA读取消息,RNIC 250从预先注册的数据缓冲区260读取数据,并通过网络将其返回到目标。针对RDMA写入消息,RNIC 250将消息中的数据写入预先注册的数据缓冲区260,并向目标发送确认
·从目标接收携带响应的发送消息,读取下一可用的RQ描述符,并使用所引用的缓冲区,将响应复制到缓冲区中
·将完成写入响应队列完成队列(RQ CQ)270
RNIC消费者:
·从RQ CQ读取完成
·从响应缓冲区读取并处理响应
虽然该流程可能适合于软件,但该流程对于两个硬件实体之间的交互来说是复杂且低效的。例如,该流程涉及可以用更合适的交互模型消除的不必要的开销。
在实施例中,描述了在Infiniband和iWARP规范中定义的RDMA远程存储器访问语义和使这种访问安全的机制。
为了允许远程存储器访问,RNIC必须能够标识作为远程访问目标的缓冲区或存储器区域,并标识该缓冲区或存储器区域内的偏移以及描述与存储器中的缓冲区相关联的页面地址的页面列表。RNIC使用远程密钥或RKey来标识表示缓冲区的已注册存储器区域。逻辑上,RKey可以被视为存储器保护表中的索引,它定义了相应存储器区域的属性。这些属性包括其状态(有效、无效)、开始或区域、其大小以及对页面列表的引用,该页面列表包含构成与存储器区域相关联的缓冲区的页面地址。
访问存储器区域的RDMA请求也指定虚拟地址。虚拟地址被用于指定存储器区域内的偏移。存储器区域与页面列表相关联,该页面列表是被固定在存储器中的缓冲区内的存储器页面列表。
RDMA读取和RDMA写入消息携带RKey、虚拟地址和长度的三元组,以精确地标识预先注册的数据缓冲区内的具体区域。为了实现对数据缓冲区的远程访问,RNIC消费者必须注册存储器区域,提供页面列表,获得RKey并确定该存储器区域内的虚拟地址。该三元组然后可以被通告给目标(例如使用以上示例中的请求发送消息),其中它可以被用于远程存储器访问。
在实施例中,描述了具有在硬件内RNIC消费者模块和RNIC之间实现的硬件优化动词语义的替代集成模型。替代集成模型简化了交互,减少了接口和交互开销,并在RNIC和RNIC消费者之间实现了不同的职责划分。替代集成模型允许进一步创新和改进RNIC消费者能力,同时仍然利用RDMA输送和联网协议。
替代集成模型不使用软件优化动词,而是包括硬件优化事务接口动词,其能够减少或消除RNIC主机接口逻辑,并且能够将冗余RNIC能力从RNIC移动到RNIC消费者逻辑。具体地,如本文进一步描述的,存储器注册和远程访问语义可以被减少或消除。
参照图3,图示了硬件优化动词的高级接口定义语义的示例。硬件接口定义的示例在本文中提供。
一些实施例假设RNIC硬件消费者模块实现上层协议(ULP)逻辑。协议事务或数据结构可以被称为ULP相关项,诸如ULP请求、携带ULP状态的数据结构或ULP请求上下文。
在一个实施例中,使用硬件优化动词的流程的高级描述可以包括:
出站ULP请求
·RNIC消费者305选择ULP请求来服务,并经由传输命令接口320向RNIC发布命令
·RNIC 350可以将命令排队到请求队列310,或者它可以取决于其内部传输调度器的实现、其配置和状态直接处理它
·RNIC调度器315选择下一命令来服务,并使用数据读取接口325来请求RNIC消费者提供命令有效负载。例如,命令有效负载可以是ULP请求。
ο在数据读取接口中提供的LKey是指与ULP请求相关联的RNIC消费者状态,例如ULP请求上下文。Lkey可以由硬件RNIC消费者在先前排队到请求队列的命令内提供
·RNIC消费者305基于ULP请求上下文来生成ULP请求
οULP请求携带RKey和VA,其引用ULP请求上下文,并且序列号(SN)由RKey和VA携带。
·RNIC消费者使用数据读取接口来提供数据。RNIC消费者可以提供ULP请求作为数据。
·RNIC使用RDMA发送消息来传输ULP请求
入站RDMA写入流程:
·RNIC接收RDMA写入消息,其携带与ULP请求相对应的数据
οRDMA写入分组中的RKey和VA指的是ULP请求上下文
·RNIC 350使用接收命令接口360来提供接收分组的RKey和VA
·RNIC消费者305通过使用RKey和VA来解析数据目的地,以唯一地标识ULP请求上下文和与任何关联缓冲区内的偏移。
·RNIC消费者305使用数据写入接口来消耗由RNIC提供的分组有效负载
入站RDMA读取流程
·RNIC 350接收RDMA读取消息,并将其排队到RDMA读取响应队列
·RNIC调度器从RDMA读取响应队列中选择待处理的请求,并使用数据读取接口来请求发送RDMA读取响应所需的有效负载
οRDMA读取分组中的RKey和VA指的是ULP请求上下文
·RNIC消费者使用RKey和VA来解析数据源,以唯一地标识ULP请求上下文和与任何关联缓冲区内的偏移。
·RNIC消费者使用数据读取响应接口325来响应数据读取请求
·RNIC使用RDMA读取响应分组来传输在RDMA读取消息中请求的数据
入站ULP响应
·RNIC接收携带ULP响应的RDMA发送消息
οULP响应可以使用其内容与ULP请求上下文相关联
·RNIC使用接收命令接口向RNIC消费者指示ULP响应
·RNIC消费者使用数据写入接口350来消耗由RNIC提供的ULP响应有效负载,并对其进行动态处理。
表1包括RDMA语义到RNIC消费者的示例映射。
表1.RDMA语义的集成模型和映射的示例
RNIC消费者可以将多个未完成的ULP请求发送给目标以进行处理。目标平台可以被实现为大规模分布式系统,诸如存储系统。由大规模分布式存储系统并发处理的ULP请求可以由不同的存储节点并行处理,这些节点可能需要不同的时间来执行处理。在这种系统中,ULP请求可以被乱序处理和完成。给定各种故障场景,诸如节点故障、网络分区等,一些请求可能需要相对较长的时间才能完成,甚或根本无法完成。
期望追踪未完成的ULP请求,使得未在某个时间限制内完成的请求可以被重试或报告为失败。为这些失败的请求分配的资源最终必须被回收以用于其他请求。RNIC消费者需要能够标识超时或孤立的请求,使得资源可以被重新指派和重用。
在实施例中,RNIC消费者可以使用序列号(SN)来实现该目的。RNIC消费者可以实现大的(例如48位)计数器,该计数器随着RNIC消费者提交的每个新请求而递增。针对每个新请求,RNIC消费者可以将当前计数器值保存到与请求相关联的序列号中,并递增计数器值。该序列号可以被存储在ULP请求上下文中。
当生成新的ULP请求时,RNIC消费者可以用请求序列号和对ULP请求上下文的引用来更新ULP请求报头。这些字段可以在ULP响应消息的报头内返回。RNIC消费者可以使用这些字段来标识被指派给请求的ULP请求上下文。该上下文被取回,并且嵌入的序列号与响应消息中返回的值进行比较。如果序列号相匹配,那么ULP响应对应于原始请求,并且可以被认为是有效的。在两个序列号不匹配的情况下,ULP响应无效(称为“僵尸响应”或“孤立响应”),并且对ULP响应的处理应该被跳过或作为误差处置。
针对RDMA读取和写入,对ULP请求上下文的引用和序列号被编码在RKey和/或在ULP请求中一起发送的虚拟地址内,如下面进一步描述的。这些值可以被用于验证具体RDMA分组表示ULP请求上下文的有效RDMA事务。
Rkey和虚拟地址通常由RNIC管理作为存储器注册的一部分。由于硬件优化模型中不需要存储器注册,RNIC不需要解译虚拟地址,并且可以仅将其一起发送给RNIC消费者。
由于RNIC消费者提供对数据的所有访问,它可以使用RKey和VA来编码在稍后接收到RDMA读取或写入请求时定位该数据所需的任何信息。
RKey和VA可以携带客户端特定查找密钥和生成序列号(SN)的编码。例如,RKey可以携带活动ULP请求上下文的一些表格中的ULP请求上下文索引的编码。RKey还可以携带用于僵尸RDMA访问标识的生成SN的一些较高位。表2提供了RKey编码的示例。
表1.RKey编码的示例
虚拟地址(VA)可以被用于提供由RKey标识的缓冲区的偏移。除了偏移之外,VA的一部分还可以被用于携带其他信息,例如用于验证RDMA访问的生成SN的低位。
表2.虚拟地址编码的示例
InfiniBand和iWARP动词语义将接收队列(RQ)定义为RNIC消费者为接收到的发送消息提供缓冲区的机制,并且将与接收队列相关联的完成队列(RCQ)定义为通知软件RNIC消费者递送接收到的发送消息的机制。虽然这种机制可能适用于与软件的交互,但它的代价是来自RQ的PCIe/存储器读取以标识入站发送分组的目标缓冲区、向RCQ的PCIe/存储器写入、RNIC输送引擎中的附加状态、中断和RQ/RCQ门铃。
下面进一步描述的硬件优化动词语义允许消除对硬件RNIC消费者的RQ/RCQ语义的需要,并且允许直接递送入站发送消息而不通过存储器存储。硬件RNIC消费者可以动态处理和消耗入站发送消息,例如ULP响应。由于入站发送分组是经由事务接口直接递送的,因此不需要实现单独的接收完成接口。
InfiniBand和iWARP规范定义了存储器注册的语义,以允许本地和远程访问软件RNIC消费者缓冲区。每个缓冲区都必须被注册为存储器区域的一部分,并由RKey和虚拟地址(VA)标识。
当使用标准存储器注册和远程访问模型时,RNIC消费者必须提前注册缓冲区,而与对缓冲区的实际远程访问无关。对预先注册的缓冲区的实际远程访问是独立完成的,并且无需对RNIC消费者的任何通知。这种模型可能对软件RNIC消费者有利,允许单侧RDMA读取和写入操作,其不消耗远程机器上的CPU周期。
在实施例中,硬件优化动词可以形成替代集成模型的一部分,而不使用隐式存储器注册语义。RKey和VA由RNIC消费者管理,该RNIC消费者负责RKey和VA的生成、它们与缓冲区和其他对应资源的关联以及传输和接收RNIC流水线对远程访问的数据缓冲区访问请求的处理和消耗。
硬件RNIC消费者可以定义和使用本文描述的RKey和VA。该定义允许使用RKey和VA来标识ULP请求上下文以及用于数据和元数据转移的相应数据缓冲区,以及标识无效的远程访问,如下所述。
标准RDMA连接上的无效RDMA访问通常导致失败连接终止。RDMA连接的重新建立会带来显着的开销和时延,因此期望在RDMA的云规模部署中减少这种开销。无效的RDMA访问通常由RNIC基于存储器区域配置、其状态、基础和边界检查等检测。如上面讨论的,大规模分布式系统在管理与未完成的ULP请求相关联的RNIC资源方面带来了附加的复杂性。
消除对标准存储器注册语义的需要,相反允许RNIC消费者管理和验证远程存储器访问允许以更高效的方式处置无效的RDMA访问,而不必中断RDMA连接,从而影响其他进行中的请求。例如,如上所述,RNIC消费者可以将RKey和VA与ULP请求上下文相关联,并依赖于存储在ULP上下文中的请求相关信息来允许基础和边界检查。附加地,序列号验证可以被用于标识与超时、重试或丢失ULP请求相关联的RDMA转移。序列号验证的结果可能优先于基础和边界检查。
取决于RDMA访问的类型,RNIC消费者可以执行以下动作以从无效的RDMA访问中恢复:
·入站RDMA写入分组
标识为僵尸的分组(即,携带无效序列号或针对无效ULP请求上下文)可以被静默丢弃。
·入站RDMA读取消息,导致出站RDMA读取响应分组
被识别为僵尸的分组(即,携带无效的序列号,或针对无效的ULP请求上下文)可能会导致RNIC消费者生成填充数据,并反转数据CRC以确保目标或后端服务器可以将数据标识为无效的,并以失败的ULP响应进行响应。
这两种情况可以在不影响RDMA连接和已经在同一连接上处理的其他进行中的ULP请求的情况下处置。
基于Infiniband的RoCE标准假设无损网络配置。iWARP标准被定义为允许有损网络,并扩展了Infiniband定义以允许分组丢弃和具有有序递送的乱序分组放置。
虽然无损网络配置简化了RNIC输送实现,但它带来了由链路级流程控制引起的拥塞增加的影响。不受控制的拥塞可能会导致严重的网络利用率下降,并影响整体系统性能,尤其是在云规模部署场景中。解决日益增加的拥塞的一种方式是避免使用无损网络,并适配RNIC实现以更好地处理有限的分组丢失。
虽然由iWARP规范引入的乱序分组放置可以允许在有损联网环境中提高RDMA性能并减少重新排序缓冲区空间要求,但iWARP规范仍然在RNIC消费者上强制执行有序网络处理模型。
在实施例中,所公开的硬件RNIC消费者与RNIC的交互模型可以被用于扩展RNIC消费者对乱序接收分组的处理,以允许ULP请求的乱序递送。取决于ULP,对相同或不同RDMA连接的不同请求之间可能没有排序要求或依赖性,例如存储RDMA消费者的情况。唯一的要求是处理存储请求所涉及的所有RDMA事务要被完成。无论在相同或不同RDMA连接之前或之后发布的其他ULP请求的状态如何,ULP请求也可以被完成。
所描述的乱序递送模型可以允许显着降低网络分组丢弃对整体系统性能的性能影响。只有与丢弃的分组相关联的ULP请求可能会受到影响,而其他请求可能会被完成,就好像没有分组被丢弃一样。所描述的乱序递送模型可以允许改进整个系统或网络的抖动和高百分比时延。
RNIC消费者可以追踪每个请求的所有RDMA事务。这可以经由ULP请求上下文来执行,并且RNIC可以向RNIC消费者提供RDMA和乱序接收的发送分组。在一些实施例中,RNIC消费者可以检测ULP请求内的乱序状况,并且通过重新提交与该ULP请求相关联的请求来透明地处置它。
下面进一步描述了RNIC消费者和RDMA输送之间的接口的语义。
RNIC消费者可以使用传输命令接口来提交要由RNIC传输的新的ULP请求。表4列出了主要字段,并且不是完整的接口定义。
表3.传输命令接口
RNIC可以对与QPN相关联的SQ的请求进行排队。SQ可以被用于调度新请求的传输和重传。
RNIC消费者可以维护发布到RNIC SQ的多个进行中的请求。如果进行中的请求的总数不超过SQ深度,则新请求可以被发布到SQ。进行中的请求的数量可以随着每个发布的请求以及通过下面描述的完成界面的通知来更新。在一些实施例中,ULP可以被允许管理进行中的请求(和进行中的读取请求)的数量,从而使RNIC实现从这个细节中解放出来。
一旦RDMA输送选择了SQ或对应的读取响应队列来服务,它可以使用数据读取接口来请求RNIC消费者提供所需的有效负载。该接口可以被用于取回发布到SQ的发送和RDMA写入请求的有效负载以及RDMA读取请求的请求数据。
传输命令接口定义假设RDMA输送引擎调度器负责基于ETS配置确定服务哪个队列和哪个请求。因此,如果一个业务类别(TC)具有比另一个更高的优先级,则可以由调度器基于配置来强制执行。数据读取接口可以以联网分组的突发为单位进行操作。突发中的分组数量可以是可配置的。
数据读取接口(DRI)接口可以由RDMA输送用于取回新传输的分组和重新传输的分组的数据。分组调度的顺序及其在整个消息有效负载中的位置可能由RDMA输送控制,并且在QP内可能不是顺序的。
表4.数据读取接口
接收命令接口(RCI)可以被实现,并被用于向RNIC消费者指示由RNIC接收的各种消息。示例在表6中描述。消息可以包括接收到的RDMA发送和RDMA写入消息。RCI可以一次指示一个接收到的分组。
表5.接收命令接口
RDMA分组有效负载可以经由数据FIFO接口提供。RDMA输送可以提供单独的命令和数据接口,允许RNIC消费者流水线命令和数据处理。入站RDMA分组可以在RDMA QP内按顺序被递送给RNIC消费者。
针对每个SQ完成,RNIC消费者可以递增完成的SQ消息计数器,其可以与发布的SQ消息计数器进行比较以评估发布到SQ的消息的数量。
表6.发送完成接口
字段名称 描述
qpn 6b 接收到的QPN消息。
误差通知接口可以被用于传达由RDMA输送检测到的误差。误差可能很严重,并导致指定的QP进入误差状态。
表7.误差通知界面
字段名称 描述
qpn 6b 接收到的QPN消息。
校验子 16b 误差校验子
现在转到图4,图示了根据本公开的用于直接存储器访问的示例操作程序。操作程序可以在包括可编程逻辑的远程直接存储器访问具有(RDMA)能力的设备中实现,该可编程逻辑在由具有RDMA能力的设备执行时使具有RDMA能力的设备执行操作。参照图4,操作401图示了实例化被配置为与RDMA输送机制交互的接口。
操作401之后可以是操作403。操作403图示了映射接口以实现无效RMDA响应和请求的检测。
操作403之后可以是操作405。操作405图示了当无效的RDMA响应或请求被检测到时维护RDMA连接。
参照图5,图示了用于虚拟化计算环境中的直接存储器访问的另一示例操作程序。操作程序可以在网络接口设备中实现。网络接口设备可以包括可编程逻辑,其在由网络接口设备执行时使网络接口设备执行所描述的操作。参照图5,操作501图示了实例化被配置为与RDMA输送机制交互的接口。
操作501之后可以是操作503。操作503图示了经由接口发送上层协议(ULP)请求。
操作503之后可以是操作505。操作505图示了响应于ULP请求来接收RDMA分组。
操作505之后可以是操作507。操作507图示了继续完成ULP请求,包括处理乱序RDMA分组。
本公开的各个方面在本文中关于某些示例和实施例描述,这些示例和实施例旨在说明而非限制本公开。应该了解的是,本文提出的主题可以被实现为计算机过程、计算机控制的装置、计算系统、制造物品(诸如计算机可读存储介质)或包括用于实现功能的硬件逻辑的组件,诸如现场可编程门阵列(FPGA)设备、大规模并行处理器阵列(MPPA)设备、图形处理单元(GPU)、专用集成电路(ASIC)、多处理器片上系统(MPSoC)等。组件还可以涵盖利用设备来执行功能的其他方式,诸如例如a)至少一些任务在硬ASIC逻辑等中实现的情况;b)至少一些任务在软(可配置)FPGA逻辑等中实现的情况;c)至少一些任务作为软件在FPGA软件处理器覆盖等上运行的情况;d)至少一些任务作为软件在硬ASIC处理器等上运行的情况或其任何组合。组件可以表示硬件加速设备(诸如例如FPGA设备)的同构集合。另一方面,组件可以表示不同类型的硬件加速设备的异构集合,包括具有不同的相应处理能力和架构的不同类型的FPGA设备、FPGA设备和其他类型硬件加速设备的混合等。
图6图示了通用计算设备600。在所图示的实施例中,计算设备600包括一个或多个处理器610a、610b和/或610n(其在本文中可以被单数地称为“处理器610”或复数地称为“处理器610”),其经由输入/输出(I/O)接口630耦合至系统存储器66。计算设备600还包括耦合至I/O接口630的网络接口640。
在各种实施例中,计算设备600可以是包括一个处理器610的单处理器系统或包括多个处理器610(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器610可以是能够执行指令的任何合适的处理器。例如,在各种实施例中,处理器610可以是实现各种指令集架构(ISA)中的任何一种的通用或嵌入式处理器,诸如x86、PowerPC、SPARC或MIPS ISA或任何其他合适的ISA。在多处理器系统中,处理器610中的每个处理器可以通常但不一定实现相同的ISA。
系统存储器66可以被配置为存储由(多个)处理器610可访问的指令和数据。在各种实施例中,系统存储器66可以使用任何合适的存储器技术来实现,诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存型存储器或任何其他类型的存储器。在所图示的实施例中,实现一个或多个期望功能(诸如上述那些方法、技术和数据)的程序指令和数据被示出为存储在系统存储器66内作为代码625和数据626。
在一个实施例中,I/O接口630可以被配置为协调处理器610、系统存储器66和设备中的任何外围设备之间的I/O业务,包括网络接口640或其他外围接口。在一些实施例中,I/O接口630可以执行任何必要的协议、定时或其他数据变换,以将来自一个组件(例如系统存储器66)的数据信号转换为适合由另一组件(例如处理器610)使用的格式。例如,在一些实施例中,I/O接口630可以包括对通过各种类型的外围总线附接的设备的支持,诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变型。在一些实施例中,I/O接口630的功能可以被划分为两个或多个单独的组件。而且,在一些实施例中,I/O接口630(诸如到系统存储器66的接口)的一些或全部功能性可以被直接并入到处理器610中。
例如,网络接口640可以被配置为允许数据在计算设备600和附接至网络或(多个)网络650的其他一个或多个设备660之间交换,诸如图1至图4所图示的其他计算机系统或设备。例如,在各种实施例中,网络接口640可以支持经由任何合适的有线或无线通用数据网络的通信,诸如以太网网络类型。附加地,网络接口640可以支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储区域网络(诸如光纤通道SAN)或经由任何其他合适类型的网络和/或协议的通信。
在一些实施例中,系统存储器66可以是计算机可访问介质的一个实施例,该计算机可访问介质被配置为存储上面针对图1至5描述的程序指令和数据,以用于实现对应方法和装置的实施例。然而,在其他实施例中,程序指令和/或数据可以被接收、发送或存储在不同类型的计算机可访问介质上。计算机可访问介质可以包括非瞬态存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口630耦合至计算设备600的磁盘或DVD/CD。非瞬态计算机可访问存储介质还可以包括任何易失性或非易失性介质,诸如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,其可以被包括在计算设备600的一些实施例中作为系统存储器66或其他类型的存储器。进一步地,计算机可访问介质可以包括经由诸如网络和/或无线链路等通信介质传达的传输介质或信号,诸如电信号、电磁信号或数字信号,诸如可以经由网络接口640实现。诸如图6所图示的多个计算设备的部分或全部可以被用于在各种实施例中实现所描述的功能性;例如,在各种不同的设备和服务器上运行的软件组件可以协作以提供功能性。在一些实施例中,除了使用通用计算机系统来实现之外或者代替使用通用计算机系统来实现,所描述的功能性的部分可以使用存储设备、网络设备或专用计算机系统来实现。本文使用的术语“计算设备”指的是至少所有这些类型的设备,并且不被限于这些类型的设备。
各种存储设备及其关联的计算机可读介质为本文描述的计算设备提供非易失性存储装置。本文讨论的计算机可读介质可以指海量存储设备,诸如固态驱动器、硬盘或CD-ROM驱动器。然而,本领域技术人员应该了解,计算机可读介质可以是可以由计算设备访问的任何可用的计算机存储介质。
通过示例而非限制,计算机存储介质可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性介质、可移除和不可移除介质。例如,计算机介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术、CD-ROM、数字通用盘(“DVD”)、HD-DVD、BLU-RAU或者其他光学存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备或者可以被用于存储期望信息并且可以由本文讨论的计算设备访问的任何其他介质。出于权利要求的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变化本身不包括波、信号和/或其他瞬态和/或无形通信介质。
对本文提出的软件模块进行编码也可以变换本文提出的计算机可读介质的物理结构。在本描述的不同实现中,物理结构的具体变换可以取决于各种因素。这种因素的示例可以包括但不限于用于实现计算机可读介质的技术,无论计算机可读介质的特点是初级存储装置还是次级存储装置等。例如,如果计算机可读介质被实现为基于半导体的存储器,则本文公开的软件可以通过变换半导体存储器的物理状态来被编码在计算机可读介质上。例如,该软件可以变换构成半导体存储器的晶体管、电容器或其他离散电路元件的状态。该软件还可以变换这种组件的物理状态,以便在其上存储数据。
作为另一示例,本文公开的计算机可读介质可以使用磁性或光学技术来实现。在这种实现中,当软件被编码在其中时,本文提出的软件可以变换磁性或光学介质的物理状态。这些变换可以包括更改给定磁性介质内的特定位置的磁性特点。这些变换还可以包括更改给定光学介质内的特定位置的物理特征或特点,以改变那些位置的光学特点。在不脱离本描述的范围和精神的情况下,物理介质的其他变换是可能的,前述示例被提供仅是为了支持该讨论。
鉴于上述内容,应该了解的是,许多类型的物理变换在所公开的计算设备中发生,以便存储和执行本文提出的软件组件和/或功能性。还设想所公开的计算设备可能不包括图6所示的所有图示组件,可以包括未在图6中明确示出的其他组件,或者可以使用与图6所示的架构完全不同的架构。
尽管各种配置已经用特定于结构特征和/或方法行动的语言描述,但是要理解的是,在所附表示中限定的主题不一定被限于所描述的具体特征或行动。相反,具体特征和行动被公开为实现所要求保护的主题的示例形式。
除非另有具体规定或者在上下文内以其他方式理解为使用,否则本文使用的条件语言(诸如“可以(can)”、“可以(could)”、“可能(might)”、“可以(may)”、“例如”等)通常旨在传达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。因此,这种条件语言通常不旨在暗示特征、元素和/或步骤对于一个或多个实施例以任何方式是必需的,或者一个或多个实施例必然包括用于在具有或没有作者输入或提示的情况下决定的逻辑,无论这些特征、元素和/或步骤是在任何特定实施例中包括或将执行。术语“包括(comprising)”、“包括(including)”、“具有”等是同义的并且以开放式方式包括性地使用,并且不排除附加元素、特征、行动、操作等。而且,术语“或者”以其包括性意义(而非排他性意义)使用,使得例如当被用于连接元素列表时,术语“或者”表示列表中的一个、一些或全部元素。
尽管某些示例实施例已经被描述,但是这些实施例仅通过示例的方式提出,并且不旨在限制本文公开的本发明的范围。因此,前述描述中的任何内容均不旨在暗示任何特定特征、特点、步骤、模块或块是必要的或不可缺少的。实际上,本文描述的新颖方法和系统可以以多种其他形式实施;此外,在不脱离本文公开的本发明的精神的情况下,本文描述的方法和系统形式的各种省略、替换和改变可以被进行。所附权利要求及其等效物旨在覆盖落入本文公开的某些本发明的范围和精神内的这种形式或修改。
应该了解的是,描述内对“第一”、“第二”等项目和/或抽象概念的任何引用并不旨在也不应被解释为必然对应于权利要求的“第一”、“第二”等元素的任何引用。具体地,在本发明内容和/或以下详细描述内,项目和/或抽象概念(诸如例如单个计算设备和/或计算集群的操作状态)可以通过数字名称来区分,而这种名称不对应于权利要求甚或发明内容和/或详细描述的其他段落。例如,本公开的段落内对计算集群的“第一操作状态”和“第二操作状态”的任何指定仅被用于区分该具体段落内的计算集群的两种不同操作状态-而不是任何其他段落,尤其不是权利要求。
最后,尽管各种技术已经用特定于结构特征和/或方法行动的语言描述,但是要理解的是,在所附表示中限定的主题不一定被限于所描述的具体特征或行动。相反,具体特征和行动被公开为实现所要求保护的主题的示例形式。
示例条款
本文提出的本公开涵盖在以下示例条款中陈述的主题。
示例条款A,一种具有远程直接存储器访问(RDMA)能力的网络接口卡(RNIC)消费者模块,包括将RNIC消费者设备配置为执行操作的逻辑,该操作包括:
执行被配置为与RDMA输送机制交互的接口;
映射接口以实现无效RMDA响应和请求的检测;以及
当无效RDMA响应或请求被检测到时,维护RDMA连接。
示例条款B,根据示例条款A的RNIC消费者模块,其中RNIC被实现为FPGA或ASIC。
示例条款C,根据示例条款A至B中任一项的RNIC消费者模块,其中RNIC消费者模块被配置为生成、分配和管理远程访问标识符。
示例条款D,根据示例条款A至C中任一项的RNIC消费者模块,其中远程访问标识符是远程密钥(RKey)和虚拟地址(VA)。
示例条款E,根据示例条款A至D中任一项的RNIC消费者模块,其中具有RDMA能力的设备被配置为传递RKey和VA以代替实现存储器注册和远程访问语义。
示例条款F,根据示例条款A至E中任一项的RNIC消费者模块,其中:
RKey和VA与RNIC消费者请求相关联;并且
具有RDMA能力的设备被配置为使用RKey来标识RNIC消费者请求上下文,并且使用VA来指定RNIC消费者请求内的偏移。
示例条款G,根据示例条款A至F中任一项的RNIC消费者模块,其中RNIC消费者请求上下文被用于标识与RNIC消费者请求相关联的数据缓冲区。
示例条款H,根据示例条款A至G中任一项的RNIC消费者模块,其中具有RDMA能力的设备被配置为使用RKey和VA来传送可用于标识无效RDMA访问的序列号。
示例条款I,根据示例条款A至H中任一项的RNIC消费者模块,其中序列号与请求上下文内的序列号相匹配,以标识无效RDMA访问。
虽然示例条款A至I在上面相对于RNIC消费者模块描述,但在本公开的上下文中要理解的是,示例条款A至I的主题可以附加地或备选地由设备或经由方法实现。
示例条款J,一种设备,包括被配置为执行操作的至少一个模块,该操作包括:
实例化被配置为与RDMA输送机制交互的应用接口;
映射接口以实现重试和僵尸检测;以及
当无效RDMA请求被标识时,维护RDMA连接。
示例条款K,根据示例J的设备,其中:
上层协议(ULP)响应包括序列号和RNIC消费者请求上下文标识符;并且
由ULP响应携带的序列号与请求上下文内的序列号相匹配,以标识无效的ULP响应消息。
示例条款L,根据示例条款J至K中任一项的设备,还被配置为执行操作,该操作包括:
丢弃由序列号标识的无效RDMA写入,而不改变用于RDMA写入的RDMA连接的状态。
示例条款M,根据示例条款J至L中任一项的设备,还被配置为执行操作,该操作包括:
为RDMA读取响应生成填充数据,而不改变用于RDMA写入的RDMA连接的状态。
示例条款N,根据示例条款J至M中任一项的设备,还被配置为执行操作,该操作包括:
针对所生成的填充数据反转循环冗余检验(CRC);以及
基于反转后的CRC来检测无效的数据转移。
示例条款O,根据示例条款J至N中任一项的设备,还被配置为执行操作,该操作包括:
与被配置为传输入站ULP响应的事务接口通信,而不读取接收队列(RQ)描述符或实现RQ语义。
虽然示例条款J至Q在上面相对于设备描述,但在本公开的上下文中要理解的是,示例条款A至I的主题可以附加地或备选地由RNIC消费者模块或经由方法实现。
示例条款P,一种用于在包括一个或多个计算设备的联网计算环境中实现远程直接存储器访问(RDMA)的方法,该方法包括:
实现被配置为从应用接收RDMA请求的RDMA输送接口;
映射接口以实现僵尸响应和请求的检测;以及
当僵尸响应或请求被检测到时,维护当前的RDMA连接。
示例条款Q,根据示例条款P的方法,还包括:
生成和分配远程访问标识符;以及
将远程访问标识符传送给应用以代替实现存储器注册和远程访问语义。
示例条款R,根据示例条款P至Q中任一项的系统,还包括:
基于远程访问标识符,标识RNIC消费者请求上下文,并且指定RNIC消费者请求内的偏移;以及
基于RNIC消费者请求上下文,标识与RNIC消费者请求相关联的数据缓冲区。
示例条款S,根据示例条款P至R中任一项的方法,还包括使用远程访问标识符来传送可用于标识无效RDMA访问的序列号,其中序列号与请求上下文内的序列号相匹配,以标识无效RDMA访问。
示例条款T,根据示例条款P至S中任一项的方法,还包括:
将由上层协议(ULP)响应携带的序列号与请求上下文内的序列号相匹配,以标识无效的ULP响应消息。
虽然示例条款P至T在上面相对于方法描述,但在本公开的上下文中要理解的是,示例条款A至I的主题可以附加地或备选地由RNIC消费者模块或经由设备实现。
本文提出的本公开涵盖在以下示例条款中陈述的主题。
示例条款AA,一种具有远程直接存储器访问(RDMA)能力的网络接口卡(NIC)消费者模块,包括将RNIC消费者设备配置为执行操作的逻辑,该操作包括:
实例化被配置为与RDMA输送机制交互的接口;
经由接口,发送上层协议(ULP)请求;
响应于ULP请求来接收RDMA分组;以及
响应于接收到乱序RDMA分组,继续完成ULP请求,包括处理乱序RDMA分组。
示例条款BB,根据示例条款AA的RNIC消费者模块,其中RDMA输送机制在有损网络中实现。
示例条款CC,根据示例条款AA至BB中任一项的RNIC消费者模块,其中RDMA分组的报头包括可用于允许独立和乱序分组放置的数据。
虽然示例条款AA至CC在上面相对于RNIC消费者模块描述,但在本公开的上下文中要理解的是,示例条款AA至CC的主题可以附加地或备选地由设备或经由方法实现。
示例条款DD,一种设备,包括被配置为执行操作的至少一个模块,该操作包括:
实例化被配置为与RDMA输送机制交互的接口;
经由接口,发送上层协议(ULP)请求;
响应于ULP请求来接收RDMA分组;以及
响应于接收到乱序RDMA分组,继续完成ULP请求,包括处理乱序RDMA分组。
示例条款EE,根据示例条款DD的设备,还被配置为执行操作,该操作包括使用远程密钥(RKey)和虚拟地址(VA)来标识RNIC消费者请求上下文,并且访问目的地缓冲区。
示例条款FF,根据示例条款DD至EE中任一项的设备,还被配置为执行操作,该操作包括使用接收到的乱序RDMA写入和读取分组来标识RNIC消费者请求上下文,并且访问目的地缓冲区。
示例条款GG,根据示例条款DD至FF中任一项的设备,还被配置为执行操作,该操作包括使用接收到的发送消息的最高有效半字节(MSN)和ULP响应的有效负载来标识对应的RNIC消费者请求上下文。
示例条款HH,根据示例条款DD至GG中任一项的设备,被配置为执行操作,该操作包括追踪与RNIC消费者请求上下文相关联的RDMA转移和ULP响应。
示例条款II,根据示例条款DD至HH中任一项的设备,还被配置为执行操作,该操作包括即使RDMA转移和ULP响应的部分乱序到达,也响应于检测到所有需要的RDMA转移和ULP响应来完成RNIC消费者请求。
示例条款JJ,根据示例条款DD至II中任一项的设备,还被配置为执行操作,该操作包括相对于在相同或不同的RNIC队列对(QP)上处理的其他请求来乱序完成RNIC消费者请求。
示例条款KK,根据示例条款DD至JJ中任一项的设备,还被配置为执行操作,该操作包括在相同的RNIC队列对(QP)上的所有先前分组的有序完成和递送之前完成RNIC消费者请求。
虽然示例条款DD至KK在上面相对于设备描述,但在本公开的上下文中要理解的是,示例条款SS至KK的主题可以附加地或备选地由RNIC消费者模块或经由方法实现。
示例条款LL,一种用于在包括一个或多个计算设备的联网计算环境中实现远程直接存储器访问(RDMA)的方法,该方法包括:
实例化被配置为与RDMA输送机制交互的接口;
经由接口,发送上层协议(ULP)请求;
响应于ULP请求来接收RDMA分组;以及
响应于接收到乱序RDMA分组,继续完成ULP请求,包括处理乱序RDMA分组。
示例条款MM,根据示例条款LL的方法,其中RDMA分组的报头包括可用于允许独立和乱序分组放置的数据。
示例条款NN,示例条款LL至MM中任一项的方法,还包括使用远程密钥(RKey)和虚拟地址(VA)来标识RNIC消费者请求上下文,并且访问目的地缓冲区。
示例条款OO,根据示例条款LL至NN中任一项的方法,还包括使用接收到的乱序RDMA写入和读取分组来标识RNIC消费者请求上下文,并且访问目的地缓冲区。
示例条款PP,根据示例条款LL至OO中任一项的方法,还包括使用接收到的发送消息的最高有效半字节(MSN)和ULP响应的有效负载来标识对应的RNIC消费者请求上下文。
示例条款QQ,根据示例条款LL至PP中任一项的方法,还包括追踪与RNIC消费者请求上下文相关联的RDMA转移和ULP响应。
示例条款RR,根据示例条款LL至QQ中任一项的方法,还包括即使RDMA转移和ULP响应的部分乱序到达,也响应于检测到所有需要的RDMA转移和ULP响应来完成RNIC消费者请求。
示例条款SS,根据示例条款LL至RR中任一项的方法,还包括相对于在相同或不同的RNIC队列对(QP)上处理的其他请求来乱序完成RNIC消费者请求。
示例条款TT,根据示例条款LL至SS中任一项的方法,还包括在相同的RNIC队列对(QP)上的所有先前分组的有序完成和递送之前完成RNIC消费者请求。
虽然示例条款LL至TT在上面相对于方法描述,但在本公开的上下文中要理解的是,示例条款LL至TT的主题可以附加地或备选地由RNIC消费者模块或经由设备实现。

Claims (20)

1.一种具有远程直接存储器访问RDMA能力的网络接口卡RNIC消费者设备,被配置为提供RNIC和RNIC消费者之间的接口功能性,所述RNIC消费者设备包括基于硬件的接口,所述基于硬件的接口被配置为与所述RNIC的RDMA输送机制交互,所述RNIC消费者设备包括基于硬件的逻辑,所述基于硬件的逻辑将所述RNIC消费者设备配置为执行操作,所述操作包括:
经由所述基于硬件的接口向所述RNIC发送上层协议ULP请求;
响应于所述ULP请求,由所述基于硬件的接口从所述RNIC接收RDMA分组;以及
响应于接收到乱序RDMA分组,由所述基于硬件的接口继续完成所述ULP请求,包括处理所述乱序RDMA分组。
2.根据权利要求1所述的RNIC消费者设备,其中所述RDMA输送机制在有损网络中被实现。
3.根据权利要求1所述的RNIC消费者设备,其中所述RDMA分组的报头包括可用于允许独立和乱序分组放置的数据。
4.一种电子设备,包括至少一个基于硬件的组件,所述至少一个基于硬件的组件被配置为提供具有远程直接存储器访问RDMA能力的网络接口卡RNIC和RNIC消费者之间的接口功能性,所述基于硬件的组件包括基于硬件的接口,所述基于硬件的接口被配置为与所述RNIC的RDMA输送机制交互,所述设备包括基于硬件的逻辑,所述基于硬件的逻辑将所述设备配置为执行操作,所述操作包括:
经由所述基于硬件的接口向所述RNIC发送上层协议ULP请求;
响应于所述ULP请求,由所述基于硬件的接口从所述RNIC接收RDMA分组;以及
响应于接收到乱序RDMA分组,由所述基于硬件的接口继续完成所述ULP请求,包括处理所述乱序RDMA分组。
5.根据权利要求4所述的设备,还被配置为执行操作,所述操作包括使用远程密钥RKey和虚拟地址VA来标识RNIC消费者请求上下文和访问目的地缓冲器。
6.根据权利要求4所述的设备,还被配置为执行操作,所述操作包括使用接收到的乱序RDMA写入和读取分组来标识RNIC消费者请求上下文和访问目的地缓冲器。
7.根据权利要求4所述的设备,还被配置为执行操作,所述操作包括使用接收到的发送消息的最高有效半字节MSN和ULP响应的有效负载来标识对应的RNIC消费者请求上下文。
8.根据权利要求4所述的设备,被配置为执行操作,所述操作包括追踪与RNIC消费者请求上下文相关联的RDMA转移和ULP响应。
9.根据权利要求4所述的设备,还被配置为执行操作,所述操作包括即使所述RDMA转移和ULP响应的部分乱序到达,也响应于检测到所有需要的RDMA转移和ULP响应来完成RNIC消费者请求。
10.根据权利要求4所述的设备,还被配置为执行操作,所述操作包括相对于在相同或不同的RNIC队列对QP上被处理的其他请求来乱序完成RNIC消费者请求。
11.根据权利要求4所述的设备,还被配置为执行操作,所述操作包括在相同的RNIC队列对QP上的所有先前分组的有序完成和递送之前完成RNIC消费者请求。
12.一种用于在包括一个或多个计算设备的联网计算环境中实现远程直接存储器访问RDMA的方法,所述方法由具有RDMA能力的网络接口卡RNIC消费者设备执行,所述RNIC消费者设备被配置为提供RNIC和RNIC消费者之间的接口功能性,所述RNIC消费者设备包括基于硬件的接口,所述基于硬件的接口被配置为与所述RNIC的RDMA输送机制交互,所述RNIC消费者设备包括基于硬件的逻辑,所述方法包括:
经由所述基于硬件的接口向所述RNIC发送上层协议ULP请求;
响应于所述ULP请求,由所述基于硬件的接口从所述RNIC接收RDMA分组;以及
响应于接收到乱序RDMA分组,由所述基于硬件的接口继续完成所述ULP请求,包括处理所述乱序RDMA分组。
13.根据权利要求12所述的方法,其中所述RDMA分组的报头包括可用于允许独立和乱序分组放置的数据。
14.根据权利要求12所述的方法,还包括使用远程密钥RKey和虚拟地址VA来标识RNIC消费者请求上下文和访问目的地缓冲器。
15.根据权利要求12所述的方法,还包括使用接收到的乱序RDMA写入和读取分组来标识RNIC消费者请求上下文和访问目的地缓冲器。
16.根据权利要求12所述的方法,还包括使用接收到的发送消息的最高有效半字节MSN和ULP响应的有效负载来标识对应的RNIC消费者请求上下文。
17.根据权利要求12所述的方法,还包括追踪与RNIC消费者请求上下文相关联的RDMA转移和ULP响应。
18.根据权利要求12所述的方法,还包括即使所述RDMA转移和ULP响应的部分乱序到达,也响应于检测到所有需要的RDMA转移和ULP响应来完成RNIC消费者请求。
19.根据权利要求12所述的方法,还包括相对于在相同或不同的RNIC队列对QP上被处理的其他请求来乱序完成RNIC消费者请求。
20.根据权利要求12所述的方法,还包括在相同的RNIC队列对QP上的所有先前分组的有序完成和递送之前完成RNIC消费者请求。
CN202080015706.9A 2019-02-22 2020-02-10 具有硬件集成和乱序放置的rdma输送 Active CN113490927B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/283,427 US11025564B2 (en) 2019-02-22 2019-02-22 RDMA transport with hardware integration and out of order placement
US16/283,427 2019-02-22
PCT/US2020/017398 WO2020171989A1 (en) 2019-02-22 2020-02-10 Rdma transport with hardware integration and out of order placement

Publications (2)

Publication Number Publication Date
CN113490927A CN113490927A (zh) 2021-10-08
CN113490927B true CN113490927B (zh) 2024-08-23

Family

ID=69743977

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080015706.9A Active CN113490927B (zh) 2019-02-22 2020-02-10 具有硬件集成和乱序放置的rdma输送

Country Status (4)

Country Link
US (1) US11025564B2 (zh)
EP (1) EP3928212A1 (zh)
CN (1) CN113490927B (zh)
WO (1) WO2020171989A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068412B2 (en) 2019-02-22 2021-07-20 Microsoft Technology Licensing, Llc RDMA transport with hardware integration
US12034633B2 (en) 2019-05-23 2024-07-09 Hewlett Packard Enterprise Development Lp System and method for facilitating tracer packets in a data-driven intelligent network
JP7434039B2 (ja) * 2020-04-08 2024-02-20 キヤノン株式会社 情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法
WO2022115364A1 (en) * 2020-11-25 2022-06-02 Intel Corporation Remote direct memory access (rdma) in next generation cellular networks
CN113422793B (zh) * 2021-02-05 2024-06-21 阿里巴巴集团控股有限公司 数据传输方法、装置、电子设备及计算机存储介质
CN113364652B (zh) * 2021-06-30 2023-07-25 脸萌有限公司 网卡流量测试方法、装置、网络设备、系统及可读介质
CN114285676B (zh) * 2021-11-24 2023-10-20 中科驭数(北京)科技有限公司 智能网卡、智能网卡的网络存储方法和介质
CN114827234B (zh) * 2022-04-29 2024-09-06 广东浪潮智慧计算技术有限公司 一种数据传输方法、系统、装置及存储介质
CN115617718B (zh) * 2022-12-19 2023-03-21 芯动微电子科技(珠海)有限公司 一种基于AXI总线的读写保序方法及SoC系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132017A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Reducing number of write operations relative to delivery of out-of-order RDMA send messages

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60316969T2 (de) 2002-08-14 2008-07-31 Broadcom Corp., Irvine One-shot-rdma mit einem 2-bit-zustand
US7870268B2 (en) 2003-09-15 2011-01-11 Intel Corporation Method, system, and program for managing data transmission through a network
US7383483B2 (en) 2003-12-11 2008-06-03 International Business Machines Corporation Data transfer error checking
US7912979B2 (en) 2003-12-11 2011-03-22 International Business Machines Corporation In-order delivery of plurality of RDMA messages
US8161126B2 (en) 2003-12-19 2012-04-17 Broadcom Corporation System and method for RDMA QP state split between RNIC and host software
US20060165084A1 (en) 2005-01-21 2006-07-27 International Business Machines Corporation RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
US7760741B2 (en) 2005-05-18 2010-07-20 International Business Machines Corporation Network acceleration architecture
US7571259B2 (en) 2006-05-02 2009-08-04 Broadcom Corporation Apparatus and methods for efficient insertion and removal of MPA markers and RDMA CRC digest
US8090790B2 (en) 2007-05-30 2012-01-03 Broadcom Corporation Method and system for splicing remote direct memory access (RDMA) transactions in an RDMA-aware system
US8296386B1 (en) * 2008-06-27 2012-10-23 Qlogic, Corporation Method and system for processing network packets
US7765317B1 (en) * 2008-06-30 2010-07-27 Qlogic, Corporation System and methods for locating FPDU headers when markers are disabled
US9495324B2 (en) 2012-03-30 2016-11-15 Intel Corporation Efficient distribution of subnet administration data over an RDMA network
US9558146B2 (en) * 2013-07-18 2017-01-31 Intel Corporation IWARP RDMA read extensions
US10110518B2 (en) 2013-12-18 2018-10-23 Mellanox Technologies, Ltd. Handling transport layer operations received out of order
US10936200B2 (en) 2014-07-30 2021-03-02 Excelero Storage Ltd. System and method for improved RDMA techniques for multi-host network interface controllers
US10732836B2 (en) * 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10802766B2 (en) * 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US11068412B2 (en) 2019-02-22 2021-07-20 Microsoft Technology Licensing, Llc RDMA transport with hardware integration

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132017A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Reducing number of write operations relative to delivery of out-of-order RDMA send messages
CN1997977A (zh) * 2003-12-11 2007-07-11 国际商业机器公司 降低与失序rdma发送消息的传送相关的写操作的数量

Also Published As

Publication number Publication date
WO2020171989A1 (en) 2020-08-27
EP3928212A1 (en) 2021-12-29
CN113490927A (zh) 2021-10-08
US11025564B2 (en) 2021-06-01
US20200274832A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
CN113490927B (zh) 具有硬件集成和乱序放置的rdma输送
US11770344B2 (en) Reliable, out-of-order transmission of packets
US11068412B2 (en) RDMA transport with hardware integration
US10917344B2 (en) Connectionless reliable transport
US10673772B2 (en) Connectionless transport service
JP6564960B2 (ja) ネットワーキング技術
US9965441B2 (en) Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics
US10051038B2 (en) Shared send queue
EP1581875B1 (en) Using direct memory access for performing database operations between two or more machines
US7889762B2 (en) Apparatus and method for in-line insertion and removal of markers
US10880204B1 (en) Low latency access for storage using multiple paths
US20060230119A1 (en) Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US8959171B2 (en) Method and apparatus for acknowledging a request for data transfer
EP4027249A1 (en) Connection management in a network adapter
US20220407824A1 (en) Connection management in a network adapter
US20230239351A1 (en) System and method for one-sided read rma using linked queues
US12093571B1 (en) Accelerating request/response protocols
AU2003300885B2 (en) Using direct memory access for performing database operations between two or more machines

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
GR01 Patent grant
GR01 Patent grant