InfiniBand,到底是个啥?

news2024/11/9 0:12:58

对于InfiniBand,很多搞数通的同学肯定不会陌生。

进入21世纪以来,随着云计算、大数据的不断普及,数据中心获得了高速发展。而InfiniBand,就是数据中心里的一项关键技术,地位极为重要。

尤其是今年以来,以ChatGPT为代表的AI大模型强势崛起,更是让InfiniBand的关注热度大涨。因为,GPT们所使用的网络,就是英伟达公司基于InfiniBand构建的。

那么,InfiniBand到底是什么技术?它为什么会倍受追捧?人们经常讨论的“InfiniBand与以太网”之争,又是怎么回事?

f2b7ba8c61de4ebbdd2e10c2c3ae23db.png

今天这篇文章,就让小枣君来逐一解答。

InfiniBand的发展历程

InfiniBand(简称IB),是一种能力很强的通信技术协议。它的英文直译过来,就是“无限带宽”。

Infiniband的诞生故事,还要从计算机的架构讲起。

大家都知道,现代意义上的数字计算机,从诞生之日起,一直都是采用的冯·诺依曼架构。在这个架构中,有CPU(运算器、控制器)、存储器(内存、硬盘),还有I/O(输入/输出)设备。

上世纪90年代早期,为了支持越来越多的外部设备,英特尔公司率先在标准PC架构中引入PCI(Peripheral Component Interconnect,外设部件互连标准)总线设计。

d37db533006521d901b2415f0a8165ab.png

PCI总线,其实就是一条通道。

不久后,互联网进入高速发展阶段。线上业务和用户规模的不断增加,给IT系统的承载能力带来了很大挑战。

当时,在摩尔定律的加持下,CPU、内存、硬盘等部件都在快速升级。而PCI总线,升级速度缓慢,大大限制了I/O性能,成为整个系统的瓶颈。

为了解决这个问题,英特尔、微软、SUN公司主导开发了“Next Generation I/O(NGIO)”技术标准。而IBM、康柏以及惠普公司,则主导开发的“Future I/O(FIO)”。IBM这三家公司,还合力搞出了PCI-X标准(1998年)。

1999年,FIO Developers Forum和NGIO Forum进行了合并,创立了InfiniBand贸易协会(InfiniBand Trade Association,IBTA)

44e9ade22b6aeb50a972e990f6c94389.png

很快,2000年,InfiniBand架构规范的1.0版本正式发布了。

简单来说,InfiniBand的诞生目的,就是为了取代PCI总线。它引入了RDMA协议,具有更低的延迟,更大的带宽,更高的可靠性,可以实现更强大的I/O性能。(技术细节,后文会详细介绍。)

说到InfiniBand,有一家公司我们是必须提到的,那就是大名鼎鼎的Mellanox

017c833e95190213d08e00ca348bfebd.png

迈络思

1999年5月,几名从英特尔公司和伽利略技术公司离职的员工,在以色列创立了一家芯片公司,将其命名为Mellanox。

Mellanox公司成立后,就加入了NGIO。后来,NGIO和FIO合并,Mellanox随之加入了InfiniBand阵营。2001年,他们推出了自己的首款InfiniBand产品。

2002年,InfiniBand阵营突遭巨变。

这一年,英特尔公司“临阵脱逃”,决定转向开发PCI Express(也就是PCIe,2004年推出)。而另一家巨头微软,也退出了InfiniBand的开发。

尽管SUN和日立等公司仍选择坚持,但InfiniBand的发展已然蒙上了阴影。

2003年开始,InfiniBand转向了一个新的应用领域,那就是计算机集群互联


这一年,美国弗吉尼亚理工学院创建了一个基于InfiniBand技术的集群,在当时的TOP500(全球超级计算机500强)测试中排名第三。

2004年,另一个重要的InfiniBand非盈利组织诞生——OFA(Open Fabrics Alliance,开放Fabrics联盟)

716a2a704ef8bc952dd44f1051007b88.png

OFA和IBTA是配合关系。IBTA主要负责开发、维护和增强Infiniband协议标准;OFA负责开发和维护Infiniband协议和上层应用API。

2005年,InfiniBand又找到了一个新场景——存储设备的连接

