0%

RDMA Overview

参考:

  1. https://zhuanlan.zhihu.com/p/687200171

RDMA (Remote Direct Memory Access, 远程直接内存访问)

背景

计算机网络通信中最重要的两个衡量指标: 高带宽, 低延迟

  • 通信延迟: 处理延迟 + 网络传输延迟
    • 处理延迟: 消息在发送和接收阶段的处理时间
      • buffer 管理
      • 在不同内存空间中消息复制
      • 消息发送完成后的系统中断
    • 网络传输延迟: 消息在发送和接收方的网络传输时延

当今计算机网络的消息通信:

  • Large Messages: 网络传输延迟占整个通信中的主导位置
  • Small Messages: 处理开销占整个通信的主导地位
    • 在现实计算机通信占主导地位

传统 TCP/IP 通信模式

通信过程

传统的 TCP/IP 网络通信,数据需要通过用户空间发送到远程机器的用户空间

  • 数据发送方
    1. 数据复制:将数据从用户应用空间 Buffer 复制到内核空间的 Socket Buffer 中
    2. 数据包封装处理:内核空间中添加数据包头,进行数据封装,通过一系列多层网络协议的数据包处理工作,这些协议包括:
      • TCP: 传输控制协议
      • UDP: 用户数据报协议
      • IP: 互联网协议
      • ICMP: 互联网控制消息协议
    3. 将数据 Push 到 NIC 网卡中的 Buffer 进行网络传输
  • 消息接受方
    1. 接受从远程机器发送的数据包
    2. 将数据包从 NIC Buffer 中复制数据到 Socket Buffer
    3. 数据包解析:多层网络协议的数据包解析
    4. 将解析后的数据复制到相应位置的用户空间 Buffer
    5. 系统上下文切换,用户应用程序获得数据

存在的主要问题: I/O bottleneck 瓶颈问题

采用 Messaging passing through kernel 方式会导致很低的性能和很低的灵活性

  • 性能低: 由于网络通信通过内核传递,存在很高的数据移动和数据复制的开销
  • 灵活性低:主要是所有网络通信协议通过内核传递,很难去支持新的网络协议和新的消息通信协议以及发送和接收接口

高性能网络通信

  1. TCP Offloading Engine (TOE)
  2. User-Net Networking (U-Net)
    • 第一个跨过内核网络通信的模式之一
  3. Virtual interface Architecture (VIA)
    • 首次提出了标准化 user-level 的网络通信模式
    • 组合了 U-Net 接口和远程 DMA 设备
  4. Remote Direct Memroy Access (RDMA)

TCP Offloading Engine (TOE)

在主机通过网络进行通信的过程中,主机处理器需要耗费大量资源进行多层网络协议的数据包处理工作,这些协议包括传输控制协议(TCP)、用户数据报协议(UDP)、互联网协议(IP)以及互联网控制消息协议(ICMP)等。由于CPU需要进行繁重的封装网络数据包协议,为了将占用的这部分主机处理器资源解放出来专注于其他应用,人们发明了TOE(TCP/IP Offloading Engine)技术,将上述主机处理器的工作转移到网卡上。

这种技术需要特定网络接口-网卡支持这种Offloading操作。这种特定网卡能够支持封装多层网络协议的数据包,这个功能常见于高速以太网接口上,如吉比特以太网(GbE)或10吉比特以太网(10GbE)。

User-Net Networking (U-Net)

U-Net 的设计目标是将协议处理部分移动到用户空间去处理。这种方式避免了用户空间将数据移动和复制到内核空间的开销。它的设计宗旨就是移动整个协议栈到用户空间中去,并且从数据通信路径中彻底删除内核。这种设计带来了高性能的提升和高灵活性的提升。

U-Net 的 virtual NI 为每个进程提供了一种拥有网络接口的错觉,内核接口只涉及到连接步骤。传统上的网络,内核控制整个网络通信,所有的通信都需要通过内核来传递。U-Net应用程序可以通过MUX直接访问网络,应用程序通过MUX直接访问内核,而不需要将数据移动和复制到内核空间中去。

RDMA 简介

  • Remote:数据通过网络与远程机器间进行数据传输。
  • Direct:没有内核的参与,有关发送传输的所有内容都卸载到网卡上。
  • Memory:在用户空间虚拟内存与RNIC网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制。
  • Access:send、receive、read、write、atomic操作。

主要解决的问题: 网络传输中客户端与服务器端数据处理的延迟

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