0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RDMA技术简介

Linux阅码场 来源:Linux阅码场 2023-04-20 09:49 次阅读

13.3.3 iWARP

iWARP(Internet Wide Area RDMA Protocol)是 IETF 定义的基于 TCP 的 RDMA,它和RoCE v2 都可以路由。因为 TCP 是面向连接的可靠协议,这使得 iWARP 在面对有损网络场景时,相比 RoCEv2 和 InfiniBand 具有更好的可靠性,在大规模组网时也有明显的优势。但在大规模数据中心和大规模应用程序(比如大型企业网、云计算、Web 2.0 应用程序等)中使用 iWARP 时,大量连接的内存需求以及 TCP 的流量和可靠性控制将会导致可扩展性和性能相关的问题,并且会耗费很多的内存资源。总体来看,RoCE 在时延、吞吐量和 CPU 开销方面明显优于 iWARP。此外,RoCE 规范中定义了多播,而当前的 iWARP 规范没有定义如何执行多播 RDMA。

需要注意的是,虽然存在软件实现的 RoCE 和 iWARP,但是真正商用时上述几种协议都需要专门的硬件(网卡)支持。本书中测试和分析代码时所使用的 RDMA 网卡都为支持RoCEv2 协议的网卡。

13.4 RDMA 网络构成

InfiniBand 体系结构定义了组网通信所需的多种设备:通道适配器(channel adapter)、交换机(switch)、路由器(router)和子网管理器(subnet manager)。其中子网管理器属于虚拟设备,它可以在其他任何一台设备上实现。图 13-8 展示了一个包含所有这些实体设备的网络。每个终端(endnode)设备必须至少有一个通道适配器(HCA 或 TCA)。一个子网中至少有一个子网管理器用于配置和维护链路。所有的通道适配器和交换机必须包含子网管理代理(subnet management agent,SMA),用于处理与子网管理器的通信。

除了子网管理器,RoCE 类型的网络中也需要上述这些组件。

wKgaomRAmsmATpnBAAKqMM6RYwQ816.png

主机通道适配器(host channel adapter,HCA)

HCA 即本书中经常提及的安装在主机上的 RDMA 网卡,用于将一个主机设备连接到一个 RDMA 网络上。

一个 HCA 可以有多个物理端口(port),每个端口有自己的本地标识符(local identifier,LID)或 LID 范围。另外,每个端口还有自己的发送和接收缓存(buffer),因此所有端口可以并行发送和接收。

子网管理器为 HCA 的每一个物理端口配置子网内的本地地址,即 LID。HCA 中的子网管理代理和子网管理器通信,共同实现子网管理功能。

厂商会给每一个 HCA 分配独一无二的标识符,称为 GUID(globally unique identifier)。子网管理器分配给 HCA 的 LID 并不是永久的(断电重启后可能会变),所以 GUID 就成了永久识别某一个 HCA 的主要标识符。另外,厂商还给每一个端口分配了一个端口 GUID。

HCA 支持 InfiniBand 定义的所有软件 Verbs。Verbs 是一种抽象表示,它定义了客户端软件和 HCA 功能之间所需的接口。Verbs 不直接指定操作系统的应用程序编程接口(API),而是定义了一系列操作,提供给操作系统供应商开发相应的 API。

目标通道适配器(target channel adapter,TCA)

TCA 为 I/O 设备(比如硬盘控制器)提供其到 RDMA 网络的连接,支持每个设备的特定操作所需的 HCA 功能子集。

子网管理器(subnet manager)

InfiniBand 子网管理器为连接到 InfiniBand 网络的每个端口分配 LID,并基于分配的 LID建立路由表。子网管理器属于软件定义网络(SDN)的概念,它消除了互连的复杂性,支持创建非常大规模的计算和存储基础设施。子网管理器配置本地子网并确保其持续运行。每个子网中必须至少有一个子网管理器,用于管理所有交换机和路由器的配置,并在链路断开或出现新链路时重新配置子网。

子网管理器可以位于子网中的任何设备内,它通过与每台设备上的子网管理代理通讯来进行工作。一个子网中可以有多个子网管理器,但只能有一个子网管理器处于活动状态。不在活动状态的子网管理器(即备用子网管理器),会同步保存处于活动状态的子网管理器转发的信息副本,并验证活动状态的子网管理器是否仍在运行。如果处于活动状态的子网管理器停机了,备用子网管理器将接管它的工作,以确保整个子网不会停摆。

在 RoCE 类型的网络中,不存在子网管理器。

交换机(switch)

InfiniBand 交换机在概念上类似于标准以太网交换机,但其设计旨在满足 InfiniBand 的性能要求。它们实现 InfiniBand 链路层的流量控制以防止丢包,有避免阻塞和自适应路由的功能,并支持高级服务质量(QoS)。许多交换机包含了子网管理器的功能。交换机包含多个端口,并根据协议第二层本地路由报头中包含的 LID,将数据包从一个端口转发到另一个端口。交换机只会管理和转发数据包,不会消耗或产生数据包。与通道适配器(HCA 和 TCA)一样,交换机必须包含子网管理代理功能,以处理子网管理报文。交换机可以被配置为转发单播数据包(到单个设备)或多播数据包(到多个设备)。

RoCE 类型的网络中使用的是以太网交换机。

路由器(router)

InfiniBand 路由器将数据包从一个子网转发到另一个子网,而不消耗或产生数据包。与交换机不同,路由器根据全局路由报头(global route header,GRH)中包含的 IPv6 网络层地址来转发数据包。在将数据包发送到下一个子网中时,路由器会按照目标子网中合适的 LID 来修改数据包中的本地路由报头(local route header,LRH),重新组装每个数据包。

路由对终端来说并不是透明的,因为终端发包时必须指定路由器的 LID 和最终目标的GID。

每一个子网都有独一无二的子网 ID,称为子网前缀。子网管理员会把这个子网前缀赋值给这个子网中所有的端口(包含在端口的 PortInfo 属性中)。这个子网前缀和端口的 GUID结合,就成了端口的 GID。端口也可以有其他的 GID。

从路由器的角度看,GID 中的子网前缀部分就代表了穿过路由器的路径。路由器依据数据包的目的 GID 和转发表来决定把数据包转发到哪个或哪些端口。

RoCE 类型的网络中使用的是以太网路由器。

13.5 LID 和 GID

从功能上看,LID(local identifier)和 GID(globally identifier)的概念类似于“以太网和IP 网”中的 MAC 和 IP,分别用于子网内的目标寻址和子网间的目标寻址。

根据 InfiniBand 协议,两台设备间建立连接时,需要知道对方的 QP 号和端口,其中对端口的识别根据 LID 和 GID(后者可选)进行。

13.5.1 LID

InfiniBand 定义的 LID 是一个 16 位的标识符。LID 有以下特征。• 由子网管理员分配,子网内唯一,不可用于子网间路由。

• LID 作为一种网络地址,分为预留、单播和多播地址段。

• 数据包中的本地路由报头(local route header,LRH)中包含了 LID。

• 源 LID 指的是第一个将数据包插入子网的终端端口的 LID。

• 一个单播型的目的 LID 适用于某一个目的终端端口。一个多播型的目的 LID 适用于一个子网中某个多播组里的一系列目的终端端口。

• 如果最终的目的端口不在这个子网内,数据包中的目的 LID 指向的是,负责转发这个数据包到下一跳的路由器的某个端口。

• 一个终端端口在连接到子网后,收到的数据包可能经过了子网内的多条物理路径。例如,图 13-9 中交换机之间相同类型的连红表示一条可能的路径,这样的路径共有 4条。每条路径可以被一个或多个物理 LID 标识。为了降低 HCA 的多路径操作的复杂度,每个物理端口应分配一个基本 LID 和一个 LMC。LMC 是一个 3 位的域,代表2LMC条路径。图 13-9 中,HCA A 和 HCA C 之间存在多条路径。如果 HCA A 被分配了基本 LID 4,LMC =2,则其 LID 的范围是 4、5、6、7。如果 HCA C 被分配了基本LID 8,LMC=2,则其 LID 的范围就是 8、9、10、11。

