学习笔记-RDMA技术上篇

最近在看博通的智能网卡时候,看到了RoCE(RDMA over Converged Ethernet)技术,对于这种陌生的名词,第一反应当然是百度了,然后记到CSDN这个小本本上。

要了解RoCE,首先就要了解RDMA。

一、什么是RDMA

       RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。RDMA通过网络把资料直接传入计算机的内存中,将数据从一个系统快速移动到远程系统内存中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理能力。它消除了数据包在用户空间和内核空间复制移动和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用系统性能。

二、背景

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

   计算机网络通信中,最重要的两个指标是高带宽和低延迟,我们没有办法在带宽中做手脚,那么只有在低延迟这部分下功夫了。这里的延迟主要有处理延迟和网络延迟,网络延迟和硬件条件有直接关系。所以我们只能尽量降低处理延迟。在上一段的介绍中,OSI七层模型其实很有限制,大多数情况下都把时间浪费在复制,拆包,解包的过程中了,这使得CPU的压力非常大。为了减轻CPU的压力,大佬们发明了TOE技术(TCP/IP Offloading Engine),将上述拆包、解包等处理任务转移到网卡上。

三、详解RDMA

       传统数据传输模式与RDMA传输模式对比

3.1 RDMA的三个特性

1.Low-Latency   低延迟

2.Low CPU overhead  CPU低开销

3. high bandwidth   高带宽

3.2 RDMA的基本概念

RDMA有两种基本操作。

    1.Memory verbs: 包括RDMA read、write和atomic操作。这些操作指定远程地址进行操作并且绕过接收者的CPU。
    2.Messaging verbs:包括RDMA send、receive操作。这些动作涉及的接收方CPU,发送的数据被写入由接收方的CPU先前发布的接受所指定的地址。
    RDMA传输分为可靠和不可靠的,并且可以连接和不连接的(数据报)。凭借可靠的传输,NIC使用确认来保证消息的按序传送。不可靠的传输不提供这样的保证。然而,像InfiniBand这样的现代RDMA实现使用了一个无损链路层,它可以防止使用链路层流量控制的基于拥塞的损失[1],以及使用链路层重传的基于位错误的损失。因此,不可靠的传输很少会丢弃数据包。 

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


3.3 RDMA三种不同的硬件实现

    目前RDMA有三种不同的硬件实现。分别是InfiniBand、iWarp(internet Wide Area RDMA Protocol)、RoCE(RDMA over Converged Ethernet)。到此终于看到了我在博通文档看到的RoCE了。

目前,大致有三类RDMA网络,分别是Infiniband、RoCE、iWARP。其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输 , 而RoCE 和 iWARP都是基于以太网的RDMA技术,支持相应的verbs接口,如图所示。从图中不难发现,RoCE协议存在RoCEv1和RoCEv2两个版本,主要区别RoCEv1是基于以太网链路层实现的RDMA协议(交换机需要支持PFC等流控技术,在物理层保证可靠传输),而RoCEv2是以太网TCP/IP协议中UDP层实现。从性能上,很明显Infiniband网络最好,但网卡和交换机是价格也很高,然而RoCEv2和iWARP仅需使用特殊的网卡就可以了,价格也相对便宜很多。

相关名词:

Infiniband,支持RDMA的新一代网络协议。 由于这是一种新的网络技术,因此需要支持该技术的NIC和交换机。
    RoCE,一个允许在以太网上执行RDMA的网络协议。 其较低的网络标头是以太网标头,其较高的网络标头(包括数据)是InfiniBand标头。 这支持在标准以太网基础设施(交换机)上使用RDMA。 只有网卡应该是特殊的,支持RoCE。
    iWARP,一个允许在TCP上执行RDMA的网络协议。 IB和RoCE中存在的功能在iWARP中不受支持。 这支持在标准以太网基础设施(交换机)上使用RDMA。 只有网卡应该是特殊的,并且支持iWARP(如果使用CPU卸载),否则所有iWARP堆栈都可以在SW中实现,并且丧失了大部分RDMA性能优势。
 

部分摘自百度以及MasterT-J

       

    
 

发布了124 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lm236236/article/details/103658492