关于InfiniBand架构和知识点漫谈

关于InfiniBand架构和知识点漫谈

关于InfiniBand架构和知识点漫谈

OpenFabrics Enterprise Distribution (OFED)是一组开源软件驱动、核心内核代码、中间件和支持InfiniBand Fabric的用户级接口程序。


2005年由OpenFabrics  Alliance (OFA)发布第一个版本。Mellanox OFED用于Linux,Windows (WinOF),包括各种诊断和性能工具,用于监视InfiniBand网络的运行情况,包括监视传输带宽和监视Fabric内部的拥塞情况。


OpenFabrics Alliance (OFA)是一个基于开源的组织,它开发、测试、支持OpenFabrics企业发行版。该联盟的任务是开发并推广软件,通过将高效消息、低延迟和最大带宽技术架构直接应用到最小CPU开销的应用程序中,从而实现最大应用效率。


关于InfiniBand架构和知识点漫谈


该联盟成立于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组织维护。


关于InfiniBand架构和知识点漫谈


如果前面的软件堆栈逻辑图过于复杂,可以参考上面的简明介绍图。MLNX_OFED_LINUX (Mellanox OFED for Linux) 作为ISO映像提供,每个Linux发行版,包括源代码和二进制RPM包、固件、实用程序、安装脚本和文档。


InfiniBand串行链路可以在不同的信令速率下运行,然后可以捆绑在一起实现更高的吞吐量。原始信令速率与编码方案耦合,产生有效的传输速率。编码将通过铜线或光纤发送的数据的错误率降至最低,但也增加了一些开销(例如,每8位数据传输10位)。


典型的实现是聚合四个链接单元(4X)。目前,InfiniBand系统提供以下吞吐量速率:


关于InfiniBand架构和知识点漫谈


下面我们站在应用开发架构师或开发者的角度,分析、解读下 InfiniBand的架构和服务能力(简化的InfiniBand架构)。

 

InfiniBand的软件架构


InfiniBand软件栈的设计是为了简化应用部署。IP和TCP套接字应用程序可以利用InfiniBand性能,而无需对运行在以太网上的现有应用程序进行任何更改。这同样适用于SCSI、iSCSI和文件系统应用程序。位于低层InfiniBand适配器设备驱动程序和设备独立API(也称为verbs)之上的上层协议提供了行业标准接口,可以无缝部署现成的应用程序。

 

LinuxInfiniBand软件架构。该软件由一组内核模块和协议组成。还有一些关联的用户模式共享库,这些库在图中没有显示。在用户级操作的应用程序对底层互连技术保持透明。本文的重点是讨论应用程序开发人员需要知道什么,才能使他们的IP、SCSI、iSCSI、套接字或基于文件系统的应用程序在InfiniBand上运行。


关于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架构和知识点漫谈


这种在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适配卡HCA 43

  • 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架构和技术实战总结”资料总结

关于InfiniBand架构和知识点漫谈

关于InfiniBand架构和知识点漫谈