• LID 的分配规则:LID 0x0000 无效;LID 0xFFFF 分配给接收数据包的终端端口的 QP0;0x0001 和 0xBFFF 之间为单播 LID;0xC000 和 0xFFFE 之间为多播 LID。

对于 RoCE 类型的网络,LID 无效,所有端口的 LID 都为 0x0000。

wKgaomRAmsmAI32QAAGAZGUVJSQ837.png

13.5.2 GID

GID 是一种 128 位的单播或多播标识符,用于标识端口或多播组。

GUID(globally unique identifier)是全局唯一的 EUI-64 标识符,共 64 位。其中的 24 位表示厂商 ID,另外 40 位是扩展标识符,由生产设备的厂商来分配。

GID 有以下特征。

• 每个终端端口必须被分配至少一个单播 GID。第一个单播 GID 在创建时必须使用厂商分配的 EUI-64 标识符。此 GID 称为 0 号 GID,格式见图 13-10(a)或图 13-10(b)。

• 默认的 GID 前缀为 0xFE80::0,共 64 位。使用默认 GID 前缀和厂商/子网管理器分配的 EUI-64 可以组成 128 位的 GID,使用这种 GID 封装的数据包必须被终端接纳。一个数据包的全局路由报头(GRH)中如果有这种前缀的目的 GID,则路由器不能将其转发,也就是必须限制在本地子网内处理。

• 一个子网 GID 必须使用下列一个或多个规则来创建。

规则 1。把默认 GID 前缀和厂商给终端端口分配的 EUI-64 标识符连接起来。这个 GID 就是默认的 GID。

规则 2。把子网管理器分配的 64 位的 GID 前缀和厂商给终端端口分配的 EUI-64标识符连接起来。

规则 3。子网管理器分配的 GID。子网管理器把默认或者分配的 GID 前缀和一组本地分配的 EUI-64 值连接起来。这种 GID 称为 1 号或更大号码的 GID。每个终端端口必须用规则 1 分配至少一个单播 GID。其他 GID 可用规则 2 或规则 3分配。注意,一个子网在某个时间点只能有一个分配的(非默认的)GID 前缀。

• 通道适配器、交换机或路由器上的任何 QP,都可以用默认 GID 前缀加上为这个 QP分配的 GID 来寻址。这使得一个子网可以在不中断已有通信会话的情况下,从默认GID 前缀状态转换为托管状态。

• 每个终端端口可以支持的单播 GID 的最大数量(N)取决于具体实现。子网管理器可以分配 N−1 个额外的单播 GID,这 N−1 个 GID 中的每一个都是通过将一个子网管理器分配的 EUI-64 标识符与 GID 前缀连接起来创建的。

• 单播 GID 地址 0000:0 是保留的,称为保留 GID。不得将其分配给任何终端端口,也不得将其用作目的地址或用在 GRH 中。

• 单播 GID 地址 0000:1 称为环回 GID,仅由原始(raw)IPv6 服务使用,不由InfiniBand 传输服务使用。不得将其分配到终端端口或出现在任何 InfiniBand 数据包中。

• 单播 GID 子网前缀应限于 GID 地址空间的高 64 位。子网前缀的位的数量可能会进一步受到填充(filler)和作用域(scope)位的限制,见下文分析。

• 单播 GID 的低 64 位不能进一步划分子网。

• 单播 GID 的低 64 位在子网中是唯一的。

• GRH 中应包含有效的源 GID 和目的 GID。

• 单播 GID 的范围包括以下类型。

本地连接型(link-local)。这种单播 GID 使用默认的 GID 前缀(0xFE80::0),只在子网内使用。如果数据包中有此类 GID,无论是作为源 GID 还是目的 GID,路由器都不能把数据包转发到子网外。本地连接型 GID 的格式如图 13-10(a)所示。

