static IP allocations in dynamic ranges -why not?

Simon Hobson dhcp1 at thehobsons.co.uk
Thu Jun 3 08:49:36 UTC 2010


Dorsey, Chris wrote:

>My question:
>What is the technical reason why dhcpd cannot mix static addresses 
>within dynamic ranges?

I think a better question might be to ask "what is the design 
decision behind the restriction".

The issue comes up from time to time, and often from people migrating 
from a Microsoft server. To a certain extent, it's just a different 
design philosophy - Microsoft chose to use a system where you define 
a range and then exclude addresses from it*, ISC decided to let you 
just define the range you want to use.

* Complicated by the fact that on early versions (ie NT), once you'd 
defined a range you could not alter it - I've no idea if this is 
still the case. As a result of that restriction, it because common 
practice to define a range covering the entire subnet and then 
exclude the bits you didn't want to use for dynamic leases.

When defining the interface, the ISC team took the approach that it's 
a technical tool used by network admins who really should know their 
own network. On this basis, the interface assumes the admin knows 
what he is doing (ie won't use an address twice - dynamically and 
also for a fixed address host), but conversely doesn't constrain the 
more complex setups behind all the safety features.

Anyone who has worked with both will recognise the difference.
The ISC server offers a rich configuration environment, but is 
technically more complex to configure.
The Microsoft server provides a relatively easy to use GUI, but 
significantly restricts the capabilities to those supported by the 
GUI.


As to the way fixed addresses don't get automatically excluded, well 
it may help to step back quite a few years. In computing terms, a lot 
of years ! Unfortunately, the ISC page on the history of their DHCP 
server doesnt' actually cover it's history - only going back as far 
as version 3 which it states went alpha in March 1999. Prior to that, 
version 2 had been around for "quite some time", and I don't have any 
idea at all when version 1 first appeared. I see that RFC1541 goes 
back to October 1993 - when I was first finding out about this 
complicated thing called TCP/IP when I got dial-up access to this new 
fangled Internet thingy.

The (IIRC, it's at work so I can't look it up) first chapter of Ralph 
Droms and Ted Lemon's book "The DHCP Handbook" gives an overview of 
network configuration techniques when DHCP was first conceived. Back 
then, you either manually configured stuff, or you used reverse ARP 
(only gives an address, you still have to manually configure 
everything else), or you used BOOTP (still limited in config 
abilities, and address assignment was still static).

The ISC set out to build not just a production usable piece of 
software, but a reference implementation of the standards. I'd say 
the fact that it's almost the de-facto standard DCHP server on Linux 
distributions suggests they got something right ! Applying a bit of 
speculation, I'd think that their priorities were on getting the 
dynamic allocation/handling side of things right - and that's harder 
than you might thing once you start considering some of the obscure 
corner cases that can crop up. So it's easy to see why they made 
fixed-address host assignments something of an ugly duckling - as 
others have said, these go through a different and much simplified 
code path.

Although it's caused various issues over the years, there has never 
been a compelling reason to justify the effort involved in going back 
and changing this.

As an aside, some of the current limitations/problems stem from 
adherence to the standards - so it's really that the standards were 
'wrong'. That's easy to say with hindsight, you try predicting what 
computing will do in the next 17 years ! A good example of that is 
the difficulty faced by people wanting to use Option 82 (relay agent 
link identifier) as the key for address allocation - ie allocate an 
address to <whatever> is attached to a specific port on a piece of 
network gear. A proposal requiring a sponsor is to add a config 
option to override the default (and standards compliant) selection of 
database key - that would allow an admin to use Option 82 as the key 
and may fix a lot of issues for a lot of people.

17 years ago, switched networks were the exception - ethernet was 
still commonly that chunk of 1/2" yellow "hosepipe" draped around the 
building - or it's cheaper cousin the thinner version with more 
limited length restriction. The upstart twisted pair cabling was only 
just appearing on the scene, and was struggling with the cost of the 
hubs (not switches which were even more costly) it required.


Getting back to your other question ...
You may well want to look into Reserved Leases. So new that they 
aren't documented and don't have a user interface to configure them !
A reserved lease is just like any other lease except for two details :
1) It includes the statement (I think) "reserved;" in the lease - and 
editing the lease file is the only way to set/unset this.
2) Once set, the address will be bound to that client and never 
re-assigned to another client.

But being otherwise a standard lease, it goes through the normal 
lease lifecycle - including Dynamic DNS updates if configured.

That means, if you want to toggle a client onto a fixed address, you 
can do it by setting it's lease to reserved. And when you no longer 
want it to be fixed, you can unset that.

In due course, it's been expressed that they'd like to have a user 
friendly way of administering this - but at the moment development 
effort is going into IPv6 support.


I hope that answers your question - effectively it comes down to "yes 
it's ugly in places, and with the benefit of 17 years of hindsight it 
might have been done differently".

-- 
Simon Hobson

Visit http://www.magpiesnestpublishing.co.uk/ for books by acclaimed
author Gladys Hobson. Novels - poetry - short stories - ideal as
Christmas stocking fillers. Some available as e-books.



More information about the dhcp-users mailing list