InfiniBand 技术及其在 Linux 系统中的配置简介

文档选项
将此页作为电子邮件发送

将此页作为电子邮件发送


级别: 初级

孙 靖 (sjing@cn.ibm.com ), 软件工程师, IBM
王 磊 (cdlwlbj@cn.ibm.com ), 软件工程师, IBM 中国软件开发中心
罗 明 (mluo@cn.ibm.com ), 软件工程师, IBM 中国软件开发中心

2009 年 9 月 03 日

随 着服务器处理速度的不断加快,用户对提升网络传输速度的需求也越来越紧迫,传统意义上的输入 / 输出技术, 如 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 系统网络

从 这张图中我们不难看出,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.pp c.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.rpm
    64bit 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-*.el 5.ppc.rpm
    libehca-static-*.el5.ppc.rpm
    64bit libehca-*.el5.ppc64.rpm
    libehca-static-*.el5.ppc64.rpm
    libmthca
    (for Mellanox InfiniHost support)
    32bit libmthca- *.el5.ppc.rpm
    libmthca-static-*.el5.ppc.rpm
    64bit libmthca-*.el5.ppc64.rpm
    libmthca-static-*.el5.ppc64.rpm
    libmlx 4
    (for Mellanox ConnectX support)
    32bit libmlx4-*.el5.ppc.rpm
    libmlx4-static-*.el5.ppc.rpm
    64bit 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

    此时,用 ifconfig 命令已经可以看到待配置的 ib 接口, 例如:



    清单 3. Ifconfig 命令输出
    	# ifconfig -a 

    ib0 Link encap:InfiniBand HWaddr
    80:00:00:2C:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    BROADCAST MULTICAST MTU:4092 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:256
    RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

    ib1 Link encap:InfiniBand HWaddr
    80:00:00:2E:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    BROADCAST MULTICAST MTU:4092 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:256
    RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

    但这种使能 openibd 服务的方法只在本次启动中生效,如果用户需要在系统重新启动后仍保持 openibd 使能,则需要使用 chkconfig 命令将其添加到系统服务列表中,如:



    清单 4. 使用 chkconfig 添加 openibd 服务
    # chkconfig --level 235 openibd on 
    # chkconfig --list|grep openibd
    openibd 0:off 1:off 2:on 3:on 4:off 5:on 6:off
  • 配置 IPoIB 网络接口

    在 Red Hat Enterprise Linux 5.3 中配置 IPoIB 网络接口的方法与配置以太接口方法类似,即 /etc/sysconfig/network-scripts 路径下创建相应的 IB 接口配置文件,如 ifcfg-ib0, ifcfg-ib1 等。这里我们给出一个对接口 ib0 做简单 IPoIB 配置的例子以供参考。



    清单 5. 接口配置文件示例
     
    # cat /etc/sysconfig/network-scripts/ifcfg-ib0
    DEVICE=ib0
    BOOTPROTO='static'
    IPADDR=10.0.0.5
    NETMASK=255.255.255.0
    BROADCAST=10.0.0.255
    NETWORK=10.0.0.0
    TARTMODE='onboot'

    IB 接口配置文件创建完成后,需要重新启动接口设备以使新配置生效,这时可以使用 ifconfig 命令检查接口配置是否已经生效,具体操作如下。



    清单 6. 重启接口设备示例
    [root@p6ihn05 network-scripts]# ifdown ib0 
    [root@p6ihn05 network-scripts]# ifup ib0
    [root@p6ihn05 network-scripts]# ifconfig ib0
    ib0 Link encap:InfiniBand HWaddr
    80:00:00:2C:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    inet addr:10.0.0.5 Bcast:10.0.0.255 Mask:255.255.255.0
    inet6 addr: fe80::202:5500:1022:4a00/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:4092 Metric:1
    RX packets:24 errors:0 dropped:0 overruns:0 frame:0
    TX packets:63 errors:0 dropped:15 overruns:0 carrier:0
    collisions:0 txqueuelen:256
    RX bytes:8252 (8.0 KiB) TX bytes:16956 (16.5 KiB)

    至此,IB 接口配置工作基本完成。如果需要进一步验证其工作是否正常,可以参考以上步骤配置另外一台节点,并在两个节点之间运行 ping 命令。如果 ping 成功,则说明 IPoIB 配置成功。

InfiniBand 在 SuSE 中的配置

