掌桥专利:专业的专利平台
掌桥专利
首页

RDMA网络传输方法、装置以及RDMA网络通信系统

文献发布时间:2023-06-19 12:19:35


RDMA网络传输方法、装置以及RDMA网络通信系统

技术领域

本说明书实施例涉及计算机技术领域,特别涉及一种RDMA网络传输方法。本说明书一个或者多个实施例同时涉及一种RDMA网络传输装置,一种计算设备,一种计算机可读存储介质以及RDMA网络通信系统。

背景技术

随着存储介质的发展和云存储产品需求的不断演变,低延迟高性能的存储网络成为分布式存储的痛点。传统TCP无法满足这样的网络需求,为了解决网络瓶颈,RDMA(RemoteDirect Access Memory)技术被广泛采用。

市面上成熟部署的RDMA方案必须要基于无损(lossless)网络,利用点到点的PFC协议(Priority Flow Control,逐跳反压的网络技术)来保证以太网无丢包,这在限制RDMA的规模的同时也给运维带来了很大困难和一定风险开销。

发明内容

有鉴于此,本说明书实施例提供了一种RDMA网络传输方法。本说明书一个或者多个实施例同时涉及一种RDMA网络传输方法装置,一种计算设备,一种计算机可读存储介质,以及RDMA网络通信系统,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种RDMA网络传输方法,包括:获取RDMA网络的拥塞信号;利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片;通过所述RDMA网络,发送所述若干个数据分片;获取被发送的数据分片的可靠性信号;通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

可选地,所述通过RDMA网络,发送所述若干个数据分片包括:通过RDMA网络的不可靠连接,发送所述若干个数据分片。

可选地,所述获取RDMA网络的拥塞信号包括:获取RTT信号和/或可用的拥塞窗口大小作为拥塞信号。

可选地,所述利用拥塞信号确定的粒度切分数据,得到若干个数据分片包括:将获取的可用的拥塞窗口大小与当前数据分片大小比较,确定其中的较小者;根据其中的较小者确定切分数据的粒度;使用确定的粒度切分数据,得到若干个数据分片。

可选地,所述获取RTT信号包括:利用RDMA网卡的硬件事件时钟提供的时间戳,测量RTT信号。

可选地,所述利用RDMA网卡提供的时间戳,测量RTT信号包括:从数据完成队列中获取携带了RDMA网卡提供的时间戳的完成事件,所述完成事件包括:发送方的RDMA网卡在发送数据完成后产生并写入数据完成队列的完成事件以及由接收方的RDMA网卡在接收数据完成后产生并写入所述数据完成队列的完成事件;根据所述完成事件携带的时间戳,更新RTT信号。

可选地,所述通过RDMA网络,发送所述若干个数据分片包括:基于预设的拥塞控制机制,确定用于控制注入所述RDMA网络的数据量的拥塞窗口和/或速率;根据所述拥塞窗口和/或速率,发送所述若干个数据分片。

可选地,所述通过RDMA网络,发送所述若干个数据分片包括:获取配置信息,所述配置信息包括:RDMA Send方式对应的数据大小范围和/或RDMA write方式对应的数据大小范围;根据数据分片的大小在所述配置信息中对应的发送方式,发送所述若干个数据分片。

根据本说明书实施例的第二方面,提供了一种RDMA网络传输装置,包括:拥塞信号获取单元,被配置为获取RDMA网络的拥塞信号。数据切分单元,被配置为利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片。分片发送单元,被配置为通过所述RDMA网络,发送所述若干个数据分片。可靠信号获取单元,被配置为获取被发送的数据分片的可靠性信号。重传单元,被配置为通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:获取RDMA网络的拥塞信号;利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片;通过所述RDMA网络,发送所述若干个数据分片;获取被发送的数据分片的可靠性信号;通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现本说明书任意实施例所述一种RDMA网络传输方法的步骤。

