Saturday, June 21, 2008

About DHCP

DHCP stands for Dynamic Host Configuration Protocol, and is used to
centrally allocate and manage TCP/ IP configurations of client nodes.

If you've got more than a handful of computers to manage, then DHCP
can help to save a great deal of time and trouble in setting up and
administering a TCP/ IP network. DHCP offers the following features:

The Dynamic Host Configuration Protocol (DHCP) provides configuration
parameters to Internet hosts. DHCP consists of two components: a
protocol for delivering host-specific configuration parameters from a
DHCP server to a host and a mechanism for allocation of network
addresses to hosts.

DHCP is built on a client-server model, where designated DHCP server
hosts allocate network addresses and deliver configuration parameters
to dynamically configured hosts. Throughout the remainder of this
document, the term "server" refers to a host providing initialization
parameters through DHCP, and the term "client" refers to a host
requesting initialization parameters from a DHCP server.

A host should not act as a DHCP server unless explicitly configured to
do so by a system administrator. The diversity of hardware and protocol
implementations in the Internet would preclude reliable operation if
random hosts were allowed to respond to DHCP requests. For example, IP
requires the setting of many parameters within the protocol
implementation software. Because IP can be used on many dissimilar
kinds of network hardware, values for those parameters cannot be
guessed or assumed to have correct defaults.

Also, distributed address allocation schemes depend on a
polling/defense mechanism for discovery of addresses that are already
in use. IP hosts may not always be able to defend their network
addresses, so that such a distributed address allocation scheme cannot
be guaranteed to avoid allocation of duplicate network addresses.

DHCP supports three mechanisms for IP address allocation. In "automatic
allocation", DHCP assigns a permanent IP address to a host. In "dynamic
allocation", DHCP assigns an IP address to a host for a limited period
of time (or until the host explicitly relinquishes the address). In
"manual allocation", a host's IP address is assigned by the network
administrator, and DHCP is used simply to convey the assigned address
to the host.

A particular network will use one or more of these mechanisms,
depending on the policies of the network administrator.

Dynamic allocation is the only one of the three mechanisms that allows
automatic reuse of an address that is no longer needed by the host to
which it was assigned. Thus, dynamic allocation is particularly useful
for assigning an address to a host that will be connected to the
network only temporarily or for sharing a limited pool of IP addresses
among a group of hosts that do not need permanent IP addresses. Dynamic
allocation may also be a good choice for assigning an IP address to a
new host being permanently connected to a network where IP addresses
are sufficiently scarce that it is important to reclaim them when old
hosts are retired.

Manual allocation allows DHCP to be used to eliminate the error-prone
process of manually configuring hosts with IP addresses in environments
where (for whatever reasons) it is desirable to manage IP address
assignment outside of the DHCP mechanisms.


The format of DHCP messages is based on the format of BOOTP messages,
to capture the BOOTP relay agent behavior described as part of the
BOOTP specification [7, 23] and to allow interoperability of existing
BOOTP clients with DHCP servers. Using BOOTP relaying agents eliminates
the necessity of having a DHCP server on each physical network segment.


DHCP can quickly become an essential piece of an organization's data
network. Once set up, DHCP (Dynamic Host Configuration Protocol) is
usually hardly noticed, silently and faithfully performing its duties
day in and day out. Unfortunately, the hardest thing about DHCP is
getting it to that point.

This article discusses some of the reasons why an organization would
want to use DHCP, along with the many different issues that need to be
considered when designing a DHCP infrastructure. Some of these
considerations include planning for IP address use. An organization
needs to determine how its existing environment is used and what types
of users and workstations are being utilized (such as mobile users and
network devices).

In large-scale DHCP implementations, the topology of the network
becomes a very important factor. The network topology dictates where
DHCP servers and/or relay agents must be placed. The needs of the DHCP
client must be considered, including which DHCP options are supported
by the client's operating system and which options and their
correspomding values need to be assigned. Finally, all of these
elements are brought together to implement the DHCP scopes.

