[syslinux] Sporadic duplicate requests with lpxelinux.0

Dietrich, Stefan stefan.dietrich at desy.de
Tue Sep 3 00:30:41 PDT 2019


Hello,

I am seeing sporadic duplicate read requests from lpxelinux.0 (6.03 from kernel.org), which results in a failed PXE boot.
This happens only sporadic, but happens often enough to be annoying.

The TFTP server serving lpxelinux.0 is running CentOS 7.6 with all updates applied.
The client machine initiates the PXE boot, receives the lpxelinux.0 binary, downloads ldlinux.c32 and proceeds to download the pxelinux configuration files.

Sometimes the request for the pxelinux.cfg/UUID configuration file is duplicated.
However this file does not exist in our setup, a file not found is returned and it proceeds with the MAC based config file. This file exists in our setup.

Due to the duplicate request for the UUID config file, the TFTP servers sends out a second file not found reply.
The source port for the request of the UUID and MAC config are the same, so I think some kind of mixup happens here on the lpxelinux.0 side.
The boot process now goes haywire, e.g. the content of the MAC address config file appears later in the config file for the IP in hex.

I was able to capture this on the TFTP server, see below for a short snippet.
As the identification field in the IPv4 header is increased, this packet has not been simply duplicated along the way.
Most likely lpxelinux.0 send out two requests for whatever reason?

This is not really reproducible, e.g. after a reboot of a machine in this state it is booting fine.
As we rely heavily on the HTTP capability of lpxelinux.0, testing with pxelinux.0 is not trivial :(

Has anybody seen this before or additional ideas?

# Number Time Source SrcPort Destination DSTPort Protocol Length Info
16062	0.003813687	131.169.168.108	49153	131.169.81.129	69	TFTP	121	Read Request, File: pxelinux.cfg/008093db-74fd-e711-8000-e0d55eccd74f, Transfer type: octet, tsize=0, blksize=1408
16064	0.080917021	131.169.168.108	49153	131.169.81.129	69	TFTP	121	Read Request, File: pxelinux.cfg/008093db-74fd-e711-8000-e0d55eccd74f, Transfer type: octet, tsize=0, blksize=1408
16065	0.060306182	131.169.81.129	42275	131.169.168.108	49153	TFTP	61	Error Code, Code: File not found, Message: File not found
16066	0.000072405	131.169.168.108	49153	131.169.81.129	69	TFTP	105	Read Request, File: pxelinux.cfg/01-e0-d5-5e-cc-d7-4f, Transfer type: octet, tsize=0, blksize=1408
16067	0.000381140	131.169.81.129	32967	131.169.168.108	49153	TFTP	61	Error Code, Code: File not found, Message: File not found
16068	0.000077763	131.169.168.108	49153	131.169.81.129	69	TFTP	93	Read Request, File: pxelinux.cfg/83A9A86C, Transfer type: octet, tsize=0, blksize=1408    <--- file does not exist on TFTP
16069	0.020583304	131.169.81.129	59373	131.169.168.108	49153	TFTP	68	Option Acknowledgement, tsize=1216, blksize=1408      <--- transfers the content of pxelinux.cfg/01-e0-d5-5e-cc-d7-4f

Regards,
Stefan

--
------------------------------------------------------------------------
Stefan Dietrich            Deutsches Elektronen-Synchrotron (IT-Systems)
                        Ein Forschungszentrum der Helmholtz-Gemeinschaft
                                                            Notkestr. 85
phone:  +49-40-8998-4696                                   22607 Hamburg
e-mail: stefan.dietrich at desy.de                                  Germany
------------------------------------------------------------------------


More information about the Syslinux mailing list