Infiniband 交换机和路由器的配置案例

配置一个IB网络

 

配置 InfiniBand 交换机和路由器通常涉及多个步骤,包括硬件安装、基本网络配置、高级功能配置以及网络验证。以下是一个详细的配置案例,涵盖了交换机和路由器的基础配置。 

# 硬件准备 

1. InfiniBand 交换机:例如 Mellanox SX6036

2. InfiniBand 路由器:例如 Mellanox SB7790

3. 服务器节点:配备了 InfiniBand HCAHost Channel Adapter),例如 Mellanox ConnectX 系列。

4. InfiniBand 电缆:例如 QSFP+ 光纤电缆。 

# 1. 硬件连接 

1. 连接服务器到交换机:

   - 使用 InfiniBand 电缆将服务器的 HCA 连接到 InfiniBand 交换机的端口。 

2. 连接交换机到路由器:

   - 使用 InfiniBand 电缆将交换机的上行端口连接到路由器的端口。 

# 2. 配置交换机 

以下是配置 Mellanox InfiniBand 交换机的步骤。登录到交换机的管理界面,可以使用 SSH Web UI 进行配置。 

## 通过 SSH 进行配置 

1. 登录交换机: 

ssh admin@<交换机IP地址> 

2. 基本配置:

shell

# 进入配置模式

enable

configure terminal 

# 设置交换机名称

hostname infiniband-switch 

# 配置管理 IP 地址

interface mgmt0

ip address 192.168.1.10 255.255.255.0

no shutdown 

# 配置网关

ip default-gateway 192.168.1.1 

# 保存配置

exit

copy running-config startup-config 

3. 配置子网管理器(SM): 

InfiniBand 网络中需要一个子网管理器(SM)来管理网络拓扑和路径选择。通常由交换机或服务器来运行 SM 

shell

# 启动内置的子网管理器

enable

configure terminal

feature sm

exit

copy running-config startup-config 

# 3. 配置路由器 

配置 InfiniBand 路由器需要类似的步骤。以下是配置 Mellanox InfiniBand 路由器的示例。 

## 通过 SSH 进行配置 

1. 登录路由器: 

ssh admin@<路由器IP地址> 

2. 基本配置: 

shell

# 进入配置模式

enable

configure terminal 

# 设置路由器名称

hostname infiniband-router 

# 配置管理 IP 地址

interface mgmt0

ip address 192.168.1.20 255.255.255.0

no shutdown 

# 配置网关

ip default-gateway 192.168.1.1 

# 保存配置

exit

copy running-config startup-config 

3. 配置路由功能: 

确保路由器配置了正确的子网和路径

shell

# 启动内置的子网管理器

enable

configure terminal

feature sm

exit

copy running-config startup-config 

# 4. 服务器配置 

在服务器上安装和配置 OFED 软件包,确保 InfiniBand HCA 正常工作。 

## 安装 OFED 软件包 

sudo apt update

sudo apt install rdma-core infiniband-diags 

## 配置网络接口 

sudo ibdev2netdev

sudo ip addr add 192.168.1.100/24 dev ib0

sudo ip link set ib0 up 

# 5. 验证网络配置 

使用 InfiniBand 提供的工具验证网络连接和配置。 

## 检查 InfiniBand 设备状态 

ibstat 

## 查看连接的主机 

ibhosts 

## 发现网络拓扑 

ibnetdiscover 

## 测试网络连接 

ibping -S 192.168.1.10 -C 192.168.1.100 

# 总结 

通过上述步骤,你可以配置 InfiniBand 交换机和路由器,并确保服务器节点能够通过 InfiniBand 网络进行通信。具体的配置步骤可能会因设备型号和网络需求有所不同,请参考设备的官方文档以获得详细信息和最佳实践。

 

路由器配置路由协议

 

配置 InfiniBand 路由器通常还涉及配置路由协议和策略,以确保不同子网之间的通信能够正确路由。InfiniBand 路由器通过子网管理器(SM)和路由器协议来管理和控制网络流量。下面是一个更详细的配置示例,包括配置路由协议。 