在 SuSE 产品中,虽然 SLES10 SP2 发布之初并没有提供对 InfiniBand 的正式支持,但随后发行的 SLES10 SP2 Update1 版本里却包含了 InfiniBand 的全部驱动集合,这一支持更在 SLES11 里得到了完善和发展,其发布 CD 已包含了 InfiniBand 相关的 OFED 驱动和管理工具。所以对于有 InfiniBand 应用需求的 SuSE 用户,我们推荐其采用 SLES11 及其以后的系统版本。

  • 安装 InfiniBand 驱动程序

    在安装 InfiniBand 驱动程序之前,请确认 InfiniBand 网卡已经被正确地连接或分配到主机。然后,从 SLES11 的发布 CD/DVD 中获得 Table3 中给出的 rpm 文件,并根据上层应用程序的需要选择安装相应的软件包。

    表 3. SLES11 中 InfiniBand 库文件列表



    Platforms Driver/Library
    SLES11 ofed-*.ppc64.rpm
    ofed-kmp-default-*.ppc64.rpm
    ofed-kmp-ppc64-*.ppc64.rpm
    opensm-*.ppc64.rpm
    libcxgb3-rdmav2-*.ppc64.rpm
    libehca-rdmav2-*.ppc64.rpm
    libibcm-*.ppc64.rpm
    libibcommon1-*.ppc64.rpm
    libibmad-*.ppc64.rpm
    libibumad-*.ppc64.rpm
    libibverbs-*.ppc64.rpm
    libipathverbs-*.ppc64.rpm
    libmlx4-rdmav2-*.ppc64.rpm
    libmthca-rdmav2-*.ppc64.rpm
    librdmacm-*.ppc64.rpm
    libsdp-*.ppc64.rpm
    mpi-selector-*.ppc64.rpm
    mstflint-*.ppc64.rpm
    libibverbs-devel-*.ppc64.rpm
    (Note: libibverbs-devel-*.ppc64.rpm is in SLES 11 SDK ISO)



    虽然 SLES11 对 InfiniBand 提供了更好的支持,但仍有部分用户的应用是建立在 SLES10 SP2 系统之中的。所以,在这里我们也给出了 SLES10 SP2 系统中需要加载的 InifiniBand 库和驱动包,详见表 4 。

    表 4. SLES10SP2 中 InfiniBand 库文件列表



    Platforms Driver/Library
    SLES 10SP2 libcxgb3-64bit-*.ppc.rpm
    libcxgb3-devel-*.ppc.rpm
    libcxgb3-devel-64bit-*.ppc.rpm
    libehca-*.ppc.rpm
    libehca-64bit-*.ppc.rpm
    libehca-devel-*.ppc.rpm
    libehca-devel-64bit-*.ppc.rpm
    libibcm-*.ppc.rpm
    libibcm-64bit-*.ppc.rpm
    libibcm-devel-*.ppc.rpm
    libibcm-devel-64bit-*.ppc.rpm
    libibcommon-*.ppc.rpm
    libibcommon-64bit-*.ppc.rpm
    libibcommon-devel-*.ppc.rpm
    libibcommon-devel-64bit-*.ppc.rpm
    libibmad-*.ppc.rpm
    libibmad-64bit-*.ppc.rpm
    libibmad-devel-*.ppc.rpm
    libibmad-devel-64bit-*.ppc.rpm
    libibumad-*.ppc.rpm
    libibumad-64bit-*.ppc.rpm
    libibumad-devel-*.ppc.rpm
    libibumad-devel-64bit-*.ppc.rpm
    libibverbs-*.ppc.rpm
    libibverbs-64bit-*.ppc.rpm
    libibverbs-devel-*.ppc.rpm
    libibverbs-devel-64bit-*.ppc.rpm
    libipathverbs-*.ppc.rpm
    libipathverbs-64bit-*.ppc.rpm
    libipathverbs-devel-*.ppc.rpm
    libipathverbs-devel-64bit-*.ppc.rpm
    libmlx4-*.ppc.rpm
    libmlx4-64bit-*.ppc.rpm
    libmlx4-devel-*.ppc.rpm
    libmlx4-devel-64bit-*.ppc.rpm
    libmthca-*.ppc.rpm
    libmthca-64bit-*.ppc.rpm
    libmthca-devel-*.ppc.rpm
    libmthca-devel-64bit-*.ppc.rpm
    librdmacm-1.0.6-*.ppc.rpm
    librdmacm-64bit-*.ppc.rpm
    librdmacm-devel-*.ppc.rpm
    librdmacm-devel-64bit-*.ppc.rpm
    libsdp-*.ppc.rpm
    libsdp-64bit-*.ppc.rpm
    libsdp-devel-*.ppc.rpm
    libsdp-devel-64bit-*.ppc.rpm
    mpi-selector-*.ppc.rpm
    mstflint-*.ppc.rpm
    mvapich2-*.ppc.rpm
    mvapich2-64bit-*.ppc.rpm
    mvapich2-devel-*.ppc.rpm
    mvapich2-devel-64bit-*.ppc.rpm
    ofed-1.3-*.ppc.rpm
    ofed-cxgb3-NIC-kmp-ppc64-*.ppc.rpm
    ofed-doc-*.ppc.rpm
    ofed-kmp-ppc64-*.ppc.rpm
    open-iscsi-*.ppc.rpm
    opensm-*.ppc.rpm
    opensm-64bit-*.ppc.rpm
    opensm-devel-*.ppc.rpm
    opensm-devel-64bit-*.ppc.rpm
    perftest-*.ppc.rpm
    qlvnictools-*.ppc.rpm
    rds-tools-*.ppc.rpm
    release-notes-as-*.ppc.rpm
    ruby-*.ppc.rpm
    sdpnetstat-*.ppc.rpm
    srptools-*.ppc.rpm
    tvflash-*.ppc.rpm


  • 启动 openibd 服务及配置 IPoIB 网络接口

    在 SLES11 系统中,启动 openibd 服务以及配置 IPoIB 网络接口的方法与 RedHat 基本类似,唯一不同的是接口配置文件的位置。在 SLES11 中,接口配置文件位于 /etc/sysconfig/network 目录下,下面是一个简单配置的例子仅供读者参考。



    清单 7. 接口配置文件示例
    # cat /etc/sysconfig/network/ifcfg-ib0 
    DEVICE=ib0
    BOOTPROTO='static'
    IPADDR=20.0.0.5
    NETMASK=255.255.255.0
    BROADCAST=20.0.0.255
    NETWORK=20.0.0.0
    STARTMODE='onboot'

    其它配置步骤与 RedHat 完全相同,这里不再复述。

 




回页首


小结

本文介绍了 InfiniBand 技术的基本构架,以及在 Linux 系统中如何对 InfiniBand 设备进行网卡驱动的安装以及 IPoIB(IP over InfiniBand)接口配置,从而为上层高性能计算应用软件的运作提供了必要的环境基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值