[ipxe-devel] switch causing DHCP timeout

Wissam Shoukair wissams at mellanox.com
Mon May 5 10:51:23 UTC 2014

Thanks Christian.

1. What is the consequences of setting the port's mode to "PortFast" and not completing the spanning tree initialization?
2. Can I always set this mode to be "PortFast"? Is there any cases where I can't use this mode?

-----Original Message-----
From: Christian Hesse [mailto:list at eworm.de] 
Sent: יום ב 05 מאי 2014 13:39
To: Wissam Shoukair
Cc: ipxe-devel at lists.ipxe.org
Subject: Re: [ipxe-devel] switch causing DHCP timeout

Wissam Shoukair <wissams at mellanox.com> on Mon, 2014/05/05 10:19:
> Hi,
> I'm trying to chain-load undi-only using net0. My setup has a PXE 
> client and a DHCP server and a switch between them. (there are other 
> machines connected to the same switch) After fetching the undi_only 
> from the DHCP server, it opens its own net0 and eventually the lower net0 net device.
> After it opens the devices, it tries to send DHCP DISCOVER to the server.
> Apparently, the switch takes a long time to settle down after the port 
> came up, and because of this the DHCP DISCOVER is not received by the server.
> To confirm that this is a timing issue, I delayed the DHCP packet by 
> inserting a sleep for 25 seconds right after the chainloaded undi 
> opened the net device, and it did fix the issue. A good solution for 
> this might be implementing ARP PING, and instead of the sleep, we can 
> change it by doing ARP PING until we get a response and then we can send the DHCP packet.
> Does anyone know a better and a simpler solution for this switch issue ?

I've seen problems like this with Cisco switches. Default port configuration waits a long time (30 seconds?) to make sure there is no loop or similar.
Every client having a timeout below 30 seconds is affected.

Setting these ports to mode "PortFast" fixes the timeout problem. Be aware that the port does not go through the complete spanning tree initialization procedure then. Make sure to take a look at the documentation.

Other brands probably do have similar configuration options.
main(a){char*c=/*    Schoene Gruesse                         */"B?IJj;MEH"
"CX:;",b;for(a/*    Chris           get my mail address:    */=0;b=c[a++];)
putchar(b-1/(/*               gcc -o sig sig.c && ./sig    */b/42*2-3)*42);}

More information about the ipxe-devel mailing list