老一辈网工一定记得,当年InfiniBand和FC(Fibre Channel,光纤通道)是非常时髦的SAN(Storage Area Network,存储区域网络)技术。小枣君初次接触InfiniBand,就是在这个时候。

再后来,InfiniBand技术逐渐深入人心,开始有了越来越多的用户,市场占比也不断提升。

到了2009年,在TOP500榜单中,已经有181个采用了InfiniBand技术。(当然,千兆以太网当时仍然是主流,占了259个。)

在InfiniBand逐渐崛起的过程中,Mellanox也在不断壮大,逐渐成为了InfiniBand市场的领导者。

a795ff45dc6de96083b66335d6786698.jpeg

2010年,Mellanox和Voltaire公司合并,InfiniBand主要供应商只剩下Mellanox和QLogic。不久后,2012年,英特尔公司出资收购了QLogic的InfiniBand技术,返回到InfiniBand的竞争赛道。

2012年之后,随着高性能计算(HPC)需求的不断增长,InfiniBand技术继续高歌猛进,市场份额不断提升。

2015年,InfiniBand技术在TOP500榜单中的占比首次超过了50%,达到51.4%(257套)。

这标志着InfiniBand技术首次实现了对以太网(Ethernet)技术的逆袭。InfiniBand 成为超级计算机最首选的内部连接技术。

2013年,Mellanox相继收购了硅光子技术公司Kotura和并行光互连芯片厂商IPtronics,进一步完善了自身产业布局。2015年,Mellanox在全球InfiniBand市场上的占有率达到80%。他们的业务范围,已经从芯片逐步延伸到网卡、交换机/网关、远程通信系统和线缆及模块全领域,成为世界级网络提供商。

面对InfiniBand的赶超,以太网也没有坐以待毙。

2010年4月,IBTA发布了RoCE(RDMA over Converged Ethernet,基于融合以太网的远程直接内存访问),将InfiniBand中的RDMA技术“移植”到了以太网。2014年,他们又提出更加成熟的RoCE v2。

有了RoCE v2,以太网大幅缩小了和InfiniBand之间的技术性能差距,结合本身固有的成本和兼容性优势,又开始反杀回来。

大家通过下面这张图,可以看出从2007年到2021年的TOP500榜单技术占比。

93e27fb87c493f9c16c3e280c3277f59.jpeg

如图所示,2015年开始,25G及更高速率的以太网(图中深绿色的线)崛起,迅速成为行业新宠,一度压制住了InfiniBand。

2019年,英伟达(Nvidia)公司豪掷69亿美元,击败对手英特尔和微软(分别出价60亿和55亿美元),成功收购了Mellanox。

e757e1f14302c03090592c6181ed42d0.jpeg

对于收购原因,英伟达CEO黄仁勋是这么解释的:

“这是两家全球领先高性能计算公司的结合,我们专注于加速计算(accelerated computing),而Mellanox专注于互联和存储。”

现在看来,老黄的决策是非常有远见的。


正如大家所见,AIGC大模型崛起,整个社会对高性能计算和智能计算的需求井喷。

652a963cfe80fdaaf03111556c75c896.jpeg

想要支撑如此庞大的算力需求,必须依赖于高性能计算集群。而InfiniBand,在性能上是高性能计算集群的最佳选择。

将自家的GPU算力优势与Mellanox的网络优势相结合,就等于打造了一个强大的“算力引擎”。在算力基础设施上,英伟达毫无疑问占据了领先优势。

如今,在高性能网络的竞争上,就是InfiniBand和高速以太网的缠斗。双方势均力敌。不差钱的厂商,更多会选择InfiniBand。而追求性价比的,则会更倾向高速以太网。

剩下还有一些技术,例如IBM的BlueGene、Cray,还有Intel的OmniPath,基本属于第二阵营了。

█ InfiniBand的技术原理

介绍完InfiniBand的发展历程,接下来,我们再看看它的工作原理。为什么它会比传统以太网更强。它的低时延和高性能,究竟是如何实现的。

  • 起家本领——RDMA

前文提到,InfiniBand最突出的一个优势,就是率先引入RDMA(Remote Direct Memory Access,远程直接数据存取)协议。

在传统TCP/IP中,来自网卡的数据,先拷贝到核心内存,然后再拷贝到应用存储空间,或从应用空间将数据拷贝到核心内存,再经由网卡发送到Internet。

这种I/O操作方式,需要经过核心内存的转换。它增加了数据流传输路径的长度,增加了CPU的负担,也增加了传输延迟。

f3b60b7c278f00627c88c527bf68d4f1.png

传统模式 VS RDMA模式

RDMA相当于是一个“消灭中间商”的技术。

RDMA的内核旁路机制,允许应用与网卡之间的直接数据读写,将服务器内的数据传输时延降低到接近1us。

同时,RDMA的内存零拷贝机制,允许接收端直接从发送端的内存读取数据,绕开了核心内存的参与,极大地减少了CPU的负担,提升CPU的效率。

如前文所说,InfiniBand之所以能迅速崛起,RDMA居功至伟。

  • InfiniBand的网络架构

InfiniBand的网络拓扑结构示意,如下图所示:

e2086d8d82119fb89893b0fdb1b488bb.png

InfiniBand是一种基于通道的结构,组成单元主要分为四类:

· HCA(Host Channel Adapter,主机通道适配器)

· TCA(Target Channel Adapter,目标通道适配器)

· InfiniBand link(连接通道,可以是电缆或光纤,也可以是板上链路)

· InfiniBand交换机和路由器(组网用的)

通道适配器就是搭建InfiniBand通道用的。所有传输均以通道适配器开始或结束,以确保安全或在给定的QoS(服务质量)级别下工作。

使用InfiniBand的系统可以由多个子网(Subnet组成,每个子网最大可由6万多个节点组成。子网内部,InfiniBand交换机进行二层处理。子网之间,使用路由器或网桥进行连接。

8f899c87d7da3c7bdb0135c91afc86d3.png

InfiniBand组网示例

InfiniBand的二层处理过程非常简单,每个InfiniBand子网都会设一个子网管理器,生成16位的LID(本地标识符)。InfiniBand交换机包含多个InfiniBand端口,并根据第二层本地路由标头中包含的LID,将数据包从其中一个端口转发到另一个端口。除管理数据包外,交换机不会消耗或生成数据包。

简单的处理过程,加上自有的Cut-Through技术,InfiniBand将转发时延大幅降低至100ns以下,明显快于传统以太网交换机。

在InfiniBand 网络中,数据同样以数据包(最大4KB)的形式传输,采用的是串行方式。

  • InfiniBand的协议栈

InfiniBand协议同样采用了分层结构。各层相互独立,下层为上层提供服务。如下图所示:

8f36892597927ae064c1168765b01e5f.png

其中,物理层定义了在线路上如何将比特信号组成符号,然后再组成帧、数据符号以及包之间的数据填充等,详细说明了构建有效包的信令协议等。

链路层定义了数据包的格式以及数据包操作的协议,如流控、 路由选择、编码、解码等。

网络层通过在数据包上添加一个40字节的全局的路由报头(Global Route Header, GRH)来进行路由的选择,对数据进行转发。

在转发的过程中,路由器仅仅进行可变的CRC校验,这样就保证了端到端的数据传输的完整性。

fbb6da45dd4f801ce7af7517f4f2ea0f.png

Infiniband报文封装格式

传输层再将数据包传送到某个指定的队列偶(Queue Pair, QP)中,并指示QP如何处理该数据包。

可以看出,InfiniBand拥有自己定义的1-4层格式,是一个完整的网络协议。端到端流量控制,是InfiniBand网络数据包发送和接收的基础,可以实现无损网络。

说到QP(队列偶),我们需要多提几句。它是RDMA技术中通信的基本单元。

队列偶就是一对队列,SQ(Send Queue,发送工作队列)和RQ(Receive Queue,接收工作队列)。用户调用API发送接收数据的时候,实际上是将数据放入QP当中,然后以轮询的方式,将QP中的请求一条条的处理。

dccaabbaa00f7e062d3d6d853f478d0a.png

  • InfiniBand的链路速率

InfiniBand链路可以用铜缆或光缆,针对不同的连接场景,需使用专用的InfiniBand线缆。

InfiniBand在物理层定义了多种链路速度,例如1X,4X,12X。每个单独的链路是四线串行差分连接(每个方向两根线)。

bcf933de463151ab5c638a64a4a25c9c.png

以早期的SDR(单数据速率)规范为例,1X链路的原始信号带宽为2.5Gbps,4X链路是10Gbps,12X链路是30Gbps。


1X链路的实际数据带宽为2.0Gbps(因为采用8b/10b编码)。由于链路是双向的,因此相对于总线的总带宽是4Gbps。

随着时间的推移,InfiniBand的网络带宽不断升级,从早期的SDR、DDR、QDR、FDR、EDR、HDR,一路升级到NDR、XDR、GDR。如下图所示:

f74ca19d39e5e52ea4eb7e1c0aa2f603.jpeg

英伟达最新的Quantum-2平台好像采用的是NDR 400G

29581519951b81f80e4ece5a90c2b5fa.png

具体速率和编码方式

  • InfiniBand的商用产品

最后,我们再来看看市面上的InfiniBand商用产品。

英伟达收购Mellanox之后,于2021年推出了自己的第七代NVIDIA InfiniBand架构——NVIDIA Quantum-2。

NVIDIA Quantum-2平台包括:NVIDIA Quantum-2 系列交换机、NVIDIA ConnectX-7 InfiniBand 适配器、BlueField-3 InfiniBand DPU,以及相关的软件。

a89b2b535b6b097ab32213975a1a8d69.jpeg

NVIDIA Quantum-2 系列交换机采用紧凑型1U设计,包括风冷和液冷版本。交换机的芯片制程工艺为7nm,单芯片拥有570亿个晶体管(比A100 GPU还多)。采用64个400Gbps端口或128个200Gbps端口的灵活搭配,提供总计51.2Tbps的双向吞吐量。

NVIDIA ConnectX-7 InfiniBand 适配器,支持PCIe Gen4和Gen5,具有多种外形规格,可提供400Gbps的单或双网络端口。

结语

根据行业机构的预测,到2029年,InfiniBand的市场规模将达到983.7亿美元,相比2021年的66.6亿美元,增长14.7倍。预测期内(2021-2029)的复合年增长率,为 40%。

在高性能计算和人工智能计算的强力推动下,InfiniBand的发展前景令人期待。


究竟它和以太网谁能笑到最后,就让时间来告诉我们答案吧!

115d3e43eb9c9ac2f25d67fefb4d356a.jpeg

InfiniBand采用双队列程序提取技

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/819184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

春秋云镜 CVE-2021-32682

春秋云镜 CVE-2021-32682 elFinder RCE 靶标介绍 elFinder是一套基于Drupal平台的、开源的AJAX文件管理器。该产品提供多文件上传、图像缩放等功能;elFinder 存在安全漏洞,攻击者可利用该漏洞在托管elFinder PHP连接器的服务器上执行任意代码和命令。 启动场景 漏…

金蝶管易云 X Hologres:新一代全渠道电商ERP最佳实践

业务简介 金蝶管易云是金蝶集团旗下专注提供电商企业管理软件服务的子公司,成立于2008年,是国内最早的电商ERP服务商之一,目前已与300主流电商平台建有合作关系,以企业数据为驱动,深度融合线上线下数据,为…

pytorch学习——正则化技术——丢弃法(dropout)

一、概念介绍 在多层感知机(MLP)中,丢弃法(Dropout)是一种常用的正则化技术,旨在防止过拟合。(效果一般比前面的权重衰退好) 在丢弃法中,随机选择一部分神经元并将其输出…

HCIP中期实验

1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中,运行OSPF协议或者BGP协议的设备…

Hadoop 之 Hive 4.0.0-alpha-2 搭建(八)

Hadoop 之 Hive 搭建与使用 一.Hive 简介二.Hive 搭建1.下载2.安装1.解压并配置 HIVE2.修改 hive-site.xml3.修改 hadoop 的 core-site.xml4.启动 三.Hive 测试 一.Hive 简介 Hive 是基于 Hadoop 的数据仓库工具,可以提供类 SQL 查询能力 二.Hive 搭建 1.下载 H…

linux 安装FTP

检查是否已经安装 $] rpm -qa |grep vsftpd vsftpd-3.0.2-29.el7_9.x86_64出现 vsftpd 信息表示已经安装,无需再次安装 yum安装 $] yum -y install vsftpd此命令需要root执行或有sudo权限的账号执行 /etc/vsftpd 目录 ftpusers # 禁用账号列表 user_list # 账号列…

