Comment 25 for bug 1707999

Revision history for this message
Jason Hobbs (jason-hobbs) wrote : Re: pod VM fails to PXE boot after receiving multiple DHCP offers from both primary and secondary rack controllers, for different IPs

ipxe and isc dhcpd have different meanings of the value of the secs field, and that's leading to the secondary dhcp server responding in a time frame where they normally wouldn't.

The reason the secs field grows faster than the actual number of elapsed seconds is that ipxe (where the pxe rom for qemu booting with seabios comes from) abuses (in their own words) the field to convey debug information, rather than the actual amount of time passed:

https://github.com/ipxe/ipxe/blob/74d90b33f8490adcee2026ece18d8411d93b6a39/src/net/udp/dhcp.c#L1129

so a value of "4" means the packet count is 1, not that 4 seconds have gone by.

It also uses shorter timeouts than the PXE standard calls for:
 * The PXE spec indicates discover request are sent 4 times, with
 * timeouts of 4, 8, 16, 32 seconds. iPXE by default uses 1, 2, 4, 8.

https://github.com/ipxe/ipxe/blob/74d90b33f8490adcee2026ece18d8411d93b6a39/src/config/dhcp.h#L22

So the value of "4" in the header means it's either the first or second dhcp discover request (I can't tell if the counting starts at 0 or 1), and 1 second later we see the second, which is marked 10, which is 2 << 2 | 0x2, meaning it's the second (or 3rd?) transmission and that it's seen an offer before.