根据本说明书实施例的第五方面,提供了一种RDMA网络通信系统,包括:RDMA网卡,被配置为进行数据报组包和/或分流、封装RDMA Write以及提供硬件事件时钟。数据切片模块,被配置为获取RDMA网络的拥塞信号,利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片,通过所述RDMA网卡发送所述数据分片。拥塞控制模块,被配置为基于拥塞控制机制确定拥塞信号以及控制参数,所述控制参数用于控制注入所述RDMA网络的数据量。可靠性模块,被配置为获取被发送的数据分片的可靠性信号,通过所述RDMA网卡,重新发送根据所述可靠性信号确定的需要重传的数据分片。

可选地,所述RDMA网卡,用于通过不可靠连接,发送数据分片。

可选地,所述数据切片模块,被配置为获取RTT信号和/或可用的拥塞窗口大小作为拥塞信号。

可选地,所述数据切片模块包括:自适应调整模块,被配置为将获取的可用的拥塞窗口大小与当前数据分片大小比较,确定其中的较小者,根据其中的较小者确定切分数据的粒度。分片引擎模块,被配置为使用确定的粒度切分数据,得到若干个数据分片。

可选地,所述拥塞控制模块包括:RTT测量模块,被配置为基于所述RDMA网卡的硬件事件时钟提供的时间戳,测量RTT信号。Timely拥塞控制模块,被配置为基于延迟的拥塞控制协议,根据RTT信号确定控制参数,所述控制参数包括用于控制注入所述RDMA网络的数据量的拥塞窗口和/或速率。

可选地,所述可靠性模块,包括:数据分片重传模块,被配置为重新发送根据可靠性信号确定的需要重传的数据分片。ACK聚合模块,被配置为基于累计ACK机制,获取被发送的数据分片的可靠性信号。

本说明书一个实施例实现了RDMA网络传输方法,由于该方法获取RDMA网络的拥塞信号,利用拥塞信号确定的粒度切分数据,从而能够根据网络状态动态确定数据分片大小,如在网络繁忙拥塞严重的情况下采用细粒度切分,反之则采用较大粒度的数据切分,实现IO控制粒度和软件开销的平衡,并且该方法在通过RDMA网络,发送若干个数据分片之后,获取被发送的数据分片的可靠性信号,重新发送根据可靠性信号确定的需要重传的数据分片,保证数据无丢包,因此,该方法兼顾了RDMA的软件开销和丢包性能,不依赖于PFC协议来保证无丢包,实现了高性能、低开销、对硬件依赖低、对丢包强抵抗的目的。

本说明书另一个实施例实现了RDMA网络通信系统,在该RDMA网络通信系统中,通过数据切片模块以及拥塞控制模块实现了IO控制粒度和软件开销的平衡,通过可靠性模块保证数据无丢包,因此,该RDMA网络通信系统在RDMA网卡硬件的基础上,通过软硬结合的方式构成基本数据通路,不依赖于PFC协议来保证无丢包,实现了高性能、低开销、对硬件依赖低、对丢包强抵抗的目的。

附图说明

图1是本说明书一个实施例提供的一种RDMA网络传输方法的流程图;

图2是本说明书一个实施例提供的拥塞控制模块的机制示意图;

图3是本说明书一个实施例提供的数据切分机制示意图;

图4是本说明书一个实施例提供的SR重传机制示意图;

图5是本说明书一个实施例提供的一种RDMA网络传输方法的处理过程流程图;

图6是本说明书一个实施例提供的一种RDMA网络传输装置的结构示意图;

图7是本说明书另一个实施例提供的一种RDMA网络传输装置的结构示意图;

图8是本说明书一个实施例提供的一种RDMA网络通信系统的结构框图;

图9是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

拥塞信号,是用于表示RDMA网络拥塞情况的信号,例如,可以从基于软件、硬件或者软硬结合的方式实现的拥塞控制模块获取拥塞信号。

可靠性信号,是用于表示被发送的数据分片的接收情况的信号,例如,可从基于SR重传等技术实现的可靠性模块获取被发送的数据分片的可靠性信号。

RDMA网卡,可以是不限于特定技术的RNIC,如CX4,CX5,CX6dx、不支持ECN的交换机等等。

在本说明书中,提供了一种RDMA网络传输方法,本说明书同时涉及一种RDMA网络传输装置,一种计算设备,一种计算机可读存储介质以及RDMA网络通信系统,在下面的实施例中逐一进行详细说明。