【Ajax】笔记-设置CORS响应头实现跨域

CORS CORS CORS是什么? CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持get和post请求。跨域资源共享标准新增了一组HTTP首…

VSCode格式化shell脚本

安装格式化插件:shell-format 用VSCode打开shell脚本之后,按格式化快捷键CtrlAltF,会提示没有格式化shell的工具,然后安装插件,我装的是这个插件:shell-format。 介绍:https://marketplace.vis…

2.C语言数据类型

常量与变量 1.**常量:**程序运行中,值不改变的量 变量:int num5;值可以变的量 2 C语言三种简单数据类型:整型,实型,字符型 %c %d %ld %s %f整型-进制的转换 **1.十进制:**默认的进…

SpringBoot使用JKS或PKCS12证书实现https

SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件, 默认生成的是JKS证书 cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件 keytool -genkey tomcat…

ChatGPT在商业世界中的创新应用:颠覆传统营销与客户关系管理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

14、容器初始化器和配置环境后处理器

容器初始化器和配置环境后处理器 容器初始化器 与传统Spring的容器后处理器(也可对容器做一些定制)对比,此处的容器初始化器的执行时机要更早一些。 容器初始化器负责可对Spring容器执行初始化定制。 就是在启动项目的时候,在容…

eclipse版本与jdk版本对应关系

官网:Eclipse/Installation - Eclipsepedia eclipse历史版本(2007-):Older Versions Of Eclipse - Eclipsepedia Eclipse Packaging Project (EPP) Releases | Eclipse Packages

springboot疾病查询网站【纯干货分享,免费领源码01548】

spring boot疾病查询网站 摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的疾病查询网站,会使疾病查询工作系统化、规范化,也会提高医院形象&#xff0c…

红外雨量计(光学雨量传感器)检测降雨量,预防内涝

红外雨量计(光学雨量传感器)检测降雨量,预防内涝 随着城市化进程的加快,城市内涝成为一个愈发严峻的问题。短时间内大量的降雨,不仅会给城市交通带来困难,也会对城市的基础设施和居民的生活造成很大的影响…

ESP32cam系列教程003:ESP32cam实现远程 HTTP_OTA 自动升级

文章目录 1.什么是 OTA2. ESP32cam HTTP_OTA 本地准备2.1 HTTP OTA 升级原理2.2 开发板本地基准程序(程序版本:1_0_0)2.3 开发板升级程序(程序版本:1_0_1)2.4 本地 HTTP_OTA 升级测试2.4.1 本地运行一个 HT…

Spring系列二:基于注解配置bean

文章目录 💗通过注解配置bean🍝基本介绍🍝快速入门🍝注意事项和细节 💗自己实现Spring注解配置Bean机制🍝需求说明🍝思路分析🍝注意事项和细节 💗自动装配 Autowired&…

谷粒商城第八天-商品服务之品牌管理的整体实现(直接使用逆向生成的代码;含oss文件上传)

目录 一、总述 二、前端部分 2.1 创建好品牌管理菜单 2.2 复制组件 ​编辑2.3 复制api ​​​编辑 2.4 查看效果 ​编辑2.5 需要优化的地方 2.6 具体优化实现 2.6.1 优化一:将表格的状态列(这里是是否显示列)修改为开关&#xff…

Day15-作业(Maven高级)

作业1:完成苍穹外卖项目目录结构创建 说明: 1.sky-take-out 是父工程 2.sky-common/sky-pojo/sky-server 是子工程 3.sky-server模块引用了sky-common/sky-pojo模块 作业2:完成汇客CRM项目目录结构创建 说明: huike-paren…

判断变量是否为标量(没有维度,单个数值)numpy.isscalar()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断变量是否为标量 (没有维度,单个数值) numpy.isscalar() [太阳]选择题 请问关于以下代码表述错误的是? import numpy as np a 0 b np.array([0]) pri…