关于InfiniBand架构和知识点漫谈
作者:互联网
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适配卡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,协议,IP,漫谈,应用程序,Linux 来源: https://blog.51cto.com/u_15127636/2766864