Re: DHCP timeout is too short for this college network

Hello Dan, thanks for your reply!

There are various cases where the DHCP timeout
is the amount of latency between NM timing out a legitimate failure and
falling back to a working network.

Ah, I was afraid it was something like this. That's unfortunate :(

The cases where the
DHCP latency is a problem are cases where we don't expect to get *any*

So if we could figure out that some server sent an OFFER then we could
extend the internal DHCP timeout in NetworkManager and hopefully handle
your problem.

From what I've seen, it looks like dhclient already does something similar.

If I put "timeout 45;" in dhclient.conf and then run dhclient on a network where no DHCP servers are present (i.e. no OFFERs are received), then dhclient does indeed timeout in 45 seconds.

However, as soon as it gets an OFFER, it seems that the 45 second countdown stops. dhclient then proceeds to try and get an ACK, and this process seems to be subject to a separate (hard coded?) timeout. If that fails, then dhclient returns to the DISCOVER stage and once again waits 45 seconds for an OFFER.

So the good news is, dhclient is already setup so that it times out relatively quickly when DHCP servers are not present, and it's also willing to wait longer when dealing with lazy servers.

The bad news is that this behavior is not well documented, and I don't know if there are any limits on how many times it will "loop" like this. If I were to hit a broken DHCP server that always sent OFFERs but never sent ACKs, it's possible that dhclient would never time out. But I'd argue that this would be a dhclient bug that may be worth fixing anyway.

Any chance you'd
like to poke around dhclient (including perhaps it's socket-based
control interface?) and see if there's a way to get more information out
of it?

I skimmed the documentation about dhclient's OMAPI interface to see what controls are available. It doesn't look good. :( But I may yet be able to find something (undocumented?) that would help, if we do indeed go this route.

Perhaps I'll read the dhclient source code, methinks that'll help :)

Have a good one,

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]