随着服务器处理速度的不断加快,用户对提升网络传输速度的需求也越来越紧迫,传统意义上的输入 / 输出技术, 如 PCI、以太等,已经无法满足这种需求。如何更为有效的提高数据传输速度,增加有效带宽成为摆在人们面前必须解决的一个重大问题。 InfiniBand 标准就是在这种情况下应运而生的,它在很大程度上解决了传统输入 / 输出架构的传输瓶颈问题 , 运行速度可达到每端口 2.5Gb/s 或 10Gb/s 。目前,这项技术已经广泛应用到高性能计算等领域,Linux 操作系统内核也对其提供了全面的支持,本文将逐一介绍 InfiniBand 技术架构,以及如何在 Red Hat Enterprise Linux 5.3 和 SLES11 系统中配置 InfiniBand 网络设备,包括网卡驱动的安装以及 IPoIB(IP over InfiniBand)接口配置。
前言
随着服务器处理速度的不断加快,用户对提升网络传输速度的需求也越来越紧迫,传统意义上的输入 / 输出技术, 如 PCI、以太等,已经无法满足这种需求。如何更为有效的提高数据传输速度,增加有效带宽成为摆在人们面前必须解决的一个重大问题。 InfiniBand 标准就是在这种情况下应运而生的,它在很大程度上解决了传统输入 / 输出架构的传输瓶颈问题 , 运行速度可达到每端口 2.5Gb/s 或 10Gb/s 。
目前,这项技术已经广泛应用到高性能计算等领域,Linux 操作系统内核也对其提供了全面的支持,本文将逐一介绍 InfiniBand 技术架构,以及如何在 Red Hat Enterprise Linux 5.3 和 SLES11 系统中配置 InfiniBand 网络设备,包括网卡驱动的安装以及 IPoIB(IP over InfiniBand)接口配置。
![]() ![]() |
InfiniBand 技术架构简介
InfiniBand 是一种基于交换的串行 I/O 互连体系结构,运行速度为每方向 2.5Gb/s 或 10Gb/s(每端口)。和共享总线结构不同,InfiniBand 是一个针数很少的串行结构,可连接印刷电路板(PCB – Printed circuit board)上的设备,并支持箱外带宽(Bandwidth Out of the Box)。使用普通的双绞铜线,InfiniBand 支持的连接距离为 17m ;而如果使用光缆,其支持的距离则可达数公里甚至更远。此外,InfiniBand 还支持 QoS 和 RAS 。 RAS 特性在设计之初就被融入了 InfiniBand 的体系结构,这些特性对于 InfiniBand 有能力成为位于 Internet 核心的下一代服务器和存储系统的通用 I/O 基础架构具有非常重要的意义。 InfiniBand 终将从根本上改变系统和 Internet 互连体系,并促成一场伟大的技术变革。
也正因如此,InfiniBand 系统网络(如图一所示)受到各大工业公司的支持,其中包括了所有主要服务器厂商(如:戴尔,惠普,IBM,英特尔,微软等公司)。
图 1. InfiniBand 系统网络