# InfiniBand 路由器配置案例 

我们将配置 Mellanox InfiniBand 路由器以支持多个子网之间的通信

 ## 1. 登录路由器 

使用 SSH 登录到路由器: 

ssh admin@<路由器IP地址> 

## 2. 基本配置 

进入配置模式并进行基本设置: 

shell

# 进入配置模式

enable

configure terminal 

# 设置路由器名称

hostname infiniband-router 

# 配置管理 IP 地址

interface mgmt0

ip address 192.168.1.20 255.255.255.0

no shutdown 

# 配置默认网关

ip default-gateway 192.168.1.1 

# 保存配置

exit

copy running-config startup-config 

## 3. 配置子网管理器(SM) 

确保路由器上运行了子网管理器,以管理和控制 InfiniBand 网络。 

shell

# 启动子网管理器

enable

configure terminal

feature sm

exit

copy running-config startup-config 

## 4. 配置路由协议 

对于 InfiniBand 路由器,需要配置基本的路由协议,以支持跨子网的通信。Mellanox 路由器通常支持 LID (Local Identifier) 路由和 GID (Global Identifier) 路由。 

### 配置示例 

假设我们有两个子网: 

- 子网 1:子网前缀为 0xfe80000000000000

- 子网 2:子网前缀为 0xfe80000000000001 

我们需要配置路由器使其在这两个子网之间进行路由。 

shell

# 进入配置模式

enable

configure terminal 

# 配置 LID 路由

feature routing 

# 配置路由表

routing table 0

  route add prefix 0xfe80000000000000/64 next-hop 0x001

  route add prefix 0xfe80000000000001/64 next-hop 0x002 

exit

copy running-config startup-config 

## 5. 配置其他高级功能(可选) 

根据需要,可以配置更多的高级功能,如 QoS(质量服务)、安全策略等。 

shell

# 配置 QoS(示例)

qos

  enable

  priority 0 rate-limit 10000

  priority 1 rate-limit 20000

exit

copy running-config startup-config 

# 6. 验证配置 

配置完成后,使用以下命令验证路由配置和连接状态: 

# 显示路由表

show routing table 

# 显示所有连接的设备

ibhosts 

# 测试子网间通信

ibping -S 0xfe80000000000000:0x1 -C 0xfe80000000000001:0x1 

# 总结

通过这些步骤,你可以在 InfiniBand 路由器上配置基本的路由协议和策略,以确保跨子网的通信顺畅。配置 InfiniBand 路由器需要考虑网络拓扑和具体需求,以上配置示例提供了一个基础框架,实际配置时可以根据实际情况进行调整。请参考设备的官方文档以获取更多详细信息和最佳实践。

 

LlD是什么? 

在配置 InfiniBand 路由时,next-hop 通常是指定数据包的下一跳地址。在 InfiniBand 网络中,下一跳地址通常由 LID(Local Identifier)表示,这是一个唯一的标识符,用于区分同一子网中的每个端口或节点。 

在以下配置示例中: 

shell

routing table 0

  route add prefix 0xfe80000000000000/64 next-hop 0x001

  route add prefix 0xfe80000000000001/64 next-hop 0x002 

next-hop 0x001 和 next-hop 0x002 是指定数据包的下一跳 LID。

 # 详细解释 

1. prefix: 这里表示子网前缀。0xfe80000000000000/64 和 0xfe80000000000001/64 是两个不同的子网前缀。/64 表示前缀长度。 

2. next-hop: 指定数据包在路由过程中需要转发到的下一跳 LID。例如,next-hop 0x001 表示数据包应该被发送到 LID 为 0x001 的设备。 

# 具体步骤 

1. 登录路由器: 使用 SSH 登录到路由器:  

ssh admin@<路由器IP地址> 

2. 进入配置模式: 进入配置模式以配置路由表: 

shell

enable

configure terminal 

3. 配置路由表: 添加路由条目以定义子网之间的路由规则: 

shell

# 启用路由功能

feature routing 

# 配置路由表 0

routing table 0

  # 将子网 0xfe80000000000000/64 的数据包发送到 LID 0x001

  route add prefix 0xfe80000000000000/64 next-hop 0x001  

  # 将子网 0xfe80000000000001/64 的数据包发送到 LID 0x002

  route add prefix 0xfe80000000000001/64 next-hop 0x002 

exit

copy running-config startup-config 

# 验证配置 

完成配置后,使用以下命令验证路由配置和连接状态:  

# 显示路由表

show routing table 

# 显示所有连接的设备

ibhosts 

# 测试子网间通信

ibping -S 0xfe80000000000000:0x1 -C 0xfe80000000000001:0x1

 

# 总结 

配置 InfiniBand 路由器时,next-hop 后面的 0x001 和 0x002 是下一跳的 LID,用于指示数据包在网络中的转发路径。这些 LID 标识了网络中设备的具体位置,确保数据包能正确路由到目标子网或设备。 

 

怎么获得LID 

InfiniBand 网络中,LID(Local Identifier)由子网管理器(SM)自动分配。通常情况下,LID 不需要手动配置,因为它们是由 SM 动态管理的。以下是 LID 的相关配置和查看方法: 

# LID 自动分配和查看 

1. 启动子网管理器(SM):

   SM 是 InfiniBand 网络中的一个关键组件,负责管理网络拓扑、路由和设备标识符的分配。 

   - 在 InfiniBand 交换机或路由器上启用 SM:

     shell

     enable

     configure terminal

     feature sm

     exit

     copy running-config startup-config 

 

2. 查看分配的 LID:

   可以使用 InfiniBand 提供的工具在服务器上查看分配的 LID。 

   - 使用 ibstat 命令:     

     ibstat 

     输出示例:     

     CA 'mlx4_0'

         CA type: MT4099

         Number of ports: 2

         Firmware version: 2.40.7000

         Hardware version: 0

         Node GUID: 0x0002c9030043a6d0

         System image GUID: 0x0002c9030043a6d3

         Port 1:

             State: Active

             Physical state: LinkUp

             Rate: 56

             Base lid: 1

             LMC: 0

             SM lid: 1

             Capability mask: 0x02510a68

             Port GUID: 0x0002c9030043a6d1

             Link layer: IB 

 

     在上面的输出中,Base lid: 1 表示该端口的 LID 是 1。 

3. 查看所有连接的设备及其 LID:

   使用 ibhosts 命令:   

   ibhosts 

   输出示例:   

   Ca  : 0x0002c9030043a6d0 ports 2 "hostname1 HCA-1"

      1 0x0002c9030043a6d1

      2 0x0002c9030043a6d2

   Ca  : 0x0002c9030043a6e0 ports 2 "hostname2 HCA-2"

      1 0x0002c9030043a6e1

      2 0x0002c9030043a6e2 

   这将列出所有设备的 GUID 和对应的 LID。

 

# 配置示例回顾 

在前面的路由配置示例中,next-hop 后的 0x001 和 0x002 是 LID,用于指示数据包在网络中的转发路径。以下是回顾该配置的示例: 

shell

# 进入配置模式

enable

configure terminal 

# 启用路由功能

feature routing 

# 配置路由表 0

routing table 0

  # 将子网 0xfe80000000000000/64 的数据包发送到 LID 0x001

  route add prefix 0xfe80000000000000/64 next-hop 0x001  

  # 将子网 0xfe80000000000001/64 的数据包发送到 LID 0x002

  route add prefix 0xfe80000000000001/64 next-hop 0x002 

exit

copy running-config startup-config 

# 总结 

LID 是由 InfiniBand 网络中的子网管理器(SM)自动分配的标识符,标识网络中每个设备的唯一地址。LID 通常不需要手动配置,可以通过 ibstat 和 ibhosts 等工具查看和验证。配置 InfiniBand 路由器时,可以使用分配的 LID 作为下一跳地址,确保数据包在网络中的正确转发。

 如何配置和获取GID 

InfiniBand 网络中,GID(Global Identifier)是一种全局唯一的标识符,用于标识网络中的每个端口或设备。GID 通常由设备的 GUID(Globally Unique Identifier)和子网前缀组合而成。与 LID 不同,GID 是一种全局范围的标识符,可以跨子网使用。下面是如何查看和配置 GID 的详细步骤。 

# 查看 GID 

GID 通常自动分配给每个 InfiniBand 端口,且可以通过命令行工具查看。 

## 使用 ibstat 查看 GID 

ibstat 命令可以显示 InfiniBand 设备的状态,包括 GID 信息。 

ibstat 

输出示例: 

CA 'mlx4_0'

    CA type: MT4099

    Number of ports: 2

    Firmware version: 2.40.7000

    Hardware version: 0

    Node GUID: 0x0002c9030043a6d0

    System image GUID: 0x0002c9030043a6d3

    Port 1:

        State: Active

        Physical state: LinkUp

        Rate: 56

        Base lid: 1

        LMC: 0

        SM lid: 1

        Capability mask: 0x02510a68

        Port GUID: 0x0002c9030043a6d1

        Link layer: IB

        GID[0]: fe80::2:c903:4:3a6d1

    Port 2:

        State: Down

        Physical state: Polling

        Rate: 10

        Base lid: 0

        LMC: 0

        SM lid: 0

        Capability mask: 0x02510a68

        Port GUID: 0x0002c9030043a6d2

        Link layer: IB

        GID[0]: fe80::2:c903:4:3a6d2 

在上面的输出中,GID[0] 是 GID,格式为 fe80::2:c903:4:3a6d1。

 

# 配置 GID 

GID 通常不需要手动配置,因为它们是基于 GUID 和子网前缀自动生成的。然而,在某些高级配置中,你可能需要手动配置或修改 GID。以下是配置 GID 的示例步骤: 

## 修改 GID 配置(高级用户) 

1. 编辑 InfiniBand 配置文件:

   在某些情况下,可以通过修改 InfiniBand 设备的配置文件来手动设置 GID。 

2. 使用子网管理器(SM)工具:

   使用 OpenSM 工具(一个常见的子网管理器)可以配置 GID。 

# 配置 GID 路由 

InfiniBand 路由器上配置 GID 路由,以实现跨子网通信。 

## 路由器配置示例 

假设我们有两个子网: 

- 子网 1:子网前缀为 0xfe80000000000000

- 子网 2:子网前缀为 0xfe80000000000001 

我们需要配置路由器使其在这两个子网之间进行路由。 

shell

# 进入配置模式

enable

configure terminal 

# 启用路由功能

feature routing 

# 配置路由表 0

routing table 0

  # 将子网 0xfe80000000000000/64 的数据包发送到 GID 0xfe80::2:c903:4:3a6d1

  route add prefix 0xfe80000000000000/64 next-hop fe80::2:c903:4:3a6d1  

  # 将子网 0xfe80000000000001/64 的数据包发送到 GID 0xfe80::2:c903:4:3a6d2

  route add prefix 0xfe80000000000001/64 next-hop fe80::2:c903:4:3a6d2 

exit

copy running-config startup-config 

# 验证配置 

完成配置后,使用以下命令验证路由配置和连接状态: 

# 显示路由表

show routing table 

# 显示所有连接的设备及其 GID

ibhosts 

# 测试子网间通信

ibping -S fe80::2:c903:4:3a6d1 -C fe80::2:c903:4:3a6d2

 

# 总结 

GID 是 InfiniBand 网络中的全局标识符,用于标识每个设备或端口。GID 通常由设备的 GUID 和子网前缀自动生成,可以通过命令行工具查看。在高级配置中,可以手动设置或修改 GID。配置 InfiniBand 路由器时,可以使用 GID 作为下一跳地址,以确保数据包在不同子网之间正确路由。

 

GUID是什么?

GUIDGlobally Unique Identifier,全局唯一标识符)是一个 128 位的标识符,用于在计算机系统中唯一地标识对象。它广泛应用于许多领域,包括软件开发、硬件设备识别、数据库等。具体到 InfiniBand 网络中,GUID 用于唯一标识每个设备(如 HCAHost Channel Adapter)和端口。 

# GUID InfiniBand 中的作用 

InfiniBand 网络中,每个设备和端口都有一个唯一的 GUID。这些 GUID 用于: 

1. 设备标识:唯一标识每个 InfiniBand 设备,确保网络中没有重复的设备标识。

2. 网络管理:子网管理器(SM)使用 GUID 来管理网络拓扑和路径选择。

3. GID 生成:GIDGlobal Identifier)通常由 GUID 和子网前缀组合而成,用于标识网络中的每个端口或设备。 

# 查看 GUID 

InfiniBand 网络中,可以使用 ibstat 和其他 InfiniBand 工具查看 GUID 

## 使用 ibstat 查看 GUID 

ibstat 命令可以显示 InfiniBand 设备的状态,包括 GUID 信息。 

bash

ibstat 

输出示例: 

CA 'mlx4_0'

    CA type: MT4099

    Number of ports: 2

    Firmware version: 2.40.7000

    Hardware version: 0

    Node GUID: 0x0002c9030043a6d0

    System image GUID: 0x0002c9030043a6d3

    Port 1:

        State: Active

        Physical state: LinkUp

        Rate: 56

        Base lid: 1

        LMC: 0

        SM lid: 1

        Capability mask: 0x02510a68

        Port GUID: 0x0002c9030043a6d1

        Link layer: IB

        GID[0]: fe80::2:c903:4:3a6d1

    Port 2:

        State: Down

        Physical state: Polling

        Rate: 10

        Base lid: 0

        LMC: 0

        SM lid: 0

        Capability mask: 0x02510a68

        Port GUID: 0x0002c9030043a6d2

        Link layer: IB

        GID[0]: fe80::2:c903:4:3a6d2

 

 在上面的输出中:

- Node GUID: 0x0002c9030043a6d0 是节点的 GUID

- System image GUID: 0x0002c9030043a6d3 是系统图像的 GUID

- Port GUID: 0x0002c9030043a6d1 Port GUID: 0x0002c9030043a6d2 是端口的 GUID

 

# GUID GID 的关系 

GIDGlobal Identifier)是由子网前缀和 GUID 组合而成,用于全局标识 InfiniBand 网络中的每个端口或设备。子网前缀通常为 fe80::/64,而 GUID 提供了剩余的 64 位标识符。 

## 生成 GID 

例如,假设子网前缀为 fe80::/64,端口的 GUID 0x0002c9030043a6d1,则生成的 GID 为: 

fe80::2:c903:4:3a6d1 

# 实例:配置 InfiniBand 网络 

以下是一个配置示例,包括查看和使用 GUID GID 

## 1. 查看 GUID GID 

使用 ibstat 查看设备的 GUID GID

bash

ibstat 

## 2. 配置路由 

假设我们有两个子网:

- 子网 1:子网前缀为 0xfe80000000000000

- 子网 2:子网前缀为 0xfe80000000000001 

我们需要配置路由器,使其在这两个子网之间进行路由。使用 GID 作为路由的下一跳地址。 

shell

# 进入配置模式

enable

configure terminal 

# 启用路由功能

feature routing 

# 配置路由表 0

routing table 0

  # 将子网 0xfe80000000000000/64 的数据包发送到 GID fe80::2:c903:4:3a6d1

  route add prefix 0xfe80000000000000/64 next-hop fe80::2:c903:4:3a6d1  

  # 将子网 0xfe80000000000001/64 的数据包发送到 GID fe80::2:c903:4:3a6d2

  route add prefix 0xfe80000000000001/64 next-hop fe80::2:c903:4:3a6d2 

exit

copy running-config startup-config 

# 总结 

GUIDGlobally Unique Identifier)在 InfiniBand 网络中用于唯一标识每个设备和端口,是生成 GIDGlobal Identifier)的基础。GID 通过组合 GUID 和子网前缀生成,用于标识和路由数据包。使用 ibstat 等工具可以查看 GUID GID,通过配置路由器,可以实现跨子网的通信。

posted @ 2024-06-21 19:58  Augustone  阅读(1447)  评论(0)    收藏  举报