解析RDMA 网卡两种协议: iWARP 和 RoCE

发布时间:2021-03-19

浏览次数:5079

分享到:
  传统的TCP/IP网络通信,数据需要通过用户空间发送到远程机器的用户空间。数据发送方需要讲数据从用户应用空间Buffer复制到内核空间的Socket Buffer中。然后内核空间中添加数据包头,进行数据封装。通过一系列多层网络协议的数据包处理工作,这些协议包括传输控制协议(TCP)、用户数据报协议(UDP)、互联网协议(IP)以及互联网控制消息协议(ICMP)等。数据才被Push到NIC网卡中的Buffer进行网络传输。消息接受方接受从远程机器发送的数据包后,要将数据包从NIC Buffer中复制数据到Socket Buffer。然后经过一些列的多层网络协议进行数据包的解析工作。解析后的数据被复制到相应位置的用户空间Buffer。这个时候再进行系统上下文切换,用户应用程序才被调用。以上就是传统的TCP/IP协议层的工作。

  然而,如今随着社会的发展,网络数据的吞吐量的水涨船高;我们希望更快和更轻量级的网络通信。

  RDMA(远程直接数据存取),以其对业务带来的高性能、低延时优势,在数据中心尤其是AI、HPC、大数据等场景得到了广泛应用。为保障RDMA的稳定运行,基础网络需要提供端到端无损零丢包及超低延时的能力,这也催生了PFC、ECN等网络流控技术在RDMA网络中的部署。在RDMA网络中,如何合理设置MMU(缓存管理单元)水线是保证RDMA网络无损和低延时的关键。本文将以RDMA网络作为切入点,结合实际部署经验,分析MMU水线设置的一些思路。
RDMA(Remote Direct Memory Access)技术全称远程直接内存访问,专门为了解决网络传输中服务器端数据处理的延迟而产生的。

  Remote:数据通过网络与远程机器间进行数据传输。

  Direct:没有内核的参与,有关发送传输的所有内容都卸载到网卡上。

  Memory:在用户空间虚拟内存与RNIC网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制。

  Access:send、receive、read、write、atomic操作。

  RDMA有两种基本操作。

  Memory verbs: 包括RDMA read、write和atomic操作。这些操作指定远程地址进行操作并且绕过接收者的CPU。
  Messaging verbs:包括RDMA send、receive操作。这些动作涉及的接收方CPU,发送的数据被写入由接收方的CPU先前发布的接受所指定的地址。

    RDMA传输分为可靠和不可靠的,并且可以连接和不连接的(数据报)。凭借可靠的传输,NIC使用确认来保证消息的按序传送。不可靠的传输不提供这样的保证。然而,像InfiniBand这样的现代RDMA实现使用了一个无损链路层,它可以防止使用链路层流量控制的基于拥塞的损失[1],以及使用链路层重传的基于位错误的损失[8]。因此,不可靠的传输很少会丢弃数据包。 

  目前的RDMA硬件提供一种数据报传输:不可靠的数据报(UD),并且不支持memory verbs。

  传统模式与RDMA模式工作机制对比


  在传统模式下,两台服务器上的应用之间传输数据,过程是这样的:

  • 首先要把数据从应用缓存拷贝到Kernel中的TCP协议栈缓存;
  • 然后再拷贝到驱动层;
  • ***拷贝到网卡缓存。


  多次内存拷贝需要CPU多次介入,导致处理延时大,达到数十微秒。同时整个过程中CPU过多参与,大量消耗CPU性能,影响正常的数据计算。

  在RDMA 模式下,应用数据可以绕过Kernel协议栈直接向网卡写数据,带来的显著好处有:

  • 处理延时由数十微秒降低到1微秒内;
  • 整个过程几乎不需要CPU参与,节省性能;
  • 传输带宽更高。


  RDMA对于网络的诉求

  RDMA在高性能计算、大数据分析、IO高并发等场景中应用越来越广泛。诸如iSICI, SAN, Ceph, MPI, Hadoop, Spark, Tensorflow等应用软件都开始部署RDMA技术。而对于支撑端到端传输的基础网络而言,低延时(微秒级)、无损(lossless)则是最重要的指标。



  低延时:

  网络转发延时主要产生在设备节点(这里忽略了光电传输延时和数据串行延时),设备转发延时包括以下三部分:

  • 存储转发延时:芯片转发流水线处理延迟,每个hop会产生1微秒左右的芯片处理延时(业界也有尝试使用Cut-through模式,单跳延迟可以降低到0.3微秒左右);
  • Buffer缓存延时:当网络拥塞时,报文会被缓存起来等待转发。这时Buffer越大,缓存报文的时间就越长,产生的时延也会更高。对于RDMA网络,Buffer并不是越大越好,需要合理选择;
  • 重传延时:在RDMA网络里会有其他技术保证不丢包,这部分不做分析。


  无损:

  RDMA在无损状态下可以满速率传输,而一旦发生丢包重传,性能会急剧下降。在传统网络模式下,要想实现不丢包最主要的手段就是依赖大缓存,但如前文所说,这又与低延时矛盾了。因此,在RDMA网络环境中,需要实现的是较小Buffer下的不丢包。

  在这个限制条件下,RDMA实现无损主要是依赖基于PFC和ECN的网络流控技术

  RDMA无损网络的关键技术:PFC

 

  PFC(Priority-based Flow Control),基于优先级的流量控制。是一种基于队列的反压机制,通过发送Pause帧通知上游设备暂停发包来防止缓存溢出丢包。
 

  需要了解更多网络存储产品需要合作与咨询搭建方案请联系官网上的在线客服,嘉华众力自2000年成立以来一直在网络存储、传输这方面积累、沉淀;经过多年发展与全新的品牌定位,(CEACENT)嘉华众力品牌已成为国内外极具实力的数据通讯产品及方案提供商,请关注嘉华众力官网:www.unicaca.com

文章资料来源于:51CETO  
作者:佚名
15012962335