[RDMA]重传(一)——概述

本文探讨了在IT技术中,特别是iWARP基于TCP的可靠服务和RoCEv2基于UDP的无连接协议,如何处理数据包重传。重点介绍了两种协议的重传机制,如选择性重传和go-back-N,以及针对不同操作类型的重传行为,如RetryRDMAREADRequest和RetryATOMICOperation。
摘要由CSDN通过智能技术生成

1  概述

1.1 重传方式

如果用户使用的是可靠服务类型,且数据包没有按照预期从发送端到达目的端,可能就需要发送端重新发送丢失的数据包,也就是重传。
iWARP是基于TCP的,支持选择性重传,丢哪个包就重传哪个包,因此重传开销极小;
RoCE v2是基于无连接协议的UDP协议,相比面向连接的TCP协议,UDP协议更加快速、占用CPU资源更少,但其不像TCP协议那样有滑动窗口、确认应答等机制来实现可靠传输,一旦出现丢包,只能依靠上层应用检查到了再做重传,会大大降低RDMA的传输效率。
RoCE v2采用的是go-back-N的重传方式,即从丢了的包开始重传之后每一个数据包。采用这种方案是因为RoCE v2不支持乱序接收,所有的数据包必须按序处理。

1.2 PSNs For Retried Requesters

在PSN方面,这意味着请求者可以用逻辑上小于迄今为止传输的最大PSN的PSN重新发送数据包。在下面的图中,这被标识为重试请求。

① 请求方前进的最大进度点;
② 由于超时,请求备份并重新尝试请求;
③ 响应方可能继续取得进展的区域,返回的响应在逻辑上可能具有比重试请求PSN大的PSN。

图c. Retry PSN

Retry的过程中,响应方应返回标记其最远前进点的PSN①,否则可能会超过Retry请求的PSN。请求方也应考虑响应方可能会用逻辑上比Retry请求PSN更大的PSN返回对重试请求的响应(RDMA READ)。

1.3 不同操作类型的重传行为

1.3.1 Retry RDMA READ Request

如果Request没有收到正确的响应,RDMA READ Request将被Retry。

Retry范围:其RDMA READ Request不需要从相同的地址开始,也不需要与原始RDMA READ Request的长度相同,只重新读取第一次没有成功响应的部分。

Responder行为:验证R_Key与RDMA READ虚拟地址。

PSN:Retry Request的PSN需在duplicate PSN region,Retry Request的PSN≠original PSN,任何Retry Request都需与original Request的PSN子集精确对应,所有潜在的重复响应数据包必须具有相同的Payload和PSN,无论是对original request还是retry request。

对齐要求:对于HCA,RDMA READ的源缓冲区与目的缓冲区没有对齐要求,而TCA,对齐要求都是特定实现的。

【注】响应方将有效区域细分为ePSN与duplicate PSN region,duplicate PSN region被定义为除了单个ePSN之外的整个有效区域。

1.3.2 Retry ATOMIC Operation

响应方利用特定于供应商的资源和设施实现Request,并促使Retry ATOMIC Request。请求方有责任确保所有未确认ATOMIC操作和RDMA READ组合不会占用接收方资源,这些资源的数量在建立时以QP为基础进行协商。

响应方行为:Responding node保存应答数据、PSN并指示储存的数据来自ATOMIC Operation,储存的数据被用于产生Retry的响应。注意RDMA READ的执行会消耗资源,该资源可能与用于保存ATOMIC Operation PSN与reply data的资源相同。信息存储在目的QP的“connection context”或EEC中。

响应方存储规则:
① 有效的、新的ATOMIC Operation Request被保存(报文头有效、PSN与ePSN匹配、R_Key有效且地址与64b边界对齐);
② 响应方QP支持多个未完成的ATOMIC Operation与RDMA READ,每个有效请求按FIFO顺序保存,FIFO深度与连接建立时确定的未完成的ATOMIC操作和RDMA READ请求的最大数量相同。
③ 重复的ATOMIC或RDMA READ Operation不会再次保存。

ATOMIC操作保证最多执行一次,若原始“ATOMIC Command”,或“ATOMIC Acknowledge”丢失,发送方会以正常的Retry过程进行Retry,若Retry失败,则无法确定是否发生ATOMIC Operation,连接将处于Error State。

响应方CA若执行了请求,它只会再次确认请求而不会重新运行ATOMIC Operation。响应方识别一个重试的ATOMIC Operation,并返回先前存储在QP“隐藏状态”中原始确认的响应数据,响应以下条件将返回一个存储结果:

  • Request有效(报文头和OpCode有效);
  • 请求是ATOMIC Operation(检查OpCode);
  • Request PSN位于重复区域;
  • PSN匹配保存的ATOMIC Operation。

条件不满足的Retry Request将被响应方丢弃,重试一个Atomic Operation时,响应方不验证R_key,也不转换Retry Request的虚拟地址。

  •  For RC Service, the state bits for tracking the most recent ATOMIC and RDMA READ Operations are kept in the per QP State.
  • For RD Service these state bits are kept in the EE Context instead of the Per QP State

图d. ATOMIC Retry

梯形图显示了多个ATOMIC和RDMA READ请求。在本例中,响应方QP在连接建立时已经确定可以接受最多2个未完成的ATOMIC或RDMA READ操作的任意组合。这个例子显示了丢失的ATOMIC确认(在Time2),Retry会返回原始结果值,即使来自相同或不同QP的后续操作修改了ATOMIC Operation的目标,也会返回原始值。

重试失败,意味着连接丢失,请求CA的驱动程序中的错误恢复例程将通知本地应用程序。

1.4 重传流程图

图e. 流程图

  • 34
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RDMA MR的重注册是指在RDMA操作中,对已经注册过的内存区域进行再次注册的过程。重注册可以用来更新内存区域的属性或者重新分配MR的本地和远程key。 重注册的过程如下: 1. 首先,需要使用原来注册时所使用的RDMA操作上下文和被注册的Buffer地址、长度来创建一个新的Memory Region对象。 2. 通过调用RDMA库提供的重注册函数,将新创建的Memory Region对象与原来的Memory Region对象进行重注册。重注册函数通常会返回一个新的本地key和远程key。 3. 更新原来Memory Region对象中的本地key和远程key,使其与新的本地key和远程key保持一致。这样,原来的Memory Region对象就完成了重注册。 需要注意的是,重注册并不会改变Memory Region对象的物理地址和长度,只会更新Memory Region对象的本地key和远程key。因此,在进行RDMA操作时,需要使用新的本地key和远程key来指示要操作的内存区域。 总结一下,RDMA MR的重注册包括以下步骤: 1. 创建一个新的Memory Region对象。 2. 调用重注册函数,将新的Memory Region对象与原来的Memory Region对象进行重注册,并获得新的本地key和远程key。 3. 更新原来的Memory Region对象中的本地key和远程key,使其与新的本地key和远程key保持一致。 引用: 注册一个Memory Region之后,这个时候这个Memory Region也就有了它自己的属性:context: RDMA操作上下文,addr: MR被注册的Buffer地址,length: MR被注册的Buffer长度,lkey:MR被注册的本地key,rkey:MR被注册的远程key。 注意无论是DMA或者RDMA都要求物理地址连续,这是由DMA引擎所决定的。那么怎么进行内存注册呢?创建两个key (local和remote)指向需要操作的内存区域,注册的keys是数据传输请求的一部分。 RDMA的特点是绕过了内核数据直接到网卡,所以速度快,减轻CPU负担,底层实现有很多厂家。infiniband的价格很快,RoCE使用较多,下面主要讲讲这个。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值