No Free Addresses?
bob at proulx.com
Mon Dec 13 23:30:19 UTC 2010
Sten Carlsen wrote:
> The way I understand it, each server has a part of the total address
> space and balances this with its partner at intervals.
AFAIK the 'split' parameter says how to split the pool and a value of
128 says to split the pool with half going to each server. It creates
a bitmap used to scoreboard IP addresses. It uses that to split
addresses between the two servers. If a client renews an old address
it will either be on one or the other machine. The server knows this
and can decide if it should renew the lease or not. All of that works
great. Machines that were trying to renew were able to renew just
The problem was when new clients wanted a new IP address. This was
failing with "peer holds all free leases" even though by my accounting
there should have been at least 120 leases still available.
> When the communication between them breaks they do not automatically
> assume the other server is down,
Right. It could be a network split. Each server might continue to be
up and online on an isolated segment of the network. At some point
the network might be repaired and isolated segments joined together.
The is the primary reason why each server needs an large pool of its
own. Because you don't know how many clients might end up on each
server. It might split half each way or it might split with 99% to
only one of them.
Therefore each server after a split needs to have enough excess
address pool space to accomodate the entire network. This means that
the total pool needs to be at least twice the number of addresses that
you might need to serve in total.
> it is your responsibility to tell the remaining server that the
> other is really dead, not just unable to communicate.
It died today. But it will be back tomorrow. I am provisioning a new
server for it right now. It isn't permanently gone. It isn't even
going to be gone long term.
> Until the server gets the information that its partner really is dead,
> it will not hand out leases belonging to the partner -> effectively you
> are missing half your address space until then.
Correct. That is why you need twice the available address pool. And
being aware of this I had configured more than twice the needed
addresses into the pool. All of this is as I said in my previous
The total pool should have had 250 free addresses. With one server
down and the pool balanced between them that would have left 125 free
addresses in each half-sized pool.
The question is why weren't those free addresses considered free by
the dhcpd server daemon? How can you monitor the daemon so that you
know how much pool space is enough?
More information about the dhcp-users