The Dynamic Host Configuration Protocol (DHCP) is a network protocol that sends network configuration information to computers (and other devices) on a network. It allows a system administrator to manage an IP address range from a central location and to maintain network parameters for all systems from that same central point.
DHCP is an internet standard, published as RFC2131. Implementations exist for many different platforms, covering clients and servers. As a standard protocol there is no need to run the same implementation on clients and servers. A Linux client will happily interact with -for example- a Microsoft DHCP Server, and Windows clients can retrieve their configuration from a Linux system running the DHCP daemon.
We have been running the Microsoft DHCP Server on our internal network for many years without too many issues. Recently I moved it over to a Linux machine, as part of our migration away from Windows. I was pleasantly surprised to find that the Linux implementation has a lot more features than Microsoft's. Here's a short list:
- Duplicate Address Avoidence: The Linux DHCPD will always ping the address it is about to issue, to make sure that it is not already in use, whilst the Microsoft DHCP Server will purely rely on its own leases database, which does sometimes result in duplicate addresses on the network.
- DHCP Failover: DHCPD on Linux supports the draft DHCP Failover protocol, which allows two servers to jointly manage a single DHCP scope. Microsoft DHCP does not implement any type of failover.
- DNS Registration: The DHCP Server on Linux can register hostnames with DNS. In a Microsoft environment, registration is up to the client.
- Expressions: On Linux, it is possible to use expressions to dynamically determine the value for an option to be sent to a client. The Microsoft DHCP Server only allows static values.
- Groups and Classes of clients: In the Linux DHCP server configuration file you can create groups and classes within a DHCP scope, and specify specific options or parameters for a group or class. With the Microsoft version, you can only specify options per scope or per client, whilst parameters (such as lease time) can only be specified on a scope-by-scope basis.
Due to the limitations in Microsoft's DHCP implementation, most larger companies have opted to use DHCP services of other network devices. Many of such devices run the ISC implementation of DHCP, which is -in fact- the exact same implementation as what comes with most Linux distributions.