0. 知乎 --《RDMA杂谈》专栏索引

转载于知乎: 0. 《RDMA杂谈》专栏索引 - 知乎

一 基本概念篇

1 RDMA概述(有更新)

RDMA概述184 赞同 · 19 评论文章

主要内容:RDMA技术是什么,它是如何产生的?我们在什么场景下需要使用RDMA技术代替传统的以太网?这项技术的主要贡献者和使用者是谁?

2021/4/11:更新了文章最开始关于RDMA是什么的讲解,增加了DMA的介绍并增加了更多RDMA的细节描述。

2 比较基于Socket与RDMA的通信

比较基于Socket与RDMA的通信80 赞同 · 5 评论文章

主要内容:传统以太网通过对上层应用提供了Socket接口作为API,而RDMA协议栈则向上层提供了verbs接口。以上两种通信方式在数据从本端用户的内存空间到达对端用户的内存空间这一过程中存在显著的差异。本文想通过对比这些差异告诉读者,为何我们要使用RDMA技术。

3~5 为通识知识介绍,是阅读后面文章需要掌握的重要基础知识,希望读者先从宏观视角对整个RDMA技术有一个了解。

3 RDMA基本元素

RDMA基本元素109 赞同 · 33 评论文章

主要内容:讲到RDMA协议,就绕不开各种各样的缩写。区别于IB协议原文,本文对RDMA中最重要的各种队列的概念作了简单和通俗的介绍,方便读者理解。

2022/5/23:改正了关于Send-Recv流程的描述和配图。接收动作对于RDMA硬件是“被动”的,只有收到Send报文/带立即数的Write报文时才会消耗RQ WQE,而不是用户一下发WQE就主动处理。

4 RDMA操作类型

RDMA操作类型65 赞同 · 53 评论文章

主要内容:RDMA中有多种通信模型/模式,根据数据收发时CPU的参与情况,它们可以分为需要收发两端参与的双端操作和只需要发起方参与的单端操作。本文介绍了不同操作类型时数据在软硬件中的传递过程。

5 RDMA基本服务类型

RDMA基本服务类型59 赞同 · 23 评论文章

主要内容:就像TCP/IP协议栈传输层的UDP和TCP一样,RDMA技术也规定了在不同场景下的服务类型,不同的服务类型在可靠性和速率上各有侧重。本文介绍了4种主要服务类型的特点和应用场景。

基础知识篇第6篇文章之后,主要是对协议中的重要概念做更详细的讲解。

6 RDMA之Memory Region

RDMA之Memory Region71 赞同 · 46 评论文章

主要内容:网络通信的本质是数据在存储介质中的迁移,RDMA通过MR来对内存进行管理。MR就是一片特殊的内存区域,本文对其概念和作用做了介绍。

7 RDMA之Protection Domain

RDMA之Protection Domain50 赞同 · 14 评论文章

主要内容:为了隔离各种RDMA资源,协议提出了PD的概念。PD意为保护域,将相关的软件资源“圈”到一起,各个保护域之间的资源无法相互访问。

8 RDMA之Address Handle

RDMA之Address Handle48 赞同 · 11 评论文章

主要内容:AH意为地址句柄,在UD等服务类型中,本端通过使用AH来指定对端节点。

9 RDMA之Queue Pair

RDMA之Queue Pair57 赞同 · 22 评论文章正在上传…重新上传取消

主要内容:重点来了,QP是RDMA技术中最关键的概念,是软件向硬件“发号施令”的媒介,本文对协议中大部分跟QP相关的内容作了分析和讲解。

10 RDMA之Completion Queue(有更新)

RDMA之Completion Queue49 赞同 · 42 评论文章

主要内容:也是重点,CQ和QP是相伴相生的,是硬件向软件“报告任务情况”的媒介,本文对协议中大部分跟CQ相关的内容作了分析和讲解。

2022/2/19:文中关于WQE和CQE之间保序的描述有误,本次修改更正了对应的章节。

11 RDMA之Shared Receive Queue

RDMA之Shared Receive Queue36 赞同 · 27 评论文章

主要内容:IB协议通过SRQ的机制大大减小了接收端对内存容量的需求,本文主要介绍SRQ的原理以及跟RQ的异同。

12 RDMA之Memory Window

RDMA之Memory Window40 赞同 · 18 评论文章

主要内容:为了更灵活方便的控制内存访问权限,IB协议设计了MW。本文主要介绍MW的作用、和MR的关系、接口以及分类。另外相比MR一文,对L_Key和R_Key进行了更深入的介绍。

二 RDMA软件栈篇

1 RDMA之Verbs

RDMA之Verbs90 赞同 · 20 评论文章

主要内容:Verbs是RDMA领域的基础编程接口。本文介绍了Verbs的广义和狭义概念,以及如何查看基于C语言的Verbs API的定义和使用,简单讲解了几个常用Verbs API的功能。另外介绍了OFED、rdma-core和RDMA Subsystem的关系。

2 RDMA之用户态与内核态交互

RDMA之用户态与内核态交互58 赞同 · 18 评论文章

