InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念
2017-12-15 15:37:00 jhzh951753 阅读数 1358更多
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
核心基础概念
- FCoE:以太网光纤通道 (Fibre Channel Over Ethernet)
- 它是一个存储网络协议,允许在以太网上发送光纤通道帧, 且IP通信和光纤通道通信使用相同的以太网端口。
- HBA:host bus adapter,主机总线适配器
- 它是连接主机计算机到网络/存储设备的可插拔式卡,支持多种存储网络协议,HBA通常是扩展卡,如PCI Express卡,它插入主机计算机的总线传送iSCSI或FC协议。
- OEM: 原始设备制造商(original equipment manufacturer)
- CNA:Converged network adapter,融合网路适配器,也称C-NIC
- 作为计算机输入/输出设备,其融合了HBA和网络适配器的功能。简言之,通过CNA可同时访问SAN(存储区域网络)和传统的计算机网络。
- 如单一万兆以太网适配器端口上同时运行TCP/IP,iSCSI和光纤通道以太网数据流a
- TOE:TCP Offlod Engine,TCP负荷减轻引擎,也称TCP卸载引擎。
- TOE一般由软硬件构成,将传统的TCP/延伸,把网络数流量的处理工作全部转到网卡上的集成硬件中进行,服务器只承担TCP/IP控制信息的处理决策任务
- ASIC:特定用途集成电路(Application Specific Integrated Circuit)
-
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具有一定的竞争关系。
-
RDMA: Remote Direct Memory Access,远程直接内存存取
- iWARP: Internet Wide Area RDMA Protocol 一种用于远程直接内存访问、远程直接数据放置的保护协议,它淘汰了两端的网卡,也是一种标准的协议。
- 一种通过以太网做RDMA的解决方案,其能够试下同Infiniband同样的RDMA特性
- Cut-though:直通转发技术 (Cut-through)又叫快速转发。
- SCSI:Small Computer System Interface,小型计算机系统接口
- 一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。
- 是一种智能的通用接口标准。
- iSCSI:Internet 小型计算机系统接口 (iSCSI:Internet Small Computer System Interface)
- iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换数据
- 是一种基于 TCP/IP的协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。
- SMB:Server Message Block 服务信息块,又称Common Internet File System(CIFS)A
- 由微软、英特尔开发的一种软件程序级的网络传输协议,主要用来使得一个网络上的机器共享计算机文件、打印机、串行端口和通讯等资源。它也提供认证的行程间通讯机能。
- SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口
- 它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。
- RoCE:RDMA over Converged Ethernet
-
iSER:iSCSI Extensions for RDMA
- 对iSCSI协议进行了RDMA扩展的计算机网络协议。
- 支持RDMA的包括:基于TCP的RDMA服务(iWARP),不基于TCP的RoCE协议,以及InfiniBand技术。
- iSER允许直接在SCSI计算机内存缓冲区中进行数据的传输,无需中间层的数据拷贝和过多的CPU干预。
- 读命令的执行
- 写命令的执行
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 消耗。
- 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