添加 InfiniBand 支持

https://bugs.launchpad.net/ironic/+bug/1532534

目前,Ironic 支持用于硬件检查和 PXE 启动的以太网接口。Ironic 也应该能够通过 InfiniBand 网络进行检查和 PXE 启动。

问题描述

  • InfiniBand 硬件检查 - InfiniBand GUID 的概念类似于 MAC 地址,因为它由 24 位制造商前缀和 40 位设备标识符(总共 64 位)组成。

  • 通过 InfiniBand 进行 PXE 启动 - 为了允许通过 IPoIB 接口进行 DHCP,DHCP 客户端必须使用包含客户端唯一标识符值的 client-id 发送请求。该值由 12 字节的厂商前缀和 8 字节的 GUID 组成。目前 ironic 不会更新 neutron 端口中的 client-id 选项。

提议的变更

  • InfiniBand 硬件检查 - 为了使用 InfiniBand 进行 PXE 启动,您必须使用厂商特定的固件刷新网卡。厂商固件定义了 GUID 到“InfiniBand MAC”(48 位)的转换。为了简化资源的复杂性,ironic 地址将包含“InfiniBand MAC”。

  • 通过 InfiniBand 进行 PXE/iPXE 启动的更改:为了允许通过 InfiniBand 进行 DHCP,我们需要以下内容

    1. dhcp-server 必须在 dhcp-server 中使用 BROADCAST 标志。neutron-dhcp-agent 已经通过配置文件支持此功能。

    2. 更新 ironic 端口的 extra 属性以包含 InfiniBand 端口 client-id extra,例如

      {
          'client-id':
          'ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:00:10:39'
      }
      

      client-id 更新可以手动完成,也可以通过 IPA 和 ironic-inspector 完成。

    3. 代表 ironic 端口的 neutron 端口应该使用 extra_dhcp_opts 属性中的 client-id 选项进行更新。client-id 由厂商前缀和端口 GUID 组成。对于 Mellanox ConnectX 系列设备,client-id 由前缀 (ff:00:00:00:00:00:02:00:00:02:c9:00) 和 8 字节的端口 GUID 组成。client-id 中的前缀是厂商特定的。

    4. PXE MAC 文件名由 <硬件类型>-<MAC> 组成。对于 InfiniBand,硬件类型为 20,mac 是截断的 InfiniBand GUID。

    5. iPXE MAC 文件名由 <MAC> 组成。对于 InfiniBand,MAC 是截断的 InfiniBand GUID。

其他项目更改

  • ironic-python-agent 更改

    1. 更新 ironic agent 以计算截断的 InfiniBand GUID 和 Client ID。

    2. 使用 ib_ipoib 驱动程序更新 coreos 和 tinyipa。

  • ironic-inspector 更改

    1. 更新 ironic-inspector 以更新 port.extra 中的 client-id

  • diskimage-builder 更改

    1. 更新 mellanox 元素以加载 ib_ipoib 驱动程序。

备选方案

  • 扩展 ironic 端口以支持 8 字节的 GUID,并在 ironic 代码中从 GUID 计算 client-id。这将需要更新 ironic 模型和 API。这将需要更新 nova ironic 驱动程序以截断 GUID 到 MAC。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

“ironic” CLI

“openstack baremetal” CLI

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

N/A

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

在使用 IPA 时,部署者需要提供 InfiniBand MAC 和 client-id 的 IPA。

开发人员影响

实现

负责人

主要负责人

moshele

其他贡献者

工作项

  • 将 Client-ID 选项添加到 neutron 端口以允许 DHCP。

  • 更新 iPXE/PXE 文件的生成。

  • 更新文档。

依赖项

测试

  • 添加单元测试。

  • 添加第三方 CI,它将测试 Mellanox 硬件。

升级和向后兼容性

文档影响

  • 我们将更新 ironic 文档,说明如何允许从 IPoIB 进行 pxe 启动。

参考资料