CN102546612B - 用户态下基于rdma协议的远程过程调用实现方法 - Google Patents

用户态下基于rdma协议的远程过程调用实现方法 Download PDF

Info

Publication number
CN102546612B
CN102546612B CN201110444483.0A CN201110444483A CN102546612B CN 102546612 B CN102546612 B CN 102546612B CN 201110444483 A CN201110444483 A CN 201110444483A CN 102546612 B CN102546612 B CN 102546612B
Authority
CN
China
Prior art keywords
data
rdma protocol
request
server
procedure call
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
CN201110444483.0A
Other languages
English (en)
Other versions
CN102546612A (zh
Inventor
王芳
冯丹
明亮
付秋雷
万勇
朱挺炜
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201110444483.0A priority Critical patent/CN102546612B/zh
Publication of CN102546612A publication Critical patent/CN102546612A/zh
Application granted granted Critical
Publication of CN102546612B publication Critical patent/CN102546612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种用户态下基于RDMA协议的远程过程调用实现方法,属于分布式通讯领域,包括:(1)用户态下基于RDMA协议的远程过程调用传输逻辑的建立;(2)用户态下基于RDMA协议的远程过程调用发送请求逻辑;(3)用户态下基于RDMA协议的远程过程调用处理请求并发出响应的处理逻辑;(4)用户态下基于RDMA协议的远程过程调用接收响应逻辑。本发明扩充了用户态远程过程调用的传输协议,使得用户可以通过远程过程调用透明的获得RDMA协议的高性能、低延迟等特性。

Description

用户态下基于RDMA协议的远程过程调用实现方法
技术领域
本发明属于计算机网络通讯领域,具体涉及基于远程直接内存访问(RDMA)协议的远程过程调用(RPC)实现方法。
背景技术
随着计算机网络技术的迅猛发展,网络的性能目前已经达到每秒100千兆比特级别,如何充分利用高速网络的特性是我们面对的一个重要问题。RDMA使一台计算机可以直接将信息传送到另一台计算机内存中。这项技术通过减少处理器开销和减少内存的拷贝降低了时延,提高了网络利用率。
传统用户态下的远程过程调用传输基于传输控制协议/因特网互联协议(TCP/IP),利用TCP/IP协议来传递远程过程调用请求信息。传统的TCP/IP协议在传送用户态请求信息时,首先需要将请求信息从用户态缓存拷贝到内核态缓存,然后从内核态缓存拷贝到网卡驱动,最后通过网卡驱动发送出去,接收过程也类似,需要多次的内存拷贝和大量的CPU开销。在高速网络中使用TCP/IP协议会使得系统性能无法满足需求。
RDMA协议能够在用户态下直接调用网卡驱动,并且能将数据直接在客户端应用程序和服务器应用程序之间拷贝,减少CPU和内存拷贝开销,能大幅提高系统性能。当前在分布式存储系统中,用户态的应用也越来越广泛,如谷歌文件系统(Google File System),Hadoop文件系统(Hadoop File System)以及其他方面的一些应用等。而这些高性能应用都需要远程过程调用能够提供高带宽,低延迟的数据传输。将RDMA集成到远程过程调用中取代低性能的TCP/IP协议能够有效地提高高速网络(比如InfiniBand网络)的性能。
发明内容
本发明提供一种用户态下基于RDMA协议的远程过程调用实现方法,目的在于可以通过远程过程调用协议使用现有高速网络的RDMA特性,使得编写远程过程调用程序的程序员能够透明的获得高性能低延迟的网络服务,为高性能应用程序提供用户态下的基础远程过程调用库。
本发明关于用户态下基于RDMA的远程过程调用实现方法,主要包括:
(1)RDMA协议传输连接的建立。在客户端和服务器分别创建RDMA协议传输层相关的数据结构,并建立RDMA协议传输连接。
(2)客户端发送远程过程调用请求相关逻辑。
(3)服务器处理请求以及发送响应信息的相关逻辑。
(4)客户端接收服务器响应信息相关逻辑。
作为本发明的改进,RDMA协议传输连接的建立包括如下过程:
(1)首先在服务器构建RDMA协议监听接口相关的数据结构(包括内存注册等),并调用RDMA监听原语监听来自客户端的连接请求。
(2)客户端在需要调用远程过程调用请求之前,需要建立客户端RDMA协议传输层相关数据结构,并调用RDMA协议的连接原语连接到服务器。
(3)服务器监听到有连接请求时,首先建立RDMA协议的远程过程调用的传输层相关数据结构,并调用RDMA协议的接受连接原语接受请求。此时连接建立完成,远程过程调用客户端可以通过此连接发送远程过程调用请求和接收远程过程调用响应信息。
作为本发明的改进,RDMA协议的远程过程调用发送请求逻辑包括如下过程:
(1)请求数据编码阶段,对于小块数据的请求,直接编码进入外部数据表示,跳到(3)。
(2)请求数据编码阶段,对于大块数据的请求,对其中的大块数据构建一个大块数据链表数据结构,并将大块数据链表数据结构编码到外部数据表示中,其中链表数据结构包括大块数据注册的内存池的句柄,大块数据的地址和长度,链表数据结构在外部数据表示中的偏移地址等。
(3)将编码后的外部数据表示通过RDMA协议的发送原语发送到服务器。
作为本发明的改进,RDMA协议的远程过程调用处理请求并发出响应的处理逻辑包括如下过程:
(1)服务器通过调用RDMA协议的接收原语接收客户端发来的请求信息。
(2)对于小块数据的请求,直接解码并发送到对应的服务器处理程序完成。
(3)对于大块数据的请求,通过解码获得大块数据的大块数据链表信息,并利用这个信息通过RDMA协议的读原语到客户端拉取大块的数据,此时大块数据传输不需要中央处理器的干预。
(4)请求处理完成后,发送响应信息,对于其所包括的实际响应数据为小块数据的响应信息(即小的响应信息),将其中的实际响应数据直接编码进入外部数据表示,跳到(6)。
(5)对于其所包括的实际响应数据为大块数据的响应信息(即大的响应信息),对其中的实际响应数据构建一个链表数据结构,并将该链表数据结构编码到外部数据表示中。
(6)将编码后的外部数据表示通过RDMA协议的发送原语发送回客户端。
作为本发明的改进,RDMA协议的远程过程调用接收响应逻辑包括如下过程:
(1)客户端通过调用RDMA协议的接收原语接收服务器发来的响应信息。
(2)对于小的响应信息,直接解码获得其实际响应数据并返回给上层逻辑。
(3)对于大的响应信息,通过解码获得实际响应数据的大块数据链表信息,并利用这个信息通过RDMA协议的读原语从服务器拉取大块的数据,此时大块数据传输不需要中央处理器的干预,完成后向上层逻辑返回结果。
响应信息包括很多部分,比如信息的标示,信息所述的对象标示,实际的响应数据等,小的响应信息指响应信息中的实际的响应数据为小块数据,大的响应信息指响应信息中的实际的响应数据为大块数据。本发明中的小块数据一般指小于一千字节的数据块,大于等于一千字节的数据块为大块数据。
本发明适用于支持RDMA协议的高速网络传输应用,主要面向远程过程调用的相关应用,具有以下特点:
(1)利用远程过程调用能够屏蔽底层网络复杂性的特点,为用户态下的应用程序提供透明的网络服务。
(2)充分利用RDMA协议高性能、低延迟的特点,实现用户态下基于RDMA协议的远程过程调用,使得用户态下的基于远程过程调用的应用程序能够透明的获得RDMA协议的高性能、低延迟的优势。
附图说明
图1为本发明的整体架构图。
图2为本发明总体流程图。
图3为本发明的服务器创建监听接口以及接受连接的流程图。
图4为本发明的客户端连接到服务器的流程图。
图5为本发明的客户端发送远程过程调用请求的流程图。
图6为本发明的服务器端接收并处理远程过程调用请求的流程图。
图7为本发明的服务器发出远程过程调用响应的流程图。
图8为本发明的客户端接收远程过程调用响应的流程图。
具体实施方式
下面结合架构流程图对本发明进一步详细说明。
图1为本发明的整体架构图,图2为本发明的总体流程图。
本发明的实现用户态下基于RDMA协议的远程过程调用的实现方法,运行于支持RDMA协议的网络之上,具体包括如下四个步骤:
(1)RDMA协议传输层的建立。在客户端和服务器分别创建RDMA协议传输层,并建立RDMA协议传输连接。(2)用户态下基于RDMA协议的远程过程调用发送请求逻辑。客户端发送远程过程调用请求相关逻辑。(3)用户态下基于RDMA协议的远程过程调用处理请求并发出响应的处理逻辑。服务器处理请求以及发送响应信息的相关逻辑。(4)用户态下基于RDMA协议的远程过程调用接收响应逻辑。客户端接收服务器响应信息相关逻辑。
图3为服务器创建RDMA协议传输层流程图。主要步骤包括:(1)创建传输层数据结构并填充RDMA协议操作;(2)为RDMA协议操作注册内存;(3)调用监听原语(RDMA Listen)开始监听连接请求;(4)当有新连接请求到来时,为连接请求创建一个新的传输通道;(5)当有远程过程调用请求到来时,直接调用服务器处理流程。
图4为客户端创建传输层流程图。主要步骤包括:(1)创建传输层数据结构并填充RDMA协议操作;(2)为RDMA协议操作注册内存;(3)发起连接请求;(4)完成后返回传输层数据结构供远程过程调用请求调用。
图5为客户端发送远程过程调用请求流程图。主要步骤包括:
(1)创建外部数据表示并绑定RDMA协议相关操作;
(2)将用户态下基于RDMA协议的远程过程调用请求的头部消息编码到外部数据表示中;
(3)将远程过程调用请求信息编码到外部数据表示中,对于大块数据只需将他的内存地址和长度等信息编码,对于小块数据直接编码进入外部数据表述;
(4)将外部数据表示通过RDMA协议的发送原语(RDMA SEND)发送到服务器。
例如,对于客户端写1M数据到服务器(程序号为0x30090949,版本号为1,写操作的操作号为0)的请求:(1)创建外部数据表示(XDR);(2)将写操作请求对应的RPC协议头部信息(程序号,版本号,操作号),即(0x30090949,1,0)编码到XDR中;(3)然后对于1M的数据,注册内存信息,生成三元组(注册的内存地址句柄handle,数据长度1M,本三元组在XDR中的偏移offset),并将三元组编码到XDR中,而实际数据仍然缓存在客户端内存中;(4)调用RDMA SEND将XDR发送到服务器。
图6为服务器接收并处理远程过程调用请求的流程图。主要步骤包括:
(1)创建外部数据表示并绑定RDMA协议相关操作;
(2)从外部数据表示中解码用户态下基于RDMA协议的远程过程调用请求的头部消息;
(3)从外部数据表示中解码远程过程调用的请求信息,如果外部数据表示中含有大块数据,那么此时发起RDMA协议的读原语(RDMA READ)从客户端直接拉取数据并填充到服务器远程过程调用消息数据结构(RPC MESSAGE)中,否则直接从外部数据表示中解码远程过程调用请求信息并填充到服务器远程过程调用消息数据结构(RPC MESSAGE)中;
(4)将解码的服务器远程过程调用消息数据结构数据结构(RPCMESSAGE)交给服务器处理逻辑处理。
例如,对于客户端写1M数据到服务器的请求:(1)创建外部数据表示(XDR);(2)从XDR解析出远程过程调用协议头部信息,即(0x30090949,1,0),通过这个信息,服务器找到对应的写操作处理例程;(3)写操作处理例程首先解析出写操作需要的参数信息(要写的文件名等),然后解析出待写数据的三元组信息(注册的内存地址句柄,数据长度1M,本三元组在XDR中的偏移offset),通过这个信息调用RDMA READ直接从客户端拉取数据参数;(4)将获得的所有参数传递给服务器处理函数进行后续处理,并获得处理结果,成功直接返回0。
图7为服务器发出远程过程调用响应的流程图。主要步骤包括:
(1)创建外部数据表示并绑定RDMA协议相关操作;
(2)将用户态基于远程RDMA协议的远程过程调用请求的头部消息编码到外部数据表示中;
(3)将远程过程调用请求信息编码到外部数据表示中,对于大块数据只需将他的内存地址和长度等信息编码,对于小块数据直接编码进入外部数据表述;
(4)将外部数据表示通过RDMA协议的发送原语(RDMA SEND)发送到客户端。
例如,对于客户端写1M数据到服务器的请求:(1)创建外部数据表示(XDR);(2)将写操作响应对应的RPC协议头部信息(程序号,版本号,操作号),即(0x30090949,1,0)编码到XDR中;(3)将写操作响应结果(成功为0),直接编码到XDR中;(4)调用RDMASEND将XDR发送回客户端。
图8为客户端接收远程过程调用的流程图。主要步骤包括:
(1)创建外部数据表示并绑定RDMA协议相关操作;
(2)从外部数据表示中解码用户态基于RDMA协议的远程过程调用请求的头部消息;
(3)从外部数据表示中解码远程过程调用的请求信息,如果外部数据表示中含有大块数据,那么此时发起RDMA协议的读原语(RDMA READ)从服务器直接拉取数据并填充到客户端远程过程调用消息数据结构(RPC MESSAGE)中,否则直接从外部数据表示中解码远程过程调用请求信息并填充到客户端远程过程调用消息数据结构(RPC MESSAGE)中;
(4)将解码的客户端远程过程调用消息数据结构数据结构(RPCMESSAGE)交给客户端上层逻辑处理。
例如,对于客户端写1M数据到服务器的请求:(1)创建外部数据表示(XDR);(2)从XDR解析出RPC协议头部信息,即(0x30090949,1,0);(3)解码出写操作响应结果(成功为0);(4)将响应结果返回客户端上层逻辑。
本实施例中的小块数据一般优选指小于一千字节的数据块,大块数据优选为大于等于一千字节的数据块。响应信息包括很多部分,比如信息的标示,信息所述的对象标示,实际的响应数据等,小的响应信息指其中的实际的响应数据为小块数据的响应信息,大的响应信息指响应信息中的实际的响应数据为大块数据。

Claims (3)

1.用户态下基于RDMA协议的远程过程调用实现方法,其特征在于,具体包括如下步骤:
(1)RDMA协议传输连接的建立:在客户端和服务器分别创建RDMA协议传输层的数据结构,从而建立RDMA协议传输连接;
(2)客户端发送请求逻辑;
(3)服务器处理请求并发出响应信息的处理逻辑;
(4)客户端接收服务器响应信息,实现远程过程调用;
其中,所述步骤(2)中,客户端发送请求逻辑的具体过程如下:
(2-1)请求数据编码,其中:
对于小块数据的请求,对该小块数据直接编码进入外部数据表示;
对于大块数据的请求,将所述大块数据构建为链表数据结构,并将该链表数据结构编码到外部数据表示中,其中链表数据结构包括大块数据注册的内存池的句柄,大块数据的地址和长度以及链表数据结构在外部数据表示中的偏移地址;
(2-2)将编码后的外部数据表示通过RDMA协议的发送原语发送到服务器,完成请求逻辑的发送;
所述步骤(3)中,服务器处理请求并发出响应信息的处理逻辑具体过程如下:
(3-1)服务器通过调用RDMA协议的接收原语接收客户端发来的请求信息;
(3-2)处理请求:
如果是小块数据的请求,直接解码并发送到对应的服务器处理程序,完成请求处理;如果是大块数据的请求,通过解码获得大块数据的链表数据结构,并利用该链表数据结构通过RDMA协议的读原语到客户端拉取相应的大块的数据,完成请求处理;
(3-3)请求处理完成后,发送响应信息的处理逻辑:
如果响应信息中的实际响应数据为小块数据,则将该实际响应数据直接编码进入外部数据表示;
如果响应信息中的实际响应数据为大块数据,则将该实际响应数据构建为链表数据结构,并将该链表数据结构编码到外部数据表示中;
(3-4)将编码后的外部数据表示通过RDMA协议的发送原语发送回客户端;
步骤(4)中,服务器接收响应信息的具体过程如下:
(4-1)客户端调用RDMA协议的接收原语接收服务器发来的响应信息;
(4-2)对于其实际响应数据为小块数据的响应信息,直接解码获得其实际响应数据并返回给上层逻辑;
(4-3)对于其实际响应数据为大块数据的响应信息,通过解码获得其实际响应数据的链表数据结构,并利用该链表数据结构通过RDMA协议的读原语从服务器拉取相应的数据,完成后向上层逻辑返回结果。
2.根据权利要求1所述的用户态下基于RDMA协议的远程过程调用实现方法,其特征在于,所述步骤(1)中,RDMA协议传输连接的建立具体过程如下:
(1)首先在服务器构建RDMA协议监听接口的数据结构,并调用RDMA监听原语监听来自客户端的连接请求;
(2)客户端建立客户端RDMA协议传输层的数据结构,并调用RDMA协议的连接原语连接到服务器;
(3)服务器监听到有连接请求,建立RDMA协议传输层的数据结构,并调用RDMA协议的接受连接原语接受请求,此时连接建立完成。
3.根据权利要求1或2所述的用户态下基于RDMA协议的远程过程调用实现方法,其特征在于,所述小块数据是指小于一千字节的数据,大块数据指不小于一千字节的数据。
CN201110444483.0A 2011-12-23 2011-12-23 用户态下基于rdma协议的远程过程调用实现方法 Active CN102546612B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110444483.0A CN102546612B (zh) 2011-12-23 2011-12-23 用户态下基于rdma协议的远程过程调用实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110444483.0A CN102546612B (zh) 2011-12-23 2011-12-23 用户态下基于rdma协议的远程过程调用实现方法

Publications (2)

Publication Number Publication Date
CN102546612A CN102546612A (zh) 2012-07-04
CN102546612B true CN102546612B (zh) 2015-07-08

Family

ID=46352573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110444483.0A Active CN102546612B (zh) 2011-12-23 2011-12-23 用户态下基于rdma协议的远程过程调用实现方法

Country Status (1)

Country Link
CN (1) CN102546612B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103227778B (zh) * 2013-03-26 2016-09-14 华为技术有限公司 内存访问方法、设备和系统
CN104135496B (zh) * 2013-05-02 2017-08-18 华中科技大学 一种同构环境下的rpc数据传输方法及系统
US9338193B2 (en) 2013-05-31 2016-05-10 International Business Machines Corporation Remote procedure call with call-by-reference semantics using remote direct memory access
US9792248B2 (en) * 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10713210B2 (en) * 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
CN105446936B (zh) * 2015-11-16 2018-07-03 上海交通大学 基于htm和单向rdma操作的分布式哈希表方法
CN107920075A (zh) * 2017-11-17 2018-04-17 北京锐安科技有限公司 一种数据处理的系统
CN109981674B (zh) * 2019-04-04 2021-08-17 北京信而泰科技股份有限公司 一种远程过程调用方法、装置、设备及介质
CN112019299B (zh) * 2019-05-31 2022-05-13 华为技术有限公司 一种数据传输方法及相关设备
CN110177118B (zh) * 2019-06-13 2022-03-29 上海海事大学 一种基于rdma的rpc通信方法
CN113326155B (zh) * 2021-06-28 2023-09-05 深信服科技股份有限公司 一种信息处理方法、装置、系统和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100486248C (zh) * 2005-11-11 2009-05-06 华中科技大学 一种实时环境下的零拷贝通信方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100486248C (zh) * 2005-11-11 2009-05-06 华中科技大学 一种实时环境下的零拷贝通信方法

Also Published As

Publication number Publication date
CN102546612A (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN102546612B (zh) 用户态下基于rdma协议的远程过程调用实现方法
CN107093138B (zh) 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法
CN101982955B (zh) 高性能文件传输系统及方法
CN105812351B (zh) 实现会话共享的方法和系统
US20030145230A1 (en) System for exchanging data utilizing remote direct memory access
CN103780679B (zh) 基于http协议的长延时远程调用方法
US7594022B2 (en) Regulating client requests in an electronic messaging environment
US9350763B1 (en) HTTP tunnelling over websockets
US20080177872A1 (en) Managing aggregation and sending of communications
US20160330269A1 (en) Method and system for fulfilling server push directives on an edge proxy
US10277658B2 (en) Reduction of web page load time using http header compression
CN103139051A (zh) 一种基于Websocket协议的即时通讯方法
CN102055771B (zh) 面向云服务的多并发业务流控制装置及控制方法
TW202038581A (zh) 管理用戶端、設備監控系統及方法
CN109547162B (zh) 基于两套单向边界的数据通信方法
US10609125B2 (en) Method and system for transmitting communication data
US11330035B2 (en) Method and server for HTTP protocol-based data request
CN104040995B (zh) 多媒体重定向方法以及多媒体服务器以及计算机系统
JP2009123201A (ja) データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法
WO2014086195A1 (zh) 视频处理方法、移动终端及服务器
JP2022110064A (ja) ストリーミングメディアの伝送方法、ストリーミングメディアサーバ及びストリーミングメディアシステム
CN105872090B (zh) 基于扩展状态码的http通信方法
CN110321237A (zh) 基于grpc及protobuf实现综治工作端系统通信的方法
CN112468874B (zh) 一种视频播放方法、终端设备及系统
CN102055774A (zh) 基于包处理的http服务器及其数据处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant