Rdma下数据读写的方法、装置和网络系统的制作方法

文档序号:7799568阅读:208来源:国知局
Rdma下数据读写的方法、装置和网络系统的制作方法
【专利摘要】本发明提供一种远程直接存储器访问RDMA下数据读写的方法,涉及计算机领域,能够在客户端向服务端读取或写入分散内存地址的情况下,支持RDMA读取操作和RDMA写入操作。RDMA下数据读取的包括:第一端向第二端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址;所述第一端接收所述第二端发送的、所述指定地址对应的数据。本发明还提供相应的装置。
【专利说明】RDMA下数据读写的方法、装置和网络系统
【技术领域】
[0001]本发明涉及通信领域,特别涉及一种远程直接存储器访问(remote directmemory access, RDMA)下数据读写的方法、装置和网络系统。
【背景技术】
[0002]在电脑运算中,RDMA是指从一台电脑的存储器到另一台电脑的存储器的直接存储器访问,而不涉及到任一台电脑的操作系统。RDMA允许高通量、低延时的网络连接,这在大规模并行电脑群集中尤为有用。
[0003]目前RDMA技术支持三种数据读写方式:发送/接收(send/receive)、RDMA读取(RDMA read)、RDMA写入(RDMA write)。其中,在客户端向服务端读取或写入分散内存地址的情况下,RDMA读取和RDMA写入操作有可能无法正常进行。

【发明内容】

