RDMA 远程直接内存访问介绍

发布时间: 更新时间: 总字数:1419 阅读时间:3m 作者: IP上海 分享 网址

RDMA(RemoteDirect Memory Access,远程直接内存访问) 是一种为了解决网络传输中服务器端数据处理的延迟而产生的技术。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。

介绍

  • RDMA 的优势
    • 零拷贝(Zero-copy)
    • 内核旁路(Kernel bypass)
    • 不需要 CPU 干预(No CPU involvement)
    • 消息基于事务(Message based transactions)
    • 支持分散/聚合条目(Scatter/gather entries support)
  • RDMAInfiniBandIB卡IB驱动关系
    • 区别与传统的数据传输,由一台机器的用户空间发送到另一台远程机器的用户空间
    • IB(InfiniBand, 无限带宽)网络的物理链路协议 是一个用于高性能计算(HPC)的计算机网络通信标准(协议),它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。类似的协议还有 iWARPRoCE
    • InfiniBand Verbs API,是远程直接访问(RDMA)技术的实现
    • IB 卡,是实现 InfiniBand 协议的硬件
    • IB 驱动,IB 卡依赖 IB 驱动才能实现 InfiniBand 协议的 RDMA 技术

区别

rdma-ib-roce-iwarp
  • 图片参考
  • 1999 年,由 Compaq、Dell、HP、IBM、Intel、Microsoft 和 Sun 公司组成了 IBTA 组织
    • 愿景是设计一种更高速的新的互联协议规范标准,来应对传统以太网在面对未来计算机行业的发展时可能遇到的瓶颈
    • 2000 年,IBTA 组织设计并发布了 Infiniband Architecture Specification 1.0(IB 规范)
    • 2007 年,IETF 发布了 iWARP(Internet Wide Area RDMA Protocol)的一系列 RFC
    • 2010 年,IBTA 发布了 RoCE v1 规范
    • 2014 年,IBTA 发布了 RoCE v2 规范
  • RDMA 技术(或标准)支持三类协议,分别为:
    • InfiniBand(IB) 更多参考Mellanox 网卡
      • 由于 IB 是新的网络技术,因此需要支持该技术的网卡和交换机
    • RDMA over Converged Ethernet(RoCE) RDMA 过融合以太网,即 RDMA over Ethernet,允许通过以太网实现 RDMA 的网络协议,更多参考RoCE 协议介绍
      • 阿里云是国内率先部署 RoCE RDMA 的云厂商
    • internet Wide Area RDMA Protocol(iWARP) 互联网广域 RDMA 协议,RDMA over TCP,允许通过 TCP 实现 RDMA 的网络协议
      • 在标准以太网基础架构(交换机)上使用 RDMA,只不过网卡要求是支持 iWARP(如果使用 CPU offload 的话)的 NIC。否则,所有 iWARP 栈都可以在软件中实现,但是失去了大部分的 RDMA 性能优势。
  • iWARPRoCE 是非 InfiniBand 硬件上实现 RDMA 技术

相关术语

  • Fabric 支持 RDMA 的局域网(LAN)
    • A local-area RDMA network is usually referred to as a fabric.
  • CA(Channel Adapter, 通道适配器)
    • A channel adapter is the hardware component that connects a system to the fabric.
    • CA 是将系统连接到 Fabric 的硬件组件
    • 在 IBTA 中,一个 CA 就是 IB 子网中的一个终端结点(End Node)。分为两种类型,
      • 一种是 HCA(Host Channel Adapter) 是支持 verbs 接口的 CA
      • 另一种叫做 TCA(Target Channel Adapter) 可以理解为 weak CA,不需要像 HCA 一样支持很多功能。
      • HCATCA 合称为 xCA
      • 在 IEEE/IETF 中,CA 的概念被实体化为 RNIC(RDMA Network Interface Card),iWARP 就把一个 CA 称之为一个 RNIC
  • Verbs Verbs 这个词不好翻译,大致可以理解为访问 RDMA 硬件的 一组标准动作
    • 每一个 Verb 可以理解为一个 Function
  • Memory Registration(MR) 内存注册
  • RDMA 一共支持三种队列:
    • 发送队列(SQ)
    • 接收队列(RQ)
    • 完成队列(CQ)

使用

Docker 中使用 RDMA 设备

sudo docker run --net=host --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --ulimit memlock=-1 -t -i <IMAGE ID> /bin/bash

说明:

  • --net=host:配置容器的通信模式为 host
  • 容器内的应用程序可以直接使用主机的网络接口和网络配置,从而实现与主机相同的网络通信能力
  • --device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm:将 RDMA 对应的用户态字符设备暴露到容器中
  • --ulimit memlock=-1:将 maxlockedmemory 设置为 unlimited 表示不限制非 root 用户锁定内存的数量
    • 这可以确保 eRDMA 应用程序在非 root 用户下能够锁定所需的内存量,从而有效地使用 eRDMA 功能
  • docker 中需要安装 rdma 相关的包:apt install libibverbs rdma-core librdmacm libibverbs-utils
  • 参考
本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics