A DHCP (Dynamic Host Configuration Protocol) server can provide IP
addresses to clients spanning multiple subnets if the router that
separates them can act as an RFC 1542(BOOTP) relay agent. If the router
cannot function as relay agent, each subnet that has DHCP clients requires
a DHCP server.
A relay agent that conforms to RFC 1542 relays DHCP packets to the remote
side even though they are broadcast packets. Before relaying a DHCP
message from a DHCP client, the agent examines the GIADDR (gateway IP
address) field. If the field has an IP address of 0.0.0.0, the agent fills
it with the router's IP address. When the DHCP server receives the
message, it examines the Relay IP Address field to see if it has a DHCP
scope (a pool of IP addresses) that can be used to supply an IP address
lease. If the DHCP server has multiple DHCP scopes, the address in the
Relay IP Address field identifies the DHCP scope from which to offer an IP
address lease. This process allows one DHCP server to manage different
scopes for subnets.
You can use a multihomed Windows NT Server 3.5x system configured as a
DHCP server, with multiple network cards and IP routing enabled, instead
of a relay agent for subnetting purposes.
When it receives the DHCPDISCOVER message, the DHCP server sends a
DHCPOFFER directly to the relay agent identified in the GIADDR field, and
the agent relays the message to the DHCP client. The client's IP address
is still unknown, thus it has to be a broadcast on the local subnet.
Similarly, a DHCPREQUEST message is relayed from client to server and a
DHCPACK message is relayed from server to client, according to RFC 1542.
When you have multiple DHCP servers, Microsoft recommends that you place
your DHCP servers on different subnets to achieve a degree of fault
tolerance, rather than having all the DHCP servers in one subnet. The
servers should not have common IP addresses in their scopes (each server
should have a unique pool of addresses).
If the DHCP server in the local subnet goes down, requests are relayed to
a remote subnet, and the DHCP server there can respond to DHCP requests
if it maintains a scope of IP addresses for the requesting subnet. If the
remote server has no scope defined for the requesting subnet, it cannot
provide IP addresses, even if it has available addresses for other scopes.
If each DHCP server has a pool of addresses for each subnet, then it can
provide IP addresses for remote clients whose DHCP server is down.