RDMA 网络编程用户手册-官方材料
中文版
版本 1.7
译者:yy
译者 yy
Email: perftrace@gmail.com
因为工作需要,将这个 Mellanox 的编程用户手册翻译成了中文,便于大家
学习参考。其中第一章和第二章参考了网络上的一些已有翻译,并做了部分纠
错。其他借助了 google 翻译。发布时候我会同时上传英文原版和翻译版,以便
纠错。
修订记录
Rev.
Date
Changes
版本 1.7
5 月 2015
增加章节 B, “Verbs API for Extended Atomics Support”
增加章节 C, “User-Mode Memory Registration (UMR)”
增加章节 D, “Cross-Channel Communications Support”
版本 1.6
4 月 2015
增加章节 A, “Experimental APIs”
版本 1.5
1 月 2014
更新表 3, "Transport Mode Capabilities"
版本 1.4
2 月 2013
合并章节 2 (Introduction to the Programming User Guide) 到章节 1
重新调整章节 8 的格式:“Programming Examples Using RDMA
Verbs”
版本 1.3
9 月 2012
从 verbs.h 中增加新 verbs 和 structures
从 rdma_cma.h 中增加新 verbs 和 structures
从 rdma_verbs.h 中增加新 verbs 和 structures
增加 RDMA _CM_EVENTS
增加 IBV_EVENTS
增加 IBV_WC Status Codes
使用 RDMA Verbs:APM,Multicast 和 SRQ, 添加了编程示例
增加了关于 RDMA over IB 与 RoCE 之间差异的讨论
版本 1.2
1 月 2010
更新编程示例附录 A 添加了 RDMAoE 支持
版本 1.1
8 月 2009
集成的低延迟以太网 API,RDMA_CM,VPI 和多播代码示例
版本 1.0
3 月 2009
重新组织编程例子
1
词汇
术语
描述
Access Layer
用于访问互连结构(VPI
TM
,InfiniBand®,以太网,
FCoE)的低级操作系统基础结构(管道). 它包括
所有支持上层网络协议的基本传输服务、中间件和
管理程序
AH(Address Handle)
在 UD QP 中,用来描述远程路径的对象
CA(Channel
Adapter)
一个 InfiniBand 链路的终端设备,它执行传输层的
功能
CI(Channel
Interface)
通过网络适配器、相关固件和设备驱动的软件组
合,呈现给 Verbs 编程用户的通信管道
CM(Communication
Manager)
负责建立、维持、释放 RC 和 UC QP 服务类型连接的
实体;
服务 ID 解析协议 确保了使用 UD 服务的用户找到支
持指定设备的 QP;
每个终端节点的 IB 端口都有一个 CM.
Compare & Swap
通知远程 QP 读取一个 64bit 的值,将这个值与提供
的比较对象值作比较 ,如果相等,那么就把读取的
这个值替换成 QP 提供的另一个数值。
CQ(Completion
Queue)
一个包含 CQE 的队列(先进选出 FIFO)
CQE(Completion
Queue Entry)
CQ 中的一个记录,它描述了已完成的 WR 的信息
(状态,大小等)
DMA(Direct Memory
Access)
允许硬件在不经 CPU 参与的情况下 将数据块移进和
移出内存
Fetch & add
通知远程 QP 读取一个 64bit 的数值,将它替换为它
和 QP 提供的待加数的和。
GUID(Globally
Unique IDentifier)
在一个子网中,唯一标志一个设备或组件的 64bit
数字
GID(Global
IDentifier)
一个 128 位的标志,用来标志网络适配器上的一个
端口, 路由器上的一个端口或者一个组播;
GID 是一个合法的 128 位 IPv6 地址(根据 RFC
2373),在 IBA 中定义了额外的属性/约束以更加有
效的发现, 沟通和路由。
GRH(Global Routing
Header)
用来在子网间传递数据包和传递组播信息的包头。
包头基于 IPv6 协议
Network Adapter
允许网络中计算机之间传递数据的硬件。
Host
一台运行着操作系统,并且控制着一个或多个
network adapter 的计算机。
IB
InfiniBand
Join operation
一个 IB 端口要明确地加入一个多播组,必须向 SA
发送请求来接收多播数据包。
lkey
在 MR 注册之后接收到的一个数字,它在本地被 WR
用来识别注册的内存和相关权限。
LID(Local
IDentifier)
子网管理程序指定给终端节点的一个 16 位地址。每
个 LID 在它所在的子网中是唯一的。
LLE(Low Latency
Ethernet)
在 CEE(Converged Enhanced Ethernet 聚合加强型
以太网)基础之上的 RDMA 服务。CEE 允许 IB 在以太
网上传输。
NA(Network
Adapter)
一个网络链接的终端设备,它执行传输层功能。
MGID(Multicast
Group ID)
MGID 唯一标志一个 IB 多播组,它由 SM 管理。SM 将
每个 MGID 都关联一个 MLID,并对网络中的 IB 交换
机 进行编程控制,确保加入多播组的所有端口都能
接收到数据包。
MR(Memory Region)
已被注册为被允许使用的连续内存缓冲区。为了使
网络适配器能利用它们,这些缓冲区需要先被 注
册。在注册期间,一个 L_Key 和 R_Key 被创建出来
用来关联相应的注册缓冲区。
MTU(Maximum
Transfer Unit)
端口收发数据包的最大有效负载的数据大小(不包
括包头)限度。
MW(Memory Window)
一个被分配的资源,在与已注册的内存中一块特定
的区域绑定后,能被远程直接使用。每个 MW 都有一
个 关联的窗口句柄、一些使用权限信息和当前的
R_Key
Outstanding Work
Request
工作队列中没有被轮询到已完成的 WR
pkey(Partition
key)
pkey 标志了端口所属的分区。pkey 大概类似于以太
网中的 VLAN ID。pkey 用来指向端口的 pkey 表中的
一项。SM(subnet manager)将每个端口至少关联一
个 pkey
PD(Protection
Domain)
只有内部成员才能进行交互的域。AH 与 QP 进行交
互,MR 与 WQ 进行交互。
QP(Queue Pair)
为了在网络中节点之间传递数据,将独立的 WQ 打包
在一起形成的一个配对 (发送队列和接收队列)。
有三种类型的 QP:UD 不可靠数据报,UC 不可靠连
接,RC 可靠连接。
RC(Reliable
Connection)
基于面向连接的 QP 传输服务。一个 QP 与另一个 QP
相关联,两者之间的信息传输是可靠的 (具体体现
在数据的正确性和顺序性)
RDMA(Remote Direct
Memory Access)
在不需远程计算机 CPU 的干预下,对它的内存进行
操作。
RDMA_CM(Remote
Direct Memory
用来建立可靠性连接和不可靠性数据报传输的 API。
它为建立连接提供了 RDMA 传输接口。 此 API 基于