OpenFabrics Enterprise Distribution (OFED)是一组开源软件驱动、核心内核代码、中间件和支持InfiniBand Fabric的用户级接口程序。
2005年由OpenFabrics  Alliance (OFA)发布第一个版本。Mellanox OFED用于Linux,Windows (WinOF),包括各种诊断和性能工具,用于监视InfiniBand网络的运行情况,包括监视传输带宽和监视Fabric内部的拥塞情况。
OpenFabrics Alliance (OFA)是一个基于开源的组织,它开发、测试、支持OpenFabrics企业发行版。该联盟的任务是开发并推广软件,通过将高效消息、低延迟和最大带宽技术架构直接应用到最小CPU开销的应用程序中,从而实现最大应用效率。
该联盟成立于2004年6月,最初是OpenIB联盟,致力于开发独立于供应商、基于Linux的InfiniBand软件栈。2005,联盟致力于支持Windows,此举将使软件栈真正跨平台。
2006年,该组织再次扩展其章程,包括对iWARP的支持,在2010年增加了对RoCE (RDMA over Converged)支持通过以太网交付高性能RDMA和内核旁路解决方案。2014年,随着OpenFabrics Interfaces工作组的建立,联盟再次扩大,实现对其他高性能网络的支持。
Mellanox OFED是一个单一的软件堆栈,包括驱动、中间件、用户接口,以及一系列的标准协议IPoIB、SDP、SRP、iSER、RDS、DAPL(Direct Access Programming Library),支持MPI、Lustre/NFS over RDMA等协议,并提供Verbs编程接口;Mellanox OFED由开源OpenFabrics组织维护。
如果前面的软件堆栈逻辑图过于复杂,可以参考上面的简明介绍图。MLNX_OFED_LINUX (Mellanox OFED for Linux) 作为ISO映像提供,每个Linux发行版,包括源代码和二进制RPM包、固件、实用程序、安装脚本和文档。
InfiniBand串行链路可以在不同的信令速率下运行,然后可以捆绑在一起实现更高的吞吐量。原始信令速率与编码方案耦合,产生有效的传输速率。编码将通过铜线或光纤发送的数据的错误率降至最低,但也增加了一些开销(例如,每8位数据传输10位)。
典型的实现是聚合四个链接单元(4X)。目前,InfiniBand系统提供以下吞吐量速率:
下面我们站在应用开发架构师或开发者的角度,分析、解读下 InfiniBand的架构和服务能力(简化的InfiniBand架构)。

InfiniBand的软件架构

InfiniBand软件栈的设计是为了简化应用部署。IP和TCP套接字应用程序可以利用InfiniBand性能,而无需对运行在以太网上的现有应用程序进行任何更改。这同样适用于SCSI、iSCSI和文件系统应用程序。位于低层InfiniBand适配器设备驱动程序和设备独立API(也称为verbs)之上的上层协议提供了行业标准接口,可以无缝部署现成的应用程序。
LinuxInfiniBand软件架构。该软件由一组内核模块和协议组成。还有一些关联的用户模式共享库,这些库在图中没有显示。在用户级操作的应用程序对底层互连技术保持透明。本文的重点是讨论应用程序开发人员需要知道什么,才能使他们的IP、SCSI、iSCSI、套接字或基于文件系统的应用程序在InfiniBand上运行。
对协议的操作、底层核心和HCA驱动程序的详细讨论超出了本文的范围。但是,为了完整起见,下面是内核级别的简要概述,下面将介绍InfiniBand特定模块和协议。
内核代码逻辑上分为三层: HCA驱动程序、核心InfiniBand模块上层协议用户级访问模块实现了必要的机制,允许从用户模式应用程序访问InfiniBand硬件。核心InfiniBand模块包括InfiniBand设备的内核级中间层,中间层允许访问多个HCA NICs并提供一组公共共享服务,包括:
中间层主要功能
  • 通信经理(CM) --CM提供了允许客户建立连接所需的服务。
  • SA客户端——SA(子网管理员)客户端提供了允许客户端与子网管理员通信的功能。SA包含建立连接所需的重要信息,如路径记录。
  • SMA-子网管理器代理响应子网管理包,允许子网管理器在每个主机上查询和配置设备。
  • PMA -性能管理代理响应允许检索硬件性能计数器的管理包。
  • MAD服务——管理数据报(MAD)服务提供一组接口,允许客户端访问特殊的InfiniBand队列对(QP), 0和1。
  • GSI -通用服务接口(GSI)允许客户端在特殊QP1上发送和接收管理包。
  • 队列对(QP)——重定向高层管理协议,通常将共享对特殊QP1的访问重定向到专用QP。这是为带宽密集型的高级管理协议所需要的。
  • SMI -子网管理接口(SMI)允许客户端在特殊QP0上发送和接收数据包。这通常由子网管理器使用。
  • Verbs-对中间层提供由HCA驱动程序提供的Verbs访问。InfiniBand体系结构规范定义了Vbers。Vbers是必须提供的函数的语义描述。中间层将这些语义描述转换为一组Linux内核应用程序编程接口(API)。
  • 中间层还负责在异常程序终止或客户端关闭后,对没有释放的已分配资源的资源跟踪、引用计数和资源清理。
