[转帖]InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念

InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jhzh951753/article/details/78813666

   

核心基础概念

  1. FCoE:以太网光纤通道 (Fibre Channel Over Ethernet) 
    • 它是一个存储网络协议,允许在以太网上发送光纤通道帧, 且IP通信和光纤通道通信使用相同的以太网端口。
  2. HBA:host bus adapter,主机总线适配器 
    • 它是连接主机计算机到网络/存储设备的可插拔式卡,支持多种存储网络协议,HBA通常是扩展卡,如PCI Express卡,它插入主机计算机的总线传送iSCSI或FC协议。
  3. OEM: 原始设备制造商(original equipment manufacturer)
  4. CNA:Converged network adapter,融合网路适配器,也称C-NIC 
    • 作为计算机输入/输出设备,其融合了HBA和网络适配器的功能。简言之,通过CNA可同时访问SAN(存储区域网络)和传统的计算机网络。
    • 如单一万兆以太网适配器端口上同时运行TCP/IP,iSCSI和光纤通道以太网数据流a 
      image_1arf3ukpp14sou51ihn3mi1nl69.png-32.9kB
  5. TOE:TCP Offlod Engine,TCP负荷减轻引擎,也称TCP卸载引擎。 
    • TOE一般由软硬件构成,将传统的TCP/延伸,把网络数流量的处理工作全部转到网卡上的集成硬件中进行,服务器只承担TCP/IP控制信息的处理决策任务 
      image_1arf8052e1hec5qgo9oon72jfm.png-95.7kB
  6. ASIC:特定用途集成电路(Application Specific Integrated Circuit)
  7. InfiniBand:InfiniBand架构是一种支持多并发链接的”转换线缆”技术,是一种长缆线的连接方式,具有高速、低延迟的传输特性。 

    • 主要是用于在服务器集群,系统之间的互联。
    • 发展 

    需要说明的是,即使在系统之间的互联,InfiniBand也还面临着竞争对手,这是因为自英特尔、微软退出IBTA之后,IBM、惠普也在不久后退出,并在第二年提出RDMA(Remote Direct Memory Access,远程直接内存存取)技术,期望用10 Gbps Ethernet搭配TOE(TCP/IP Offload Engine,TCP/IP负荷卸载引擎)的硬件加速设计,以更标准、低廉的方式与InfiniBand进行竞争。此外,由Broadcom、Chelsio、惠普、NetApp和微软等厂商推动的iWarp,一种用于远程直接内存访问、远程直接数据放置的保护协议,它淘汰了两端的网卡,也是一种标准的协议。另外,英特尔的I/O加速技术也与InfiniBand具有一定的竞争关系。

  8. RDMA: Remote Direct Memory Access,远程直接内存存取

  9. iWARP: Internet Wide Area RDMA Protocol 一种用于远程直接内存访问、远程直接数据放置的保护协议,它淘汰了两端的网卡,也是一种标准的协议。 
    • 一种通过以太网做RDMA的解决方案,其能够试下同Infiniband同样的RDMA特性
  10. Cut-though:直通转发技术 (Cut-through)又叫快速转发。
  11. SCSI:Small Computer System Interface,小型计算机系统接口 
    • 一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。
    • 是一种智能的通用接口标准。 
      image_1arfpueog2sqhq5106neftf189.png-93.8kB
  12. iSCSI:Internet 小型计算机系统接口 (iSCSI:Internet Small Computer System Interface) 
    • iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换数据
    • 是一种基于 TCP/IP的协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。
  13. SMB:Server Message Block 服务信息块,又称Common Internet File System(CIFS)A 
    • 由微软、英特尔开发的一种软件程序级的网络传输协议,主要用来使得一个网络上的机器共享计算机文件、打印机、串行端口和通讯等资源。它也提供认证的行程间通讯机能。
    • SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口
    • 它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。
  14. RoCE:RDMA over Converged Ethernet
  15. iSER:iSCSI Extensions for RDMA

    • 对iSCSI协议进行了RDMA扩展的计算机网络协议。
    • 支持RDMA的包括:基于TCP的RDMA服务(iWARP),不基于TCP的RoCE协议,以及InfiniBand技术。
    • iSER允许直接在SCSI计算机内存缓冲区中进行数据的传输,无需中间层的数据拷贝和过多的CPU干预。
    • 读命令的执行 
      image_1arhrlk0mnfd12hd1hpc2ap148a1g.png-94.6kB
    • 写命令的执行 
      image_1arhrnve2uh1kq3o24bqneuu1t.png-111.1kB
 

 InfiniBand架构是一种支持多并发链接的“转换线缆”技术,在这种技术中,每种链接都可以达到2.5 Gbps的运行速度。这种架构在一个链接的时候速度是500 MB/秒,四个链接的时候速度是2 GB/秒,12个链接的时候速度可以达到6 GB /秒。

     RDMA是Remote Direct Memory Access的缩写,意思是技术全称远程直接数据存取,就是为了解决网络传输中服务器端数据处理的延迟而产生的。

两篇讲述 InfiniBand 的趣文:

RDMA 技术有好几种规范来达到:

  • InfiniBand: 这是正统,InfiniBand 设计之初就考虑了 RDMA,InfiniBand 从硬件级别保证可靠传输;
  • iWARP: 基于 TCP or SCTP 做 RDMA,利用 TCP or SCTP 达到可靠传输,对网络设备的要求比较少;
  • RoCE: 基于 Ethernet 做 RDMA,消耗的资源比 iWARP 少,支持的特性比 iWARP 多,需要FCoE做可靠传输。从wikipedia的评价看 RoCE 还是比正统的 InfiniBand 差点。

上面三种实现都是需要硬件支持的,IB 需要支持 IB 规范的网卡和交换机,iWARP 和 RoCE 都可以使用普通的以太网交换机,但是需要支持 iWARP 或者 RoCE 的网卡。软件上 Solaris、Linux、Windows 都有支持,在 API 层面这篇文章有个入门的介绍:Introduction to Remote Direct Memory Access (RDMA) ,可以使用 http://www.openfabrics.org/提供的 libibverbs 库(Debian Linux 有提供),这个库似乎也支持 Windows 上的原声 RDMA API "Network Direct"。另外也有一些其它 API 规范,比如 DAT 组织制定的 kDAPL(让 kernel driver 可以访问 RDMA 功能) 和 uDAPL(让 user space 进程可以访问 RDMA 功能), OpenGroup 制定的 IT-API 和 RNICPI: 

另外 IETF 制定了 iSCSI Extensions for RDMA(iSER) 和 SDP(Sockets Direct Protocol, 基于 RDMA 替换 TCP 的流式传输层协议, RDMA 本身提供了可靠传输机制) 两个协议。Java 7 引入了对 SDP 的支持: https://docs.oracle.com/javase/tutorial/sdp/sockets/index.html,Apache Qpid 消息队列也支持 RDMA:https://packages.debian.org/sid/librdmawrap2 .

如果 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

猜你喜欢

转载自www.cnblogs.com/jinanxiaolaohu/p/11719984.html