How DHCP Works

For a detailed description of DHCP, we suggest that you download RFC
1541 from any of the Internet draft repository sites. A good place to
start is ds.internic.net, available via FTP, Gopher and HTTP. For a
less detailed description, read on.

DHCP is an extension of BOOTP, the previous IP allocation
specification. So, existing BOOTP devices can communicate with DHCP
servers and allow DHCP requests to cross routers running BOOTP
forwarders. This level of backward compatibility makes it easy for
administrators to upgrade their network devices from BOOTP to DHCP as
needed, without having to replace all of the clients at once or having
to upgrade all of the routers.

Several major advancements beyond the BOOTP specifications provide
significant advantages. For example, DHCP supports the concept of a
"lease" whereby a server can allocate an address to a client for a
specific amount of time. If you have more devices than IP addresses,
using shorter leases can help to keep you from running out of
addresses. If you have more addresses than devices, you can utilize
permanent leases or you can assign fixed addresses to specific devices
similar to BOOTP's mechanism.

Also, DHCP incorporates a much more robust dialogue during lease
negotiation. Since the addresses can be assigned to the devices on an
ad-hoc basis, mechanisms need to be incorporated into the assignment
procedure that allow for a broader range of options, as well as for a
broader range of error handling conditions. BOOTP protocol only allowed
for two types of messages (request and reply), while DHCP has seven
possible message types that can be used during the address assignment
sequence.

When a DHCP device attaches itself to the network for the first time,
it broadcasts a DHCPDISCOVER packet. A DHCP servers on the local
segment will see the broadcast and return a DHCPOFFER packet that
contains an IP address and other information. The servers may or may
not conduct some sort of preliminary testing prior to offering the
address, such as generating an ARP or an ICMP echo to see if the
address is already in use by another node somewhere. If your network
does not have a DHCP server on every segment, you will need to
configure your routers to provide BOOTP relay agents that forward the
broadcasts to a predefined server on a remote segment.

The client may receive multiple DHCPOFFER packets from any number of
servers, so it must choose between them, and broadcast a DHCPREQUEST
packet that identifies the explicit server and lease offer that it
likes the best. This decision may be based on which offer has the
longest lease or which offer provides the most information that the
specific client needs for optimal operation (more on this later). The
non-chosen servers would notice the explicit DHCPREQUEST packet and go
on about their business.

Assuming that the offer is still valid, the chosen server would return
a DHCPACK that tells the client the lease is finalized. If the offer is
no longer valid for some reason-perhaps due to a time-out or another
client allocating the lease-then the selected server must respond with
a DHCPNAK message. This would cause the client to send another
DHCPDISCOVER packet, starting the process over again.

Once the client receives a DHCPACK, then all ownership and maintenance
of the lease is the responsibility of the client. For example, a client
may refuse an offer that is detailed in the DHCPACK message, and it is
the client's responsibility to do so. Clients are supposed to test the
addresses that have been offered to them by conducting ARP broadcasts.
So if another node responds to the ARP, the client would assume that
the offered address is in use. At this point, the client would reject
the offer by sending a DHCPDECLINE message to the offering server, and
would also send another DHCPDISCOVER packet, thereby starting the
process yet again.

Once the client has the lease, it must be renewed prior to the lease
expiration through another DHCPREQUEST message. If a client finishes
using a lease prior to its expiration date, the client is supposed to
send a DHCPRELEASE message to the server so that the lease can be made
available to other nodes. If the server doesn't hear from the client by
the end of the lease, it marks the lease as non-renewed, and makes it
available for other clients to use.

This sequence of events is pretty straightforward and leaves a lot of
room to correct any miscommunication between the clients and the
servers. This is a good thing, because most of the implementations that
we studied at in our labs didn't follow the letter of the law very
well. Only because of the negotiation.

No comments: