InfiniBand和远程直接访问是什么,如何进行配置

电子说

1.3w人已加入

描述

本文简单描述了InfiniBand 和远程直接访问(RDMA)是什么,以及在实践中如何配置InfiniBand网络硬件。另外,本文档解释了如何配置与 InfiniBand 相关的服务。  

01 InfiniBand 和 RDMA 介绍

InfiniBand 代表两个不同的因素:

1、InfiniBand 网络的物理链路协议 

2、InfiniBand Verbs API,这是RDMA(remote direct memory access)技术的一个实现。

RDMA 可在不涉及计算机操作系统的情况下,从一个计算机访问另一台计算机的内存。此技术启用了高吞 吐量和低延迟联网,且 CPU 使用率较低。  在典型的 IP 数据传输中,当机器中的某个应用程序向另一台机器上的应用程序发送数据时,在接收层时 会出现以下情况: 

1、内核必须接收数据。

2、内核必须确定该数据是否属于该应用程序。 

3、内核唤醒应用程序。

4、内核会等待应用程序执行系统调用到内核。

5、应用程序将内核本身的内部内存空间数据复制到应用程序提供的缓冲中。 

这个过程意味着,如果主机适配器使用直接内存访问(DMA),或者至少两次,则大多数网络流量会被复制 到系统的主内存中。另外,计算机执行很多上下文开关以在内核和应用程序上下文间进行切换。这些上下 文切换都可能造成高流量率的 CPU 负载,并可能造成其他任务的性能下降。  RDMA 通讯会绕过内核在沟通过程中的干预,这和普通的 IP 通讯不同这可减少 CPU 开销。RDMA 协议 让主机适配器知道数据包何时来自网络,应用程序应该接收它,并在应用程序的内存空间中保存数据包。对 于 InfiniBand,主机适配器不将数据包发送到内核,然后将其复制到用户应用程序的内存中,而是,主机适 配器将数据包的内容直接放置在应用程序的缓冲中。此过程需要单独的 API、InfiniBand Verbs API,应用 程序必须支持这个API才能使用 RDMA。  Red Hat Linux同时支持 InfiniBand 硬件和 InfiniBand Verbs API。另外,Red Hat Enterprise Linux 支持以下技术,以便在非 InfiniBand 硬件中使用 InfiniBand Verbs API: 

互联网广域 RDMA 协议(iWARP):通过 IP 网络实施 RDMA 的网络协议。 

RDMA over Converged Ethernet(RoCE),也称为以太网的 InfiniBand(IBoE):通过以太网实现 RDMA 的网络协议。

02 配置 ROCE

比如 Mellanox、Broadcom 和 QLogic 都提供 RoCE 硬件。 RoCE 是一种网络协议,可实现通过以太网的远程直接访问(RDMA)。以下是不同的 RoCE 版本: 

RoCE v1 

RoCE 版本 1 协议是带有 ethertype 0x8915 的以太网链路层协议,它允许同一以太网广播域中任何两 个主机之间进行通信。 默认情况下,在使用 Mellanox ConnectX-3 网络适配器时,Red Hat Enterprise Linux 使用 RoCE v1 作 为 RDMA 连接管理器(RDMA_CM)。

RoCE v2 

RoCE 版本 2 协议在 IPv4 或 IPv6 协议的 UDP 上存在。RoCE v2 保留 UDP 目标端口号 4791。默认情况下,在使用 Mellanox ConnectX-3 Pro、ConnectX-4 Lx 或 ConnectX-5 网络适配器时,Red Hat Enterprise Linux将RoCE v2 用于 RDMA_CM,但硬件支持 RoCE v1 和 RoCE v2。  RDMA_CM 设置客户端和服务器之间用来传输数据的可靠连接。RDMA_CM 为建立连接提供了一个与 RDMA 传输相关的接口。该通信使用特定的 RDMA 设备,数据传输是基于消息的。 在客户端使用 RoCE v2,在服务器使用 RoCE v1 不被支持。在这种情况下,将服务器和客 户端都配置为通过 RoCE v1 进行通信。 不支持在客户端和服务器上的 RoCE v1 使用 RoCE v2 协议。如果您的服务器中硬件只支持 RoCE v1,请将 您的客户端配置为使用 RoCE v1 与服务器通信。这部分论述了如何在将 mlx5_0 驱动程序用于 Mellanox ConnectX-5 Infiniband 设备的客户端上强制实施 RoCE v1。 Soft-RoCE 是 RDMA over Ethernet 的一个软件实现,它也称为 RXE。在没有 RoCE 主机频道适配器 (HCA)的主机上使用 Soft-RoCE。 Soft-RoCE 功能仅作为技术预览提供。红帽产品服务级别协议(SLA)不支持技术预览功 能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。  

03 配置核心RDMA子系统

默认情况下,内核命名 IP over InfiniBand(IPoIB)设备,如 ib0,ib1 等。为避免冲突,红帽建议在 udev 设 备管理器中创建一条规则来创建持久且有意义的名称,如 mlx4_ib0。 RDMA 操作需要固定物理内存。这意味着内核不允许把内存写入到 swap 空间中。如果用户固定太多内 存,系统会耗尽内存,并且内核会终止进程来释放更多内存。因此,内存固定是一个特权操作。如果非 root 用户运行大型 RDMA 应用程序,则可能需要增加这些用户可在系统中的内存量。这部分论述 了如何为 rdma 组配置无限内存。 配置RDMA服务,rdma 服务在内核中管理RDMA堆栈。如果Red Hat Enterprise Linux 检测到 InfiniBand、iWARP 或 RoCE 设备,udev 设备管理器会指示 systemd 启动 rdma 服务。  

04 配置InfiniBand子网管理器

所有 InfiniBand 网络都必须运行子网管理器才能正常工作。即使两台机器没有使用交换机直接进行连接, 也是如此。有可能有一个以上的子网管理器。在那种情况下,当主子网管理器出现故障时,另外一个作为从网管理器 的系统会接管。大多数 InfiniBand 交换机都包含一个嵌入式子网管理器。 但是,如果您需要一个更新的子网管理器,需使用 Red Hat Enterprise Linux 提供的 OpenSM 子网管理器。  

05 配置 IPOIB

默认情况下,InfiniBand 不使用 IP 进行通信。但是,IP over InfiniBand(IPoIB)在 InfiniBand 远程直接访问 (RDMA)网络之上提供一个 IP 网络模拟层。这允许现有未经修改的应用程序通过 InfiniBand 网络传输数 据,但性能低于应用程序原生使用 RDMA 时的数据。 互联网广域 RDMA 协议(iWARP)和 RoCE 网络已基于 IP。因此,您不能在 IWARP 或 RoCE 设备之上创建 IPoIB 设备。Mellanox 设备从 ConnectX-4 及更高版本开始,默认使用 Enhanced IPoIB 模式(仅限数 据报)。这些设备不支持连接的模式。 IPOIB通讯模式,在Datagram或Connected模式下配置 IPoIB 设备。不同之处在,IPoIB 层试图使用什么类型的 队列对在通信的另一端的机器中打开: 在Datagram模式中,系统打开了一个不可靠、断开连接的队列对。这个模式不支持大于 InfiniBand link-layer 的最大传输单元(MTU)的软件包。IPoIB 层在传输的 IP 数据包之上添加了一个 4 字节 IPoIB 标头。因此,IPoIB MTU 需要比 InfiniBand link-layer MTU 小 4 字节。因为 2048 是一个常见的 InfiniBand 链路层 MTU,数据数 报 模式中常见的 IPoIB 设备 MTU 是 2044。  在Connected模式中,系统会打开一个可靠、连接的队列对。此模式允许大于 InfiniBand 链路层 MTU 的消息,主机适配器处理数据包分段和重新传输。因 此,InfiniBand 适配器以Connected模式发送的 IPoIB 信息大小没有限制。但是,IP 数据包会受size字段和 TCP/IP 标头的限制。因此,Connected模式中的 IPoIB MTU 最大为65520 字节。 连接 模式模 的性能更高,但消耗的内核内存更多。  如果系统被配置为使用Connected模式,它仍然会以Datagram模式发送多播流量,因为 InfiniBand 交 换机和光纤无法在Connected模式下传递多播流量。另外,当与任何未在Connected模式中配置的主 机通信时,系统将返回Datagram模式。 在运行将多播数据发送到接口上最大 MTU 的应用程序时,您必须将接口配置为Datagram模式,或者将 应用程序配置为以数据包大小数据包的大小封顶数据包发送的大小。

审核编辑:郭婷

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分