InfiniBand堆栈的最低层由HCA驱动程序组成。每个HCA设备都需要一个特定于HCA的驱动程序,该驱动程序注册在中间层,并提供InfiniBand Verbs。
如IPoIB,SRP,SDP,iSER等高级协议,采用标准数据网络,存储和文件系统应用在InfiniBand上操作。除了IPoIB提供了InfiniBand上TCP/IP数据流的简单封装外,其他更高级别的协议透明地支持更高的带宽、更低的延迟、更低的CPU利用率和端到端服务,使用经过现场验证的RDMA(远程DMA)和InfiniBand硬件的传输技术。下面将讨论这些高级协议,以及如何快速启用现有的应用程序对InfiniBand进行操作。

IB对基于IP的应用支持

在InfiniBand上评估任何基于IP的应用程序的最简单方法是使用上层协议IP over IB (IPoIB)。在高带宽的InfiniBand适配器上运行的IPoIB可以为任何基于ip的应用程序提供即时的性能提升。IPoIB支持在InfiniBand硬件上的(IP)隧道数据包。
如下图,在Linux中,协议是作为标准的Linux网络驱动程序实现的,这允许任何使用标准Linux网络服务的应用程序或内核驱动程序在不修改的情况下使用InfiniBand传输。Linux内核2.6.11及以上版本支持IPoIB协议,并对InfiniBand核心层和基于Mellanox技术公司HCA的HCA驱动程序的支持。
这种在InfiniBand上启用IP应用程序的方法对于带宽和延迟不重要的管理、配置、设置或控制平面相关数据是有效的。由于应用程序继续在标准TCP/IP网络栈上运行,应用程序完全不知道底层I/O硬件。然而,为了获得充分的性能并利用InfiniBand体系结构的一些高级特性,应用程序开发人员也可以使用套接字直接协议(SDP)和相关的基于套接字的API。
InfiniBand不仅对基于IP的应用提供了支持,同时对基于Socket、SCSI和iSCSI,以及对NFS的应用程序提供了支持。
例如,在iSER协议中,采用了SCSI中间层的方法插入到Linux,iSER在额外的抽象层(CMA,Connection Manager Abstraction layer)上工作,实现对基于InfiniBand和iWARP的RDMA技术的透明操作。
这样使得采用LibC接口的用户应用程序和内核级采用Linux文件系统接口的应用程序的透明化,不会感知底层使用的是什么互连技术。具体技术细节,请参考梳理成文的“InfiniBand架构和技术实战总结”电子书,目录如下所示,点击原文链接获取详情。
第一章 InfiniBand关键技术和概念解析1
  • 1.1什么是InfiniBand (IB)?2
  • 1.2 InfiniBand与传统的网络协议有何不同?5
  • 1.3 InfiniBand与TCP有什么不同?5
  • 1.4 InfiniBand严格意义上是I/O Fabric吗?5
  • 1.5 InfiniBand是分层协议吗?5
  • 1.6 InfiniBand的优势是什么?6
  • 1.7 可用的InfiniBand数据速率是多少?6
  • 1.8 什么是RDMA ?它的优点是什么?7
  • 1.9 InfiniBand架构的主要元素是什么?9
  • 1.10 什么是主机通道适配器(HCA)?10
  • 1.11 什么是交换机?在InfiniBand中如何工作?10
  • 1.12 什么是子网管理器(SM)?11
  • 1.13 在InfiniBand网络中路由器是必需的吗?11
  • 1.14 什么是网关?它如何在InfiniBand网络中工作?11
  • 1.15 VPI与InfiniBand有什么关系 ?11
  • 1.16 什么是LID, GID 和 GUID?12
  • 1.17 InfiniBand支持IP流量吗?IPoIB是什么?12
  • 1.18 什么是可靠和不可靠的传输方式?13
  • 1.19 IPoIB支持绑定吗?13
  • 1.20 InfiniBand支持多播吗?13
  • 1.21 InfiniBand支持服务质量吗?13
  • 1.22 InfiniBand是无损网络吗?14
  • 1.23 InfiniBand如何处理安全问题?14
  • 1.24 基于信用的流量控制如何工作?15
  • 1.25 Infiniband有生成树吗?15
  • 1.26 InfiniBand中Verbs是什么?15
  • 1.27 如何监控InfiniBand网络的带宽、拥塞和健康状况?15
  • 1.28 InfiniBand和Mellanox更多学习资源17
