"bare metal" provision failing at PXE TFTP timeout

Environment: Foreman 1.4.0, Ubuntu Precise 12.04.4 (apache/MySQL), puppet
3.4.2

My Foreman server is in VMWare, multihomed (198.2 & 200.10). PXE booting a
HyperV VM to try to do a Foreman bare metal provision currently doesn't
work. The VM will boot, & grab an IP from foreman, as expected, but will
then time out doing a TFTP open (screenshot 1).

Steps taken:

  • tried with/without vlan id in NIC settings - w/o wouldn't even get an
    address
  • tried (inadvertently) with an incorrect MAC - produced a different
    "unable to locate config file" error (screenshot 2)
  • created a test/throwaway VM in VMWare (via compute resource provision)
    to make sure the mechanism was still working (198 subnet) - it is
  • added a 2nd NIC on the 200 subnet to a VMWare test VM, & was able to
    successfully grab the pxelinux.0 file from foreman via tftp client
  • added a 2nd NIC to a diff VM, this time in hyperv; it too was able to
    grab pxelinux.0 via the same tftp client (also 200 subnet)
  • monitored traffic on foreman using tshark during PXE boot - only saw
    the DHCP exchange; no TFTP traffic (screenshot 3)

Screenshots: http://imgur.com/a/z3TZz

Our HyperV is configured to PXE boot identically to these instructions<http://www.danielclasson.com/guide-how-to-get-pxe-boot-to-work-in-hyper-v/>.
Windows VMs PXE boot fine. I've asked in IRC, & someone suggested that I
try the tftp client from another host, which works, so any tips on which
way to turn now would be greatly appreciated.

I've seen TFTP errors on various types of virtualised NIC - last time
it happened to me I swapped an e1000 NIC for a virtio one and it was
fine. No idea if you can do that in HyperV, but it's worht a shot :slight_smile:

Greg

Do you see the incoming request for the file on the TFTP server? If you do,
but the file won't transfer, it's likely that the NIC's firmware has set a
TFTP option flag with a blocksize that is too large for the network MTU.
The TFTPD-HPA daemon has the following flag (excepted from the man page):

–blocksize max-block-size, -B max-block-size
Specifies the maximum permitted block size. The permitted range for this
parameter is from 512 to 65464. Some embedded clients request large block
sizes and yet do not handle fragmented packets correctly; for these
clients, it is recommended to set this value to the smallest MTU on your
network minus 32 bytes (20 bytes for IP, 8 for UDP, and 4 for TFTP; less if
you use IP options on your network.) For example, on a standard Ethernet
(MTU 1500) a value of 1468 is reasonable.

I suggest forcing this to the minimum value of 512 first to see if it helps
at all. Then you can try larger values if you want to shave a few packets
off your provisioning latency.

··· On Wed, Feb 19, 2014 at 4:45 AM, Greg Sutcliffe wrote:

I’ve seen TFTP errors on various types of virtualised NIC - last time
it happened to me I swapped an e1000 NIC for a virtio one and it was
fine. No idea if you can do that in HyperV, but it’s worht a shot :slight_smile:

Greg


You received this message because you are subscribed to the Google Groups
"Foreman users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-users+unsubscribe@googlegroups.com.
To post to this group, send email to foreman-users@googlegroups.com.
Visit this group at http://groups.google.com/group/foreman-users.
For more options, visit https://groups.google.com/groups/opt_out.