[gPXE-devel] gPXE 1.0.0 eats DNS packets

Stefan Hajnoczi stefanha at gmail.com
Mon Jun 21 15:32:28 EDT 2010


On Mon, Jun 21, 2010 at 5:25 PM, H. Peter Anvin <hpa at zytor.com> wrote:
> On 06/21/2010 03:08 AM, Stefan Hajnoczi wrote:
>>
>> The UDP packet is destined for an IP that is not in the ARP cache.
>> gPXE does not queue UDP TX packets, it will drop the packet and
>> silently ignore this return this error when no link layer destination
>> is known yet (udp_xfer_deliver_iob ignores the error).
>>
>> I imagine the reasoning behind ignoring the error is that application
>> protocols using UDP must deal with retransmit anyway, which leads to
>> the next point: I can't see PXELINUX retransmitting the DNS UDP
>> packet.  The code in core/fs/pxe/dnsresolv.c has timeout logic but it
>> isn't kicking in.  Any idea what is happening on the SYSLINUX side?
>>
>
> For what it's worth, this behavior is inconsistent with vendor PXE
> stacks, and has forced me to cut the timeouts significantly in PXELINUX
> in order to not get unacceptable performance.  This has a somewhat bad
> impact on high latency networks.

Yes it's weird and can have negative effects.  I noticed this quirk
when Thomas Horsten was debugging compatibility and speed with QEMU's
built-in TFTP server.  Relying on the application code to timeout and
retransmit slows the boot down.

Nice, I just retested the latest syslinux.git and see your fix is working here:

http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=commitdiff;h=4e7d836b8cdc0e785ac6e0a78b258c4e193d2222

Stefan


More information about the gPXE-devel mailing list