Ironic/IPv6

Ironic and IPv6
Here are the things to consider when thinking about Ironic and IPv6:

PXE Boot
According to Intel (link) it seems that IPv6 for PXE boot is only supported when used with UEFI.

iPXE on the other hand does support IPv6 already* (link), but that kinda means that we need to have iPXE flashed in the NIC (see) otherwise we would still need IPv4 to fetch the iPXE ROM from the TFTP server and chain load it.

NOTE: iPXE doesn't seem to enable IPv6 by default, this is done by downloading the iPXE source from http://ipxe.org/download and then changing the NET_PROTO_IPV6 configuration in src/config/general.h defining (s/#undef/#define) NET_PROTO_IPV6.

IPMI
Configuring the OOBM with IPv6 seems to be vendor specific (see), would be good to have a table here mapping which vendor, hardware model and firmware version does support it.

Neutron
Neutron seems to be fine with IPv6, apparently we only need to change Ironic to be able to specify the IP version when we pass the extra DHCP options to Neutron (link).

UPDATE: Added a patch to be able to specify the IP version when passing the extra DHCP options to Neutron in Ironic (see)

TFTP
A quick look at xinetd and it seems that it supports IPv6 already (link)

Other references

 * https://blog.toreanderson.no/2015/11/16/ipv6-network-boot-with-uefi-and-ipxe.html

Random thoughts
IPv6 was created to solve a address space problem, it's very unlikely that we will ever hit that in a provision network so I would still recommend people wanting to run IPv6 to first consider having a dual-stack IPv6-IPv4 networking where IPv4 is used for the provisioning network.