本篇主要详细学习RDMA三种不同的技术实现,然后就看心情学习!
一.支持RDMA的三个网络协议
目前RDMA有三种不同的硬件实现,它们都可以使用同一套API来使用,但它们有着不同的物理层和链路层。主要包括InfiniBand (IB)、RDMA over Converged Ethernet (RoCE)以及Internet Wide Area RDMA Protocol (iWARP)。(注意:上述几种协议都需要专门的硬件(网卡)支持。)
1.InfiniBand(IB)
1.1.简介
InfiniBand 是一种基于 InfiniBand 架构的 RDMA 技术,它提供了一种基于通道的点对点消息队列转发模型,每个应用都可通过创建的虚拟通道直接获取本应用的数据消息,无需其他操作系统及协议栈的介入。
InfiniBand 架构的应用层采用了 RDMA 技术,可以提供远程节点间 RDMA读写访问,完全卸载 CPU 工作负载;网络传输采用了高带宽的传输;链路层设置特定的重传机制保证服务质量,不需要数据缓冲。
InfiniBand 必须运行在 InfiniBand 网络环境下,必须使用 IB 交换机及 IB 网卡才可实现,现在做nfiniBand网络的厂商主要是Mellanox。
性能上看,IfiniBand网络最好,但是网卡和交换机价格很高。
1.2.特点
• 应用层采用 RDMA 技术,降低了在主机侧数据处理的延迟。
• 消息转发控制由子网管理器完成,没有类似以太网复杂的协议交互计算。
• 链路层通过重传机制保证服务质量,不需要数据缓冲,无丢包。
• 具有低延迟、高带宽、低处理开销的特点
2.RoCE(RDMA over Converged Ethernet)
2.1.简介和分类
是一种基于以太网的 RDMA 技术,允许应用通过以太网实现远程内存访问。也是由IBTA提出。RoCE 与 InfiniBand技术有相同的软件应用层及传输控制层,仅网络层及以太网链路层存在差异。
RoCE分为两种版本
RoCE v1基于IP网络,是一种链路层协议,允许在同一个广播域下的任意两台主机直接访问。基于以太网承载 RDMA,只能部署于二层网络,它的报文结构是在原有的 IB架构的报文上增加二层以太网的报文头,通过 Ethertype 0x8915 标识 RoCE 报文。
RoCE v2在此基础上增加了对UDP的支持,提高了网络的兼容性和灵活性,是一种Internet层协议,即可以实现路由功能。基于 UDP/IP 协议承载 RDMA,可部署于三层网络,它的报文结构是在原有的 IB 架构的报文上增加 UDP 头、IP 头和二层以太网报文头,通过 UDP 目的端口号 4791 标 识RoCE 报文。RoCE v2 支持基于源端口号 hash,采用 ECMP 实现负载分担,提高了网络的利用率。
RoCE 技术可通过普通以太网交换机实现,但服务器需要支持 RoCE 网卡,网络侧需要支持无损以太网络,这是由于 IB 的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。
RoCE支持在标准以太网基础设施上使用RDMA技术,但是需要交换机支持无损以太网传输,只不过网卡必须是支持RoCE的特殊的NIC。
2.2.特点
RoCE 使得基于以太网的数据传输能够:
• 提高数据传输吞吐量。
• 减少网络延时。
• 降低 CPU 负载。
3.iWARP
3.1.简介
是基于以太网和 TCP/IP 协议的 RDMA 技术,可以运行在标准的以太网基础设施上。
由 IETF 标 准定义。iWARP 支持在标准以太网基础设施上使用 RDMA 技术,而不需要交换机支持无损以太网传输,但服务器需要使用支持iWARP 的网卡。与此同时,受 TCP 影响,性能稍差。
二.关系和理解
目前,虽然IB、以太网RoCE、以太网iWARP这三种RDMA技术使用统一的API,但它们有着不同的物理层和链路层。在以太网解决方案中,RoCE相对于iWARP来说有着明显的优势,这些优势体现在延时、吞吐率和 CPU负载。RoCE被很多主流的方案所支持,并且被包含在Windows服务软件中
RoCE和InfiniBand,一个定义了如何在以太网上运行RDMA,而另一个则定义了如何在IB网络(主要是基于集群的应用)中运行RDMA
RoCE和iWARP,一个是基于无连接协议UDP,一个是基于面向连接的协议(如TCP)。