【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍

帝国理工的PPT学习。

什么是RDMA

Remote Direct Memory Access,也就是Remote的DMA,是一种硬件机制,能直接访问远端结点的内存,而不需要处理器介入。

其中:

  • Remote:跨node进行数据传输
  • Direct:不需要CPU或者OS kernel介入
  • Memory:从两个node各自app的虚拟地址空间直接传输数据
  • Access:支持send、receive、read、write、atomic operation

RDMA的优点

也就说明了适用场景

  • 较高的高吞吐量(带宽)
  • 较低的E2E时延
  • 较低的CPU适用:单侧的RDMA操作完全不需要remote CPU参与)
  • 较低的内存总线争用:user space和kernel之间完全不拷贝数据)
  • 异步操作:所以很适合overlapping的通信和计算

传统的TCP/IP vs RDMA

可以看到RDMA绕过kenel mode的同时也bypass了这些协议栈

协议栈对比

RDMA网络栈

准备阶段:设置RDMA的data channels

buffer在使用前需要在网卡那边注册一下,具体地,在注册阶段需要:

  • Pin memory,保证这块memory不会被OS swap出去
  • 将地址转换信息存到NIC里
  • 对这段memory region设置权限
  • 返回remote key和local key,这是给adapter在执行RDMA操作时用的

工作队列

RDMA通信是基于Send、Receive、Completion这三种队列的,其中Send和Receive的queue属于work queue,总是以Queue Pair的形式被创建。SQ和RQ用于schedule work,当work完成时,CQ用于通知。

在工作时,应用会issue一个work request,这个struct包含了指向一个buffer的指针:

  • 对于SQ,指向要发送的消息
  • 对于CQ,指向了incoming message要放入的位置

而一旦一个work request完成了,那么adapter就会往CQ里塞一个元素。

支持RDMA的网络协议

IB (InfiniBand)、RoCE (RDMA over Converged Ethernet)、iWARP (internet Wide Area RDMA Protocol)

RDMA只是一种机制

并没有指定data transfer的语义,RDMA网络支持两种访问模型:

Two Sided:RDMA send & receive

这是最传统的消息传递模式,消息源和目标方都积极地参与通信

双方都需要创建:

  • 一对QP (SQ+CQ),用于发送和接收
  • 给这对QP用的CQ

发送方的work request会指向要传输的buffer,然后把这个WQE塞到SQ里发过去。

接收方的work request会指向一个empty buffer用于接收数据,通过这种方式WQE会被添加到对应的RQ里。

在send+receive完成之后,也就是直接写入了remote的registered memory,然后双方的CQ里都会被添加一个CQE表示完成了。

One Sided:RDMA read & write + atomic操作

只有发起方是活动的,接收方是纯被动的,不会issue任何操作,也不会有CPU cycle,甚至完全不会感知到有read/write发生了。

如果要发起RDMA read/write,那么work request必须包含:

  • 远端目标内存的虚拟地址
  • 远端的memory registration key

也就是说要使用RDMA read/write,发起方必须事先就知道这两个knowledge。

基于RDMA的上层协议

RDMA有很多好处,但也因为开发者需要使用它的Verbs API带来了额外的复杂性。

相关推荐
gwf2162 小时前
NVMe/RDMA传输层协议深度解析:RDMA原理、Queue Pair映射、内核实现与性能全栈剖析
linux内核·ssd·nvme·性能调优·rdma·存储协议·nvme/rdma
疯狂打码的少年3 小时前
【计算机网络】网络互连设备(中继器 / 网桥 / 交换机 / 路由器 / 网关)
网络·笔记·计算机网络·智能路由器
shehuiyuelaiyuehao14 小时前
1计算机是如何工作的
java·计算机网络
疯狂打码的少年15 小时前
【计算机网络】子网掩码与子网划分计算(含CIDR表示法)
服务器·笔记·计算机网络·php
疯狂打码的少年1 天前
【计算机网络】UDP协议与TCP/UDP对比(面向连接vs无连接)
笔记·tcp/ip·计算机网络·udp
疯狂打码的少年1 天前
【计算机网络】IP地址与子网划分(IP地址分类与特殊地址)
网络·笔记·tcp/ip·计算机网络
疯狂打码的少年1 天前
【计算机网络】TCP协议(三次握手、可靠传输、流量控制)
网络·笔记·tcp/ip·计算机网络
河北之花1 天前
计算机三级:路由协议与OSPF
计算机网络
gwf2161 天前
800G RNIC芯片设计挑战:PCIe Gen6与DMA引擎架构 —— 面向AI超大规模集群的硬件实现深度解析
芯片设计·rdma·rnic·gpudirect·pciegen6·dma引擎·mrc协议
游戏开发爱好者83 天前
网络连接排查指南,谁在电脑后台偷跑流量,哪些程序在联网
网络协议·计算机网络·网络安全·ios·adb·https·udp