Stork 2.0: Open Source DHCP Management Tool
ISC launched the Stork management application almost exactly five years ago, in November 2019, as an experimental tool.
Read postThe 4.4.3-P1 and 4.1-ESV-R16-P2 versions of ISC DHCP, released on October 5, 2022, are the last maintenance versions of this software that ISC plans to publish. If we become aware of a significant security vulnerability, we might make an exception to this, but it is our intention to cease actively maintaining this codebase.
No. The existing open source software will continue to function as it has, and current operators do not need to stop using ISC DHCP. Many networks with stable DHCP systems that are well-isolated from the open Internet can continue using ISC DHCP as long as their current systems function. However, it is time to start thinking about a migration plan to a more modern system that is actively maintained.
Network and system administrators deploying DHCP in new environments should look beyond ISC DHCP for a solution, as it would be irresponsible to invest in new deployments of this software which is now end-of-life. Naturally, ISC suggests new users consider our Kea DHCP server, but there are alternatives.
It is simply time to end this project. ISC DHCP is very mature code. It is not designed or instrumented for testability, so at this point, it is very risky to modify anything. As a result, we have made fewer and fewer changes to it in recent years. Since 2015, ISC has been investing in creating a new DHCP server, Kea, that we are actively developing and plan to maintain for the foreseeable future. We want to be very clear that we recommend Kea over the much older ISC DHCP version.
The ISC DHCP server was originally written for Internet Software Consortium (ISC) by Ted Lemon and Vixie Enterprises with the goal of being a complete reference implementation of the DHCP protocol. They maintained it through version 3.0, which had its final release in January 2003. Since then, ISC DHCP has been maintained, and the DHCP protocol extended, by a dedicated team of engineers at ISC.
The first release of the ISC DHCP distribution in December 1997 included just the DHCP server. Release 2 in June 1999 added a DHCP client and a BOOTP/DHCP relay agent. DHCP 3 was released in October 2001 and included DHCP failover support, OMAPI, Dynamic DNS, conditional behavior, client classing, and more. The 4.0 release in December 2007 introduced DHCPv6 protocol support for the server and client. The client and relay components reached their End-of-Life in January 2022.
The development of ISC DHCP paralleled the development of the protocol in the DHC working group (WG). The DHC working group was founded in 1989 by Ralph Droms, who also wrote IETF RFC 1531, the first version of the Dynamic Host Configuration Protocol; it was standardized in October 1993. DHC is now the oldest WG that still functions.
This is the first version of ISC DHCP recorded in CVS, later converted to git: https://gitlab.isc.org/isc-projects/dhcp/-/tree/d7837182d3cc1aa28fec66ebb2e23f759ea003b9 (note the minutes of a DNS working group meeting in 1993 and a DHC working group from 1994 in the docs folder).
At that time, according to the meeting minutes, there were several DHC server implementations: from FTP Software and from Microsoft for WindowsNT; from SunSoft for Solaris; from Novell for Netware; from IBM for OS/2 and AIX; and from WIDE for UNIX, BSD, SunOS and HP/UX.
Other contributors include: Mark Andrews, James Brister, Ben Cottrell, Francis Dupont, Evan Hunt, Shane Kerr, Tomek Mrugalski, Damien Neil, Jeremy Reed, and Paul Selkirk. This doesn’t include the many people who have advised and assisted ISC DHCP users over the years on the dhcp-users mailing list. Simon Hobson, Sten Carlsen, Glenn Satchel, Phil Mayers, Gregory Sloop, and Steinar Haug, along with many others, have generously shared their time and expertise with other users on the list, which will remain open and, presumably, active.
Here are some comments from the four core maintainers.
Ted Lemon remembers:
The way the DHCP work came about was that I was between jobs, and Paul (Vixie) knew me from the time when we both worked in IT at Digital Equipment Corporation (now defunct) in Palo Alto. I asked him if he had anything interesting going on, and he mentioned that he thought it would be useful to do a DHCP server to go alongside BIND 8, and asked if I would be interested in working on that. In all honesty I had not been a fan of DHCP prior to that time, but it seemed like an interesting project, so I said yes. Development proceeded fairly rapidly, and we quickly landed on the much-loved sequential text file as database model of persistent storage. The rest is history.
If I had it to do again, I probably would not write it in C, but I have no desire to go back to that code. It amazed me that a company in Japan actually managed to run 600k clients on an ISC DHCP server by using really long lease times.
David Hankins took over ISC DHCP maintenance as an employee of ISC.
ISC was approached by Comcast in 2006 to implement DHCPv6, as they were looking for an open source DHCPv6 server to test IPv6 functionality on DOCSIS 3.0 modems. ISC released ISC DHCP 4.0 in December 2007, adding support for DHCPv6. David said, “I remember everyone tolerating my whimsy in making ISC DHCP v4 the release that implemented IETF DHCPv6.” Shane Kerr implemented the server support for IPv6 while David updated the client. Evan Hunt and Francis Dupont helped with the addition of DHCPv6 support. (Please see https://www.isc.org/blogs/isc-dhcp-and-ipv6-the-dhcpv6-story/ for more details.)
One feature of ISC DHCP that required many tweaks over the years was failover. David remembers:
… there was an IETF draft circulating for a standard failover protocol which Ted implemented. It wound up expiring on my watch as there was little interest in an inter-vendor interoperable failover feature; folks seemed to want failover among the same vendor, or at least the vendors thought so. The protocol was finicky, and we wound up having a series of problems with “drift” between failover servers, ultimately running out of leases, etc.
We asked David why he thought ISC DHCP was so popular.
I think ISC DHCP was popular because the (complex) configuration language made a lot of custom integration possible. On the client, Ted chose to integrate with the operating system by using shell scripts, which made it easy to make local integrations - this and client-side implementations of Dynamic DNS bindings are probably what made it popular at the time. The relay was never really popular - people mostly used their ethernet switches features for relaying - but it provided value by being a “tool in the toolbox” so to speak, useful in a pinch.
ISC DHCP sort of fit a niche where it performed well enough at large scale, and wasn’t too overly large to use for your home network, but was a bit too big for an embedded system with limited resources. The ISC Kea server has developed into a superior platform, and it feels to me like the time is right to set ISC DHCP aside.
We shouldn’t mourn that we’re saying goodbye to a stout little piece of software that’s served most of the Internet and kept people connected. Instead, we should celebrate that the world is losing a Turing-complete configuration language. :)
When David Hankins left the project, he wrote a “Handoff” document, which is archived on the wiki page for the development repository. This includes some humorous commentary on weaknesses of the DHCP protocol development process and ISC DHCP’s implementation in particular.
He now works at Twitter, automating their infrastructure. He is still sharing funny stories about his work as @hcr64.
Shawn Routhier took over from David Hankins when David left ISC. Shawn remembers his primary feature contribution to ISC DHCP as adding support for asynchronous DDNS, included in DHCP 4.2, released in 2009. Shawn also extended the IPv6 support, in the major 4.3.0 release. In addition, during his tenure, Shawn supported several companies who implemented commercial IPAM products, using ISC DHCP and BIND 9. During those years there was a lot of push and pull to accommodate various non-standards-compliant clients, and to adjust the failover behavior. Now, Shawn can be found at Infoblox, where he is still supporting this software, as well as newer Infoblox products incorporating ISC’s Kea DHCP server.
Shawn said, “I’m sad to hear that ISC DHCP is being EOLed but I guess all good things must come to an end.”
Among other accomplishments during Shawn’s tenure, ISC DHCP turned 18 in November 2013 and ISC DHCP 4.3.0 was released in February, 2014.
Thomas joined ISC to work on BIND 10 and Kea, and was asked to backup Shawn on ISC DHCP to improve the “bus factor.” Thomas Markwalder offered these reflections on ISC DHCP:
ISC DHCP code harkens back to the days when C++ was bleeding edge and poorly supported, HTTP wasn’t even an acronym yet, and a lot of the object-oriented constructs, patterns, and libraries that engineers take for granted now weren’t even beer stains on cocktail napkins yet. Even so, Ted Lemon emulated a lot of those concepts manually, in C. OMAPI is a great example. It resembles a RESTful API for manipulating “objects” in ISC DHCP’s problem space and yet it was authored when “restful” was still how you hoped your next vacation was going to be. The configuration language in ISC DHCP is another forward-looking feature: it’s actually a pretty potent 4GL whose flexibility has been a hallmark of ISC DHCP from the beginning. Nearly every approach in the code base seems to have been created to solve things as extensibly as possible long before most folks even thought about such things.
And while some people, myself included, may grumble a bit about the code base being inscrutable, it delivers an awful lot of bang for the buck, still compiles on a wide variety of platforms, functions reliably, and yet offers more than 31 flavors for doing things. I doubt anyone had the faintest idea that it would become as prolific as it has nor still be in use decades after its inception.
Thomas Markwalder’s DHCP Developers’ Survival Guide is posted on the GitLab wiki page for ISC DHCP. Thomas remains at ISC, where he helps to support our ISC DHCP support customers and works on Kea DHCP.
Here are some ISC DHCP highlights from Thomas’s tenure as primary maintainer:
The ISC DHCP 4.4.0 branch, first released in early 2018, was re-licensed under the MPL 2.0 open source license. (Earlier versions remain under the original ISC License.) At that point, we announced that this would be the last supported branch of ISC DHCP.
In June of 2021, we announced that the ISC DHCP client and relay components were End-of-Life. At the time, we tried unsuccessfully to find someone who might want to take over that code maintenance.
This announcement should not come as a surprise to any active users of ISC DHCP. However, if you have questions or concerns, please feel free to either discuss them on the dhcp-users mailing list or email us at info@isc.org.
What's New from ISC