← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1442123] Re: iPXE: neutron chainloading undionly.kpxe is not working

 

** Changed in: neutron
       Status: Fix Committed => Fix Released

** Changed in: neutron
    Milestone: None => liberty-1

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1442123

Title:
  iPXE: neutron chainloading undionly.kpxe is not working

Status in OpenStack Neutron (virtual network service):
  Fix Released

Bug description:
  When sending the DHCP options to neutron[1] Ironic will pass something
  like:

   dhcp_opts.append({'opt_name': 'tag:!ipxe,bootfile-name', 'opt_value':
  CONF.pxe.pxe_bootfile_name})

  The problem is that the "ipxe" tag is not created anywhere in Neutron,
  so depending on the order that the configuration opts are written in
  the dnsmasq configuration file the machine may get stuck when booting.

  The idea of the "ipxe" tag is to indicate that the DHCP request didn't
  come from iPXE/gPXE, so the flow would be like:

  1- Client does a DHCP request, if it does not come from iPXE, dnsmasq will ACK telling it to get the undionly.kpxe binary via TFTP
  2- Client gets the undionly.kpxe and chainload it
  3- Client does a DHCP request that nows comes from iPXE, dnsmasq will ACK telling it to get the boot.ipxe script from via HTTP.

  ...

  How to reproduce:

  1- In a devstack environment enabled Ironic with iPXE setting "IRONIC_IPXE_ENABLED=True" in the local.conf.
  2- Do a nova boot to deploy a machine
  3- Now, to make it always appear (since it may fail or may succeed, depending on the order neutron will write the configuration options in the file and it's abritraty) you should move the option with the ipxe tag to be before the option pointing to the ipxe script. Something like:

  tag:tag0,option:router,10.1.0.1
  tag:b76bb31e-44bc-4f97-bee8-d0f2cc62f05a,option:bootfile-name,http://192.168.122.156:8088/boot.ipxe
  tag:b76bb31e-44bc-4f97-bee8-d0f2cc62f05a,tag:!ipxe,option:bootfile-name,undionly.kpxe
  tag:b76bb31e-44bc-4f97-bee8-d0f2cc62f05a,option:tftp-server,192.168.122.156
  tag:b76bb31e-44bc-4f97-bee8-d0f2cc62f05a,option:server-ip-address,192.168.122.156
  tag:tag0,option:dns-server,10.1.0.2

  NOTE: The configuration file with the dhcp options will be
  /opt/stack/data/neutron/dhcp/<ramdon uuid>/opts

  4- send a HUP signal to the dnsmasq process to re-read the
  configuration files

  $ sudo kill -HUP <dnsmasq PID>

  5- Reboot the machine, and the machine will get stuck when booting, it
  will to always try to boot the undionly.kpxe. I think that's because
  the tag doesn't exist so this behavior is trigged:

  Booting from ROM...
  iPXE (PCI 00:04.0) starting execution...ok
  iPXE initialising devices...ok

  iPXE 1.0.0+git-20131111.c3d1e78-2ubuntu1.1 -- Open Source Network Boot Firmware
  ^[[51;239Ripxe.org
  Features: HTTP HTTPS iSCSI DNS TFTP AoE bzImage ELF MBOOT PXE PXEXT Menu

  net0: 52:54:00:72:7a:85 using 82540em on PCI00:04.0 (open)
    [Link:up, TX:0 TXE:0 RX:0 RXE:0]
  Configuring (net0 52:54:00:72:7a:85)...... ok
  net0: 10.1.0.4/255.255.255.0 gw 10.1.0.1
  Next server: 192.168.122.156

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1442123/+subscriptions