[ipxe-devel] Boot fails if advertised IPv6 prefix isn't on-link

Tore Anderson tore at fud.no
Fri Nov 13 10:00:37 UTC 2015


I've found that iPXE fails to operate correctly if the advertised IPv6
prefix isn't on-link, that is, if the Prefix Information Option (PIO)
in the ICMPv6 Router Advertisement (RA) doesn't have the L flag set, it
simply doesn't fails to boot correctly.

If SLAAC is being used (A flag set in PIO), then it will fail with a
"Connection timed out" error message. However no actual packets
indicating an attempt to contact the upstream source (in my case,
http://boot.ipxe.org/demo/boot.php) are seen on the wire, not even a DNS
query for "boot.ipxe.org").

If DHCPv6 is being used (A flag unset in PIO and M flag set in RA), it
will get stuck in a loop where it repeats the DHCPv6 Request six times
(getting a Reply every time) before failing with "Error 0x040ee119".

If I change the RAs so the L flag is set, then everything starts
working just fine (in both the SLAAC and DHCPv6 cases).

This suggests that iPXE assigns some incorrect meaning to the L flag.
The only thing the L flag signals is whether or not destinations in the
advertised prefix (2a02:c0:300:103::/64 in my case) should be reached
directly (using IPv6 Neighbour Solicitations) or if those destinations
must be reached via the default router. However neither boot.ipxe.org
nor the advertised DNS server (google-public-dns-a.google.com) is found
within that prefix, so the on- or off-link state of the prefix shouldn't
have made no difference to the boot-up process.

For your reference I've uploaded PCAPs of the four boot attempts
described above to http://filebin.net/wiklwkspjg .


More information about the ipxe-devel mailing list