从这张图中我们不难看出,InfiniBand 系统网络主要由两个核心部件组成:主机通道适配器(Host Channel Adapter)和 InfiniBand 交换机。其中,HCA 为主机设备提供一个接口用于支持所有 InfiniBand 定义的操作,而交换机则用于将一个端口接收到的 InfiniBand 报文转发到另一个端口,它支持单播和多播两种机制。
![]() ![]() |
InfiniBand 在 Linux 系统中的配置
随着 InfiniBand 技术的应用越来越广,做为应用基础的 InfiniBand 配置问题也日益成为人们关注的热点,下面本文将对 InfiniBand 在 Linux 系统中的配置做一个具体的介绍,包括 InfiniBand 在 Red Hat Enterprise Linux 5.3 和 SLES11 系统中的网卡驱动的安装以及 IPoIB 的配置方法。
InfiniBand 在 RedHat 中的配置
Red Hat 产品是从 Red Hat Enterprise Linux 5.3 开始正式在内核中集成对 InfiniBand 网卡的支持,并且将 InfiniBand 所需的驱动程序以及库文件打包到发行 CD 里, 所以对于有 InfiniBand 应用需求的 Red Hat 用户,我们推荐其采用 Red Hat Enterprise Linux 5.3 及其以后的系统版本。
- 安装 InfiniBand 驱动程序
在安装 InfiniBand 驱动程序之前,请确认 InfiniBand 网卡已经被正确地连接或分配到主机。然后,从 Red Hat Enterprise Linux 5.3 的发布 CD 中获得 Table1 中给出的 rpm 文件,并根据上层应用程序的需要选择安装相应的 32 位或 64 位软件包。
表 1. RedHatEL5.3 中 InfiniBand 库文件列表
openib-*. el5.noarch.rpm 32bit libibcm-*.el5.ppc.rpm
libibcm-devel-*.el5.ppc.rpm
libibcm-static-*.el5.ppc.rpm
libibcommon-*.el5.ppc.rpm
libibcommon-devel-*.el5.ppc.rpm
libibcommon-static-*.el5.ppc.rpm
libibmad-*.el5.ppc.rpm
libibmad-devel-*.el5.ppc.rpm
libibmad-static-*.el5.ppc.rpm
libibumad-*.el5.ppc.rpm
libibumad-devel-*.el5.ppc.rpm
libibumad-static-*.el5.ppc.rpm
libibverbs-*.el5.ppc.rpm
libibverbs-devel-*.el5.ppc.rpm
libibverbs-static-*.el5.ppc.rpm
libibverbs-utils-*.el5.ppc.rpm64bit libibcm-*.el5.ppc64.rpm
libibcm-devel-*.el5.ppc64.rpm
libibcm-static-*.el5.ppc64.rpm
libibcommon-*.el5.ppc64.rpm
libibcommon-devel-*.el5.ppc64.rpm
libibcommon-static-*.el5.ppc64.rpm
libibmad-*.el5.ppc64.rpm
libibmad-devel-*.el5.ppc64.rpm
libibmad-static-*.el5.ppc64.rpm
libibumad-*.el5.ppc64.rpm
libibumad-devel-*.el5.ppc64.rpm
libibumad-static-*.el5.ppc64.rpm
libibverbs-*.el5.ppc64.rpm
libibverbs-devel-*.el5.ppc64.rpm
libibverbs-static-*.el5.ppc64.rpm
libibverbs-utils 64bit rpm is not available in RedHatEL5.3
另外,对于不同类型的 InfiniBand 网卡,我们还需要安装一些特殊的驱动程序,例如Galaxy1/Galaxy2类型的 InfiniBand 网卡,就需要安装 ehca 相关的驱动。在这里我们给出三种常见 InfiniBand 网卡及其所需驱动的对应关系供您参考,见表二。
表 2. 常见 InfiniBand 网卡类型及所需驱动对应表
libehca
(for Galaxy1/Galaxy2 support)32bit libehca-*.el5.ppc.rpm
libehca-static-*.el5.ppc.rpm64bit libehca-*.el5.ppc64.rpm
libehca-static-*.el5.ppc64.rpmlibmthca
(for Mellanox InfiniHost support)32bit libmthca-*.el5.ppc.rpm
libmthca-static-*.el5.ppc.rpm64bit libmthca-*.el5.ppc64.rpm
libmthca-static-*.el5.ppc64.rpmlibmlx4
(for Mellanox ConnectX support)32bit libmlx4-*.el5.ppc.rpm
libmlx4-static-*.el5.ppc.rpm64bit libmlx4-*.el5.ppc64.rpm
libmlx4-static-*.el5.ppc64.rpm - 启动 openibd 服务
在 Red Hat Enterprise Linux 5.3 系统中,openibd 服务在默认情况下是不打开的,所以在安装完驱动程序之后,配置 IPoIB 网络接口之前,我们需要先使能 openibd 服务以保证相应的驱动被加载到系统内核。具体方法如下:
清单 1. 启动 openibd 服务
# /etc/init.d/openibd start Loading OpenIB kernel modules: [ OK ]
启动 openibd 服务后,可用以下命令检查相应的驱动是否已加载,以 Galaxy2 网卡为例应得到以下输出。
清单 2. Openibd 服务状态示例
# /etc/init.d/openibd status Low level hardware support loaded: ib_ehca Upper layer protocol modules: ib_iser ib_srp ib_sdp ib_ipoib User space access modules: rdma_ucm ib_ucm ib_uverbs ib_umad Connection management modules: rdma_cm ib_cm iw_cm Configured IPoIB interfaces: none Currently active IPoIB interfaces: none
时间:2009-09-03 17:34 来源:developerWorks 中国 作者:孙 靖 原文链接