主要内容:讲解为什么有的Verbs API需要陷入内核态,如何陷入内核态,以及用户态和内核态是如何交互的。本文举了一个例子,可以帮助大家把整个流程串起来。另外本文也简单介绍了整个RDMA软件栈的架构。

3 如何部署软件栈

4 手上没有硬件怎么学习和做实验?(有更新)

RDMA之RoCE & Soft-RoCE82 赞同 · 67 评论文章

主要内容:RoCE是一种重要的RDMA协议,基于以太网的IP层及其以下实现。商用的RoCE技术依赖于专用网卡,但是IBTA实现的Soft-RoCE技术为我们提供了一种“纯软件”实现的RoCE,从而节省购买网卡的高昂费用,降低了学习和实验的门槛。本文偏向实践,讲解何为RoCE,以及如何快速部署一套支持Soft-RoCE的虚拟机环境,并配合Wireshark抓包来学习RoCE协议。

2022/4/22:部分读者对于Soft-RoCE和TCP的性能对比产生了疑问,根据Soft-RoCE最早的宣传文章,其性能优于TCP,但是实测要远差于TCP。补充了对此现象的说明,以及可能的解决方案。

5 Pyverbs(Python Verbs)

RDMA之Pyverbs(Python Verbs)13 赞同 · 11 评论文章

主要内容:基于C的Verbs API是RDMA软件栈的基础用户接口,但是因为C语言比较底层,内存管理机制相对复杂,因此基于C编写一些RDMA程序对于非专业开发者并不友好。好在软件栈还为我们实现了基于Cython语言的Pyverbs接口,使得大家可以使用Python来简单、快速地编写RDMA程序进行实验和学习。本文介绍了Pyverbs的部署和使用方法,并且提供了一个自己编写的Python程序。

6 内存地址基础知识

RDMA之内存地址基础知识39 赞同 · 23 评论文章

主要内容:本文主要澄清了一些RDMA领域需要了解的关于内存地址的一些基础概念,帮助读者加深对各种地址的理解。

7 通过示例程序讲解RDMA通信全流程

8 verbs接口详解 * n

三 协议详解篇

1 iWARP

1.1 概述

RDMA之iWARP & Soft-iWARP19 赞同 · 25 评论文章

主要内容:iWARP是三大RDMA协议之一,本文首先介绍了iWARP的发展脉络、现状、层次结构以及标准,然后横向对比了iWARP和RoCE v2协议,最后介绍了软件实现的iWARP协议栈——Soft-iWARP并做了一个抓包实验。

1.2 DDP(Direct Data Placement)

RDMA之DDP(Direct Data Placement)27 赞同 · 14 评论文章

主要内容:DDP是iWARP协议栈中最核心的一层,在TCP/IP协议栈之上实现了零拷贝,从而为基于TCP/IP的RDMA打下了基础。本文介绍了DDP协议的概念、报文和实现,并做了一个简单的抓包实验。

1.3 RDMAP(Remote Direct Memory Access)

RDMA之RDMAP(Remote Direct Memory Access Protocol)17 赞同 · 5 评论文章

主要内容:RDMAP是iWARP协议栈中最靠近用户的一层,基于DDP实现了RDMA操作的语义,包括Send/RDMA Write/RDMA Read等。本文介绍了RDMAP协议的概念、报文格式和实现细节,并且通过实验对报文进行了讲解。

1.4 MPA(Marker PDU Aligned framing)

RDMA之MPA(Marker PDU Aligned framing)16 赞同 · 0 评论文章

主要内容:MPA是iWARP协议栈中最复杂的一层,负责在基于消息的DDP层和基于流的TCP层做转换,令接收端能够高效的识别出TCP流中DDP分段的界限。本文介绍了MPA的功能,报文格式、实现细节以及协商和数据交互流程。

2 RoCE

3 地址管理

4 报文结构

5 Socket建链

RDMA之基于Socket API的QP间建链23 赞同 · 28 评论文章

主要内容:Socket是主要适用于RoCE v2节点QP之间建链的重要方式,QP间建链的目的是为了交换稍后基于RDMA通信时所必要的信息,比如QPN等。用户通过调用Socket API,基于TCP/IP协议建立了一条通道来交换上述信息。本文主要介绍基于Socket API的QP间建链的流程、交换内容等,并通过一个抓包实验让大家能够更清楚的了解这个过程。

6 CM建链

RDMA之基于CM API的QP间建链23 赞同 · 33 评论文章

主要内容:CM是RDMA技术中另一种重要的QP间建链方式。它既可以指协议、可以指RDMA通信角色、也可以指API,本文区分了上面三种概念,并且着重介绍了CM协议以及报文交互流程。最后通过一个抓包实验让大家对这个抽象的协议有一个更具体更深入的认识。

7 重传机制

...

四 上层应用

1 UCX

2 MPI

五 番外篇

本专栏既是RDMA杂谈,除了RDMA之外,也会谈谈相关的其他内容。大部分“杂”的部分都会收录于本篇中。番外篇中的内容并非与RDMA技术强相关,但可能又有那么一丁点儿联系。

本篇内容可能会囊括RDMA生态、技术社区、内核中一些技术的实现分析、一些开发工具的使用技巧、甚至于记录本人的各种突发的灵感等等。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值