Enabling IPMI double bridge support¶
https://blueprints.launchpad.net/ironic/+spec/enabling-ipmi-double-bridge-support
This blueprint proposes ipmi double bridging support in ironic.
Problem description¶
Currently, ironic IPMI driver(ipmitool) does not support bridging.
Many of the recent server architecture is based on distributed management. For a chassis that has “n” number of servers, the management is delegated from the core controller to many satellite controllers, which mandates the need for bridging.
Proposed change¶
When registering an baremetal node which requires bridging, the appropriate parameters should be specified to ironic IPMI power driver as follows:
-i ipmi_bridging=<single/dual/no>
-i ipmi_local_address=<VALUE>
-i ipmi_transit_local_address=<VALUE>
-i ipmi_transit_channel=<VALUE>
-i ipmi_transit_address=<VALUE>
-i ipmi_target_channel=<VALUE>
-i ipmi_target_address=<VALUE>
The parameters can be specified based on the hardware being registered. i.e, In order to perform an double-bridge, an user can just specify ‘transit_address’ and ‘target_address’, rest is taken care by ipmi. But some hardware will mandate to specify transit_channel and target_channel, if they are using different channels.
The parameter ‘ipmi_bridging’ should specify the type of bridging required(single/dual) to access the baremetal node. If the parameter is not specified, the default value will be set to “no”
Single Bridging:
ironic node-create -d pxe_ipmitool [-i ipmi_local_address=VALUE] <-i ipmi_bridging=single> <-i ipmi_target_channel=VALUE> <-i ipmi_target_address=VALUE> …
The parameter ‘ipmi_local_address’ is optional. If the parameter is not specified, it is auto discovered by ipmitool
Double Bridging:
ironic node-create -d pxe_ipmitool [-i ipmi_local_address=VALUE] [-i ipmi_transit_local_address=VALUE] <-i ipmi_bridging=dual> <-i ipmi_transit_channel=VALUE> <-i ipmi_transit_address=VALUE> <-i ipmi_target_channel=VALUE> <-i ipmi_target_address=VALUE> …
The parameters ‘ipmi_local_address’ and ‘ipmi_transit_local_address’ are optional. If the parameters are not specified, it is auto discovered by ipmitool
Ironic IPMI driver should be modified to parse the above information and perform ipmi operations with appropriate parameters.
Alternatives¶
None
Data model impact¶
None
REST API impact¶
None
Driver API impact¶
None
Nova driver impact¶
None
Security impact¶
None
Other end user impact¶
None
Scalability impact¶
Depends on the number of parallel IPMI sessions that can be supported by the underlying BMC. When the sessions are exhausted, IPMI retry option can be used to get the handle of a session.
Performance Impact¶
If the underlying BMC is designed for federated management, where there might be one main controller and many sub controllers, there will not be any impact. However if only one controller exists in the BMC that manages all the nodes, then the sessions might be slower when it reaches its threshold.
Other deployer impact¶
When an node which mandates bridging is being registered, provide the appropriate parameters:
-i ipmi_bridging=<single/dual/no>
-i ipmi_local_address=<VALUE>
-i ipmi_transit_local_address=<VALUE>
-i ipmi_transit_channel=<VALUE>
-i ipmi_transit_address=<VALUE>
-i ipmi_target_channel=<VALUE>
-i ipmi_target_address=<VALUE>
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
rh-s
- Other contributors:
bmahalakshmi
Work Items¶
Include functionality to IPMI driver(ipmitool) to check if the underlying ipmitool utility supports bridging.
Changes to IPMI driver to parse the bridging parameters.
When a node being provisioned has bridging configuration specified, perform all ipmi operations with appropriate parameters.
Dependencies¶
IPMITOOL_1_8_12
Testing¶
Unit test cases to test IPMI driver with bridging enabled and disabled
Documentation Impact¶
Documentation should reflect the parameters that can be provided during registering an node to enable bridging operation.