核心基础概念
- 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控制信息的处理决策任务
- 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 的趣文:
- 关于Infiniband的一些介绍 http://aze12.blog.163.com/blog/static/8620441220086411596665/
- InfiniBand:还会有多少人想起我?http://www.360doc.com/content/07/0904/16/494_718778.shtml
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:
- https://software.intel.com/en-us/articles/access-to-infiniband-from-linux
- http://www.zurich.ibm.com/sys/rdma/interfaces.html
- http://rdma.sourceforge.net/
另外 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 .
-
RDMA 协议:底层可以是以太网( RoCE 或者 iWARP )或者 Infiniband
- Fibre Channel 协议:底层可以是 FC 网络或者以太网(FCoE)
- Source Application <-- (发送/接收、完成)队列 --> 带 RDMA 功能的网卡 <-- 可靠的网络连接 --> 带RDMA 功能的网卡 <-- (发送/接收、完成)队列 --> Target Application
-
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