DHCP code in 2.0.4+

Alexander Clouter alex at digriz.org.uk
Sun Jun 7 16:18:20 CEST 2009

Karl Auer <kauer at biplane.com.au> wrote:
> On Sun, 2009-06-07 at 14:09 +0100, Arran Cudbard-Bell wrote:
>> Karl Auer wrote:
>> > DHCP failover and load-balancing are not simple *at all*.
>> >   
>> They're trivial once you're storing leases in a transactional database.
> With all due respect, Arran, no, they are not.
> Two DHCP servers in a failover relationship must communicate with each
> other, each maintaining information about the state of leases that the
> other has. If they do so via a shared database (which seems to be what
> you are suggesting, apologies if not) then the entire point of failover
> is lost.
The state lives in the database.  ISC's DHCP has it's own 'database' 
which is just a flat text file...FreeRADIUS just puts everything in SQL.

I think Alan's great example is shutdown one of your DHCP servers, scrub 
the dhcpd.leases file and fire it up again and watch what happens.  Also 
if I see one more damn "peer owns all the leases" message in my logs, 
I'm likely to cause someone harm :)

> And that is quite apart from the carefully timed state management that 
> must occur during takeover or recovery in the case where a server 
> drops out, is not reachable by its peer or is deliberately taken 
> offline. Not to mention the possibility of having several servers 
> participating in various failover relationships.
This is all solved by *load-balancing*.  If your load-balancer cannot 
detect that a DHCP/RADIUS server is dead then you need to get a better 

The takeover and recovery is just something that helps people not need a 
load-balancer and spit out packets to the broadcast address of the VLAN 
both the DHCP servers sit in.

We personally use Cisco's IOS (which is pretty naff, but just about 
usable[1]), but you could use a Linux based HA system.


[1] http://www.digriz.org.uk/cisco-slb-radius
Alexander Clouter
.sigmonster says: Double!

More information about the Freeradius-Users mailing list