一种基于RDMA的报文重传方法、设备及介质与流程

摘要: 本申请涉及rdma领域,特别是涉及一种基于rdma的报文重传方法、设备及介质。背景技术:1、远程直接内存访问(remotedirectmemoryaccess,...
一种基于RDMA的报文重传方法、设备及介质与流程

本申请涉及rdma领域,特别是涉及一种基于rdma的报文重传方法、设备及介质。

背景技术:

1、远程直接内存访问(remote direct memory access,rdma)是一种允许服务器间直接将数据传输至对方内存的技术,由于无需操作系统内核介入,能够显著降低延迟并提高数据吞吐量;在rdma传输过程中,若发生数据报文传输错误、丢包或序列号异常等状况,必须对数据报文进行重传;在现有技术中,重传机制的触发与执行策略通常分为两类:一是当发送端rdma网卡接收到否定确认(nak)报文,或达到重传超时(rto)阈值时,触发基于回退n帧(go-back-n)策略的重传;二是当接收到选择性确认(sack)报文时,触发针对特定丢失报文的选择性重传。

2、但是,当发送端rdma网卡接收到nak报文或达到rto阈值时需要重传当前已发送但未被确认的所有数据报文,会导致有效吞吐量随丢包率的提升呈非线性急剧下降;接收端在检测到报文乱序时,通常需要等待乱序超时后才发送sack报文,在此期间,发送端迫进入空闲等待状态,导致发送端在接收到sack报文前的空闲占比较高,降低了有效吞吐;并且,丢包引发的恢复协商及重传过程会引入微秒至毫秒级的额外延迟,受重传策略及链路速率的综合影响,丢包事件发生后的整体数据传输延迟可能是平均延迟的10至1000倍;因此可知,通过上述方法进行数据报文重传,有效吞吐率较低,数据传输的长尾延迟较高。

技术实现思路

1、针对所述技术问题,本申请采用的技术方案为:

2、根据本申请的第一方面,提供了一种基于rdma的报文重传方法,方法包括如下步骤:

3、s1、当发送端rdma网卡通过队列对发送正常数据报文时,获取该队列对当前对应的未确认报文数量gap;正常数据报文为非重传的数据报文;gap符合如下条件:

4、gap=spsn-apsn;spsn为当前发送端rdma网卡通过该队列对发出的最后一个数据包的数据包序列号;apsn为当前接收端rdma网卡通过该队列对连续确认收到的最后一个数据包的数据包序列号。

5、s2、当gap>qpc时,基于该队列对对应的最大重传数量,从当前发送端rdma网卡通过该队列对发出的,但未被接收端rdma网卡确认收到的数据报文中,确定待重传数据报文,并基于预设的窗口阈值增加步长对qpc进行更新;qpc为该队列对对应的等待确认的窗口的长度阈值,等待确认的窗口的长度阈值的初始值为预设的长度阈值。

6、s3、将待重传数据报文进行重传。

7、s4、当发送端rdma网卡接收到新的ack报文时,基于预设的最小窗口长度值和预设的窗口阈值恢复系数对qpc进行更新。

8、根据本申请的第二方面,提供了一种非瞬时性计算机可读存储介质,非瞬时性计算机可读存储介质中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现上述的基于rdma的报文重传方法。

9、根据本申请的第三方面,提供了一种电子设备,包括处理器和上述的非瞬时性计算机可读存储介质。

10、本申请至少具有以下有益效果:

11、本申请提供了一种基于rdma的报文重传方法、设备及介质,在所述方法中,当发送端rdma网卡通过队列对发送正常数据报文时,获取该队列对当前对应的未确认报文数量gap;当gap>qpc时,基于该队列对对应的最大重传数量,从当前发送端rdma网卡通过该队列对发出的,但未被接收端rdma网卡确认收到的数据报文中,确定待重传数据报文,并基于预设的窗口阈值增加步长对qpc进行更新,其中,qpc为该队列对对应的等待确认的窗口的长度阈值;将待重传数据报文进行重传,并在发送端rdma网卡接收到新的ack报文时,基于预设的最小窗口长度值和预设的窗口阈值恢复系数对qpc进行更新。可知,本申请引入了动态的等待确认的窗口的长度阈值和未确认报文数量作为重传触发条件,使得发送端无需完全被动等待nak、sack报文或rto超时即可及时响应网络异常,主动触发重传;同时,通过最大重传数量确定待重传报文,有效规避了盲目重传引发的重传风暴及发送端无效空闲,显著降低了数据传输的长尾延迟,提升了有效吞吐率。

1.一种基于rdma的报文重传方法,其特征在于,所述方法包括如下步骤:

2.根据权利要求1所述的基于rdma的报文重传方法,其特征在于,基于预设的窗口阈值增加步长对qpc进行更新,包括:

3.根据权利要求1所述的基于rdma的报文重传方法,其特征在于,基于预设的最小窗口长度值和预设的窗口阈值恢复系数对qpc进行更新,包括:

4.根据权利要求3所述的基于rdma的报文重传方法,其特征在于,基于预设的最小窗口长度值和预设的窗口阈值恢复系数对qpc进行更新,包括:

5.根据权利要求1所述的基于rdma的报文重传方法,其特征在于,在步骤s2中,基于该队列对对应的最大重传数量,从当前发送端rdma网卡通过该队列对发出的,但未被接收端rdma网卡确认收到的数据报文中,确定待重传数据报文,包括:

6.根据权利要求5所述的基于rdma的报文重传方法,其特征在于,通过预设的重传数量映射表获取m,其中,预设的重传数量映射表包括若干预设丢包率区间和每一预设丢包率区间对应的预设最大重传数量;将包含该队列对当前的丢包率的预设丢包率区间对应的预设最大重传数量作为m。

7.根据权利要求1所述的基于rdma的报文重传方法,其特征在于,在步骤s1中,发送端rdma网卡根据接收到的ack报文,确定当前接收端rdma网卡通过该队列对连续确认收到的最后一个数据包的数据包序列号。

8.根据权利要求1所述的基于rdma的报文重传方法,其特征在于,新的ack报文为对应的已成功接收的数据包序列号大于apsn的ack报文。

9.一种非瞬时性计算机可读存储介质,其特征在于,所述非瞬时性计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8中任意一项所述的基于rdma的报文重传方法。

10.一种电子设备,其特征在于,包括处理器和权利要求9中所述的非瞬时性计算机可读存储介质。