问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

RDMA技术详解:从基础概念到RoCE实现

创作时间:
作者:
@小白创作中心

RDMA技术详解:从基础概念到RoCE实现

引用
CSDN
1.
https://blog.csdn.net/py199122/article/details/120057920

RDMA(远程直接内存访问)是一种高性能的网络通信技术,它允许网络适配器直接从主计算机的内存中读取数据或将数据写入内存,而无需经过CPU和操作系统。这种技术可以显著提高数据传输速度,降低CPU的负载,广泛应用于高性能计算、云计算和大数据处理等领域。本文将详细介绍RDMA的核心概念和RoCE(RDMA over Converged Ethernet)技术。

一、RDMA概述

RDMA的主要特点是绕过了内核数据直接到网卡,因此具有速度快、减轻CPU负担的特点。目前市场上有多个厂家提供底层实现方案,其中InfiniBand的价格较高,而RoCE(RDMA over Converged Ethernet)使用较为广泛。

关键概念

  • 保护域(PD):Protection Domain
    关联到多个其他RDMA资源,如SRQ/QP/AH或者MR,以便对它们提供保护。

  • 地址句柄(AH):Address Handle
    UD QP的发送任务中,描述了消息从本地端口到远程端口的路径。相同的AH可用于多个QP。

  • 内存注册(MR):Memory Region
    RDMA设备访问的每个内存缓冲区都必须注册。在注册过程中,将对内存缓冲区执行如下操作:

    1. 将连续的内存缓冲区分成内存页。
    2. 将虚拟内存映射到物理内存。
    3. 检查内存页权限,确保它们支持MR发出的请求权限。
    4. 锁定内存页,以防被换出。这将保证虚拟内存到物理内存的映射不变。

    成功注册后,内存有两个键:

  • 本地键 lkey:供本地工作请求来访问内存的键。

  • 远程键rkey:供远程机器通过RDMA操作来访问内存的键。

    工作请求中,将使用这些键来制定内存缓冲区。同一个内存缓冲区可注册多次,即便指定的权限不同。

  • 快速内存区域(FMR):Fast Memory Region
    注册内存去是一项繁重的任务,可能需要较长的时间才能完成。如果这项任务需要的资源不可用,执行任务的上下文甚至可以进入休眠状态。有些情况下会有问题,如中断。使用FMR可以快速注册。

  • 内存窗口(MW):Memory Window
    启用远程内存访问的方式有以下两种:

    1. 注册允许远程访问的内存缓冲区。
    2. 注册内存区并将其绑定到内存窗口。

    这两种方式都将创建远程键rkey,可用来访问指定的内存。若要让rkey无效,以禁止访问该内存,采用注销内存区的方式来达成目的,实现繁琐。通过使用内存窗口,根据需要进行绑定和解绑是一种简单方式。

  • 完成队列(CQ):Completion Queue
    发送到发送队列或接受队列的每个工作请求都被视为未完成的,直到有相应的工作完成或再发送了其他工作请求为止。在工作请求未完成期间,它指向的内存缓冲区的内容是不确定的。

    如果RDMA设备读取该内存并发送其内存,客户端无法确定可以使用它们还是必须释放它们。对于可靠的QP,成功的工作完成意味着远程端已经收到消息;对于不可靠QP,成功的工作意味着消息只是发送出去。

    如果RMDA设备将消息写入该内存,客户端将无法确定该缓冲区是否包含入站消息。

    工作完成会指出相应的工作请求已经完成,并提供一些有关工作请求的信息,如状态,使用的操作码,大小等。完成队列CQ是包含工作完成的对象,客户端需要轮询CQ,以读取其中完成的工作。CQ以FIFO方式工作。

  • 共享接收队列(SRQ):Shared Received Queue
    共享接收队列,是一种让RDMA架构在接收端的可扩展性变得更强的方式。它将共享队列用于QP,而不是让每个QP都使用独立的接收队列。

  • 队列对(QP):Queue Pair
    队列对,收发数据的对象。有两个独立的队列,发送队列和接收队列。每个工作队列都有如下属性,可存储的工作请求数,workr equest,工作请求完成后将在其中添加工作完成的CQ。工作队列中处理顺序是有保证的,即对发送队列中的工作请求,将按发送请求的提交顺序进行处理,接收队列也是如此。相互独立。

    被创建时,每个QP都有一个编号。在特定时间、RDMA设备中是惟一的。

二、RoCE技术详解


RoCE(RDMA over Converged Ethernet)是一种基于以太网的RDMA实现方式。RoCE数据包是标准的以太网帧,携带由IEEE分配的Ethertype值,指示下一个头是RoCE GRH。由于RoCE流量不携带IP头,因此不能使用常规的IP路由器在以太网L2子网边界之间路由。在这种方案下,RoCE_V1仅提供在以太网L2域内进行通信的RDMA服务。

RoCEv2

RoCEv2的主要改进是增加了IP头,使其能够跨越IP L3路由器进行传输,而RoCEv1只能在局域网内传输。

  • RoCEv2数据包携带IP头,这允许它们穿越IP L3路由器,并使用UDP头作为状态less封装层来承载IP上的RDMA传输协议数据包。

  • RoCEv2数据包的源IP地址应设置为与数据包关联的地址向量中引用的“端口”和“SGID索引”组件的端口GID条目中编码的IPv4地址。

  • RoCEv2数据包的目标IP地址应设置为与数据包关联的地址向量中DGID组件中编码的IPv4地址。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号