彩票365软件是什么样的

配置 InfiniBand 和 RDMA 网络

配置 InfiniBand 和 RDMA 网络

Red Hat Enterprise Linux 8配置和管理高速网络协议和 RDMA 硬件Red Hat Customer Content Services法律通告摘要

您可以使用各种协议在企业级配置和管理Remote Directory Memory Access (RDMA)网络和 InfiniBand 硬件。这包括 RDMA over Converged Ethernet (RoCE)、RoCE (Soft-RoCE)的软件实现、IP 网络协议,如 iWARP、iWARP (Soft-iWARP)的软件实现,以及通过 RDMA (NFSoRDMA)协议的网络文件系统,作为对 RDMA 支持的硬件的原生支持。对于低延迟和高吞吐量连接,您可以配置 IP over InfiniBand (IPoIB) 和 Open subnet Manager (OpenSM)。

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

通过 Jira 提交反馈(需要帐户)

登录到 Jira 网站。

单击顶部导航栏中的 Create。

在 Summary 字段中输入描述性标题。

在 Description 字段中输入您的建议以改进。包括文档相关部分的链接。

点对话框底部的 Create。

第 1 章 InfiniBand 和 RDMA 简介

InfiniBand 代表两个不同的因素:

InfiniBand 网络的物理链路协议

InfiniBand Verbs API,这是远程直接访问(RDMA)技术的实现

RDMA 提供两个计算机的主要内存访问,而无需涉及操作系统、缓存或存储。通过使用 RDMA,可以实现高吞吐量、低延迟和 CPU 使用率的数据传输。

在典型的 IP 数据传输中,当一个计算机上的应用程序向另一台机器上的应用程序发送数据时,接收终止时会出现以下操作:

内核必须接收数据。

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

内核唤醒应用程序。

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

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

此过程意味着,如果主机适配器使用直接内存访问(DMA)或者至少两次,则大多数网络流量会被复制到系统的主内存中。另外,计算机执行一些上下文切换以在内核和应用程序间切换。这些上下文切换可能会导致 CPU 负载高,但会降低其他任务的速度。

与传统的 IP 通信不同,RDMA 通信会绕过通信过程中的内核干预。这可减少 CPU 开销。数据包进入网络后,RDMA 协议可让主机适配器决定哪个应用程序应该接收它,并将其保存在应用程序的内存空间中。主机适配器不将处理发送到内核并将其复制到用户应用程序的内存中,主机适配器直接在应用程序缓冲中放置数据包内容。此过程需要单独的 API、InfiniBand Verbs API 和应用程序需要实施 InfiniBand Verbs API 来使用 RDMA。

Red Hat Enterprise Linux 支持 InfiniBand 硬件和 InfiniBand Verbs API。另外,它支持以下技术在非InfiniBand 硬件中使用 InfiniBand Verbs API:

iWARP :通过 IP 网络实现 RDMA 的网络协议

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

第 2 章 配置 rdma 服务

