两种以太网 RDMA 协议: iWARP 和 RoCE

https://weibo.com/p/1001603936363903889917?mod=zwenzhang

写的挺好的呢. 
本文是讲演 How Ethernet RDMA Protocols iWARP and RoCE Support NVMe over Fabrics【1】的摘要。
如果 NVMe 存储系统与主机是分离的,显然需要某种 fabric 把它们连接,这样主机才能使用存储系统。目前,支持远程连接的 fabric 包括:
  • RDMA 协议:底层可以是以太网( RoCE 或者 iWARP )或者 Infiniband
  • Fibre Channel 协议:底层可以是 FC 网络或者以太网(FCoE)
一、为什么需要 RDMA ?
RDMA (Remote Direct Memory Access) 是一种绕过主机 (host-offload/host-bypass) 技术:一个应用(包括存储)<--发送/接收数据-->另外一个(远程)应用的内存空间。
  • Source Application <-- (发送/接收、完成)队列 --> 带 RDMA 功能的网卡 <-- 可靠的网络连接 --> 带RDMA 功能的网卡 <-- (发送/接收、完成)队列 --> Target Application
 由上图可知,应用程序可以从一台(物理的或者虚拟的)机器直接传送数据到另外一台机器,这既提高了带宽又降低了延迟、抖动和 CPU 消耗。
各种操作系统支持 RDMA :
  • Windows Server: 从 Windows HPC Server 2008 开始支持 Network Direct userspace API ;从 Windows Server 2012 开始支持 Network Direct kernel API
  • Linux: 从2004年开始,由 OpenFabrics Alliance 提供 userspace/kernel API , RHEL 和 SLES 已经自带, Ubuntu 要自己安装?
  • FreeBSD 9.0+ 支持 OpenFabrics Alliance userspace/kernel API
具体来说, RDMA 技术特性带来的好处如下图所示:
  NVMe 设备延迟很低,这就要求网络延迟也必须很低, RDMA 正好满足这一点。
二、用 RDMA 发送 NVMe 写命令
 以一个 NVMe 写操作为例。 NVMe 主机驱动把写命令及数据(从 NVMe 提交队列取出一项)封装一个与底层传输无关的命令胶囊(capsule);胶囊被放到主机 RDMA 网卡的发送队列中,由 RDMA_SEND 发送出去;目标主机的 RDMA 网卡在接收队列中收到这个胶囊,解除封装,把 NVMe 命令及数据放到目标主机的内存中;目标主机处理 NVMe 命令及数据;完成后,目标主机封装一个 NVMe 命令完成项,由 RDMA 传输到源主机。
三、两种基于以太网的 RDMA 协议
第一种:以太网->IP->UDP->RoCE (RDMA over Converged Ethernet) v2
第二种:以太网->IP->TCP(去掉 TCP/IP 流量控制和管理)->iWARP
不同协议的网卡之间并不兼容,也就说支持 RoCE 协议的网卡不能与支持 iWARP 协议的网卡交换数据。
两种协议的供应商上台系统不一样,
 对底层网络基础设施的要求也不一样:
 了解更多细节,
【1】How Ethernet RDMA Protocols iWARP and RoCE Support NVMe over Fabrics https://www.brighttalk.com/webcast/663/185909

最新文章

  1. App_global.asax.pdb: 另一个程序正在使用此文件,进程无法访问。
  2. weblogic管理2 - 创建并启动一个managed server
  3. 黄聪:Dsicuz x2.5、X3、X3.2如何去掉域名后面的/forum.php
  4. CMS 垃圾回收日志
  5. BZOJ3105: [cqoi2013]新Nim游戏
  6. linux的文件属性介绍、目录及路径表示方法
  7. 关于Spring运用过程中jar包报错问题
  8. 问题记录:spark读取hdfs文件出错
  9. careercup-递归和动态规划 9.11
  10. .NET MVC通过反射获取数据修改历史记录,并插入数据表中
  11. selenium相关面试题
  12. TensorFlow学习笔记(一):数据操作指南
  13. cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记
  14. Angular4.x跨域请求
  15. ADB——管理应用
  16. table-layui
  17. 35)django-验证码
  18. VMware Tools安装教程
  19. day_5.24py
  20. windows(64位)下使用curl安装

热门文章

  1. const关键字与数组、指针
  2. python2 &amp;&amp; python3 的 input函数
  3. Hadoop NameNode判断 DataNode 节点宕机的时间
  4. GO标准库flag
  5. Kafka - 环境搭建
  6. lol英雄时刻
  7. C图形化第一步
  8. Thingsboard学习之三启动Thingsboard
  9. js插件---弹出层sweetalert2(总结)
  10. js实现replaceAll方法