添加 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,我们需要以下内容
dhcp-server 必须在 dhcp-server 中使用 BROADCAST 标志。neutron-dhcp-agent 已经通过配置文件支持此功能。
更新 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 完成。
代表 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 中的前缀是厂商特定的。
PXE MAC 文件名由 <硬件类型>-<MAC> 组成。对于 InfiniBand,硬件类型为 20,mac 是截断的 InfiniBand GUID。
iPXE MAC 文件名由 <MAC> 组成。对于 InfiniBand,MAC 是截断的 InfiniBand GUID。
其他项目更改
ironic-python-agent 更改
更新 ironic agent 以计算截断的 InfiniBand GUID 和 Client ID。
使用 ib_ipoib 驱动程序更新 coreos 和 tinyipa。
ironic-inspector 更改
更新 ironic-inspector 以更新 port.extra 中的 client-id
diskimage-builder 更改
更新 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 启动。