使用远程直接内存访问(RDMA)协议,您可以使用主内存通过网络在启用了 RDMA 的系统间传输数据。RDMA 协议提供低延迟和高吞吐量。要管理支持的网络协议和通信标准,您需要配置 rdma 服务。此配置包括 RoCE 和 iWARP 等高速度网络协议,以及 Soft-RoCE 和 Soft-iWARP 等通信标准。当 Red Hat Enterprise Linux 检测 InfiniBand、iWARP 或 RoCE 设备及其位于 /etc/rdma/modules/* 目录的配置文件时,udev 设备管理器会指示 systemd 启动 rdma 服务。/etc/rdma/modules/rdma.conf 文件中模块的配置在重启后会保持不变。您需要重启 rdma-load-modules@rdma.service 配置服务以应用更改。

流程

安装 rdma-core 和 opensm 软件包:

dnf install rdma-core opensm

# dnf install rdma-core opensm

Copy to Clipboard

Copied!

启用 opensm 服务:

systemctl enable opensm

# systemctl enable opensm

Copy to Clipboard

Copied!

启动 opensm 服务:

systemctl start opensm

# systemctl start opensm

Copy to Clipboard

Copied!

编辑 /etc/rdma/modules/rdma.conf 文件,并取消您要启用的模块的注释:

These modules are loaded by the system if any RDMA devices is installed

iSCSI over RDMA client support

iSCSI over RDMA target support

SCSI RDMA Protocol target driver

User access to RDMA verbs (supports libibverbs)

User access to RDMA connection management (supports librdmacm)

RDS over RDMA support

rds_rdma

NFS over RDMA client support

NFS over RDMA server support

# These modules are loaded by the system if any RDMA devices is installed

# iSCSI over RDMA client support

ib_iser

# iSCSI over RDMA target support

ib_isert

# SCSI RDMA Protocol target driver

ib_srpt

# User access to RDMA verbs (supports libibverbs)

ib_uverbs

# User access to RDMA connection management (supports librdmacm)

rdma_ucm

# RDS over RDMA support

# rds_rdma

# NFS over RDMA client support

xprtrdma

# NFS over RDMA server support

svcrdma

Copy to Clipboard

Copied!

重启该服务以使更改生效:

systemctl restart

# systemctl restart

Copy to Clipboard

Copied!

验证

安装 libibverbs-utils 和 infiniband-diags 软件包:

dnf install libibverbs-utils infiniband-diags

# dnf install libibverbs-utils infiniband-diags

Copy to Clipboard

Copied!

列出可用的 InfiniBand 设备:

ibv_devices

# ibv_devices

device node GUID

------ ----------------

mlx4_0 0002c903003178f0

mlx4_1 f4521403007bcba0

Copy to Clipboard

Copied!

显示 mlx4_1 设备的信息:

ibv_devinfo -d mlx4_1

# ibv_devinfo -d mlx4_1

hca_id: mlx4_1

transport: InfiniBand (0)

fw_ver: 2.30.8000

node_guid: f452:1403:007b:cba0

sys_image_guid: f452:1403:007b:cba3

vendor_id: 0x02c9

vendor_part_id: 4099

hw_ver: 0x0

board_id: MT_1090120019

phys_port_cnt: 2

port: 1

state: PORT_ACTIVE (4)

max_mtu: 4096 (5)

active_mtu: 2048 (4)

sm_lid: 2

port_lid: 2

port_lmc: 0x01

link_layer: InfiniBand

port: 2

state: PORT_ACTIVE (4)

max_mtu: 4096 (5)

active_mtu: 4096 (5)

sm_lid: 0

port_lid: 0

port_lmc: 0x00

link_layer: Ethernet

Copy to Clipboard

Copied!

显示 mlx4_1 设备的状态:

ibstat mlx4_1

# ibstat mlx4_1

CA 'mlx4_1'

CA type: MT4099

Number of ports: 2

Firmware version: 2.30.8000

Hardware version: 0

Node GUID: 0xf4521403007bcba0

System image GUID: 0xf4521403007bcba3

Port 1:

State: Active

Physical state: LinkUp

Rate: 56

Base lid: 2

LMC: 1

SM lid: 2

Capability mask: 0x0251486a

Port GUID: 0xf4521403007bcba1

Link layer: InfiniBand

Port 2:

State: Active

Physical state: LinkUp

Rate: 40

Base lid: 0

LMC: 0

SM lid: 0

Capability mask: 0x04010000

Port GUID: 0xf65214fffe7bcba2

Link layer: Ethernet

Copy to Clipboard

Copied!

ibping 程序通过配置参数来 ping InfiniBand 地址并以客户端/服务器运行。

在主机上的端口号 - P 上启动服务器模式-带有 -C InfiniBand 频道适配器(CA)名称:

ibping -S -C mlx4_1 -P 1

# ibping -S -C mlx4_1 -P 1

Copy to Clipboard

Copied!

启动客户端模式,在主机上使用带有 -L Local Identifier (LID)的端口号 -P 上发送一些数据包 -c :

ibping -c 50 -C mlx4_0 -P 1 -L 2

# ibping -c 50 -C mlx4_0 -P 1 -L 2

Copy to Clipboard

Copied!

第 3 章 配置 IPoIB

默认情况下,InfiniBand 不使用 IP 进行通信。但是,IP over InfiniBand(IPoIB)在 InfiniBand 远程直接访问(RDMA)网络之上提供一个 IP 网络模拟层。这允许现有未经修改的应用程序通过 InfiniBand 网络传输数据,但性能低于应用程序原生使用 RDMA 时的数据。

注意

在 RHEL 8 及更高版本上,Mellanox 设备从 ConnectX-4 及以上启动,默认使用增强 IPoIB 模式(仅数据Gram)。这些设备不支持连接的模式。

3.1. IPoIB 通讯模式

IPoIB 设备可在 Datagram 或 Connected 模式中配置。区别在于 IPoIB 层试图在通信的另一端机器打开的队列对的类型:

在 Datagram 模式中,系统会打开一个不可靠、断开连接的队列对。

这个模式不支持大于 InfiniBand 链路层的最大传输单元(MTU)的软件包。在传输数据时,IPoIB 层在 IP 数据包之上添加了一个 4 字节 IPoIB 标头。因此,IPoIB MTU 比 InfiniBand link-layer MTU 小 4 字节。因为 2048 是一个常见的 InfiniBand 链路层 MTU,Datagram 模式中的通用 IPoIB 设备 MTU 为 2044。

在 Connected 模式中,系统会打开一个可靠、连接的队列对。

这个模式允许消息大于 InfiniBand link-layer MTU。主机适配器处理数据包分段和重新装配。因此,在 Connected 模式中,从 Infiniband 适配器发送的消息没有大小限制。但是,由于 data 字段和 TCP/IP 标头字段 导致 IP 数据包有限。因此,Connected 模式中的 IPoIB MTU 是 65520 字节。

连接 模式的性能更高,但会消耗更多内核内存。

虽然系统被配置为使用 Connected 模式,但系统仍然会使用 Datagram 模式发送多播流量,因为 InfiniBand 交换机和光纤无法在 Connected 模式中传递多播流量。另外,当主机没有配置为使用 连接 模式时,系统会返回 Datagram 模式。

在运行应用程序时,在接口上将多播数据发送到 MTU 时,在 Datagram 模式中配置接口,或者将应用程序配置为对数据包的数据包的发送大小上限。

3.2. 了解 IPoIB 硬件地址

ipoIB 设备有 20 字节硬件地址,它由以下部分组成:

前 4 字节是标志和队列对号

下一个 8 字节是子网前缀

默认子网前缀为 0xfe:80:00:00:00:00:00:00。设备连接到子网管理器后,设备会更改此前缀以匹配配置的子网管理器。

最后一个 8 字节是 InfiniBand 端口的全球唯一标识符(GUID),附加到 IPoIB 设备

注意

因为前 12 个字节可以更改,因此请不要在 udev 设备管理器规则中使用它们。

3.3. 重命名 IPoIB 设备

默认情况下,内核通过 InfiniBand(IPoIB)设备命名互联网协议,如 ib 0、ib1 等等。为了避免冲突,红帽建议在 udev 设备管理器中创建一个规则来创建持久且有意义的名称,如 mlx4_ib0。

先决条件

您已安装了 InfiniBand 设备。

流程

显示设备 ib0 的硬件地址:

ip link show ib0

# ip link show ib0

8: ib0: >BROADCAST,MULTICAST,UP,LOWER_UP< mtu 65520 qdisc pfifo_fast state UP mode DEFAULT qlen 256

link/infiniband 80:00:02:00:fe:80:00:00:00:00:00:00:00:02:c9:03:00:31:78:f2 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff

Copy to Clipboard

Copied!

地址的最后八字节需要在下一步中创建 udev 规则。

要配置使用 00:02:c9:03:00:31:78:f2 硬件地址重命名为 mlx4_ib0 的规则,请编辑 /etc/udev/rules.d/70-persistent-ipoib.rules 文件并添加 ACTION 规则:

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="mlx4_ib0"

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="mlx4_ib0"

Copy to Clipboard

Copied!

重启主机:

reboot

# reboot

Copy to Clipboard

Copied!

其它资源

您系统上的 udev (7) 手册页

了解 IPoIB 硬件地址

3.4. 使用 nmcli配置 IPoIB 连接

您可以使用 nmcli 工具在命令行上通过 InfiniBand 连接创建 IP。

先决条件

InfiniBand 设备已安装在服务器上

加载对应的内核模块

流程

创建 InfiniBand 连接,在 Connected 传输模式中使用 mlx4_ib0 接口,以及最大 MTU 65520 字节:

nmcli connection add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 transport-mode Connected mtu 65520

# nmcli connection add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 transport-mode Connected mtu 65520

Copy to Clipboard

Copied!

设置 P_Key,例如:

nmcli connection modify mlx4_ib0 infiniband.p-key 0x8002

# nmcli connection modify mlx4_ib0 infiniband.p-key 0x8002

Copy to Clipboard

Copied!

配置 IPv4 设置:

要使用 DHCP,请输入:

nmcli connection modify mlx4_ib0 ipv4.method auto

# nmcli connection modify mlx4_ib0 ipv4.method auto

Copy to Clipboard

Copied!

如果 ipv4.method 已设置为 auto(默认),请跳过这一步。

要设置静态 IPv4 地址、网络掩码、默认网关、DNS 服务器和搜索域,请输入:

nmcli connection modify mlx4_ib0 ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com

# nmcli connection modify mlx4_ib0 ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com

Copy to Clipboard

Copied!

配置 IPv6 设置:

要使用无状态地址自动配置(SLAAC),请输入:

nmcli connection modify mlx4_ib0 ipv6.method auto

# nmcli connection modify mlx4_ib0 ipv6.method auto

Copy to Clipboard

Copied!

如果 ipv6.method 已设置为 auto(默认),请跳过这一步。

要设置静态 IPv6 地址、网络掩码、默认网关、DNS 服务器和搜索域,请输入:

nmcli connection modify mlx4_ib0 ipv6.method manual ipv6.addresses 2001:db8:1::fffe/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com

# nmcli connection modify mlx4_ib0 ipv6.method manual ipv6.addresses 2001:db8:1::fffe/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com

Copy to Clipboard

Copied!

要在配置文件中自定义其他设置,请使用以下命令:

nmcli connection modify mlx4_ib0

# nmcli connection modify mlx4_ib0

Copy to Clipboard

Copied!

用空格或分号将值括起来。

激活配置文件:

nmcli connection up mlx4_ib0

# nmcli connection up mlx4_ib0

Copy to Clipboard

Copied!

验证

使用 ping 程序将 ICMP 数据包发送到远程主机的 InfiniBand 适配器,例如:

ping -c5 192.0.2.2

# ping -c5 192.0.2.2

Copy to Clipboard

Copied!

3.5. 使用 network RHEL 系统角色配置 IPoIB 连接

您可以使用 IP over InfiniBand (IPoIB),通过 InfiniBand 接口发送 IP 数据包。要配置 IPoIB,请创建一个 NetworkManager 连接配置文件。通过使用 Ansible 和 network 系统角色,您可以自动执行此过程,并在 playbook 中定义的主机上远程配置连接配置文件。

您可以使用 network RHEL 系统角色配置 IPoIB,如果 InfiniBand 的父设备的连接配置集不存在,角色也可以创建它。

先决条件

您已准备好控制节点和受管节点

以可在受管主机上运行 playbook 的用户登录到控制节点。

用于连接受管节点的帐户具有 sudo 权限。

名为 mlx4_ib0 的 InfiniBand 设备安装在受管节点中。

受管节点使用 NetworkManager 配置网络。

流程

创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml :

---

- name: Configure the network

hosts: managed-node-01.example.com

tasks:

- name: IPoIB connection profile with static IP address settings

ansible.builtin.include_role:

name: redhat.rhel_system_roles.network

vars:

network_connections:

# InfiniBand connection mlx4_ib0

- name: mlx4_ib0

interface_name: mlx4_ib0

type: infiniband

# IPoIB device mlx4_ib0.8002 on top of mlx4_ib0

- name: mlx4_ib0.8002

type: infiniband

autoconnect: yes

infiniband:

p_key: 0x8002

transport_mode: datagram

parent: mlx4_ib0

ip:

address:

- 192.0.2.1/24

- 2001:db8:1::1/64

state: up

---

- name: Configure the network

hosts: managed-node-01.example.com

tasks:

- name: IPoIB connection profile with static IP address settings

ansible.builtin.include_role:

name: redhat.rhel_system_roles.network

vars:

network_connections:

# InfiniBand connection mlx4_ib0

- name: mlx4_ib0

interface_name: mlx4_ib0

type: infiniband

# IPoIB device mlx4_ib0.8002 on top of mlx4_ib0

- name: mlx4_ib0.8002

type: infiniband

autoconnect: yes

infiniband:

p_key: 0x8002

transport_mode: datagram

parent: mlx4_ib0

ip:

address:

- 192.0.2.1/24

- 2001:db8:1::1/64

state: up

Copy to Clipboard

Copied!

示例 playbook 中指定的设置包括以下内容:

type:

设置要创建的配置文件的类型。示例 playbook 创建两个连接配置文件:一个用于 InfiniBand 连接,一个用于 IPoIB 设备。

parent:

设置 IPoIB 连接配置文件的父设备。

p_key:

设置 InfiniBand 分区密钥。如果您设置了此变量,请不要在 IPoIB 设备上设置 interface_name。

transport_mode:

设置 IPoIB 连接操作模式。您可以将此变量设置为 datagram(默认)或 connected。

有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件。

验证 playbook 语法:

ansible-playbook --syntax-check ~/playbook.yml

$ ansible-playbook --syntax-check ~/playbook.yml

Copy to Clipboard

Copied!

请注意,这个命令只验证语法,并不会防止错误但有效的配置。

运行 playbook:

ansible-playbook ~/playbook.yml

$ ansible-playbook ~/playbook.yml

Copy to Clipboard

Copied!

验证

显示 mlx4_ib0.8002 设备的 IP 设置:

ansible managed-node-01.example.com -m command -a 'ip address show mlx4_ib0.8002'

# ansible managed-node-01.example.com -m command -a 'ip address show mlx4_ib0.8002'

managed-node-01.example.com | CHANGED | rc=0 >>

...

inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute ib0.8002

valid_lft forever preferred_lft forever

inet6 2001:db8:1::1/64 scope link tentative noprefixroute

valid_lft forever preferred_lft forever

Copy to Clipboard

Copied!

显示 mlx4_ib0.8002 设备的分区密钥(P_Key):

ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/pkey'

managed-node-01.example.com | CHANGED | rc=0 >>

0x8002

# ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/pkey'

managed-node-01.example.com | CHANGED | rc=0 >>

0x8002

Copy to Clipboard

Copied!

显示 mlx4_ib0.8002 设备的模式:

ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/mode'

managed-node-01.example.com | CHANGED | rc=0 >>

datagram

# ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/mode'

managed-node-01.example.com | CHANGED | rc=0 >>

datagram

Copy to Clipboard

Copied!

其它资源

/usr/share/ansible/roles/rhel-system-roles.network/README.md 文件

/usr/share/doc/rhel-system-roles/network/ directory

3.6. 使用 nmstatectl配置 IPoIB 连接

您可以使用 nmstatectl 工具通过 Nmstate API 配置 IP over InfiniBand (IPoIB)连接。Nmstate API 确保设置配置后结果与配置文件匹配。如果有任何失败,nmstatectl 会自动回滚更改以避免系统处于不正确的状态。

先决条件

InfiniBand 设备已安装在服务器上。

加载 InfiniBand 设备的内核模块。

流程

创建包含以下内容的 YAML 文件,如 ~/create-IPoIB-profile.yml :

interfaces:

- name: mlx4_ib0.8002

type: infiniband

state: up

ipv4:

enabled: true

address:

- ip: 192.0.2.1

prefix-length: 24

dhcp: false

ipv6:

enabled: true

address:

- ip: 2001:db8:1::1

prefix-length: 64

autoconf: false

dhcp: false

infiniband:

base-iface: "mlx4_ib0"

mode: datagram

pkey: "0x8002"

routes:

config:

- destination: 0.0.0.0/0

next-hop-address: 192.0.2.254

next-hop-interface: mlx4_ib0.8002

- destination: ::/0

next-hop-address: 2001:db8:1::fffe

next-hop-interface: mlx4_ib0.8002

interfaces:

- name: mlx4_ib0.8002

type: infiniband

state: up

ipv4:

enabled: true

address:

- ip: 192.0.2.1

prefix-length: 24

dhcp: false

ipv6:

enabled: true

address:

- ip: 2001:db8:1::1

prefix-length: 64

autoconf: false

dhcp: false

infiniband:

base-iface: "mlx4_ib0"

mode: datagram

pkey: "0x8002"

routes:

config:

- destination: 0.0.0.0/0

next-hop-address: 192.0.2.254

next-hop-interface: mlx4_ib0.8002

- destination: ::/0

next-hop-address: 2001:db8:1::fffe

next-hop-interface: mlx4_ib0.8002

Copy to Clipboard

Copied!

IPoIB 连接现在有以下设置:

IPOIB 设备名称: mlx4_ib0.8002

基本接口(父): mlx4_ib0

InfiniBand partition key: 0x8002

传输模式:data gram

静态 IPv4 地址:192.0.2.1,子网掩码为 /24

静态 IPv6 地址:2001:db8:1::1 ,子网掩码为 /64

IPv4 默认网关:192.0.2.254

IPv6 默认网关:2001:db8:1::fffe

将设置应用到系统:

nmstatectl apply ~/create-IPoIB-profile.yml

# nmstatectl apply ~/create-IPoIB-profile.yml

Copy to Clipboard

Copied!

验证

显示 mlx4_ib0.8002 设备的 IP 设置:

ip address show mlx4_ib0.8002

# ip address show mlx4_ib0.8002

...

inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute ib0.8002

valid_lft forever preferred_lft forever

inet6 2001:db8:1::1/64 scope link tentative noprefixroute

valid_lft forever preferred_lft forever

Copy to Clipboard

Copied!

显示 mlx4_ib0.8002 设备的分区密钥(P_Key):

cat /sys/class/net/mlx4_ib0.8002/pkey

0x8002

# cat /sys/class/net/mlx4_ib0.8002/pkey

0x8002

Copy to Clipboard

Copied!

显示 mlx4_ib0.8002 设备的模式:

cat /sys/class/net/mlx4_ib0.8002/mode

datagram

# cat /sys/class/net/mlx4_ib0.8002/mode

datagram

Copy to Clipboard

Copied!

其它资源

您系统上的 nmstatectl (8) 手册页

/usr/share/doc/nmstate/examples/ 目录

3.7. 使用 nm-connection-editor 配置 IPoIB 连接

nmcli-connection-editor 应用程序使用管理控制台配置和管理 NetworkManager 存储的网络连接。

先决条件

InfiniBand 设备已安装在服务器上。

加载对应的内核模块。

已安装 nm-connection-editor 软件包。

流程

输入命令:

nm-connection-editor

$ nm-connection-editor

Copy to Clipboard

Copied!

点 + 按钮添加新连接。

选择 InfiniBand 连接类型并点 Create。

在 InfiniBand 标签页中:

如果您想更改连接名称。

选择传输模式。

选该设备。

如果需要,设置 MTU。

在 IPv4 Settings 选项卡上,配置 IPv4 设置。例如,设置静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器:

在 IPv6 Settings 选项卡上,配置 IPv6 设置。例如,设置静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器:

点 Save 保存 team 连接。

关闭 nm-connection-editor。

您可以设置 P_Key 接口。因为 nm-connection-editor 中没有此设置,所以您必须在命令行中设置此参数。

例如,将 mlx4_ib0 连接的 0x8002 设置为 P_Key 接口:

nmcli connection modify mlx4_ib0 infiniband.p-key 0x8002

# nmcli connection modify mlx4_ib0 infiniband.p-key 0x8002

Copy to Clipboard

Copied!

3.8. 配置 IPoIB 后使用 qperf 测试 RDMA 网络

qperf 程序根据带宽、延迟和 CPU 使用率来测量两个节点间的 RDMA 和 IP 性能。

先决条件

您已在两台主机上都安装了 qperf 软件包。

ipoib 是在两个主机上配置的。

流程

在没有选项作为服务器的主机上启动 qperf :

qperf

# qperf

Copy to Clipboard

Copied!

在客户端中运行以下命令。命令使用客户端中 mlx4_0 主机频道适配器的端口 1 连接到服务器中分配给 InfiniBand 适配器的 IP 地址 192.0.2.1。

显示主机通道适配器的配置:

qperf -v -i mlx4_0:1 192.0.2.1 conf

# qperf -v -i mlx4_0:1 192.0.2.1 conf

conf:

loc_node = rdma-dev-01.lab.bos.redhat.com

loc_cpu = 12 Cores: Mixed CPUs

loc_os = Linux 4.18.0-187.el8.x86_64

loc_qperf = 0.4.11

rem_node = rdma-dev-00.lab.bos.redhat.com

rem_cpu = 12 Cores: Mixed CPUs

rem_os = Linux 4.18.0-187.el8.x86_64

rem_qperf = 0.4.11

Copy to Clipboard

Copied!

显示可靠的连接(RC)流双向带宽:

qperf -v -i mlx4_0:1 192.0.2.1 rc_bi_bw

# qperf -v -i mlx4_0:1 192.0.2.1 rc_bi_bw

rc_bi_bw:

bw = 10.7 GB/sec

msg_rate = 163 K/sec

loc_id = mlx4_0

rem_id = mlx4_0:1

loc_cpus_used = 65 % cpus

rem_cpus_used = 62 % cpus

Copy to Clipboard

Copied!

显示 RC 流单向带宽:

qperf -v -i mlx4_0:1 192.0.2.1 rc_bw

# qperf -v -i mlx4_0:1 192.0.2.1 rc_bw

rc_bw:

bw = 6.19 GB/sec

msg_rate = 94.4 K/sec

loc_id = mlx4_0

rem_id = mlx4_0:1

send_cost = 63.5 ms/GB

recv_cost = 63 ms/GB

send_cpus_used = 39.5 % cpus

recv_cpus_used = 39 % cpus

Copy to Clipboard

Copied!

其它资源

您系统上的 qperf (1) 手册页

第 4 章 配置 RoCE

通过融合以太网的远程直接内存访问(RDMA)是一种网络协议,它通过以太网网络利用 RDMA。对于配置,RoCE 需要特定的硬件,并且一些硬件供应商是 Mellanox、Broadcom 和 QLogic。

4.1. RoCE 协议版本概述

以下是不同的 RoCE 版本:

RoCE v1

RoCE 版本 1 协议是一个以太网链路层协议,带有 Ethertype 0x8915,它允许同一以太网广播域中的任何两个主机间的通信。

RoCE v2

RoCE 版本 2 协议在 IPv4 或 IPv6 协议的 UDP 上存在。对于 RoCE v2,UDP 目标端口号为 4791。

RDMA_CM 设置客户端和服务器之间用来传输数据的可靠连接。RDMA_CM 为建立连接提供了一个与 RDMA 传输相关的接口。这个通信使用特定的 RDMA 设备和基于消息的数据传输。

重要

不支持在客户端中使用 RoCE v2 的不同版本,并在服务器中使用 RoCE v1。在这种情况下,将服务器和客户端都配置为通过 RoCE v1 进行通信。

4.2. 临时更改默认 RoCE 版本

不支持在客户端和服务器上的 RoCE v1 使用 RoCE v2 协议。如果您的服务器中的硬件只支持 RoCE v1,请为 RoCE v1 配置客户端,来与服务器进行通信。例如,您可以为只支持 RoCE v1 的 Mellanox ConnectX-5 InfiniBand 设备配置使用 mlx5_0 驱动程序的客户端。

注意

此处描述的更改将保持有效,直到您重启主机。

先决条件

客户端使用带有 RoCE v2 协议的 InfiniBand 设备。

服务器使用只支持 RoCE v1 的 InfiniBand 设备。

流程

创建 /sys/kernel/config/rdma_cm/mlx5_0/ 目录:

mkdir /sys/kernel/config/rdma_cm/mlx5_0/

# mkdir /sys/kernel/config/rdma_cm/mlx5_0/

Copy to Clipboard

Copied!

显示默认 RoCE 模式:

cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode

RoCE v2

# cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode

RoCE v2

Copy to Clipboard

Copied!

将默认 RoCE 模式改为版本 1:

echo "IB/RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode

# echo "IB/RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode

Copy to Clipboard

Copied!

4.3. 配置 Soft-RoCE

Soft-RoCE 是 RDMA over Ethernet 的一个软件实现,它也称为 RXE。在没有 RoCE 主机频道适配器(HCA)的主机上使用 Soft-RoCE。

重要

Soft-RoCE 仅作为技术预览提供。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。

如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

先决条件

已安装以太网适配器

流程

安装 iproute、libibverbs、libibverbs-utils 和 infiniband-diags 软件包:

yum install iproute libibverbs libibverbs-utils infiniband-diags

# yum install iproute libibverbs libibverbs-utils infiniband-diags

Copy to Clipboard

Copied!

显示 RDMA 链接:

rdma link show

# rdma link show

Copy to Clipboard

Copied!

添加一个新的名为 rxe 0 的 rxe 设备,其使用 enp0s1 接口:

rdma link add rxe0 type rxe netdev enp1s0

# rdma link add rxe0 type rxe netdev enp1s0

Copy to Clipboard

Copied!

验证

查看所有 RDMA 链接的状态:

rdma link show

# rdma link show

link rxe0/1 state ACTIVE physical_state LINK_UP netdev enp1s0

Copy to Clipboard

Copied!

列出可用的 RDMA 设备:

ibv_devices

# ibv_devices

device node GUID

------ ----------------

rxe0 505400fffed5e0fb

Copy to Clipboard

Copied!

您可以使用 ibstat 程序来显示详细的状态:

ibstat rxe0

# ibstat rxe0

CA 'rxe0'

CA type:

Number of ports: 1

Firmware version:

Hardware version:

Node GUID: 0x505400fffed5e0fb

System image GUID: 0x0000000000000000

Port 1:

State: Active

Physical state: LinkUp

Rate: 100

Base lid: 0

LMC: 0

SM lid: 0

Capability mask: 0x00890000

Port GUID: 0x505400fffed5e0fb

Link layer: Ethernet

Copy to Clipboard

Copied!

第 5 章 增加用户被允许在系统中的内存量

远程直接内存访问(RDMA)操作需要固定物理内存。因此,内核不允许将内存写入 swap 空间。如果用户固定太多内存,系统会耗尽内存,内核会终止进程来释放更多内存。因此,内存固定是一个特权操作。

如果非 root 用户需要运行大型 RDMA 应用程序,则需要增加内存量,以便在主内存中一直保持页面固定。

流程

以 root 用户身份,创建具有以下内容的文件 /etc/security/limits.conf :

@rdma soft memlock unlimited

@rdma hard memlock unlimited

@rdma soft memlock unlimited

@rdma hard memlock unlimited

Copy to Clipboard

Copied!

验证

编辑 /etc/security/limits.conf 文件后,作为 rdma 组的成员登录。

请注意,当用户登录时,Red Hat Enterprise Linux 会应用更新的 ulimit 设置。

使用 ulimit -l 命令显示限制:

ulimit -l

$ ulimit -l

unlimited

Copy to Clipboard

Copied!

如果命令返回 unlimited,用户可以获得无限数量的内存。

其它资源

您系统上的 limits.conf (5) 手册页

第 6 章 在 NFS 服务器中启用 RDMA 的 NFS

远程直接内存访问(RDMA)是一种协议,它允许客户端系统将数据直接从存储服务器的内存传输到其自身的内存。这提高了存储吞吐量,降低服务器和客户端之间的数据传输延迟,并减少两端的 CPU 负载。如果 NFS 服务器和客户端都通过 RDMA 连接,客户端可以使用 NFSoRDMA 来挂载导出的目录。

先决条件

NFS 服务正在运行并配置了

在服务器中安装 InfiniBand 或 RDMA over Converged Ethernet (RoCE)设备。

IP over InfiniBand (IPoIB)在服务器上被配置,InfiniBand 设备分配了一个 IP 地址。

流程

安装 rdma-core 软件包:

dnf install rdma-core

# dnf install rdma-core

Copy to Clipboard

Copied!

如果已经安装了软件包,请验证 /etc/rdma/modules/rdma.conf 文件中的 xprtrdma 和 svcrdma 模块是否已取消注释:

NFS over RDMA client support

NFS over RDMA server support

# NFS over RDMA client support

xprtrdma

# NFS over RDMA server support

svcrdma

Copy to Clipboard

Copied!

可选:默认情况下,通过 RDMA 的 NFS 使用端口 20049。如果要使用其他端口,请在 /etc/nfs.conf 文件的 [nfsd] 部分中设置 rdma-port 设置:

rdma-port=

rdma-port=

Copy to Clipboard

Copied!

在 firewalld 中打开 NFSoRDMA 端口:

firewall-cmd --permanent --add-port={20049/tcp,20049/udp}

firewall-cmd --reload

# firewall-cmd --permanent --add-port={20049/tcp,20049/udp}

# firewall-cmd --reload

Copy to Clipboard

Copied!

如果您设置了与 20049 不同的端口,请调整端口号。

重启 nfs-server 服务:

systemctl restart nfs-server

# systemctl restart nfs-server

Copy to Clipboard

Copied!

验证

在带有 InfiniBand 硬件的客户端中执行以下步骤:

安装以下软件包:

dnf install nfs-utils rdma-core

# dnf install nfs-utils rdma-core

Copy to Clipboard

Copied!

通过 RDMA 挂载导出的 NFS 共享:

mount -o rdma server.example.com:/nfs/projects/ /mnt/

# mount -o rdma server.example.com:/nfs/projects/ /mnt/

Copy to Clipboard

Copied!

如果您设置了默认端口号(20049),请将 port = 传给命令:

mount -o rdma,port= server.example.com:/nfs/projects/ /mnt/

# mount -o rdma,port= server.example.com:/nfs/projects/ /mnt/

Copy to Clipboard

Copied!

验证共享是否已使用 rdma 选项挂载:

mount | grep "/mnt"

# mount | grep "/mnt"

server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)

Copy to Clipboard

Copied!

其它资源

配置 InfiniBand 和 RDMA 网络

第 7 章 Configuring Soft-iWARP

远程直接内存访问(RDMA)通过以太网使用多个库和协议,如 iWARP、Soft-iWARP 用于提高性能和辅助编程接口。

重要

soft-iWARP 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。

7.1. iWARP 和 Soft-iWARP 概述

远程直接内存访问(RDMA)使用 iWARP over Ethernet 进行聚合和低延迟数据传输。通过使用标准以太网交换机和 TCP/IP 堆栈,iWARP 在 IP 子网之间路由流量,以便有效地利用现有基础架构。在 Red Hat Enterprise Linux 中,多个提供商为其硬件网络接口卡实施 iWARP。例如:cxgb4,irdma,qedr 等等。

软硬件(siw)是基于软件的 iWARP 内核驱动程序和 Linux 程序库。它是一个基于软件的 RDMA 设备,在附加到网络接口卡时为 RDMA 硬件提供编程接口。它提供测试和验证 RDMA 环境的简便方法。

7.2. Configuring Soft-iWARP

soft-iWARP (siw)通过 Linux TCP/IP 网络堆栈实现 iWARP 远程直接访问(RDMA)传输。它可让具有标准以太网适配器的系统与 iWARP 适配器或另一个系统互操作,运行 Soft-iWARP 驱动程序,或使用支持 iWARP 的硬件的主机进行互操作。

重要

Soft-iWARP 功能仅作为技术预览提供。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。

如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

要配置 Soft-iWARP,您可以在脚本中使用这个步骤在系统引导时自动运行。

先决条件

已安装以太网适配器

流程

安装 iproute、libibverbs、libibverbs-utils 和 infiniband-diags 软件包:

yum install iproute libibverbs libibverbs-utils infiniband-diags

# yum install iproute libibverbs libibverbs-utils infiniband-diags

Copy to Clipboard

Copied!

显示 RDMA 链接:

rdma link show

# rdma link show

Copy to Clipboard

Copied!

加载 siw 内核模块:

modprobe siw

# modprobe siw

Copy to Clipboard

Copied!

添加一个名为 siw0 的新 siw 设备,它使用 enp0s1 接口:

rdma link add siw0 type siw netdev enp0s1

# rdma link add siw0 type siw netdev enp0s1

Copy to Clipboard

Copied!

验证

查看所有 RDMA 链接的状态:

rdma link show

# rdma link show

link siw0/1 state ACTIVE physical_state LINK_UP netdev enp0s1

Copy to Clipboard

Copied!

列出可用的 RDMA 设备:

ibv_devices

# ibv_devices

device node GUID

------ ----------------

siw0 0250b6fffea19d61

Copy to Clipboard

Copied!

您可以使用 ibv_devinfo 工具显示详细的状态:

ibv_devinfo siw0

# ibv_devinfo siw0

hca_id: siw0

transport: iWARP (1)

fw_ver: 0.0.0

node_guid: 0250:b6ff:fea1:9d61

sys_image_guid: 0250:b6ff:fea1:9d61

vendor_id: 0x626d74

vendor_part_id: 1

hw_ver: 0x0

phys_port_cnt: 1

port: 1

state: PORT_ACTIVE (4)

max_mtu: 1024 (3)

active_mtu: 1024 (3)

sm_lid: 0

port_lid: 0

port_lmc: 0x00

link_layer: Ethernet

Copy to Clipboard

Copied!

第 8 章 InfiniBand 子网管理器

所有 InfiniBand 网络都必须运行子网管理器才能正常工作。即使两台机器没有使用交换机直接进行连接,也是如此。

有可能有一个以上的子网管理器。在这种情况下,一个 master 充当一个主子网管理器,另一个子网管理器充当从属子网管理器,当主子网管理器出现故障时将接管。

Red Hat Enterprise Linux 提供 OpenSM,这是 InfiniBand 子网管理器的实现。但是,Open SM 的功能是有限的,没有活跃的上游开发。通常,InfiniBand 交换机中嵌入的子网管理器提供更多功能,并支持最新的 InfiniBand 硬件。详情请查看 安装和配置 OpenSM InfiniBand 子网管理器。

法律通告

Copyright © 2025 Red Hat, Inc.

The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.

Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.

Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.