Infiniband 交换机和路由器的配置案例
配置一个IB网络
配置 InfiniBand 交换机和路由器通常涉及多个步骤,包括硬件安装、基本网络配置、高级功能配置以及网络验证。以下是一个详细的配置案例,涵盖了交换机和路由器的基础配置。
# 硬件准备
1. InfiniBand 交换机:例如 Mellanox SX6036。
2. InfiniBand 路由器:例如 Mellanox SB7790。
3. 服务器节点:配备了 InfiniBand HCA(Host 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是什么?
GUID(Globally Unique Identifier,全局唯一标识符)是一个 128 位的标识符,用于在计算机系统中唯一地标识对象。它广泛应用于许多领域,包括软件开发、硬件设备识别、数据库等。具体到 InfiniBand 网络中,GUID 用于唯一标识每个设备(如 HCA,Host Channel Adapter)和端口。
# GUID 在 InfiniBand 中的作用
在 InfiniBand 网络中,每个设备和端口都有一个唯一的 GUID。这些 GUID 用于:
1. 设备标识:唯一标识每个 InfiniBand 设备,确保网络中没有重复的设备标识。
2. 网络管理:子网管理器(SM)使用 GUID 来管理网络拓扑和路径选择。
3. GID 生成:GID(Global 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 的关系
GID(Global 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
# 总结
GUID(Globally Unique Identifier)在 InfiniBand 网络中用于唯一标识每个设备和端口,是生成 GID(Global Identifier)的基础。GID 通过组合 GUID 和子网前缀生成,用于标识和路由数据包。使用 ibstat 等工具可以查看 GUID 和 GID,通过配置路由器,可以实现跨子网的通信。
浙公网安备 33010602011771号