第二章InfiniBand背景和技术发展17
  • 2.1 InfiniBand技术的发展18
  • 2.2 InfiniBand技术的优势19
  • 2.3 InfiniBand组网方式和相关概念21
  • 2.4 InfiniBand协议简介21
  • 2.4.1物理层协议22
  • 2.4.2 链路层协议23
  • 2.4.3 网络层协议23
  • 2.4.4 传输层协议23
  • 2.4.5 上层网络协议23
  • 2.5 InfiniBand应用场景24
第三章InfiniBand架构解析25
  • 3.1 软件协议栈OFED介绍25
  • 3.2 InfiniBand的软件架构26
  • 3.2.1 IB对基于IP的应用支持28
  • 3.2.2 IB对基于Socket的应用的支持29
  • 3.2.3 IB对基于SCSI和iSCSI应用的支持30
  • 3.2.4 IB对NFS应用的支持32
  • 3.3 InfiniBand网络和拓扑组成33
  • 3.4 InfiniBand网络管理36
  • 3.5 InfiniBand并行计算集群37
  • 3.6 InfiniBand的存储支持能力38
  • 3.7 InfiniBand对RDMA技术支持39
第四章 InfiniBand主要产品和特性39
  • 4.1 Mellanox主要产品介绍39
  • 4.1.1 Infiniband交换机41
  • 4.1.2 InfiniBand适配卡HCA43
  • 4.1.3 Infiniband路由器和网关设备43
  • 4.1.4 Infiniband线缆和收发器48
目前,InfiniBand软件和协议堆栈在主流的Linux、Windows版本和虚拟机监控程序(Hypervisor)平台上都得到了支持和支持。这包括Red Hat Enterprise Linux、SUSE Linux Enterprise Server、Microsoft Windows Server和Windows CCS (计算集群服务器)以及VMware虚拟基础设施平台。

温馨提示:
请识别二维码关注公众号,通过点击文尾“原文链接”获取“InfiniBand架构和技术实战总结”资料总结

继续阅读
阅读原文