图1示出了根据本说明书一个实施例提供的一种RDMA网络传输方法的流程图,包括步骤102至步骤110。

步骤102:获取RDMA网络的拥塞信号。

步骤104:利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片。

步骤106:通过所述RDMA网络,发送所述若干个数据分片。

步骤108:获取被发送的数据分片的可靠性信号。

步骤110:通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

由于该方法获取RDMA网络的拥塞信号,利用拥塞信号确定的粒度切分数据,从而能够根据网络状态动态确定数据分片大小,如在网络繁忙拥塞严重的情况下采用细粒度切分,反之则采用较大粒度的数据切分,实现IO控制粒度和软件开销的平衡,并且该方法在通过RDMA网络,发送若干个数据分片之后,获取被发送的数据分片的可靠性信号,重新发送根据可靠性信号确定的需要重传的数据分片,保证数据无丢包,因此,该方法兼顾了RDMA的软件开销和丢包性能,不依赖于PFC协议来保证无丢包,实现了高性能、低开销、对硬件依赖低、对丢包强抵抗的目的。

本说明书一个或多个实施例中,所述获取RDMA网络的拥塞信号可以包括:获取RTT信号和/或可用的拥塞窗口大小。

RTT(Round-Trip Time),是发送方将数据包发送出去,到接收到对端的确认包之间的时间间隔。以RTT信号作为拥塞信号,可以从基于精准RTT测量的拥塞控制模块获取RTT信号。拥塞控制模块,例如可以采用LEAP-CC算法,也可以基于实施环境的需要,构建用户自定义的可调可控的拥塞控制模块。一个或多个实施例中,可以利用RDMA网卡的硬件事件时钟提供的时间戳,测量RTT信号。例如,本说明书实施例提供的方法可以从数据完成队列中获取携带了RDMA网卡提供的时间戳的完成事件,所述完成事件包括:发送方的RDMA网卡在发送数据完成后产生并写入数据完成队列的完成事件以及由接收方的RDMA网卡在接收数据完成后产生并写入所述数据完成队列的完成事件;根据所述完成事件携带的时间戳,更新对RTT信号的测量。

例如,可以采用如图2所示的拥塞控制模块的机制来实现RTT信号的测量。如图2所示,接收/发送时间戳携带在完成事件CQE中,数据Seg0携带的时间戳是T1,Rate Pacing(速率)模块将T1发送给RTT精准测量模块,ACKT3-T2的时间戳T4也发送给RTT精准测量模块,RTT精准测量模块利用LEAP-CC算法,根据RTT=(T4-T1)-(T3-T2)更新RTT信号。

需要说明的是,本说明书实施例提供的方法所使用的拥塞控制机制,可以根据实施场景的需要进行预先设置,图2所示拥塞控制模块的机制仅用于对本说明书实施例提供的方法进行示意性说明,并不构成对本说明书实施例提供的方法的限制。本说明书实施例提供的方法基于预设的拥塞控制机制,可以确定用于控制注入所述RDMA网络的数据量的拥塞窗口和/或速率,根据所述拥塞窗口和/或速率,发送所述若干个数据分片。拥塞窗口,是根据拥塞控制机制确定的、发送方能发送的缓冲区的大小。可以理解的是,基于窗口的拥塞控制机制具有ACK self-clocking(接收确认自计时)的特性,能够直接控制注入网络中的数据总量,从而对交换机队列长度的控制更加可靠。

可用的拥塞窗口大小,可以是根据拥塞控制机制确定的、发送方能发送的缓冲区中的可用部分。为了在网络拥塞的情况下传输的数据分片的大小较低,本说明书一个或多个实施例中,将获取的可用的拥塞窗口大小与当前数据分片大小比较,确定其中的较小者;根据其中的较小者确定切分数据的粒度;使用确定的粒度切分数据,得到若干个数据分片。

需要说明的是,本说明书实施例提供的方法对于利用拥塞信号切分数据的具体实施方式不限,可以根据实施场景需要采用相应来源的拥塞信号进行切分。例如,RTT作为量化信号能够较好地反映网络拥塞状况,可以采用RTT信号来进行切分,或者,根据其他算法输出的拥塞信号来对切片大小进行灵活调整,保证网络拥塞的情况下传输的数据分片的大小较低。例如,本说明书一个或多个实施例中,可以采用如图3所示的数据切分机制来进行数据切分。图3所示的数据切分机制基于RPC IOVector,利用拥塞信号以及Flowseg动态切分算法实现对数据的动态切分。例如,所述Flowseg动态切分算法的算法内容可以包括:选择可用的拥塞窗口大小与当前数据分片大小中的较小者来切分数据。

为了进一步提高数据发送性能,本说明书一个或多个实施例中,进一步根据可供用户灵活配置的配置信息确定数据分片的发送方式。具体地,例如,所述通过RDMA网络,发送所述若干个数据分片包括:获取配置信息,所述配置信息包括:RDMA Send方式对应的数据大小范围和/或RDMA write方式对应的数据大小范围;根据数据分片的大小在所述配置信息中对应的发送方式,发送所述若干个数据分片。可见,通过该实施方式的配置信息,对于用户来说,可灵活配置分界线,如可以使小数据采用RDMA Send直接发送,大数据采用握手地址+RDMA write的方式发送,有效提高了数据发送性能。

本说明书一个或多个实施例中,通过RDMA网络,发送若干个数据分片可以包括:通过RDMA网络的不可靠连接,发送所述若干个数据分片。在该实施方式中,通过动态数据切片、不可靠连接UC发送数据以及依据可靠性信号重传,克服了丢包环境下RDMA网络的问题,底层可仅依赖不可靠的远程DMA通信,对硬件要求低,容易实现,实现了自主可控的RDMA高性能通信系统。

在本说明书实施例提供的方法中,所述可靠性信号以及重新发送根据可靠性信号确定的数据分片的实施方式不限。例如,可以基于SR重传等技术来实现可靠性模块。例如,如图4所示的SR重传机制的示意图,基于SR重传技术的可靠性模块负责数据切片的可靠性维护,负责ACK的接收/发送和数据包编号的管理和准换,数据包的确认/重传。其中,重传的数据例如可以采用RDMA send发送+拷贝的方式重传,保证数据写地址的操作安全性。当然,底层通信也可以使用硬件可靠性(RC)进行加速,实现可靠性信号的获取,从而绕过软件可靠性模块,获得更好的性能。

更细节地,例如,可靠性模块可以基于数据分片构建确认-重传体系,数据分片内Goback0,数据分片间采用SR重传。数据分片利用write with imm携带32位的immediatedata元数据作为可靠性的依据,imm的编码包含seg编号(4K对齐)和RPC编号,防止回环错写。采用累计ACK机制,降低软件开销。采用Quic的单调编号,数据分片的immediate data元数据和全局编号相互转化。通过RDMA原语额外携带的immediate data元数据来构建可靠性机制,实现对数据分片的零拷贝的可靠性服务。

为了使本说明书实施例提供的方法更加易于理解,下述结合附图5,以本说明书提供的RDMA网络传输方法发送应用的请求为例,对所述RDMA网络传输方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种RDMA网络传输方法的处理过程流程图,具体步骤包括步骤502至步骤520。

步骤502:接收应用提交的IO request,被接收的IO request进入发送队列。

步骤504:从Congestion Control也即拥塞控制模块获取如可用的拥塞窗口大小的拥塞信号。

步骤506:从RDMAchunking模块也即数据切片模块获得chunkSize即当前数据分片大小。

步骤508:根据chunkSize和可用的拥塞窗口大小window对IO request进行切片,切片大小为二者的较小者。

可以理解的是,以上步骤504到步骤508也可以是合并在数据切片模块中执行,本说明书实施例对此并不进行限制。

步骤510:从Reliability即可靠性模块获取可靠性编号number分配给切片得到的数据分片。

步骤512:提交数据分片对应的RDMA请求(verb,原语)到data QP(发送队列和接收队列通常成对创建,被称为QueuePairs,QP,即队列对),进入RDMA网卡驱动。

步骤514:网卡驱动提交数据分片对应的RDMA请求到RDMA网卡,RDMA网卡通过DMA访问指定内存中的数据并组包发送。

