一种rdma实现方法和装置的制造方法
【技术领域】
[0001 ]本发明涉及通信技术领域,尤其涉及一种远程直接内存访问(Remote DirectMemory Access,RDMA)实现方法和装置。
【背景技术】
[0002]RDMA技术是一种新的高性能的数据传输技术,带宽高、时延低,且CPU占用率低。目前RDMA技术中,发送端向接收端写入数据时,为了确保数据写入的完成情况,往往会向接收端发送RDMA写(WRITE)命令和RDMA读(READ)命令,其中,RDMA WRITE命令实现向接收端的存储器内写入数据,而RDMA READ命令是读取RDMA WRITE命令写入的存储位置的数据,发送端再将读取到的数据与写入的数据进行比较,以完成数据的写入。可见,目前RDMA技术中写入一个数据时往往需要传输两个消息,这会使得时延较长,而且网络带宽消耗较多。
【发明内容】
[0003]本发明实施例提供了一种RDMA实现方法和装置,可以降低时延和减少网络带宽消耗。
[0004]第一方面,本发明实施例提供一种RDMA实现方法,包括:
[0005]接收发送端发送的携带有数据的写请求;
[0006]响应所述写请求,将所述数据写入存储器中;
[0007]在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。
[0008]该实现方式中,可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。
[0009]在第一方面的第一种可能的实现方式中,所述方法还可以包括如下步骤:
[0010]在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容;
[0011 ]判断所述读取内容是否为所述数据,若是,则执行向所述发送端发送携带有所述写请求的请求完成状态的响应消息的步骤,且所述请求完成状态包括数据写入成功状态;
[0012]若所述读取内容不为所述数据时,则执行向所述发送端发送携带有所述写请求的请求完成状态的响应消息的步骤,且所述请求完成状态包括数据写入失败状态。
[0013]该实现方式中,可以实现将写入的内容读取再进行判断,从而可以实现向发送端发送写入成功或者写入失败的响应消息。
[0014]结合第一方面的第一种可能的实现方式,第一方面的第二种可能的实现方式中,上述写请求还可以携带有循环冗余校验(Cyclic Redundancy Check,CRC)值;
[0015]上述判断所述读取内容是否为所述数据的步骤,可以包括:
[0016]计算所述读取内容的CRC值,并将所述计算的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,则确定所述读取内容为所述数据,当比较不一致时,则所述读取内容不为所述数据。
[0017]该实现方式中,可以实现使用CRC校验数据是否写入成功。
[0018]结合第一方面的上述任一种实现方式,在第一方面的第三种可能的实现方式中,上述写请求还可以携带有CRC值;
[0019]所述响应所述写请求,将所述数据写入存储器中,包括:
[0020]使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0021]该实现方式中,可以实现在将数据写入存储器前,对数据进行CRC校验,以防止向存储器中写入错误的数据。
[0022]第二方面,本发明实施例提供一种RDMA实现方法,包括:
[0023]向接收端发送携带有数据的写请求;
[0024]接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。
[0025]该实现方式中,可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。
[0026]在第二方面的第一种可能的实现方式中,上述写请求还可以携带有CRC值,以使所述接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容,并由所述接收端将所述读取内容的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,所述请求完成状态包括数据写入成功状态,当比较不一致时,所述请求完成状态包括数据写入失败状态。
[0027]结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第一种可能的实现方式中,所述写请求还可以携带有CRC值,以使所述接收端在接收到所述写请求时,使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0028]第三方面,本发明实施例提供一种RDMA实现装置,该接收机被配置实现第一方面提供的方法的功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。
[0029]第四方面,本发明实施例提供一种RDMA实现装置,该接收机被配置实现第二方面提供的方法的功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。
【附图说明】
[0030]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031 ]图1是本发明实施例提供的RDMA实现方法可应用的系统架构图;
[0032]图2是本发明实施例提供的RDMA实现方法可应用的另一种系统架构图;
[0033]图3是本发明实施例提供的一种RDMA实现方法的流程示意图;
[0034]图4是本发明实施例提供的另一种RDMA实现方法的流程示意图;
[0035]图5是本发明实施例提供的另一种RDMA实现方法的流程示意图;
[0036]图6是本发明实施例提供的另一种RDMA实现方法的流程示意图;
[0037]图7是本发明实施例提供的一种RDMA实现装置的结构示意图;
[0038]图8是本发明实施例提供的另一种RDMA实现装置的结构不意图;
[0039]图9是本发明实施例提供的另一种RDMA实现装置的结构不意图;
[0040]图10是本发明实施例提供的另一种RDMA实现装置的结构不意图;
[0041 ]图11是本发明实施例提供的另一种RDMA实现装置的结构示意图。
【具体实施方式】
[0042]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]请参阅图1,图1是本发明实施例提供的RDMA实现方法可应用的系统架构图,如图1所示,包括发送端11、交换机12和接收端13,其中,上述发送端11和接收端13可以是具备RDMA功能的芯片、计算机、电板板或者服务器等装置。另外,发送端11可以是通过交换机12与接收端13连接,但本发明实施例中,发送端11通过交换机12与接收端13连接并不是必要的,例如:发送端11也可以通过线缆与接收端13直连。另外,上述交换机可以是无限带宽(Infiniband,IB)交换机或者以太网交换机。
[0044]另外,如图2所示,上述发送端11和接收端13可以包括处理器、存储器、支持RDMA的网络接口控制器(RDMA-aware Network Interface Controller,RNIC)以及应用程序。
[0045]其中,处理器可以是CPU或者是特定集成电路(App 1 i cat 1n SpecificIntegrated Circuit,ASIC),或者是一个或多个集成电路,用于执行操作系统与应用程序。本发明实施例中,在发送端11中处理器接收到执行应用程序的命令以后,可以把写命令(例如:WRITE_VERIFY命令)和数据下发给RNIC,RNIC再发往位于网络中的IB交换机。
[0046]RNIC可以是支持IB协议或者RoCE协议的,RNIC可以是IB接口卡或RoCE接口卡或者iWAP接口卡,或是支持IB协议或RoCE协议或者iWAP协议的集成电路,用于接收RDMA命令,并发送到网络中,以及接收网络中的RMDA消息,执行相应的RDMA消息。
[0047]存储器可以理解
为内存,用于存放数据和程序,可以是一个或多个集成电路或内存条。
[0048]应用程序可以是处理器上运行的应用程序,例如:数据库应用程序、存储应用程序、商业分析应用程序、高性能计算应用程序等等。
[0049]请参阅图3,图3是本发明实施例提供的一种RDMA实现方法的流程示意图,如图3所示,包括以下步骤:
[0050]301、发送端向接收端发送携带有数据的写请求。
[0051]上述写请求可以是理解为发送端向接收端发送用于请求将所述数据写入接收端的存储器的请求消息。另外,上述写请求可以包括写命令和数据。
[0052]该步骤可以是发送端的应用程序产生写请求,应用程序将写请求提交给发送端的RNIC,RNIC再向接收端发送该写请求。
[0053]302、接收端接收发送端发送的携带有数据的写请求。
[0054]该步骤可以是接收端的RNIC接收发送端发送的写请求。
[0055]303、接收端响应所述写请求,将所述数据写入存储器中。
[0056]接收端接收到上述写请求后,就可以获取上述数据,从而可以将该数据写入存储器中。例如:接收端的RNIC通过直接内存访问(Direct Memory Access,DMA)方法将数据写入存储器中。
[0057]304、接收端在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。
[0058]在数据写入到存储器中后,就可以向发送端返回上述响应消息,以告诉发送端请求完成状态。该步骤可以是接收端的RNIC向发送端发送上述响应消息。另外,上述请求完成状态可以包括写入成功状态或者写入失败状态。
[0059]305、发送端接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。
[0000]该步骤可以是发送端的RNIC接收上述响应消息。另外,发送端的RNIC接收到上述响应消息后,还可以将该响应消息传输给应用程序,以通知应用程序接收端针对写请求的请求完成状态。
[0061 ] 另外,本实施例中,上述写请求可以理解为RDMA WRITE命令。
[0062]本实施例中,通过上述步骤可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。
[0063]请参阅图4,图4是本发明实施例提供的另一种RDMA实现方法的流程示意图,如图4所示,包括以下步骤:
[0064]401、发送端向接收端发送携带有数据的写请求。
[0065]402、接收端接收发送端发送的携带有数据的写请求。
[0066]403、接收端响应所述写请求,将所述数据写入存储器中。
[0067]本实施例中,上述写请求还可以携带有CRC值,其中,该CRC值是发送端对写请求携带的数据进行运算得到的CRC值,这样通过该CRC值可以校验写请求的传输过程携带的数据是否损坏或者在接收端进行写操作时是否损坏等。该实现方式中,步骤403可以包括:
[0068]使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0069]该实施方式中,可以实现使用写请求携带的CRC值对写请求携带的数据进行CRC校验,以校验接收端获取的数据是否与发送端发送的数据一致,若校验通过则将所述数据写入存储器中,以防止向存储器中写入错误的数据。即发送端发送的写请求携带有CRC值可以使接收端在接收到所述写请求时,使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0070]另外,该实施方式中,当数据写入存储器中后,可以直接向发送端发送响应消息,因为写入操作往往都是可靠,这样可以不执行步骤404和405,直接向发送端发送响应消息。
[0071]另外,该实施方式的实现过程还可以参考图5,如图5所示,包括以下步骤:
[0072]4501、发送端的应用程序产生写请求并把写请求提交给发送端的RNIC。
[0073]4502、发送端的RNIC把写请求传送到接收端RNIC。
[0074]4503、接收端的RNIC接收到写请求后,进行CRC校验,校验通过后,按照请求执行写入操作,把数据通过DMA方法写入接收端存储器。
[0075]4504、接收端的RNIC完成把数据写入接收端存储器后,向发送端RNIC发送响应消息,其中该响应消息携带请求完成状态,这里请求完成状态包括写入成功状态或者写入失败状态。
[0076]4505、发送端的RNIC通知发送端的应用程序写完成,该写完成的通知消息携带请求完成状态。
[0077]404、接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容。
[0078]由于步骤403将上述数据写存储器中,这样接收端知道该数据写入的存储位置,从而步骤404可以是在数据写入后,在数据被写入的存储位置中执行读取操作,以获取读取内容。
[0079]该步骤中可以是接收端的RNIC从在数据被写入的存储位置中执行读取操作,以获取读取内容。
[0080]405、判断所述读取内容是否为所述数据,若是,则执行步骤406,若否,则执行步骤407。
[0081]该步骤可以是将读取内容与写请求携带的数据直接进行比较,以判断所述读取内容是否为所述数据。或者该步骤可以对读取内容进行校验,校验读取内容是为写请求携带的数据。
[0082]本实施例中,上述写请求还可以携带有CRC值,其中,该CRC值是发送端对写请求携带的数据进行运算得到的CRC值,这样通过该CRC值可以校验写请求的传输过程携带的数据是否损坏或者在接收端进行写操作时是否损坏等。该实施方式中,步骤405可以包括:
[0083]计算所述读取内容的CRC值,并将所述计算的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,则确定所述读取内容为所述数据,当比较不一致时,则所述读取内容不为所述数据。
[0084]该实施方式中,可以通过CRC校验,以确定针对写请求的写入是否写入成功,即发送端通过写请求携带上述CRC值可以使所述接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容,并由所述接收端将所述读取内容的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,向发送端发送所述请求完成状态包括数据写入成功状态的响应消息,当比较不一致时,向发送端发送所述请求完成状态包括数据写入失败状态的响应消息。
[0085]另外,该实施方式的实现过程还可以参考图6,如图6所示,包括以下步骤:
[0086]4601、发送端的应用程序产生写请求并把写请求提交给发送端的RNIC。
[0087]4602、发送端的RNIC把写请求发送到接收端RNIC。
[0088]4603、接收端的RNIC接收到写请求后,进行CRC校验,校验通过后,按照请求执行写入操作,把数据通过DMA方法写入接收端存储器。
[0089]4604、接收端的RNIC完成把数据写入接收端存储器后,通过DMA方法从接收端存储器(写入位置)中读出数据。
[0090]4605、接收端的RNIC从接收端存储器中读出的数据后,计算读出数据的CRC值。
[0091]4606、接收端的RNIC比较步骤4605中计算得到的CRC值和步骤4602中接收到的写请求中携带的CRC值。
[0092]4607、接收端的RNIC向发送端的RNIC发送响应消息,其中携带请求完成状态,其中,如果步骤4606中CRC值比较相等,则该请求完成状态为成功,否则请求完成状态为失败。
[0093]4608、发送端的RNIC通知发送端的应用程序写完成,该写完成的通知消息携带请求完成状态。
[0094]406、接收端向所述发送端发送携带有所述写请求的请求完成状态的响应消息,该请求完成状态包括数据写入成功状态。
[0095]通过步骤406就可以实现当上述数据写入成功时,接收端向发送端发送包括数据写入成功状态响应消息。
[0096]407、接收端向所述发送端发送携带有所述写请求的请求完成状态的响应消息骤,该请求完成状态包括数据写入失败状态。
[0097]408、发送端接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息。
[0098]另外,本实施例中,接收端还可以记录发送端发送的写请求的成功或者失败记录,这样在执行步骤402之后与执行步骤403之前,可以识别发送端
发送的写请求的历史成功或者失败记录,当发送端的成功率大于特定阈值时,就可以不执行步骤403和步骤404,直接向发送端发送上述响应消息,该响应消息包括写入成功状态,这样提高写数据的效率,因为在实际应用中写入操作往往是可靠的。
[0099]本实施例中,在图3所示的实施例的基础上增加了多种可选的实施方式,且都可以实现可以降低时延和减少网络带宽消耗。
[0100]下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至二实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一和实施例二。
[0101 ]请参阅图7,图7是本发明实施例提供的一种RDMA实现装置的结构示意图,如图7所示,包括:接收单元71、响应单元72和发送单元73,其中:
[0102]接收单元71,用于接收发送端发送的携带有数据的写请求。
[0103]上述写请求可以是理解为发送端向接收端发送用于请求将所述数据写入接收端的存储器的请求消息。另外,上述写请求可以包括写命令和数据。
[0104]另外,接收单元71可以是接收端的RNIC接收发送端发送的写请求。
[0105]响应单元72,用于响应所述写请求,将所述数据写入存储器中。
[0106]接收端接收到上述写请求后,就可以获取上述数据,从而可以将该数据写入存储器中。例如:响应单元72通过接收端的RNIC通过DMA方法将数据写入存储器中。
[0107]发送单元73,用于在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。
[0108]在数据写入到存储器中后,就可以向发送端返回上述响应消息,以告诉发送端请求完成状态。发送单元73可以是接收端的RNIC向发送端发送上述响应消息。另外,上述请求完成状态可以包括写入成功状态或者写入失败状态。
[0109]本实施例中,如图8所示,上述装置还可以包括:
[0110]读取单元74,用于在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容;
[0111]判断单元75,用于判断所述读取内容是否为所述数据;
[0112]发送单元73可以用于在所述判断单元75判断所述读取内容为所述数据时,向所述发送端发送携带有所述写请求的请求完成状态的响应消息,且所述请求完成状态包括数据写入成功状态;
[0113]所述发送单元73还用于在所述判断单元75判断所述读取内容不为所述数据时,向所述发送端发送携带有所述写请求的请求完成状态的响应消息,且所述请求完成状态包括数据写入失败状态。
[0114]判断单元75可以是将读取内容与写请求携带的数据直接进行比较,以判断所述读取内容是否为所述数据。或者该步骤可以对读取内容进行校验,校验读取内容是为写请求携带的数据。
[0115]该实施方式中,上述写请求还可以携带有CRC值;
[0116]判断单元75可以用于计算所述读取内容的CRC值,并将所述计算的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,则确定所述读取内容为所述数据,当比较不一致时,则所述读取内容不为所述数据。
[0117]该实施方式中,可以通过CRC校验,以确定针对写请求的写入是否写入成功。
[0118]本实施例中,上述写请求还可以携带有CRC值;
[0119]所述响应单元72可以用于使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0120]该实施方式中,可以通过该CRC值可以校验写请求的传输过程携带的数据是否损坏或者在接收端进行写操作时是否损坏等。
[0121]需要说明的是,本实施例提供的装置可以应用于图1-图6所示的实施例中的接收端,且图1-图6所示的实施例中提供的接收端的任意实施方式都可以被该装置的实施。
[0122]本实施例中,接收发送端发送的携带有数据的写请求;响应所述写请求,将所述数据写入存储器中;在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。这样可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。
[0123]请参阅图9,图9是本发明实施例提供的另一种RDMA实现装置的结构示意图,如图9所示,包括:发送单元91和接收单元92,其中:
[0124]发送单元91,用于向接收端发送携带有数据的写请求。
[0125]上述写请求可以是理解为发送端向接收端发送用于请求将所述数据写入接收端的存储器的请求消息。另外,上述写请求可以包括写命令和数据。
[0126]发送单元91可以是发送端的应用程序产生写请求,应用程序将写请求提交给发送端的RNIC,RNIC再向接收端发送该写请求。
[0127]接收单元92,用于接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。
[0128]接收单元92可以是发送端的RNIC接收上述响应消息。另外,发送端的RNIC接收到上述响应消息后,还可以将该响应消息传输给应用程序,以通知应用程序接收端针对写请求的请求完成状态。
[0129]本实施例中,上述写请求还可以携带有CRC值,以使所述接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容,并由所述接收端将所述读取内容的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,所述请求完成状态包括数据写入成功状态,当比较不一致时,所述请求完成状态包括数据写入失败状态。
[0130]该实施方式中,通过该CRC值可以校验数据写入接收端的存储器是否成功。
[0131]本实施例中,上述写请求还可以携带有CRC值,以使所述接收端在接收到所述写请求时,使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0132]该实施方式中,通过该CRC值可以校验写请求的传输过程携带的数据是否损坏或者在接收端进行写操作时是否损坏等。
[0133]需要说明的是,本实施例提供的装置可以应用于图1-图6所示的实施例中的发送端,且图1-图6所示的实施例中提供的发送端的任意实施方式都可以被该装置的实施。
[0134]本实施例中,向接收端发送携带有数据的写请求;接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。这样可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。
[0135]请参阅图10,图10是本发明实施例提供的另一种RDMA实现装置的结构示意图,如图10所示,包括:处理器101、存储器102、RNIC103和通信总线104,其中,通过总线104用于实现处理器101、存储器102和RNIC103之间连接通信,所述处理器101执行所述存储器102中存储的程序用于实现以下方法:
[0136]接收发送端发送的携带有数据的写请求;
[0137]响应所述写请求,将所述数据写入存储器中;
[0138]在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。
[0139]本实施例中,处理器101执行的程序还可以包括:
[0140]在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容;
[0141 ]判断所述读取内容是否为所述数据,若是,则执行向所述发送端发送携带有所述写请求的请求完成状态的响应消息的步骤,且所述请求完成状态包括数据写入成功状态;
[0142]若所述读取内容不为所述数据时,则执行向所述发送端发送携带有所述写请求的请求完成状态的响应消息的步骤,且所述请求完成状态包括数据写入失败状态。
[0143]该实施方式中,上述写请求还可以携带有循环冗余校验CRC值;
[0144]处理器101执行判断所述读取内容是否为所述数据的程序,可以包括:
[0145]计算所述读取内容的CRC值,并将所述计算的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,则确定所述读取内容为所述数据,当比较不一致时,则所述读取内容不为所述数据。
[0146]本实施例中,上述写请求还可以携带有CRC值;
[0147]处理器101执行的响应所述写请求,将所述数
据写入存储器中的程序,可以包括:
[0148]使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0149]需要说明的是,本实施例提供的装置可以应用于图1-图6所示的实施例中的接收端,且图1-图6所示的实施例中提供的接收端的任意实施方式都可以被该装置的实施。
[0150]本实施例中,接收发送端发送的携带有数据的写请求;响应所述写请求,将所述数据写入存储器中;在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。这样可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。[0151 ]请参阅图11,图11是本发明实施例提供的另一种RDMA实现装置的结构示意图,如图11所示,包括:处理器111、存储器112、RNIC113和通信总线114,其中,通过总线114用于实现处理器111、存储器112和RNIC113之间连接通信,所述处理器111执行所述存储器112中存储的程序用于实现以下方法:
[0152]向接收端发送携带有数据的写请求;
[0153]接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。
[0154]本实施例中,上述写请求还可以携带有CRC值,以使所述接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容,并由所述接收端将所述读取内容的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,所述请求完成状态包括数据写入成功状态,当比较不一致时,所述请求完成状态包括数据写入失败状态。
[0155]本实施例中,上述写请求还可以携带有CRC值,以使所述接收端在接收到所述写请求时,使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
[0156]需要说明的是,本实施例提供的装置可以应用于图1-图6所示的实施例中的发送端,且图1-图6所示的实施例中提供的发送端的任意实施方式都可以被该装置的实施。
[0157]本实施例中,向接收端发送携带有数据的写请求;接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。这样可以实现通过传输一个写请求和一个响应消息就可以完成数据写入,从而相比现有技术传输写请求和读请求,可以降低时延和减少网络带宽消耗。
[0158]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,简称RAM)等。
[0159]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【主权项】
1.一种远程直接内存访问RDMA实现方法,其特征在于,包括: 接收发送端发送的携带有数据的写请求; 响应所述写请求,将所述数据写入存储器中; 在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。2.如权利要求1所述的方法,其特征在于,所述方法还包括: 在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容; 判断所述读取内容是否为所述数据,若是,则执行向所述发送端发送携带有所述写请求的请求完成状态的响应消息的步骤,且所述请求完成状态包括数据写入成功状态; 若所述读取内容不为所述数据时,则执行向所述发送端发送携带有所述写请求的请求完成状态的响应消息的步骤,且所述请求完成状态包括数据写入失败状态。3.如权利要求2所述的方法,其特征在于,所述写请求还携带有循环冗余校验CRC值; 所述判断所述读取内容是否为所述数据,包括: 计算所述读取内容的CRC值,并将所述计算的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,则确定所述读取内容为所述数据,当比较不一致时,则所述读取内容不为所述数据。4.如权利要求1-3中任一项所述的方法,其特征在于,所述写请求还携带有CRC值; 所述响应所述写请求,将所述数据写入存储器中,包括: 使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。5.一种RDMA实现方法,其特征在于,包括: 向接收端发送携带有数据的写请求; 接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。6.如权利要求5所述的方法,其特征在于,所述写请求还携带有CRC值,以使所述接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容,并由所述接收端将所述读取内容的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,所述请求完成状态包括数据写入成功状态,当比较不一致时,所述请求完成状态包括数据写入失败状态。7.如权利要求5或6所述的方法,其特征在于,所述写请求还携带有CRC值,以使所述接收端在接收到所述写请求时,使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。8.一种RDMA实现装置,其特征在于,包括:接收单元、响应单元和发送单元,其中: 所述接收单元,用于接收发送端发送的携带有数据的写请求; 所述响应单元,用于响应所述写请求,将所述数据写入存储器中; 所述发送单元,用于在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。9.如权利要求8所述的装置,其特征在于,所述装置还包括: 读取单元,用于在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容; 判断单元,用于判断所述读取内容是否为所述数据; 所述发送单元用于在所述判断单元判断所述读取内容为所述数据时,向所述发送端发送携带有所述写请求的请求完成状态的响应消息,且所述请求完成状态包括数据写入成功状态; 所述发送单元还用于在所述判断单元判断所述读取内容不为所述数据时,向所述发送端发送携带有所述写请求的请求完成状态的响应消息,且所述请求完成状态包括数据写入失败状态。10.如权利要求9所述的装置,其特征在于,所述写请求还携带有CRC值; 所述判断单元用于计算所述读取内容的CRC值,并将所述计算的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,则确定所述读取内容为所述数据,当比较不一致时,则所述读取内容不为所述数据。11.如权利要求8-10中任一项所述的装置,其特征在于,所述写请求还携带有CRC值; 所述响应单元用于使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。12.一种RDMA实现装置,其特征在于,包括:发送单元和接收单元,其中: 所述发送单元,用于向接收端发送携带有数据的写请求; 所述接收单元,用于接收所述接收端发送的携带有所述写请求的请求完成状态的响应消息,其中,所述响应消息是所述接收端在响应所述写请求将所述数据写入到存储器后发送的。13.如权利要求12所述的装置,其特征在于,所述写请求还携带有CRC值,以使所述接收端在所述数据写入到所述存储器后,在所述数据被写入的存储位置中执行读取操作,以获取读取内容,并由所述接收端将所述读取内容的CRC值与所述写请求携带的CRC值进行比较,当比较一致时,所述请求完成状态包括数据写入成功状态,当比较不一致时,所述请求完成状态包括数据写入失败状态。14.如权利要求12或13所述的装置,其特征在于,所述写请求还携带有CRC值,以使所述接收端在接收到所述写请求时,使用所述CRC值对所述数据进行CRC校验,当校验通过时将所述数据写入存储器中。
【专利摘要】本发明实施例公开了一种RDMA实现方法和装置,该方法可包括:接收发送端发送的携带有数据的写请求;响应所述写请求,将所述数据写入存储器中;在所述数据写入到所述存储器后,向所述发送端发送携带有所述写请求的请求完成状态的响应消息。本发明实施例可以降低时延和减少网络带宽消耗。
【IPC分类】G06F11/10
【公开号】CN105487937
【申请号】CN201510853635
【发明人】张粤
【申请人】华为技术有限公司
【公开日】2016年4月13日
【申请日】2015年11月27日