Improving dhclient startup time

Lorenzo Colitti lorenzo at
Thu Jun 15 13:52:15 UTC 2006

recently I've been investigating why it takes my laptop such a long time 
to get an Internet connection using NetworkManager (~15 seconds). After 
hacking on NetworkManager to speed this up, I discovered that dhclient 
has a random 0-4 second wait before sending the first DHCPDISCOVER out:

> /* Set up a timeout to start the initialization process. */
> add_timeout (cur_time + random () % 5, state_reboot, client, 0, 0);

This can be drag on performance, especially on laptops, which roam 
between different wireless networks, suspend/resume, etc.

Could the wait be taken out in the case of only one interface? i.e. 
something like the following (see attached patch for code):

> if(only one interface)
>     add_timeout (cur_time, state_reboot, client, 0, 0);
> else
>     add_timeout (cur_time + random () % 5, state_reboot, client, 0, 0);

I've tried this and it seems to work fine (and it's much faster of 
course). Does this make sense?


Lorenzo Colitti                

More information about the dhcp-users mailing list