[0004]本发明实施例提供了一种RDMA写数据读写的方法、装置和网络系统,在客户端向服务端读取或写入分散内存地址的情况下,能够支持RDMA读取操作和RDMA写入操作。
[0005]第一方面,提供一种远程直接存储器访问RDMA下数据读取的方法,所述方法包括:
[0006]第一端向第二端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0007]所述第一端接收所述第二端发送的、所述指定地址对应的数据。
[0008]结合第一方面,在第一方面的第一种实现方式中,在所述第一端向第二端发送RDMA读取请求消息之前,所述方法还包括:
[0009]所述第一端获取所述第二端的内存区域的内存信息,其中,所述内存信息包括:地址信息和/或长度信息。
[0010]结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述第二端的内存区域包括多个分散内存区域,所述第一端获取所述第二端的内存区域的内存信息包括:
[0011]所述第一端获取所述第二端的内存区域中的每个分散内存区域的内存信息。
[0012]结合第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则
[0013]所述第一端接收所述第二端发送的、所述指定地址对应的数据包括:
[0014]所述第一端接收所述第二端发送的、所述指定地址中的每个地址对应的数据。
[0015]结合第一方面,在第一方面的第四种实现方式中,在所述第一端向第二端发送RDMA读取请求消息之前,所述方法还包括:
[0016]所述第一端对自身的内存区域向网卡进行注册。
[0017]第二方面,提供一种远程直接存储器访问RDMA下数据读取的方法,所述方法包括:
[0018]第二端接收第一端发送的RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0019]所述第二端读取所述指定地址对应的数据;
[0020]所述第二端向所述第一端发送所述指定地址对应的数据。
[0021]结合第二方面,在第二方面的第一种实现方式中,所述第二端读取所述指定地址对应的数据包括:所述第二端读取所述指定地址中每个地址对应的数据;
[0022]所述第二端向所述第一端发送所述指定地址对应的数据包括:所述第二端向所述第一端发送所述指定地址中每个地址对应的数据。
[0023]结合第二方面,在第二方面的第二种实现方式中,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则
[0024]所述第二端读取所述指定地址对应的数据包括:所述第二端读取所述指定地址中每个地址对应的数据;
[0025]所述第二端向所述第一端发送所述指定地址对应的数据包括:所述第二端向所述第一端发送所述指定地址中每个地址对应的数据。
[0026]结合第二方面,在第二方面的第三种实现方式中,在所述第二端接收第一端发送的RDMA读取请求消息之前,所述方法还包括:
[0027]所述第二端对自身的内存区域向网卡进行注册。
[0028]第三方面,提供一种远程直接存储器访问RDMA下数据写入的方法,所述方法包括:
[0029]第一端将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0030]所述第一端向所述第二端发送所述RDMA写入数据报文。
[0031]结合第三方面,在第三方面的第一种实现方式中,在所述第一端将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中之前,所述方法还包括:
[0032]所述第一端获取所述第二端的内存区域的内存信息,其中,所述内存区域的内存信息包括:内存区域的地址信息和/或长度信息。
[0033]结合第三方面的第一种实现方式,在第三方面的第二种实现方式中,所述第二端的内存区域包括多个分散内存区域,所述第一端获取所述第二端的内存区域的内存信息包括:
[0034]所述第一端获取所述第二端的内存区域中的每个分散内存区域的内存信息。
[0035]结合第三方面的第二种实现方式,在第三方面的第三种实现方式中,所述指定地址包括分布于所述多个分散内存区域中的多个地址。
[0036]结合第三方面,在第三方面的第四种实现方式中,在所述第一端向所述第二端发送所述RDMA写入数据报文之后,所述方法还包括:
[0037]所述第一端接收所述第二端发送的指示成功写入的确认消息。
[0038]第四方面,提供一种远程直接存储器访问RDMA下数据写入的方法,所述方法包括:[0039]第二端接收第一端发送的RDMA写入数据报文,所述RDMA写入数据报文中携带需要写入数据的指定地址和所述指定地址对应的数据,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0040]所述第二端在所述指定地址写入所述指定地址对应的数据。
[0041]结合第四方面,在第四方面的第一种实现方式中,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,
[0042]所述第二端在所述指定地址写入对应的数据包括:所述第二端在所述指定地址中的每一个地址写入该地址对应的数据。
[0043]第五方面,提供一种RDMA下数据读取的装置,所述装置包括:
[0044]发送模块,用于向第二端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0045]接收模块,用于接收所述第二端发送的、所述指定地址对应的数据。
[0046]结合第五方面,在第五方面的第一种实现方式中,所述装置还包括:
[0047]获取模块,用于在所述发送模块向第二端发送RDMA读取请求消息之前,获取所述第二端的内存区域的内存信息,其中,所述内存信息包括:地址信息和/或长度信息。
[0048]结合第五方面的第一种实现方式,在第五方面的第二种实现方式中,所述第二端的内存区域包括多个分散内存区域,则所述获取模块具体用于:
[0049]获取所述第二端的内存区域中的每个分散内存区域的内存信息。
[0050]结合第五方面的第二种实现方式,在第五方面的第三种实现方式中,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则
[0051]所述接收模块具体用于:
[0052]接收所述第二端发送的、所述指定地址中的每个地址对应的数据。
[0053]结合第五方面,在第五方面的第四种实现方式中,所述装置还包括:
[0054]注册模块,用于在所述发送模块向第二端发送RDMA读取请求消息之前,对自身的内存区域向网卡进行注册。
[0055]第六方面,提供一种RDMA下数据读取的装置,其特征在于,所述装置包括:
[0056]接收模块,用于接收第一端发送的RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0057]处理模块,用于读取所述指定地址对应的数据;
[0058]发送模块,用于向所述第一端发送所述指定地址对应的数据。
[0059]结合第六方面,在第六方面的第一种实现方式中,所述处理模块具体用于:读取所述指定地址中每个地址对应的数据;
[0060]所述发送模块具体用于:向所述第一端发送所述指定地址中每个地址对应的数据。
[0061]结合第六方面,在第六方面的第二种实现方式中,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则
[0062]所述处理模块具体用于:读取所述指定地址中每个地址对应的数据;[0063]所述发送模块具体用于:向所述第一端发送所述指定地址中每个地址对应的数据。
[0064]结合第六方面,在第六方面的第三种实现方式中,所述装置还包括:
[0065]注册模块,在所述接收模块接收第一端发送的RDMA读取请求消息之前,用于对自身的内存区域向网卡进行注册。
[0066]第七方面,提供一种RDMA下数据写入的装置,所述装置包括:
[0067]处理模块,用于将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0068]发送模块,用于向所述第二端发送所述RDMA写入数据报文。
[0069]结合第七方面,在第七方面的第一种实现方式中,所述装置还包括:
[0070]获取模块,用于在所述处理模块将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中之前,获取所述第二端的内存区域的内存信息,其中,所述内存区域的内存信息包括:内存区域的地址信息和/或长度信息。
[0071]结合第七方面的第一种实现方式,在第七方面的第二种实现方式中,所述第二端的内存区域包括多个分散内存区域,所述获取模块具体用于:
[0072]获取所述第二端的内存区域中的每个分散内存区域的内存信息。
[0073]结合第七方面的第二种实现方式,在第七方面的第三种实现方式中,所述指定地址包括分布于所述多个分散内存区域中的多个地址。
[0074]结合第七方面,在第七方面的第四种实现方式中,所述装置还包括:
[0075]接收模块,用于在所述发送模块向所述第二端发送所述RDMA写入数据报文之后,接收所述第二端发送的指示成功写入的确认消息。
[0076]第八方面,提供一种RDMA下数据写入的装置,所述装置包括:
[0077]接收模块,用于接收第一端发送的RDMA写入数据报文,所述RDMA写入数据报文中携带需要写入数据的指定地址和所述指定地址对应的数据,所述指定地址为所述第二端的内存区域范围内分散的多个地址;
[0078]处理模块,用于在所述指定地址写入所述指定地址对应的数据。
[0079]结合第八方面,在第八方面的第一种实现方式中,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,
[0080]所述处理模块具体用于:在所述指定地址中的每一个地址写入该地址对应的数据。
[0081]第九方面,提供一种网络系统,所述网络系统包括上述第五方面中提到的任一种RDMA数据读取的装置和上述第六方面中提到的任一种RDMA数据读取的装置。
[0082]第十方面,提供一种网络系统,所述网络系统包括上述第七方面中提到的任一种RDMA数据写入的装置和上述第八方面中提到的任一种RDMA数据写入的装置。
[0083]采用上述技术方案后,本发明实施例提供的RDMA下数据读写的方法、装置和网络系统,第一端在进行RDMA读写操作时,能够将第二端的内存区域范围内需要读取数据的多个分散地址发送给第二端,由第二端执行对分散地址的数据的读写,实现RDMA下数据读写操作。【专利附图】