本地区域型(site-local)。这种单播 GID 在一组子网(比如一个数据中心的多个子网)组成的区域内是唯一的,但不一定是全局唯一。路由器不能把带有这种源 GID或目的 GID 的数据包转发到区域外。本地区域型 GID 的格式如图 13-10(b)所示。

全局唯一型(global)。这种单播 GID 是带有全局前缀的,即路由器可以使用此 GID在整个企业网或互联网上路由数据包。全局唯一型 GID 的格式如图 13-10(c)所示。

wKgZomRAmsmAGQmMAADZwzq9icY314.png

多播 GID(MGID)用于识别多播组。多播组中的所有成员,除了具有相同的 MGID,还必须共享相同的 P_key 和 Q_key。

• 多播 GID 的格式如图 13-11 所示。

wKgZomRAmsmAJcVtAAA5kLh5pZU574.png

起始的 11111111 表示这是多播 GID。

标记(Flag)字段有 4 个 1 位的标记,格式为 000T,目前保留前 3 个标记,并定为 0。如果 T 为 0,表示这是一个永久分配的(即众所周知的)多播 GID;如果 T 为 1,表示这是一个非永久分配(即暂时)的多播 GID。

Scope(作用域)字段也有 4 位,用于限制多播组的作用域。如果 Scope 字段的值为 2,表示此多播 GID 仅限在子网内使用;如果 Scope 字段的值为 5,表示此多播 GID 仅限在由几个子网组成的一个区域中使用;如果 Scope 字段的值为 8,表示此多播 GID 可以在一个本地组织中使用;如果 Scope 字段的值为 0xE,表示此多播 GID 可以全局使用。

• 一个终端端口可以加入 0、1 或多个多播组,也就是说,一个终端端口可以被分配 0、1 或多个多播 GID。

• 多播 GID 不能作为源 GID 出现在全局路由报头中。

• 多播 GID FF02000:1 是一个本地连接型的多播 GID,路由器不能把以这种 GID为目的 GID 的数据包转发到子网外。此 GID 在作为 GRH 内的目的地址时,被用来与参与所有通道适配器多播组的一组 QP 通信。所有通道适配器多播组包括希望参与该多播组的所有通道适配器,和增强型交换机的 0 号端口。所有通道适配器多播组用于向能够参与多播操作的所有通道适配器(必须共享相同的 MGID、P_key 和 Q_key)实现广播服务。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206564
  • 网络
    +关注

    关注

    14

    文章

    7251

    浏览量

    87442
  • 路由器
    +关注

    关注

    22

    文章

    3500

    浏览量

    111344
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1271

    浏览量

    78297
  • RDMA
    +关注

    关注

    0

    文章

    68

    浏览量

    8845