步骤516:RDMA网卡发送完成后产生携带时间戳的发送完成事件CQE,放入DataCompletion Queue(Data CQ,数据完成队列)中。

步骤518:从CQ中取出完成事件,以便将完成事件携带的时间戳发送给RTTMessurement也即RTT测量模块,使其更新RTT。

步骤520:Reliability模块基于SR重传的累计ACK机制获取可靠性信号,重新发送根据可靠性信号确定的需要重传的数据分片。

在上述流程中,当RTT Messurement更新RTT时,采用RTT作为拥塞信号的RDMAChunking模块相应更新数据切片时需采用的数据分片大小。当Congestion Control模块可用的拥塞窗口大小更新时,采用可用的拥塞窗口大小作为拥塞信号的RDMAChunking模块相应更新数据切片时需采用的数据分片大小。可以理解的是,如果Congestion Control模块采用RTT作为输入信号参与拥塞控制,则RTT模块更新RTT相应引起CongestionControl模块更新窗口。

根据上述流程,对于接收方来说,网卡接收数据完成后,可以产生携带时间戳CQE进入Data CQ。因此,从DataCQ中获得CQE,可靠性模块可以根据CQE携带的可靠性编号更新可靠性信号,RTT模块可以根据CQE携带的时间戳更新RTT。

需要说明的是,在上述实施例中提到的功能模块如RDMAChunking、ReliabilityModule、RTT Measurement、Congestion Control等,可以采用软硬件协同的方法实现,如利用通用RNIC的硬件特点,根据应用场景灵活使用。结合硬件实现,能提高通信系统的性能,CPU开销更小,结合软件实现,应用灵活,对环境要求低。

另外,如图5所示的流程图,还可以根据实施场景的需要,在队列、软硬件模块之间传输如图5所示的“Rate”、“ACKed Packet Number”等这些控制信号,以满足某些实施场景下RDMA网络的数据传输所需。例如,控制信号“Rate”,可以用来调节数据的传输速率。信号“ACKed Packet Number”,表示接收已确认的数据分片编号。

与上述方法实施例相对应,本说明书还提供了RDMA网络传输装置实施例,图6示出了本说明书一个实施例提供的一种RDMA网络传输装置的结构示意图。如图6所示,该装置包括:拥塞信号获取单元602、数据切分单元604、分片发送单元606、可靠信号获取单元608及重传单元610。

该拥塞信号获取单元602,可以被配置为获取RDMA网络的拥塞信号。

该数据切分单元604,可以被配置为利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片。

该分片发送单元606,可以被配置为通过所述RDMA网络,发送所述若干个数据分片。

该可靠信号获取单元608,可以被配置为获取被发送的数据分片的可靠性信号。

该重传单元610,可以被配置为通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

由于该装置获取RDMA网络的拥塞信号,利用拥塞信号确定的粒度切分数据,从而能够根据网络状态动态确定数据分片大小,如在网络繁忙拥塞严重的情况下采用细粒度切分,反之则采用较大粒度的数据切分,实现IO控制粒度和软件开销的平衡,并且该装置在通过RDMA网络,发送若干个数据分片之后,获取被发送的数据分片的可靠性信号,重新发送根据可靠性信号确定的需要重传的数据分片,保证数据无丢包,因此,该装置兼顾了RDMA的软件开销和丢包性能,不依赖于PFC协议来保证无丢包,实现了高性能、低开销、对硬件依赖低、对丢包强抵抗的目的。

图7示出了本说明书另一个实施例提供的一种RDMA网络传输装置的结构示意图。在图7所示的装置中,所述分片发送单元606,可以被配置为通过RDMA网络的不可靠连接,发送所述若干个数据分片。在该实施方式中,通过动态数据切片、不可靠连接UC发送数据以及依据可靠性信号重传,克服了丢包环境下RDMA网络的问题,底层可仅依赖不可靠的远程DMA通信,对硬件要求低,容易实现,实现了自主可控的RDMA高性能通信系统。

本说明书一个或多个实施例中,所述拥塞信号获取单元602,可以被配置为获取RTT信号和/或可用的拥塞窗口大小作为拥塞信号。

