Description of problem:
The images in ipxe-roms-qemu.rpm are built without support for IPv6. This makes it impossible to boot virtual machines over IPv6.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Attempt to network boot a virtual machine on an IPv6 network that supports network boot according to RFC 5970
The boot fails.
The boot succeeds.
All that is necessary to make iPXE support IPV6 is to enable (#define) NET_PROTO_IPV6 in src/config/general.h.
The current default IPv4-only behaviour is a violation of BCP-177 (RFC 6540), see http://tools.ietf.org/html/rfc6540.
Created attachment 1093141 [details]
Patch to enable IPv6
FYI, rebuilding ipxe-20150407-1.gitdc795b9f.fc22.src.rpm with the attached patch included in the .spec file produces a set of iPXE ROMs that allowed me to successfully network boot a QEMU/KVM virtual machine over an IPv6-only network. (The hypervisor in question was running RHEL7 but the built RPM installed fine there without any dependency problems.)
Thanks for the report and the patch.
I wonder why this isn't enabled by default in ipxe... Gerd or Paolo, any idea? I assume this is fine to enable but we tend to just mirror the qemu ipxe config for fedora, so maybe it should be changed at the qemu level as well
AFAIK it's due to space constraints. IPv6 supports adds a few KiBs. In some cases you can't program more than 64k onto the firmware area in some types of hardware. I don't think that's relevant for KVM though. At least it worked fine when I tested it, and I note that at least one of the .rom files in the RPM already exceeds 64K (10ec8139.rom).
Also for UEFI builds space is less of an issue as I understand it.
qemu roms are 256k anyway (pci rom bar size is power of two).
ipv6 seems to add ~15k:
[ current qemu git master ]
-rw-rw-r--. 1 kraxel kraxel 196608 Nov 13 09:13 ../pc-bios/efi-e1000.rom
-rw-rw-r--. 1 kraxel kraxel 197120 Nov 13 09:13 ../pc-bios/efi-eepro100.rom
-rw-rw-r--. 1 kraxel kraxel 195584 Nov 13 09:13 ../pc-bios/efi-ne2k_pci.rom
-rw-rw-r--. 1 kraxel kraxel 195584 Nov 13 09:13 ../pc-bios/efi-pcnet.rom
-rw-rw-r--. 1 kraxel kraxel 199168 Nov 13 09:13 ../pc-bios/efi-rtl8139.rom
-rw-rw-r--. 1 kraxel kraxel 193024 Nov 13 09:13 ../pc-bios/efi-virtio.rom
[ rebuilt with ipv6 enabled ]
-rw-rw-r--. 1 kraxel kraxel 210944 Nov 13 07:46 ../pc-bios/efi-e1000.rom
-rw-rw-r--. 1 kraxel kraxel 211456 Nov 13 07:46 ../pc-bios/efi-eepro100.rom
-rw-rw-r--. 1 kraxel kraxel 209408 Nov 13 07:46 ../pc-bios/efi-ne2k_pci.rom
-rw-rw-r--. 1 kraxel kraxel 209920 Nov 13 07:46 ../pc-bios/efi-pcnet.rom
-rw-rw-r--. 1 kraxel kraxel 214016 Nov 13 07:46 ../pc-bios/efi-rtl8139.rom
-rw-rw-r--. 1 kraxel kraxel 207360 Nov 13 07:46 ../pc-bios/efi-virtio.rom
Can't see any reasons why we shouldn't flip the switch ;)
I pushed a newer ipxe to rawhide, with ipv6 enabled, and sent a patch to upstream ipxe enabling it for the qemu build profile:
Provided there isn't any controversy on the patch I'll push the newer ipxe to f22 and f23 as well
This is in f24, so just closing against that version