原文标题:好书连载|RDMA技术简介(4)

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深入了解RDMA技术

    Explorer,专注于高性能网络、虚拟化网络及网卡的测试方案研究。熟悉dpdk,rdma,sdn等技术的应用与解决方案。
    的头像 发表于 12-26 09:23 819次阅读
    深入了解<b class='flag-5'>RDMA</b><b class='flag-5'>技术</b>

    RDMA RNIC虚拟化方案

    远程直接内存访问(Remote Direct Memory Access,RDMA技术允许应用程序绕过操作系统内核,以零拷贝的方式和远程计算机进行网络通信,具有低延迟和高带宽的优势。RDMA协议
    的头像 发表于 01-23 17:23 675次阅读
    <b class='flag-5'>RDMA</b> RNIC虚拟化方案

    利用CXL技术重构基于RDMA的内存解耦合

    本文提出了一种基于RDMA和CXL的新型低延迟、高可扩展性的内存解耦合系统Rcmp。其显著特点是通过CXL提高了基于RDMA系统的性能,并利用RDMA克服了CXL的距离限制。
    发表于 02-29 10:05 536次阅读
    利用CXL<b class='flag-5'>技术</b>重构基于<b class='flag-5'>RDMA</b>的内存解耦合

    基于RDMA技术的Spark Shuffle性能提升

    一篇文章教你使用RDMA技术提升Spark的Shuffle性能
    发表于 10-28 16:46

    多核下基于RDMA的高效RPC研究

    本文针对目前基于远程直接内存访问(remote direct memory access,RDMA)的远程过程调用(remote procedure call,RPC)设计在多核背景下存在的性能和扩展性问题,提出了一种新的基于RDMA Write的高效
    发表于 09-26 15:27 0次下载
    多核下基于<b class='flag-5'>RDMA</b>的高效RPC研究

    技术盛宴 | 浅析RDMA网络下MMU水线设置

    了广泛应用。为保障RDMA的稳定运行,基础网络需要提供端到端无损零丢包及超低延时的能力,这也催生了PFC、ECN等网络流控技术RDMA网络中的部署。在RDMA网络中,如何合理设置MM
    发表于 11-22 12:44 921次阅读

    基于RDMA网络的MMU水线设置步骤与应用实例

    RDMA(Remote Direct Memory Access),通俗的说就是远程的DMA技术,是为了解决网络传输中服务器端数据处理的延迟而产生的。
    的头像 发表于 01-02 16:15 3671次阅读
    基于<b class='flag-5'>RDMA</b>网络的MMU水线设置步骤与应用实例

    如何选择最适合自己的RDMA网卡

    近些年来,RDMA网卡的技术应用在全球以太网通讯市场上刮起一股旋风,特别是阿里、腾讯、浪潮、超微、联想等一些互联网巨头企业在服务器上大量部署RDMA网卡。2019年,据官方数据报道,天猫双11当天
    发表于 10-21 15:35 563次阅读

    RDMA是什么?RDMA网卡有什么作用?

    近几年RDMA这个词在行业内炒的如火如荼,但是很多人表示RDMA具体是什么?主要应用在哪些领域,有什么作用?RDMA都有哪几种协议?今天小编就这几个问题给大家科普一下。
    发表于 12-27 17:15 1.1w次阅读

    RDMA技术简介 RDMA的控制通路和数据通路方案

    RDMA 技术基于传统以太网的网络概念,但与以太网网络中的同类技术存在差异。关键区 别在于,RDMA 提供了一种消息服务,应用程序可以使用该服务直接访问远程计算机上的虚拟内存。
    发表于 04-10 09:59 1192次阅读

    RDMA技术简介

    RDMA 指的是一种远程直接存储器访问技术。具体到协议层面,它主要包含 InfiniBand、RoCE 和 iWARP 三种协议。三种协议都符合 RDMA 标准,共享相同的上层用户接口(Verbs),只是在不同层次上有一些差别。
    的头像 发表于 04-13 10:48 2484次阅读

    什么是RDMA?什么是RoCE网络技术

    在数据为王的时代,人们对网络的要求更加严苛。然而传统的TCP / IP以太网连接占用了大量的CPU资源,并且需要额外的数据处理,已无法再满足当前更快、更高效和可扩展性的网络需求。在这种情况下,RoCE(RDMA over Converged Ethernet )走进了人们的视野。
    的头像 发表于 07-24 17:40 3990次阅读
    什么是<b class='flag-5'>RDMA</b>?什么是RoCE网络<b class='flag-5'>技术</b>?

    Redis RDMA改造方案分析

    RDMA传输的适配,从业务场景的使用角度来看,大致可分为如下几种类型。
    的头像 发表于 08-16 10:22 1559次阅读
    Redis <b class='flag-5'>RDMA</b>改造方案分析

    RDMA和TCP/IP有什么区别

    在分布式存储网络中,我们使用的协议有RoCE、Infiniband(IB)和TCP/IP。其中RoCE和IB属于RDMA (RemoteDirect Memory Access)技术,他和传统的TCP/IP有什么区别呢,接下来我们将做详细对比。
    的头像 发表于 11-30 09:19 714次阅读
    <b class='flag-5'>RDMA</b>和TCP/IP有什么区别

    rdma网络是什么?RDMA网络有什么应用场景?

    RDMA(Remote Direct Memory Access)网络是一种技术,它通过网络直接在计算机之间传输数据,而无需双方操作系统的介入。这种技术可以允许高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。
    的头像 发表于 12-22 09:30 569次阅读