【RDMA】RDMA可靠传输 IRN

目录

背景

IRN(improved RoCE NIC)

性能评估

参考文献


原文:https://zhuanlan.zhihu.com/p/185773772

背景

本文应该配合《Revisiting Network Support for RDMA》阅读理解:https://blog.csdn.net/bandaoyu/article/details/115620365

从网络方面来说,数据中心的两个基本目标是提供higher bandwidth和lower latency。而传统的TCP/IP协议栈由于其设计复杂性会导致高延迟,以及其高CPU开销,这些都是数据中心不希望的。随着RoCE协议的提出,RDMA在数据中心开始被广泛采用。

图1 RDMA与TCP/IP架构对比

RDMA有三种实现方式,即三种不同的网络协议,分别是:Infiniband、RoCE和iWARP。

这篇paper的研究工作是围绕RoCE进行的,去掉了RoCE中的PFC流控,提出了自己的丢包恢复和流控方案。为什么要放弃RoCE中的PFC流控算法,在后面会给出说明。

RDMA的可靠服务

我们先撇开硬件成本的因素,说说这三种网络协议是如何向应用层提供可靠服务的。都知道TCP使用ACK机制和重传向上层提供可靠服务,保证数据包不被丢失。图2给出了三种类型RDMA的层次架构图。

图2 RDMA 三种网络协议架构

 

Infiniband

Infiniband采用了NACK机制提供可靠服务。当接收方收到乱序数据包,只是简单的将数据包丢弃,然后发送NACK给发送端,通知重传。发送端收到NACK后,会重传最后一个被确认收到数据包序号之后的所有数据包。这和早起TCP的ACK机制一样,TCP在未采用SACK机制之前,如果收到三个重复的ACK包,就认为网络出现拥塞,发生了丢包,然后重传所有已发送但未被确认的数据包。不过由于在数据中心里面rtt一般很小,,而且丢包的概率也低,所以即使像Infiniband这样大量重传,带宽浪费也还好。

Infiniband需要专用网卡和交换机支持,成本高昂,且不能和以太网混用。

RoCE

RoCE有RoCE v1和RoCE v2两个版本,RoCE v1是一个以太网链路层协议。RoCE v2是一个网络层协议,采用UDP/IP。我们这里只介绍RoCE v2,UDP是一个不可靠协议,从图1中就可以看出来。所以需要额外的协议来提供可靠服务,目前RoCE采用的是流控算法PFC(priority flow control)来提供无损网络。但是PFC的缺点也很明显,总结为如下三点:

  • Head-of-the-line blocking
  • Congestion spreading
  • Occasional deallock

这里就不具体解释PFC的三个缺陷怎么形成的,因为展开说就扯远了。

iWARP

iWARP协议定义如何基于一个面向连接的传输,相当于协议自己实现了TCP/IP,然后放到网卡里,所以可靠性由协议本身提供,因为TCP/IP为可靠传输。

 

IRN(improved RoCE NIC)

 

考虑到PFC协议引发的诸多问题,与其继续在这条路上坚持,填补坑坑洼洼,比如死锁检测等,不如回退一步,丢掉PFC,重新设计。

不使用PFC协议,那么RoCE就会面临两个问题,首先是发生丢包怎么办,其次是如何进行端到端流控。本文的工作就是围绕这两个方面展开。

 

丢包恢复

本文提出的丢包恢复策略没有什么创新点,基本是借鉴了TCP的SACK机制(SACK:Selective Acknowledgement,选择性确认https://blog.csdn.net/zhaomax/article/details/81352139),有选择的重传。当发送端收到接收端发送的NACK或者是发生timeout,进入丢包恢复模式,开始选择重传丢失的数据包,而不是发送新数据包。

同时,IRN也有timeout定时器,分为长RTO(Retransmission TimeOut即重传超时时间)和短RTO。为什么要弄两个RTO呢,原因在于长RTO可能会增加短消息的尾延迟,为什么呢,因为如果发生丢包要等到timeout来触发重传,而RTO又设置的过大,就会导致那些被丢弃的数据包要等待很长时间。 而将RTO设置得太小会导致过多的虚假重传,从而影响总体结果,因为有些数据包就是乱序了,并没有丢失,如果RTO设置的太小,还没等到乱序的数据包被收到,就超时重传了,就会出现伪重传。

那么什么时候使用长RTO,什么时候使用短RTO呢,文中给出的方案是根据网络中in flight的数据包数,如果数据包超过设置的阈值,则使用长RTO,否则使用短RTO。

(RTO、RTT:https://blog.csdn.net/zhangskd/article/details/7196707

流控

IRN的流控是基于数据包级别的,叫做BDP-FC,它通过限制流的outstanding packets in flight的数据包数量实现,什么是outstanding packets in flight,简单的说就是被发送出去但还没被确认的数据包。

那么这个阈值是多少呢,IRN通过将网络中最长路径的BDP(以字节为单位)除以RDMA队列对设置的数据包MTU(在RoCE NIC中通常为1KB)进行计算。当要发送一个新数据包时,需要满足outstanding packets in fligth数量小于设置的这个阈值。

性能评估

主要关注三个评价指标,分别是:(1)average slowdown,(2)平均流完成时间,(3)99分位的流完成时间,或者尾延迟。什么是average slowdown,就是其完成时间除以在空网络中以线路速率穿越路径所花费的时间。

首先给出了IRN和RoCE在这三个指标的对比,图3所示,可以看出IRN都要比RoCE好。

图3 IRN和RoCE的比较

由于在上传测试结果图片出现错误,所以就到这里吧。

参考文献

[1].https://people.eecs.berkeley.edu/~radhika/irn.pdf

[2].https://zh.wikipedia.org/wiki/InfiniBand

[3].https://houbb.github.io/2019/11

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值