【附图说明】
[0084]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0085]图1是本发明实施例提供的一种RDMA下数据读取的方法的流程图;
[0086]图2是本发明实施例提供的另一种RDMA下数据读取的方法的流程图;
[0087]图3是本发明实施例提供的一种RDMA下数据写入的方法的流程图;
[0088]图4是本发明实施例提供的另一种RDMA下数据写入的方法的流程图;
[0089]图5是本发明一实施例提供的RDMA下数据读取的方法的示意图;
[0090]图6是本发明一实施例提供的RDMA下数据写入的方法的示意图;
[0091]图7a_7c是本发明实施例提供的RDMA下数据读取的装置的结构框图;
[0092]图8a_8b是本发明实施例提供的RD MA下数据读取的装置的结构框图;
[0093]图9a_9c是本发明实施例提供的RDMA下数据写入的装置的结构框图;
[0094]图10是本发明实施例提供的RDMA下数据写入的装置的结构框图。
【具体实施方式】
[0095]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0096]图1是本发明实施例提供的一种RDMA下数据读取的方法的流程图,参照图1,本发明实施例提供的RDMA下数据读取的方法包括:
[0097]11、第一端向第二端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址。
[0098]需要指出的是,本发明实施例中的第一端与第二端的地位对等,对它们进行区分只是为了便于描述。在本发明实施例中,所述第一端可以为客户端,所述第二端可以为服务端;反之,所述第一端也可以为服务端,所述第二端可以为客户端。
[0099]可选地,在本步骤11第一端向第二端发送RDMA读取请求消息之前,本发明实施例提供的RDMA下数据读取的方法还可包括:所述第一端获取所述第二端的内存区域的内存信息。其中,所述内存区域的内存信息可包括:内存区域的地址信息和/或长度信息。
[0100]进一步地,在所述第二端的内存区域包括多个分散内存区域时,所述第一端获取所述第二端的内存区域的内存信息可包括:
[0101]所述第一端获取所述第二端的内存区域中的每个分散内存区域的内存信息。
[0102]其中,本发明对具体如何获取所述第二端的内存区域的内存信息不作限定,任何通过第一端与第二端的交互获取所述第二端的内存区域的内存信息的方式均可以采用。
[0103]同时,在本步骤所述第一端向第二端发送RDMA读取请求消息之前,所述第一端还可以对自身的内存区域向网卡进行注册。
[0104]12、所述第一端接收所述第二端发送的、所述指定地址对应的数据。
[0105]其中,本步骤所述第一端接收所述第二端发送的、所述指定地址对应的数据可包括:所述第一端接收所述第二端发送的、所述指定地址中的每个地址对应的数据。[0106]当所述第二端中存在多个分散内存区域时,所述指定地址中的各个地址可能分别存在于不同的分散内存区域中,此时,所述指定地址中的每个地址对应的数据来自于各个不同分散内存区域中的数据。
[0107]此外,第一端向第二端发送的RDMA读取请求消息除了可携带所述指定地址外,还可以携带所述指定地址中每个地址对应的分散内存区域的内存信息。这样,第二端在获知所述指定地址中每个地址对应的分散内存区域的内存信息后,即可在相应的分散内存区域读取该地址对应的数据。
[0108]本发明实施例提供的RDMA下数据读取的方法,第一端在进行RDMA读取操作时,能够将所述第二端的内存区域范围内需要读取数据的多个分散地址发送给第二端,由第二端读取每个分散地址的数据,实现RDMA下数据读取操作。
[0109]图2是本发明实施例提供的另一种RDMA下数据读取的方法的流程图,参照图2,本发明实施例提供的RDMA下数据写入的方法包括:
[0110]21、第二端接收第一端发送的RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址。
[0111]其中,可选地,所述RDMA读取请求消息中还携带所述指定地址中每个地址对应的分散内存区域的内存信息。所述分散内存区域的内存信息可包括:分散内存区域的地址信息和/或长度信息。
[0112]同时,在步骤21所述第二端接收第一端发送的RDMA读取请求消息之前,所述第一端还可以对自身的内存区域向网卡进行注册。
[0113]22、所述第二端读取所述指定地址对应的数据。
[0114]其中,当所述分散的多个地址存在于所述第二端中的同一内存区域时,所述第二端读取所述指定地址对应的数据可包括:所述第二端读取所述指定地址中每个地址对应的数据。
[0115]在所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址时,步骤22可具体为:所述第二端读取所述指定地址中每个地址对应的数据,其中各个地址对应的数据可位于不同的分散内存区域中。
[0116]在所述RDMA读取请求消息中还携带所述指定地址中每个地址对应的分散内存区域的内存信息时,第二端可直接在每个地址对应的分散内存区域中读取该地址对应的数据。
[0117]23、所述第二端向所述第一端发送所述指定地址对应的数据。
[0118]其中,步骤23所述第二端向所述第一端发送所述指定地址对应的数据可包括:所述第二端向所述第一端发送所述指定地址中每个地址对应的数据。
[0119]在所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址时,本步骤23可具体为:所述第二端向所述第一端发送所述指定地址中每个地址对应的数据。其中,各个地址对应的数据可位于不同的分散内存区域中。
[0120]本发明实施例提供的RDMA下数据读取的方法,第一端在获取第二端的分散内存区域的内存信息后,进行RDMA读取操作时,能够将所述第二端的分散内存区域范围内需要读取数据的地址发送给第二端,由第二端读取该地址的数据,实现RDMA下数据读取操作。[0121]图3是本发明实施例提供的一种RDMA下数据写入的方法的流程图,参照图3,本发明实施例提供的RDMA下数据写入的方法包括:
[0122]31、第一端将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中,所述指定地址为所述第二端的内存区域范围内分散的多个地址。
[0123]其中,在本步骤31所述第一端将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中之前,所述第一端可获取所述第二端的内存区域的内存信息。其中,所述内存区域的内存信息可包括:内存区域的地址信息和/或长度信息。
[0124]进一步地,所述第二端的内存区域可包括多个分散内存区域,此时,所述第一端获取所述第二端的内存区域的内存信息可包括:
[0125]所述第一端获取所述第二端的内存区域中的每个分散内存区域的内存信息。
[0126]本发明对具体如何获取所述第二端的内存区域的内存信息不作限定,任何通过第一端与第二端的交互获取所述第二端的内存区域的内存信息的方式均可以采用。
[0127]可选地,在所述第二端中存在多个分散内存区域时,所述指定地址可包括分布于所述多个分散内存区域中的多个地址。
[0128]在本发明实施例中,所述RDMA写入数据报文中还可携带所述指定地址中每个地址对应的分散内存区域的内存信息。
[0129]同时,在本步骤31之前,第一端还可对自身的内存区域向网卡进行注册。
[0130]32、所述第一端向所述第二端发送所述RDMA写入数据报文。
[0131]在本步骤所述第一端向所述第二端发送所述RDMA写入数据报文之后,所述第一端可接收所述第二端发送的指示成功写入的确认消息。
[0132]本发明实施例提供的RDMA下数据写入的方法,第一端在进行RDMA写入操作时,能够将所述第二端的内存区域范围内需要写入数据的多个分散地址和相应的数据发送给第二端,由第二端在每个地址写入该地址相应的数据,实现RDMA下数据写入操作。
[0133]图4是本发明实施例提供的一种RDMA下数据写入的方法的流程图,参照图4,本发明实施例提供的RDMA下数据写入的方法包括:
[0134]41、第二端接收第一端建发送的RDMA写入数据报文,所述RDMA写入数据报文中携带需要写入数据的指定地址和所述指定地址对应的数据,所述指定地址为所述第二端的内存区域范围内分散的多个地址。
[0135]其中,在步骤41所述第二端接收第一端建发送的RDMA写入数据报文之前,所述第二端可对自身的内存区域进行注册。
[0136]42、所述第二端在所述指定地址写入所述指定地址对应的数据。
[0137]其中,在所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址时,步骤42中所述第二端在所述指定地址写入对应的数据可包括:所述第二端在所述指定地址中的每一个地址写入该地址对应的数据。其中,各个地址对应的数据可位于不同的分散内存区域中
[0138]在本发明实施例中,所述RDMA写入数据报文中还可携带所述指定地址中每个地址对应的分散内存区域的内存信息。其中,所述分散内存区域的内存信息可包括:分散内存区域的地址信息和/或长度信息。
[0139]本发明实施例提供的RDMA下数据写入的方法,第一端在进行RDMA写入操作时,能够将所述第二端的内存区域范围内需要写入数据的多个分散地址和相应的数据发送给第二端,由第二端在每个地址写入该地址相应的数据,实现RDMA下数据写入操作。
[0140]为了更好地理解本发明的技术方案,下面以客户端向服务端读取或写入分散内存地址为例,通过具体实施例对本发明进行进一步的阐述。
[0141]图5是本发明一实施例提供的RDMA下数据读取的方法的示意图。参照图5,本发明实施例提供的RDMA下数据读取的方法包括:
[0142]51、客户端通过ibv_reg_mr接口,指定addr参数,注册内存区域到网卡;服务端采用同样方式注册内存区域到网卡。
[0143]52、所述客户端获取所述服务端的内存区域的内存信息。其中,所述服务端的内存区域包括分散内存区域和连续内存区域,所述内存区域的内存信息包括:内存区域的地址信息和/或长度信息。本发明实施例中,客户端可通过各种不同的方式来获取服务端的内存区域的内存信息,包括但不限于,在所述客户端与服务端建立RDMA通信连接的过程中,所述客户端通过私有通道获取所述服务端中的内存区域的内存信息。
[0144]53、客户端向服务端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,其中,所述指定地址为所述服务端的内存区域范围内多个分散的地址。可选地,若服务端包括多个分散的内存区域,则所述指定地址可包括分布于所述多个分散内存区域中的多个地址。所述RDMA读取请求消息还可包括所述指定地址对应的分散内存区域的内存信息。
[0145]54、服务端接收客户端发送的RDMA读取请求消息,读取所述指定地址对应的数据,并向所述客户端发送所述指定地址对应的数据。具体地,所述服务端可读取所述指定地址中的每个地址对应的数据,并向客户端发送所述指定地址中的每个地址对应的数据。
[0146]其中,在本发明实施例中,若所述服务端中存在多个分散内存区域,所述指定地址可包括分布于所述多个分散内存区域中的多个地址。
[0147]若所述服务端中存在多个分散内存区域,且所述指定地址包括分布于所述多个分散内存区域中的多个地址,所述服务端读取所述指定地址对应的数据可具体为:所述服务端读取所述指定地址中每个地址对应的数据。同时,所述服务端向所述客户端发送所述指定地址对应的数据可具体为:所述服务端向所述客户端发送所述指定地址中每个地址对应的数据。
[0148]以客户端向服务端读取三个分散内存地址为例,RDMA读取请求消息的协议头可如下:
[0149]
【权利要求】
1.一种远程直接存储器访问RDMA下数据读取的方法,其特征在于,所述方法包括: 第一端向第二端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 所述第一端接收所述第二端发送的、所述指定地址对应的数据。
2.根据权利要求1所述的方法,其特征在于,在所述第一端向第二端发送RDMA读取请求消息之前,所述方法还包括: 所述第一端获取所述第二端的内存区域的内存信息,其中,所述内存信息包括:地址信息和/或长度信息。
3.根据权利要求2所述的方法,其特征在于,所述第二端的内存区域包括多个分散内存区域,所述第一端获取所述第二端的内存区域的内存信息包括: 所述第一端获取所述第二端的内存区域中的每个分散内存区域的内存信息。
4.根据权利要求3所述的方法,其特征在于,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则 所述第一端接收所述第二端发送的、所述指定地址对应的数据包括: 所述第一端接收所述第二端发送的、所述指定地址中的每个地址对应的数据。
5.根据权利要求1所述的方法,其特征在于,在所述第一端向第二端发送RDMA读取请求消息之前,所述方法还包括: 所述第一端对自身的内存区域向网卡进行注册。
6.一种远程直接存储器访问RDMA下数据读取的方法,其特征在于,所述方法包括: 第二端接收第一端发送的RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 所述第二端读取所述指定地址对应的数据; 所述第二端向所述第一端发送所述指定地址对应的数据。
7.根据权利要求6所述的方法,其特征在于,所述第二端读取所述指定地址对应的数据包括:所述第二端读取所述指定地址中每个地址对应的数据; 所述第二端向所述第一端发送所述指定地址对应的数据包括:所述第二端向所述第一端发送所述指定地址中每个地址对应的数据。
8.根据权利要求6所述的方法,其特征在于,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则 所述第二端读取所述指定地址对应的数据包括:所述第二端读取所述指定地址中每个地址对应的数据; 所述第二端向所述第一端发送所述指定地址对应的数据包括:所述第二端向所述第一端发送所述指定地址中每个地址对应的数据。
9.根据权利要求6所述的方法,其特征在于,在所述第二端接收第一端发送的RDMA读取请求消息之前,所述方法还包括: 所述第二端对自身的内存区域向网卡进行注册。
10.一种远程直接存储器访问RDMA下数据写入的方法,其特征在于,所述方法包括: 第一端将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中,所述指定地址为所述第二端的内存区域范围内分散的多个地址;所述第一端向所述第二端发送所述RDMA写入数据报文。
11.根据权利要求10所述的方法,其特征在于,在所述第一端将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中之前,所述方法还包括: 所述第一端获取所述第二端的内存区域的内存信息,其中,所述内存区域的内存信息包括:内存区域的地址信息和/或长度信息。
12.根据权利要求11所述的方法,其特征在于,所述第二端的内存区域包括多个分散内存区域,所述第一端获取所述第二端的内存区域的内存信息包括: 所述第一端获取所述第二端的内存区域中的每个分散内存区域的内存信息。
13.根据权利要求12所述的方法,其特征在于,所述指定地址包括分布于所述多个分散内存区域中的多个地址。
14.根据权利要求10所述的方法,其特征在于,在所述第一端向所述第二端发送所述RDMA写入数据报文之后, 所述方法还包括: 所述第一端接收所述第二端发送的指示成功写入的确认消息。
15.一种远程直接存储器访问RDMA下数据写入的方法,其特征在于,所述方法包括: 第二端接收第一端发送的RDMA写入数据报文,所述RDMA写入数据报文中携带需要写入数据的指定地址和所述指定地址对应的数据,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 所述第二端在所述指定地址写入所述指定地址对应的数据。
16.根据权利要求15所述的方法,其特征在于,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址, 所述第二端在所述指定地址写入对应的数据包括:所述第二端在所述指定地址中的每一个地址写入该地址对应的数据。
17.—种远程直接存储器访问RDMA下数据读取的装置,其特征在于,所述装置包括: 发送模块,用于向第二端发送RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 接收模块,用于接收所述第二端发送的、所述指定地址对应的数据。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括: 获取模块,用于在所述发送模块向第二端发送RDMA读取请求消息之前,获取所述第二端的内存区域的内存信息,其中,所述内存信息包括:地址信息和/或长度信息。
19.根据权利要求18所述的装置,其特征在于,所述第二端的内存区域包括多个分散内存区域,则所述获取模块具体用于: 获取所述第二端的内存区域中的每个分散内存区域的内存信息。
20.根据权利要求19所述的装置,其特征在于,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则 所述接收模块具体用于: 接收所述第二端发送的、所述指定地址中的每个地址对应的数据。
21.根据权利要求17所述的装置,其特征在于,所述装置还包括: 注册模块,用于在所述发送模块向第二端发送RDMA读取请求消息之前,对自身的内存区域向网卡进行注册。
22.—种远程直接存储器访问RDMA下数据读取的装置,其特征在于,所述装置包括: 接收模块,用于接收第一端发送的RDMA读取请求消息,所述RDMA读取请求消息中携带需要读取数据的指定地址,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 处理模块,用于读取所述指定地址对应的数据; 发送模块,用于向所述第一端发送所述指定地址对应的数据。
23.根据权利要求22所述的装置,其特征在于,所述处理模块具体用于:读取所述指定地址中每个地址对应的数据; 所述发送模块具体用于:向所述第一端发送所述指定地址中每个地址对应的数据。
24.根据权利要求22所述的装置,其特征在于,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,则 所述处理模块具体用于:读取所述指定地址中每个地址对应的数据; 所述发送模块具体用于:向所述第一端发送所述指定地址中每个地址对应的数据。
25.根据权利要求22所述的装置,其特征在于,所述装置还包括: 注册模块,在所述接收模块接收第一端发送的RDMA读取请求消息之前,用于对自身的内存区域向网卡进行注册。
26.—种远程直接存储器访问RDMA下数据写入的装置,其特征在于,所述装置包括: 处理模块,用于将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 发送模块,用于向所述第二端发送所述RDMA写入数据报文。
27.根据权利要求26所述的装置,其特征在于,所述装置还包括: 获取模块,用于在所述处理模块将需要写入数据的指定地址和所述指定地址对应的数据封装在RDMA写入数据报文中之前,获取所述第二端的内存区域的内存信息,其中,所述内存区域的内存信息包括:内存区域的地址信息和/或长度信息。
28.根据权利要求27所述的装置,其特征在于,所述第二端的内存区域包括多个分散内存区域,所述获取模块具体用于: 获取所述第二端的内存区域中的每个分散内存区域的内存信息。
29.根据权利要求28所述的装置,其特征在于,所述指定地址包括分布于所述多个分散内存区域中的多个地址。
30.根据权利要求26所述的装置,其特征在于,所述装置还包括: 接收模块,用于在所述发送模块向所述第二端发送所述RDMA写入数据报文之后,接收所述第二端发送的指示成功写入的确认消息。
31.一种远程直接存储器访问RDMA下数据写入的装置,其特征在于,所述装置包括: 接收模块,用于接收第一端发送的RDMA写入数据报文,所述RDMA写入数据报文中携带需要写入数据的指定地址和所述指定地址对应的数据,所述指定地址为所述第二端的内存区域范围内分散的多个地址; 处理模块,用于在所述指定地址写入所述指定地址对应的数据。
32.根据权利要求31所述的装置,其特征在于,所述第二端中存在多个分散内存区域,所述指定地址包括分布于所述多个分散内存区域中的多个地址,所述处理模块具体用于:在所述指定地址中的每一个地址写入该地址对应的数据。
33.一种网络系统,其特征在于,包括权利要求17-21中任一项所述的远程直接存储器访问RDMA下数据读取的装置和权利要求22-25中任一项所述的RDMA下数据读取的装置。
34.一种网络系统, 其特征在于,包括权利要求26-30中任一项所述的远程直接存储器访问RDMA下数据写入的装置和权利要求31-32中任一项所述的RDMA下数据写入的装置。
【文档编号】H04L29/12GK103929415SQ201410108028
【公开日】2014年7月16日 申请日期:2014年3月21日 优先权日:2014年3月21日
【发明者】孙群虎, 袁学文 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1