本说明书一个或多个实施例中,如图7所示,所述数据切分单元604可以包括:比较子单元6042、粒度确定子单元6044及切分子单元6046。

该比较子单元6042,可以被配置为将获取的可用的拥塞窗口大小与当前数据分片大小比较,确定其中的较小者,。

该粒度确定子单元6044,可以被配置为根据其中的较小者确定切分数据的粒度。

该切分子单元6046,可以被配置为使用确定的粒度切分数据,得到若干个数据分片。

通过该实施例,可以保证在网络拥塞的情况下传输的数据分片的大小较低。

本说明书一个或多个实施例中,所述拥塞信号获取单元602,可以被配置为利用RDMA网卡提供的时间戳,测量RTT信号。例如,如图7所示,所述拥塞信号获取单元602可以包括:完成事件获取子单元6022及信号更新子单元6024。

该完成事件获取子单元6022,可以被配置为从数据完成队列中获取携带了RDMA网卡提供的时间戳的完成事件,所述完成事件是由接收方的网卡在接收数据完成后产生并写入所述数据完成队列的。

该信号更新子单元6024,可以被配置为根据所述完成事件携带的时间戳,更新RTT信号。

上述实施例结合硬件实现,能提高通信系统的性能,CPU开销更小,结合软件实现,应用灵活,对环境要求低。

为了进一步提高数据发送性能,本说明书一个或多个实施例中,进一步根据可供用户灵活配置的配置信息确定数据分片的发送方式。具体地,例如,如图7所示,所述分片发送单元606可以包括:配置信息获取子单元6062及分片发送子单元6064。

该配置信息获取子单元6062,可以被配置为获取配置信息,所述配置信息包括:RDMA Send方式对应的数据大小范围和/或RDMA write方式对应的数据大小范围。

该分片发送子单元6064,可以被配置为根据数据分片的大小在所述配置信息中对应的发送方式,发送所述若干个数据分片。

上述为本实施例的一种RDMA网络传输装置的示意性方案。需要说明的是,该RDMA网络传输装置的技术方案与上述的RDMA网络传输方法的技术方案属于同一构思,RDMA网络传输装置的技术方案未详细描述的细节内容,均可以参见上述RDMA网络传输方法的技术方案的描述。

图8示出了一种RDMA网络通信系统的结构框图。如图8所示,所述RDMA网络通信系统可以包括:RDMA网卡802、数据切片模块804、拥塞控制模块806、可靠性模块808。

所述RDMA网卡802,可以被配置为进行数据报组包和/或分流、封装RDMA Write以及提供硬件事件时钟。

例如,所述RDMA网卡802可以是不限于特定技术的RNIC,如CX4,CX5,CX6dx、不支持ECN的交换机等等。

所述数据切片模块804,可以被配置为获取RDMA网络的拥塞信号,利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片,通过所述RDMA网卡发送所述数据分片。

例如,数据切片模块804可以按照图3所示的数据切分机制实现。例如,可以基于RPC IOVector,利用拥塞信号以及Flowseg动态切分算法实现对数据的动态切分。

所述拥塞控制模块806,被配置为基于拥塞控制机制确定拥塞信号以及控制参数,所述控制参数用于控制注入所述RDMA网络的数据量。

例如,拥塞控制模块806可以按照图2所示的拥塞控制机制实现。例如,如图2所示,接收/发送时间戳携带在完成事件CQE中,数据Seg0携带的时间戳是T1,Rate Pacing(速率)模块将T1发送给RTT精准测量模块,ACKT3-T2的时间戳T4也发送给RTT精准测量模块,RTT精准测量模块利用LEAP-CC算法,根据RTT=(T4-T1)-(T3-T2)更新RTT信号。

所述可靠性模块808,可以被配置为获取被发送的数据分片的可靠性信号,通过所述RDMA网卡802,重新发送根据所述可靠性信号确定的需要重传的数据分片。

