Failure of dhcp server failover

Simon Hobson dhcp1 at thehobsons.co.uk
Mon May 2 19:44:48 UTC 2016


Eugene Grosbein <eugen at grosbein.net> wrote:

> UniFi does not maintain Controller API compatibility between major releases
> of the Controller and I cannot just upgrade to 4.x series as I have lots of custom code
> utilizing the API.

That's good enough reason for me - and yes, it's one of those "niggles" with Ubiquiti stuff.

> Can you provide any references to standards
> or DHCP server documentation for restrictions on GI-Addr?

Try RFC2131 https://www.ietf.org/rfc/rfc2131.txt - section 4.3.1 for example :
> the address is selected based on ... or on the address of the relay agent that forwarded the message ('giaddr' when not 0)



>> For DHCP to work properly, you **MUST** have the GI-Addr
>> within the subnet served by the interface on the relay agent -
>> using an un-numbered interface is pretty well guaranteed not to work properly.
> 
> "Subnet of the interface" is common notion but an IP network can work without
> such notion at all. We use large plain IP pool (like /19) and multiple vlans
> routed by set of routers and Router/DHCP relay creates "static" /32 routes
> pointing to interface of client on the fly. In such case, interfaces do not have "subnet" notion
> but the pool does have its netmask and client has it too. Routers do arp-proxying, of course.

Ah, so what you are saying is that your VLANs are simply part of a bigger network, much like plugging multiple switches into each other to make one big network. It might have helped if you had described your network at the start, so people wouldn't be working on the assumption that it was a "normal" network.

You seem to have gone out of your way to make a complicated network - is there any fundamental reason behind this ?
But regardless of that, I see a way around it ...

> It works just fine when not in failover mode. I can't think a reason
> this could work for single ISC DHCP server and not work for a cluster other than bug/race.

Wel it is well known that very small address ranges "do not work well" in failover situations. It's hard to balance free leases between two servers when there is only one lease !

Since each device-address mapping is mapping a single entity to a single address, I don't see what failover brings to the party other than problems. You could simply define the same (non-failover) single address pool on both servers and it'll work fine. On initial setup, the client will get two identical offers - one from each server - but after that it will simply renew with the server it accepted an offer from. If that server goes down, the other server will be able to give it the same address without having to involve failover.



More information about the dhcp-users mailing list