原文:15. RDMA之RoCE & Soft-RoCE - 知乎
本文欢迎转载,转载请注明出处
阅读本文前建议温习“RDMA概述”一文,了解下RDMA领域的基本概念。
我已经在基本概念篇里面跟大家对本领域的基本知识进行了科普,在对于基本的宏观概念有了认识之后,我们就可以开始更深入的研究RDMA的实现细节了。协议本身比较抽象,对着IB规范照本宣科估计大家也很难理解,最好的方式莫过于一边做一边学了。
但是支持RDMA的网卡都比较昂贵,拿Mellanox(现在是NVIDIA)来说,在其官网上最新一代支持Infiniband的网卡——ConnectX-6最便宜的单端口型号也要795刀,这对于学生或者是不太富裕的大学实验室来说是一笔不小的开销。
RDMA技术实际应用的话是得依赖网卡来完成大部分工作的,但是好在我们有Soft-RoCE。它通过软件代替硬件来将IB传输层的报文加在普通UDP报文中,从而得以让普通网卡也可以发送RoCE报文,这对于为我们学习IB传输层协议,以及编写调试基于Verbs的RDMA程序提供了一种非常低成本的方案。
本篇文章前半部分是讲解,后半部分是实验。首先我将介绍RoCE是什么、它的由来以及Soft-RoCE的实现原理,最后介绍如何在只有一台没有IB网卡的PC的情况下搭建Soft-RoCE的实验环境,以后可以用来运行RDMA程序并通过抓包学习IB传输层协议。
RoCE是什么
我在“RDMA概述”一文中有简单介绍过RoCE,它是三大RDMA协议之一。RoCE全称是RDMA over Converged Ethernet,即基于融合以太网的RDMA。用通俗的话讲,就是基于传统以太网的部分下层协议,在其基础上实现Infiniband的部分上层协议。
RoCE本身分为两个版本,我们先简单讲一下发展历史:
1999年,由Compaq, Dell, HP, IBM, Intel, Microsoft和Sun公司组成了IBTA组织。愿景是设计一种更高速的新的互联协议规范标准,来应对传统以太网在面对未来计算机行业的发展时可能遇到的瓶颈。
2000年,IBTA组织设计并发布了Infiniband Architecture Specification 1.0(IB规范)。
2007年,IETF发布了iWARP(Internet Wide Area RDMA Protocol)的一系列RFC。
2010年,IBTA发布了RoCE v1规范。
2014年,IBTA发布了RoCE v2规范。
可以看出相比于上个世纪70年代左右诞生的TCP/IP协议族来说,RoCE协议本身还算比较“年轻的”。
RoCE的协议层次
下面这张图之前出现过,它比较清晰的划分出了这几种协议的关系:
可能还不够直观,我们把RoCE v2的一个报文展开来看(没有画出物理层协议):
<