例如,可靠性模块808可以按照图4所示的SR重传机制实现。基于SR重传技术的可靠性模块负责数据切片的可靠性维护,负责ACK的接收/发送和数据包编号的管理和准换,数据包的确认/重传。其中,重传的数据例如可以采用RDMA send发送+拷贝的方式重传,保证数据写地址的操作安全性。当然,底层通信也可以使用硬件可靠性(RC)进行加速,实现可靠性信号的获取,从而绕过软件可靠性模块,获得更好的性能。更细节地,例如,可靠性模块可以基于数据分片构建确认-重传体系,数据分片内Goback0,数据分片间采用SR重传。数据分片利用write with imm携带32位的immediate data元数据作为可靠性的依据,imm的编码包含seg编号(如4K对齐)和RPC编号,防止回环错写。采用累计ACK机制,降低软件开销。采用Quic的单调编号,数据分片的immediate data元数据和全局编号相互转化。通过RDMA原语额外携带的immediate data元数据来构建可靠性机制,实现对数据分片的零拷贝的可靠性服务。

可见,在该RDMA网络通信系统中,通过数据切片模块以及拥塞控制模块实现了IO控制粒度和软件开销的平衡,通过可靠性模块保证数据无丢包,因此,该RDMA网络通信系统在RDMA网卡硬件的基础上,通过软硬结合的方式构成基本数据通路,不依赖于PFC协议来保证无丢包,实现了高性能、低开销、对硬件依赖低、对丢包强抵抗的目的。

本说明书一个或多个实施例中,所述RDMA网卡802,可以用于通过不可靠连接,发送数据分片。在该实施例中,通过RDMA UC来支持RDMA操作,实现远端内存访问和零拷贝。不可靠有连接的RDMA通信类型(UC)作为有连接的服务,能够基于硬件提供远程的RDMA Write操作,作为强大的远程DMA传输引擎使用,实现远端内存访问和数据收发双向零拷贝,大大降低数据传输和复制的开销。另外,由于UC提供的是简单基本的不可靠的服务,从而不同的RDMA请求(Work Request Element,WQE)的传输之间不存在GBN的回退,因此避免了无PFC情况下丢包性能下降的问题。而且UC的硬件实现逻辑简单,为自研网卡和其他网卡实现提供了有利的条件,绕过了技术壁垒。

本说明书一个或多个实施例中,所述数据切片模块804,可以被配置为获取RTT信号和/或可用的拥塞窗口大小作为拥塞信号。

例如,所述数据切片模块804可以包括:自适应调整模块8042,可以被配置为将获取的可用的拥塞窗口大小与当前数据分片大小比较,确定其中的较小者,根据其中的较小者确定切分数据的粒度。分片引擎模块8044,可以被配置为使用确定的粒度切分数据,得到若干个数据分片。通过该实施例,使得在网络拥塞的情况下传输的数据分片的大小较低,达到与RDMA网络状态自适应的效果。

本说明书一个或多个实施例中,所述拥塞控制模块806可以包括:RTT测量模块8062及Timely控制模块8064。

该RTT测量模块8062,可以被配置为基于所述RDMA网卡的硬件事件时钟提供的时间戳,测量RTT信号。

该Timely控制模块8064,可以被配置为基于延迟的拥塞控制协议,根据RTT信号确定控制参数,所述控制参数包括用于控制注入所述RDMA网络的数据量的拥塞窗口和/或速率。

基于窗口的拥塞控制机制具有ACK self-clocking(接收确认自计时)的特性,能够直接控制注入网络中的数据总量,从而对交换机队列长度的控制更加可靠。

本说明书一个或多个实施例中,所述可靠性模块808,可以包括:数据分片重传模块8082及ACK聚合模块8084。

该数据分片重传模块8082,可以被配置为重新发送根据可靠性信号确定的需要重传的数据分片。

该ACK聚合模块8084,可以被配置为基于累计ACK机制,获取被发送的数据分片的可靠性信号。

在该实施例中,可靠性模块808通过累计ACK机制获取可靠性信号,能够一定程度上降低软件开销。

结合以上多个实施例,如图8所示的RDMA网络通信系统的结构框图,在数据平面上,实现了以下功能:

可靠性模块808的数据分片重传模块8082以及ACK聚合模块8084,实现了丢包数据分片的重传。

数据切片模块804的自适应调整模块8042以及分片引擎模块8044,实现了在网络拥塞的情况下传输的数据分片的大小较低,与RDMA网络状态自适应的效果。

在控制平面上,实现了以下功能:

拥塞控制模块806的RTT测量模块8062及Timely拥塞控制模块8064,实现了对RTT信号的精准策略,并能够控制注入网络中的数据量,对交换机队列长度的控制更加可靠。

根据以上功能,如图8所示,RDMA网络通信系统对外部应用至少呈现“RDMAWrite”、“收&发零拷贝”及“lossy(有损)RDMA”三大特点。

需要说明的是,本说明书实施例所述RDMA网络通信系统的模块均可以采用软件、硬件或者软硬协同的方式实现。例如,如图8所示的ACK聚合模块、分片引擎模块、RTT精准测量模块,可以利用RNIC硬件的特点以软硬协同的方式实现底层通信的相应功能。下面,以一些模块为例进行示意性说明:

例如,RTT测量模块8062,可以利用RNIC硬件timestamp的特性,基于RDMA相关的特殊API和特殊的软件测试方法实现精确RTT的测量。

例如,拥塞窗口控制模块8064,可以默认采用LEAP-CC算法,根据RTT信号来进行发送数据的窗口控制。以软件实现的核心算法代码可以替换调整和升级,保证更新迭代速度。

例如,数据切片模块804,可以根据如RTT信号的拥塞信号对消息进行动态切片。以软件实现的核心算法代码可以替换调整和升级,保证更新迭代速度。

例如,可靠性模块808,可以负责ACK的接收/发送和数据包编号的管理和准换,数据包的确认/重传。底层通信可以使用硬件可靠性(RC)进行加速,从而绕过软件实现的可靠性模块,获得更好的性能。

本说明书实施例所述RDMA网络通信系统的任一或多个模块可以采用同时存在软件和硬件的两种实现,即模块的软件实现与硬件实现同时部署在RDMA网络通信系统中,进而可根据应用场景灵活使用。一般来说硬件实现的性能更高,CPU开销更小,软件实现更加灵活,对环境要求低。下图是一些典型应用场景可以采取的软/硬配置:

无损数据中心网络场景:硬件实现的可靠性模块、软/硬件实现的拥塞控制模块;

有损数据中心网络场景:软件实现的可靠性模块、软/硬件实现的拥塞控制模块;

跨POD场景:软件实现的可靠性模块、软件实现的拥塞控制模块;

Hybrid deployment(混合部署):软件实现的可靠性模块、软件实现的拥塞控制模块。

可见,综合以上机制构建的RDMA网络通信系统,具有高性能,低开销,对硬件依赖低,对丢包强抵抗的特点。具体地,例如,通过粒度自适应的数据切片、UC和根据可靠性的重传克服了丢包环境下RDMA网络的问题,底层可依赖不可靠的远程DMA通信,对硬件要求低,容易实现。另外,结合上述多个实施例的优化性能,可以以软件方式实现拥塞控制,实现了RDMA高性能的通信系统。

图9示出了根据本说明书一个实施例提供的一种计算设备900的结构框图。该计算设备900的部件包括但不限于存储器910和处理器920。处理器920与存储器910通过总线930相连接,数据库950用于保存数据。

计算设备900还包括接入设备940,接入设备940使得计算设备900能够经由一个或多个网络960通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备940可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备900的上述部件以及图9中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图9所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备900可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备900还可以是移动式或静止式的服务器。

其中,处理器920用于执行如下计算机可执行指令:

获取RDMA网络的拥塞信号;

利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片;

通过所述RDMA网络,发送所述若干个数据分片;

获取被发送的数据分片的可靠性信号;

通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的RDMA网络传输方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述RDMA网络传输方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:

获取RDMA网络的拥塞信号;

利用所述拥塞信号确定的粒度切分数据,得到若干个数据分片;

通过所述RDMA网络,发送所述若干个数据分片;

获取被发送的数据分片的可靠性信号;

通过所述RDMA网络,重新发送根据所述可靠性信号确定的需要重传的数据分片。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的RDMA网络传输方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述RDMA网络传输方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • RDMA网络传输方法、装置以及RDMA网络通信系统
  • 一种基于纠删码的RDMA网络数据传输方法
技术分类

06120113252032