head 1.2; access; symbols perseant-exfatfs-base-20240630:1.2 perseant-exfatfs:1.2.0.6 perseant-exfatfs-base:1.2 netbsd-8-3-RELEASE:1.1.1.2 cjep_sun2x:1.2.0.4 cjep_sun2x-base:1.2 cjep_staticlib_x-base1:1.2 cjep_staticlib_x:1.2.0.2 cjep_staticlib_x-base:1.2 phil-wifi-20200421:1.2 phil-wifi-20200411:1.2 phil-wifi-20200406:1.2 netbsd-8-2-RELEASE:1.1.1.2 netbsd-8-1-RELEASE:1.1.1.2 netbsd-8-1-RC1:1.1.1.2 pgoyette-compat-merge-20190127:1.1.1.2.32.1 pgoyette-compat-20190127:1.2 pgoyette-compat-20190118:1.2 pgoyette-compat-1226:1.2 pgoyette-compat-1126:1.2 pgoyette-compat-1020:1.2 pgoyette-compat-0930:1.2 pgoyette-compat-0906:1.2 netbsd-7-2-RELEASE:1.1.1.2 pgoyette-compat-0728:1.2 netbsd-8-0-RELEASE:1.1.1.2 pgoyette-compat-0625:1.2 netbsd-8-0-RC2:1.1.1.2 pgoyette-compat-0521:1.2 pgoyette-compat-0502:1.2 pgoyette-compat-0422:1.2 netbsd-8-0-RC1:1.1.1.2 pgoyette-compat-0415:1.2 DHCP4_4_1:1.1.1.3 pgoyette-compat-0407:1.1.1.2 pgoyette-compat-0330:1.1.1.2 pgoyette-compat-0322:1.1.1.2 pgoyette-compat-0315:1.1.1.2 netbsd-7-1-2-RELEASE:1.1.1.2 pgoyette-compat:1.1.1.2.0.32 pgoyette-compat-base:1.1.1.2 netbsd-7-1-1-RELEASE:1.1.1.2 matt-nb8-mediatek:1.1.1.2.0.30 matt-nb8-mediatek-base:1.1.1.2 perseant-stdc-iso10646:1.1.1.2.0.28 perseant-stdc-iso10646-base:1.1.1.2 netbsd-8:1.1.1.2.0.26 netbsd-8-base:1.1.1.2 prg-localcount2-base3:1.1.1.2 prg-localcount2-base2:1.1.1.2 prg-localcount2-base1:1.1.1.2 prg-localcount2:1.1.1.2.0.24 prg-localcount2-base:1.1.1.2 pgoyette-localcount-20170426:1.1.1.2 bouyer-socketcan-base1:1.1.1.2 pgoyette-localcount-20170320:1.1.1.2 netbsd-7-1:1.1.1.2.0.22 netbsd-7-1-RELEASE:1.1.1.2 netbsd-7-1-RC2:1.1.1.2 netbsd-7-nhusb-base-20170116:1.1.1.2 bouyer-socketcan:1.1.1.2.0.20 bouyer-socketcan-base:1.1.1.2 pgoyette-localcount-20170107:1.1.1.2 netbsd-7-1-RC1:1.1.1.2 pgoyette-localcount-20161104:1.1.1.2 netbsd-7-0-2-RELEASE:1.1.1.2 localcount-20160914:1.1.1.2 netbsd-7-nhusb:1.1.1.2.0.18 netbsd-7-nhusb-base:1.1.1.2 pgoyette-localcount-20160806:1.1.1.2 pgoyette-localcount-20160726:1.1.1.2 pgoyette-localcount:1.1.1.2.0.16 pgoyette-localcount-base:1.1.1.2 netbsd-7-0-1-RELEASE:1.1.1.2 DHCP4_3_3:1.1.1.2 netbsd-7-0:1.1.1.2.0.14 netbsd-7-0-RELEASE:1.1.1.2 netbsd-7-0-RC3:1.1.1.2 netbsd-7-0-RC2:1.1.1.2 netbsd-7-0-RC1:1.1.1.2 netbsd-7:1.1.1.2.0.12 netbsd-7-base:1.1.1.2 DHCP4_3_0:1.1.1.2 yamt-pagecache:1.1.1.2.0.10 yamt-pagecache-base9:1.1.1.2 tls-earlyentropy:1.1.1.2.0.8 tls-earlyentropy-base:1.1.1.2 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.2 riastradh-drm2-base3:1.1.1.2 riastradh-drm2-base2:1.1.1.2 riastradh-drm2-base1:1.1.1.2 riastradh-drm2:1.1.1.2.0.6 riastradh-drm2-base:1.1.1.2 tls-maxphys-base:1.1.1.2 tls-maxphys:1.1.1.2.0.4 khorben-n900:1.1.1.2.0.2 DHCP4_2_5_P1:1.1.1.2 DHCP4_2_5:1.1.1.2 DHCP4_2_3:1.1.1.1 ISC:1.1.1; locks; strict; comment @# @; 1.2 date 2018.04.07.22.39.57; author christos; state dead; branches; next 1.1; commitid GG8y5M7UQEDETyxA; 1.1 date 2013.03.24.15.45.48; author christos; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2013.03.24.15.45.48; author christos; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 2013.03.24.22.50.25; author christos; state Exp; branches 1.1.1.2.4.1 1.1.1.2.10.1 1.1.1.2.32.1; next 1.1.1.3; 1.1.1.3 date 2018.04.07.20.44.25; author christos; state Exp; branches; next ; commitid hIoIrsZj8YlUfyxA; 1.1.1.2.4.1 date 2013.03.24.22.50.25; author tls; state dead; branches; next 1.1.1.2.4.2; commitid OnlO1cBgtQRcIHUw; 1.1.1.2.4.2 date 2013.06.23.06.26.28; author tls; state Exp; branches; next ; commitid OnlO1cBgtQRcIHUw; 1.1.1.2.10.1 date 2013.03.24.22.50.25; author yamt; state dead; branches; next 1.1.1.2.10.2; commitid 71DOv9lBdoc77yBx; 1.1.1.2.10.2 date 2014.05.22.15.44.32; author yamt; state Exp; branches; next ; commitid 71DOv9lBdoc77yBx; 1.1.1.2.32.1 date 2018.04.16.01.58.09; author pgoyette; state dead; branches; next ; commitid qk3nktk0szmTIByA; desc @@ 1.2 log @moved dhcp to mpl @ text @ ISC-DHCP-REFERENCES: ISC DHCP References Collection
 TOC 
ISC-DHCP-REFERENCESD. Hankins
 T. Mrugalski
 ISC
 May 20, 2011


ISC DHCP References Collection

Abstract

This document describes a collection of reference material to which ISC DHCP has been implemented as well as a more complete listing of references for DHCP and DHCPv6 protocols.

Copyright Notice

Copyright (c) 2006-2007,2009,2011 by Internet Systems Consortium, Inc. ("ISC")

Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.



Table of Contents

1.  Introduction

2.  Definition: Reference Implementation

3.  Low Layer References
    3.1.  Ethernet Protocol References
    3.2.  Token Ring Protocol References
    3.3.  FDDI Protocol References
    3.4.  Internet Protocol Version 4 References
    3.5.  Unicast Datagram Protocol References

4.  BOOTP Protocol References

5.  DHCPv4 Protocol References
    5.1.  DHCPv4 Protocol
        5.1.1.  Core Protocol References
    5.2.  DHCPv4 Option References
        5.2.1.  Relay Agent Information Option Options
        5.2.2.  Dynamic DNS Updates References
        5.2.3.  Experimental: Failover References
    5.3.  DHCP Procedures

6.  DHCPv6 Protocol References
    6.1.  DHCPv6 Protocol References
    6.2.  DHCPv6 Options References

7.  References
    7.1.  Published DHCPv4 References
    7.2.  Published Common (DHCPv4/DHCPv6) References
    7.3.  Published DHCPv6 References

§  Authors' Addresses




 TOC 

1.  Introduction

As a little historical anecdote, ISC DHCP once packaged all the relevant RFCs and standards documents along with the software package. Until one day when a voice was heard from one of the many fine institutions that build and distribute this software... they took issue with the IETF's copyright on the RFC's. It seems the IETF's copyrights don't allow modification of RFC's (except for translation purposes).

Our main purpose in providing the RFCs is to aid in documentation, but since RFCs are now available widely from many points of distribution on the Internet, there is no real need to provide the documents themselves. So, this document has been created in their stead, to list the various IETF RFCs one might want to read, and to comment on how well (or poorly) we have managed to implement them.



 TOC 

2.  Definition: Reference Implementation

ISC DHCP, much like its other cousins in ISC software, is self-described as a 'Reference Implementation.' There has been a great deal of confusion about this term. Some people seem to think that this term applies to any software that once passed a piece of reference material on its way to market (but may do quite a lot of things that aren't described in any reference, or may choose to ignore the reference it saw entirely). Other folks get confused by the word 'reference' and understand that to mean that there is some special status applied to the software - that the software itself is the reference by which all other software is measured. Something along the lines of being "The DHCP Protocol's Reference Clock," it is supposed.

The truth is actually quite a lot simpler. Reference implementations are software packages which were written to behave precisely as appears in reference material. They are written "to match reference."

If the software has a behaviour that manifests itself externally (whether it be something as simple as the 'wire format' or something higher level, such as a complicated behaviour that arises from multiple message exchanges), that behaviour must be found in a reference document.

Anything else is a bug, the only question is whether the bug is in reference or software (failing to implement the reference).

This means:

That is the lofty goal, at any rate. It's well understood that, especially because the ISC DHCP Software package has not always been held to this standard (but not entirely due to it), there are many non-referenced behaviours within ISC DHCP.

The primary goal of reference implementation is to prove the reference material. If the reference material is good, then you should be able to sit down and write a program that implements the reference, to the word, and come to an implementation that is distinguishable from others in the details, but not in the facts of operating the protocol. This means that there is no need for 'special knowledge' to work around arcane problems that were left undocumented. No secret handshakes need to be learned to be imparted with the necessary "real documentation".

Also, by accepting only reference as the guidebook for ISC DHCP's software implementation, anyone who can make an impact on the color texture or form of that reference has a (somewhat indirect) voice in ISC DHCP's software design. As the IETF RFC's have been selected as the source of reference, that means everyone on the Internet with the will to participate has a say.



 TOC 

3.  Low Layer References

It may surprise you to realize that ISC DHCP implements 802.1 'Ethernet' framing, Token Ring, and FDDI. In order to bridge the gap there between these physical and DHCP layers, it must also implement IP and UDP framing.

The reason for this stems from Unix systems' handling of BSD sockets (the general way one might engage in transmission of UDP packets) on unconfigured interfaces, or even the handling of broadcast addressing on configured interfaces.

There are a few things that DHCP servers, relays, and clients all need to do in order to speak the DHCP protocol in strict compliance with [RFC2131] (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.).

  1. Transmit a UDP packet from IP:0.0.0.0 Ethernet:Self, destined to IP:255.255.255.255 LinkLayer:Broadcast on an unconfigured (no IP address yet) interface.
  2. Receive a UDP packet from IP:remote-system LinkLayer:remote-system, destined to IP:255.255.255.255 LinkLayer:Broadcast, again on an unconfigured interface.
  3. Transmit a UDP packet from IP:Self, Ethernet:Self, destined to IP:remote-system LinkLayer:remote-system, without transmitting a single ARP.
  4. And of course the simple case, a regular IP unicast that is routed via the usual means (so it may be direct to a local system, with ARP providing the glue, or it may be to a remote system via one or more routers as normal). In this case, the interfaces are always configured.

The above isn't as simple as it sounds on a regular BSD socket. Many unix implementations will transmit broadcasts not to 255.255.255.255, but to x.y.z.255 (where x.y.z is the system's local subnet). Such packets are not received by several known DHCP client implementations - and it's not their fault, [RFC2131] (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.) very explicitly demands that these packets' IP destination addresses be set to 255.255.255.255.

Receiving packets sent to 255.255.255.255 isn't a problem on most modern unixes...so long as the interface is configured. When there is no IPv4 address on the interface, things become much more murky.

So, for this convoluted and unfortunate state of affairs in the unix systems of the day ISC DHCP was manufactured, in order to do what it needs not only to implement the reference but to interoperate with other implementations, the software must create some form of raw socket to operate on.

What it actually does is create, for each interface detected on the system, a Berkeley Packet Filter socket (or equivalent), and program it with a filter that brings in only DHCP packets. A "fallback" UDP Berkeley socket is generally also created, a single one no matter how many interfaces. Should the software need to transmit a contrived packet to the local network the packet is formed piece by piece and transmitted via the BPF socket. Hence the need to implement many forms of Link Layer framing and above. The software gets away with not having to implement IP routing tables as well by simply utilizing the aforementioned 'fallback' UDP socket when unicasting between two configured systems is needed.

Modern unixes have opened up some facilities that diminish how much of this sort of nefarious kludgery is necessary, but have not found the state of affairs absolutely resolved. In particular, one might now unicast without ARP by inserting an entry into the ARP cache prior to transmitting. Unconfigured interfaces remain the sticking point, however...on virtually no modern unixes is it possible to receive broadcast packets unless a local IPv4 address has been configured, unless it is done with raw sockets.



 TOC 

3.1.  Ethernet Protocol References

ISC DHCP Implements Ethernet Version 2 ("DIX"), which is a variant of IEEE 802.2. No good reference of this framing is known to exist at this time, but it is vaguely described in [RFC0894] (Hornig, C., “Standard for the transmission of IP datagrams over Ethernet networks,” April 1984.) see the section titled "Packet format"), and the following URL is also thought to be useful.

http://en.wikipedia.org/wiki/DIX_Ethernet



 TOC 

3.2.  Token Ring Protocol References

IEEE 802.5 defines the Token Ring framing format used by ISC DHCP.



 TOC 

3.3.  FDDI Protocol References

[RFC1188] (Katz, D., “Proposed Standard for the Transmission of IP Datagrams over FDDI Networks,” October 1990.) is the most helpful reference ISC DHCP has used to form FDDI packets.



 TOC 

3.4.  Internet Protocol Version 4 References

RFC760 (Postel, J., “DoD standard Internet Protocol,” January 1980.) [RFC0760] fundamentally defines the bare IPv4 protocol which ISC DHCP implements.



 TOC 

3.5.  Unicast Datagram Protocol References

RFC768 (Postel, J., “User Datagram Protocol,” August 1980.) [RFC0768] defines the User Datagram Protocol that ultimately carries the DHCP or BOOTP protocol. The destination DHCP server port is 67, the client port is 68. Source ports are irrelevant.



 TOC 

4.  BOOTP Protocol References

The DHCP Protocol is strange among protocols in that it is grafted over the top of another protocol - BOOTP (but we don't call it "DHCP over BOOTP" like we do, say "TCP over IP"). BOOTP and DHCP share UDP packet formats - DHCP is merely a conventional use of both BOOTP header fields and the trailing 'options' space.

The ISC DHCP server supports BOOTP clients conforming to RFC951 (Croft, B. and J. Gilmore, “Bootstrap Protocol,” September 1985.) [RFC0951] and RFC1542 (Wimer, W., “Clarifications and Extensions for the Bootstrap Protocol,” October 1993.) [RFC1542].



 TOC 

5.  DHCPv4 Protocol References



 TOC 

5.1.  DHCPv4 Protocol

"The DHCP[v4] Protocol" is not defined in a single document. The following collection of references of what ISC DHCP terms "The DHCPv4 Protocol".



 TOC 

5.1.1.  Core Protocol References

RFC2131 (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.) [RFC2131] defines the protocol format and procedures. ISC DHCP is not known to diverge from this document in any way. There are, however, a few points on which different implementations have arisen out of vagueries in the document. DHCP Clients exist which, at one time, present themselves as using a Client Identifier Option which is equal to the client's hardware address. Later, the client transmits DHCP packets with no Client Identifier Option present - essentially identifying themselves using the hardware address. Some DHCP Servers have been developed which identify this client as a single client. ISC has interpreted RFC2131 to indicate that these clients must be treated as two separate entities (and hence two, separate addresses). Client behaviour (Embedded Windows products) has developed that relies on the former implementation, and hence is incompatible with the latter. Also, RFC2131 demands explicitly that some header fields be zeroed upon certain message types. The ISC DHCP Server instead copies many of these fields from the packet received from the client or relay, which may not be zero. It is not known if there is a good reason for this that has not been documented.

RFC2132 (Alexander, S. and R. Droms, “DHCP Options and BOOTP Vendor Extensions,” March 1997.) [RFC2132] defines the initial set of DHCP Options and provides a great deal of guidance on how to go about formatting and processing options. The document unfortunately waffles to a great extent about the NULL termination of DHCP Options, and some DHCP Clients (Windows 95) have been implemented that rely upon DHCP Options containing text strings to be NULL-terminated (or else they crash). So, ISC DHCP detects if clients null-terminate the host-name option and, if so, null terminates any text options it transmits to the client. It also removes NULL termination from any known text option it receives prior to any other processing.



 TOC 

5.2.  DHCPv4 Option References

RFC2241 (Provan, D., “DHCP Options for Novell Directory Services,” November 1997.) [RFC2241] defines options for Novell Directory Services.

RFC2242 (Droms, R. and K. Fong, “NetWare/IP Domain Name and Information,” November 1997.) [RFC2242] defines an encapsulated option space for NWIP configuration.

RFC2485 (Drach, S., “DHCP Option for The Open Group's User Authentication Protocol,” January 1999.) [RFC2485] defines the Open Group's UAP option.

RFC2610 (Perkins, C. and E. Guttman, “DHCP Options for Service Location Protocol,” June 1999.) [RFC2610] defines options for the Service Location Protocol (SLP).

RFC2937 (Smith, C., “The Name Service Search Option for DHCP,” September 2000.) [RFC2937] defines the Name Service Search Option (not to be confused with the domain-search option). The Name Service Search Option allows eg nsswitch.conf to be reconfigured via dhcp. The ISC DHCP server implements this option, and the ISC DHCP client is compatible...but does not by default install this option's value. One would need to make their relevant dhclient-script process this option in a way that is suitable for the system.

RFC3004 (Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, “The User Class Option for DHCP,” November 2000.) [RFC3004] defines the User-Class option. Note carefully that ISC DHCP currently does not implement to this reference, but has (inexplicably) selected an incompatible format: a plain text string.

RFC3011 (Waters, G., “The IPv4 Subnet Selection Option for DHCP,” November 2000.) [RFC3011] defines the Subnet-Selection plain DHCPv4 option. Do not confuse this option with the relay agent "link selection" sub-option, although their behaviour is similar.

RFC3396 (Lemon, T. and S. Cheshire, “Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4),” November 2002.) [RFC3396] documents both how long options may be encoded in DHCPv4 packets, and also how multiple instances of the same option code within a DHCPv4 packet will be decoded by receivers.

RFC3397 (Aboba, B. and S. Cheshire, “Dynamic Host Configuration Protocol (DHCP) Domain Search Option,” November 2002.) [RFC3397] documents the Domain-Search Option, which allows the configuration of the /etc/resolv.conf 'search' parameter in a way that is RFC1035 (Mockapetris, P., “Domain names - implementation and specification,” November 1987.) [RFC1035] wire format compatible (in fact, it uses the RFC1035 wire format). ISC DHCP has both client and server support, and supports RFC1035 name compression.

RFC3679 (Droms, R., “Unused Dynamic Host Configuration Protocol (DHCP) Option Codes,” January 2004.) [RFC3679] documents a number of options that were documented earlier in history, but were not made use of.

RFC3925 (Littlefield, J., “Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4),” October 2004.) [RFC3925] documents a pair of Enterprise-ID delimited option spaces for vendors to use in order to inform servers of their "vendor class" (sort of like 'uname' or 'who and what am I'), and a means to deliver vendor-specific and vendor-documented option codes and values.

RFC3942 (Volz, B., “Reclassifying Dynamic Host Configuration Protocol version 4 (DHCPv4) Options,” November 2004.) [RFC3942] redefined the 'site local' option space.

[RFC4280] (Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” November 2005.) defines two BCMS server options for each protocol family.

RFC4388 (Woundy, R. and K. Kinnear, “Dynamic Host Configuration Protocol (DHCP) Leasequery,” February 2006.) [RFC4388] defined the DHCPv4 LEASEQUERY message type and a number of suitable response messages, for the purpose of sharing information about DHCP served addresses and clients.



 TOC 

5.2.1.  Relay Agent Information Option Options

RFC3046 (Patrick, M., “DHCP Relay Agent Information Option,” January 2001.) [RFC3046] defines the Relay Agent Information Option and provides a number of sub-option definitions.

RFC3256 (Jones, D. and R. Woundy, “The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option,” April 2002.) [RFC3256] defines the DOCSIS Device Class sub-option.

RFC3527 (Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, “Link Selection sub-option for the Relay Agent Information Option for DHCPv4,” April 2003.) [RFC3527] defines the Link Selection sub-option.



 TOC 

5.2.2.  Dynamic DNS Updates References

The collection of documents that describe the standards-based method to update dns names of DHCP clients starts most easily with RFC4703 (Stapp, M. and B. Volz, “Resolution of Fully Qualified Domain Name (FQDN) Conflicts among Dynamic Host Configuration Protocol (DHCP) Clients,” October 2006.) [RFC4703] to define the overall architecture, travels through RFCs 4702 (Stapp, M., Volz, B., and Y. Rekhter, “The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option,” October 2006.) [RFC4702] and 4704 (Volz, B., “The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option,” October 2006.) [RFC4704] to describe the DHCPv4 and DHCPv6 FQDN options (to carry the client name), and ends up at RFC4701 (Stapp, M., Lemon, T., and A. Gustafsson, “A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR),” October 2006.) [RFC4701] which describes the DHCID RR used in DNS to perform a kind of atomic locking.

ISC DHCP adopted early versions of these documents, and has not yet synchronized with the final standards versions.

For RFCs 4702 and 4704, the 'N' bit is not yet supported. The result is that it is always set zero, and is ignored if set.

For RFC4701, which is used to match client identities with names in the DNS as part of name conflict resolution. Note that ISC DHCP's implementation of DHCIDs vary wildly from this specification. First, ISC DHCP uses a TXT record in which the contents are stored in hexadecimal. Second, there is a flaw in the selection of the 'Identifier Type', which results in a completely different value being selected than was defined in an older revision of this document...also this field is one byte prior to hexadecimal encoding rather than two. Third, ISC DHCP does not use a digest type code. Rather, all values for such TXT records are reached via an MD5 sum. In short, nothing is compatible, but the principle of the TXT record is the same as the standard DHCID record. However, for DHCPv6 FQDN, we do use DHCID type code '2', as no other value really makes sense in our context.



 TOC 

5.2.3.  Experimental: Failover References

The Failover Protocol defines means by which two DHCP Servers can share all the relevant information about leases granted to DHCP clients on given networks, so that one of the two servers may fail and be survived by a server that can act responsibly.

Unfortunately it has been quite some years (2003) since the last time this document was edited, and the authors no longer show any interest in fielding comments or improving the document.

The status of this protocol is very unsure, but ISC's implementation of it has proven stable and suitable for use in sizable production environments.

draft-ietf-dhc-failover-12.txt (Droms, R., “DHCP Failover Protocol,” March 2003.) [draft‑failover] describes the Failover Protocol. In addition to what is described in this document, ISC DHCP has elected to make some experimental changes that may be revoked in a future version of ISC DHCP (if the draft authors do not adopt the new behaviour). Specifically, ISC DHCP's POOLREQ behaviour differs substantially from what is documented in the draft, and the server also implements a form of 'MAC Address Affinity' which is not described in the failover document. The full nature of these changes have been described on the IETF DHC WG mailing list (which has archives), and also in ISC DHCP's manual pages. Also note that although this document references a RECOVER-WAIT state, it does not document a protocol number assignment for this state. As a consequence, ISC DHCP has elected to use the value 254.

An optimization described in the failover protocol draft is included since 4.2.0a1. It permits a DHCP server operating in communications-interrupted state to 'rewind' a lease to the state most recently transmitted to its peer, greatly increasing a server's endurance in communications-interrupted. This is supported using a new 'rewind state' record on the dhcpd.leases entry for each lease.

[RFC3074] (Volz, B., Gonczi, S., Lemon, T., and R. Stevens, “DHC Load Balancing Algorithm,” February 2001.) describes the Load Balancing Algorithm (LBA) that ISC DHCP uses in concert with the Failover protocol. Note that versions 3.0.* are known to misimplement the hash algorithm (it will only use the low 4 bits of every byte of the hash bucket array).



 TOC 

5.3.  DHCP Procedures

[RFC2939] (Droms, R., “Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types,” September 2000.) explains how to go about obtaining a new DHCP Option code assignment.



 TOC 

6.  DHCPv6 Protocol References



 TOC 

6.1.  DHCPv6 Protocol References

For now there is only one document that specifies the base of the DHCPv6 protocol (there have been no updates yet), [RFC3315] (Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” July 2003.).

Support for DHCPv6 was first added in version 4.0.0. The server and client support only IA_NA. While the server does support multiple IA_NAs within one packet from the client, our client only supports sending one. There is no relay support.

DHCPv6 introduces some new and uncomfortable ideas to the common software library.

  1. Options sometimes may appear multiple times. The common library used to treat all appearance of multiple options as specified in RFC2131 - to be concatenated. DHCPv6 options may sometimes appear multiple times (such as with IA_NA or IAADDR), but often must not. As of 4.2.1-P1, multiple IA_NA, IA_PD or IA_TA are not supported.
  2. The same option space appears in DHCPv6 packets multiple times. If the packet was got via a relay, then the client's packet is stored to an option within the relay's packet...if there were two relays, this recurses. At each of these steps, the root "DHCPv6 option space" is used. Further, a client packet may contain an IA_NA, which may contain an IAADDR - but really, in an abstract sense, this is again re-encapsulation of the DHCPv6 option space beneath options it also contains.

Precisely how to correctly support the above conundrums has not quite yet been settled, so support is incomplete.



 TOC 

6.2.  DHCPv6 Options References

[RFC3319] (Schulzrinne, H. and B. Volz, “Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers,” July 2003.) defines the SIP server options for DHCPv6.

[RFC3646] (Droms, R., “DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” December 2003.) documents the DHCPv6 name-servers and domain-search options.

[RFC3633] (Troan, O. and R. Droms, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6,” December 2003.) documents the Identity Association Prefix Delegation for DHCPv6, which is included here for protocol wire reference, but which is not supported by ISC DHCP.

[RFC3898] (Kalusivalingam, V., “Network Information Service (NIS) Configuration Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” October 2004.) documents four NIS options for delivering NIS servers and domain information in DHCPv6.

[RFC4075] (Kalusivalingam, V., “Simple Network Time Protocol (SNTP) Configuration Option for DHCPv6,” May 2005.) defines the DHCPv6 SNTP Servers option.

[RFC4242] (Venaas, S., Chown, T., and B. Volz, “Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” November 2005.) defines the Information Refresh Time option, which advises DHCPv6 Information-Request clients to return for updated information.

[RFC4280] (Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” November 2005.) defines two BCMS server options for each protocol family.

[RFC4580] (Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Subscriber-ID Option,” June 2006.) defines a DHCPv6 subscriber-id option, which is similar in principle to the DHCPv4 relay agent option of the same name.

[RFC4649] (Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option,” August 2006.) defines a DHCPv6 remote-id option, which is similar in principle to the DHCPv4 relay agent remote-id.



 TOC 

7.  References



 TOC 

7.1. Published DHCPv4 References

[RFC0760] Postel, J., “DoD standard Internet Protocol,” RFC 760, January 1980 (TXT).
[RFC0768] Postel, J., “User Datagram Protocol,” STD 6, RFC 768, August 1980 (TXT).
[RFC0894] Hornig, C., “Standard for the transmission of IP datagrams over Ethernet networks,” STD 41, RFC 894, April 1984 (TXT).
[RFC0951] Croft, B. and J. Gilmore, “Bootstrap Protocol,” RFC 951, September 1985 (TXT).
[RFC1035] Mockapetris, P., “Domain names - implementation and specification,” STD 13, RFC 1035, November 1987 (TXT).
[RFC1188] Katz, D., “Proposed Standard for the Transmission of IP Datagrams over FDDI Networks,” RFC 1188, October 1990 (TXT).
[RFC1542] Wimer, W., “Clarifications and Extensions for the Bootstrap Protocol,” RFC 1542, October 1993 (TXT).
[RFC2131] Droms, R., “Dynamic Host Configuration Protocol,” RFC 2131, March 1997 (TXT, HTML, XML).
[RFC2132] Alexander, S. and R. Droms, “DHCP Options and BOOTP Vendor Extensions,” RFC 2132, March 1997 (TXT, HTML, XML).
[RFC2241] Provan, D., “DHCP Options for Novell Directory Services,” RFC 2241, November 1997 (TXT, HTML, XML).
[RFC2242] Droms, R. and K. Fong, “NetWare/IP Domain Name and Information,” RFC 2242, November 1997 (TXT, HTML, XML).
[RFC2485] Drach, S., “DHCP Option for The Open Group's User Authentication Protocol,” RFC 2485, January 1999 (TXT, HTML, XML).
[RFC2563] Troll, R., “DHCP Option to Disable Stateless Auto-Configuration in IPv4 Clients,” RFC 2563, May 1999 (TXT).
[RFC2610] Perkins, C. and E. Guttman, “DHCP Options for Service Location Protocol,” RFC 2610, June 1999 (TXT).
[RFC2855] Fujisawa, K., “DHCP for IEEE 1394,” RFC 2855, June 2000 (TXT).
[RFC2937] Smith, C., “The Name Service Search Option for DHCP,” RFC 2937, September 2000 (TXT).
[RFC2939] Droms, R., “Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types,” BCP 43, RFC 2939, September 2000 (TXT).
[RFC3004] Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, “The User Class Option for DHCP,” RFC 3004, November 2000 (TXT).
[RFC3011] Waters, G., “The IPv4 Subnet Selection Option for DHCP,” RFC 3011, November 2000 (TXT).
[RFC3046] Patrick, M., “DHCP Relay Agent Information Option,” RFC 3046, January 2001 (TXT).
[RFC3074] Volz, B., Gonczi, S., Lemon, T., and R. Stevens, “DHC Load Balancing Algorithm,” RFC 3074, February 2001 (TXT).
[RFC3118] Droms, R. and W. Arbaugh, “Authentication for DHCP Messages,” RFC 3118, June 2001 (TXT).
[RFC3203] T'Joens, Y., Hublet, C., and P. De Schrijver, “DHCP reconfigure extension,” RFC 3203, December 2001 (TXT).
[RFC3256] Jones, D. and R. Woundy, “The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option,” RFC 3256, April 2002 (TXT).
[RFC3361] Schulzrinne, H., “Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers,” RFC 3361, August 2002 (TXT).
[RFC3396] Lemon, T. and S. Cheshire, “Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4),” RFC 3396, November 2002 (TXT).
[RFC3397] Aboba, B. and S. Cheshire, “Dynamic Host Configuration Protocol (DHCP) Domain Search Option,” RFC 3397, November 2002 (TXT).
[RFC3442] Lemon, T., Cheshire, S., and B. Volz, “The Classless Static Route Option for Dynamic Host Configuration Protocol (DHCP) version 4,” RFC 3442, December 2002 (TXT).
[RFC3456] Patel, B., Aboba, B., Kelly, S., and V. Gupta, “Dynamic Host Configuration Protocol (DHCPv4) Configuration of IPsec Tunnel Mode,” RFC 3456, January 2003 (TXT).
[RFC3495] Beser, B. and P. Duffy, “Dynamic Host Configuration Protocol (DHCP) Option for CableLabs Client Configuration,” RFC 3495, March 2003 (TXT).
[RFC3527] Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, “Link Selection sub-option for the Relay Agent Information Option for DHCPv4,” RFC 3527, April 2003 (TXT).
[RFC3594] Duffy, P., “PacketCable Security Ticket Control Sub-Option for the DHCP CableLabs Client Configuration (CCC) Option,” RFC 3594, September 2003 (TXT).
[RFC3634] Luehrs, K., Woundy, R., Bevilacqua, J., and N. Davoust, “Key Distribution Center (KDC) Server Address Sub-option for the Dynamic Host Configuration Protocol (DHCP) CableLabs Client Configuration (CCC) Option,” RFC 3634, December 2003 (TXT).
[RFC3679] Droms, R., “Unused Dynamic Host Configuration Protocol (DHCP) Option Codes,” RFC 3679, January 2004 (TXT).
[RFC3825] Polk, J., Schnizlein, J., and M. Linsner, “Dynamic Host Configuration Protocol Option for Coordinate-based Location Configuration Information,” RFC 3825, July 2004 (TXT).
[RFC3925] Littlefield, J., “Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4),” RFC 3925, October 2004 (TXT).
[RFC3942] Volz, B., “Reclassifying Dynamic Host Configuration Protocol version 4 (DHCPv4) Options,” RFC 3942, November 2004 (TXT).
[RFC3993] Johnson, R., Palaniappan, T., and M. Stapp, “Subscriber-ID Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 3993, March 2005 (TXT).
[RFC4014] Droms, R. and J. Schnizlein, “Remote Authentication Dial-In User Service (RADIUS) Attributes Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Information Option,” RFC 4014, February 2005 (TXT).
[RFC4030] Stapp, M. and T. Lemon, “The Authentication Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 4030, March 2005 (TXT).
[RFC4039] Park, S., Kim, P., and B. Volz, “Rapid Commit Option for the Dynamic Host Configuration Protocol version 4 (DHCPv4),” RFC 4039, March 2005 (TXT).
[RFC4174] Monia, C., Tseng, J., and K. Gibbons, “The IPv4 Dynamic Host Configuration Protocol (DHCP) Option for the Internet Storage Name Service,” RFC 4174, September 2005 (TXT).
[RFC4243] Stapp, M., Johnson, R., and T. Palaniappan, “Vendor-Specific Information Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 4243, December 2005 (TXT).
[RFC4361] Lemon, T. and B. Sommerfeld, “Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4),” RFC 4361, February 2006 (TXT).
[RFC4388] Woundy, R. and K. Kinnear, “Dynamic Host Configuration Protocol (DHCP) Leasequery,” RFC 4388, February 2006 (TXT).
[RFC4390] Kashyap, V., “Dynamic Host Configuration Protocol (DHCP) over InfiniBand,” RFC 4390, April 2006 (TXT).
[RFC4436] Aboba, B., Carlson, J., and S. Cheshire, “Detecting Network Attachment in IPv4 (DNAv4),” RFC 4436, March 2006 (TXT).
[RFC4701] Stapp, M., Lemon, T., and A. Gustafsson, “A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR),” RFC 4701, October 2006 (TXT).
[RFC4702] Stapp, M., Volz, B., and Y. Rekhter, “The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option,” RFC 4702, October 2006 (TXT).
[RFC4703] Stapp, M. and B. Volz, “Resolution of Fully Qualified Domain Name (FQDN) Conflicts among Dynamic Host Configuration Protocol (DHCP) Clients,” RFC 4703, October 2006 (TXT).
[RFC5010] Kinnear, K., Normoyle, M., and M. Stapp, “The Dynamic Host Configuration Protocol Version 4 (DHCPv4) Relay Agent Flags Suboption,” RFC 5010, September 2007 (TXT).
[RFC5071] Hankins, D., “Dynamic Host Configuration Protocol Options Used by PXELINUX,” RFC 5071, December 2007 (TXT).
[RFC5107] Johnson, R., Kumarasamy, J., Kinnear, K., and M. Stapp, “DHCP Server Identifier Override Suboption,” RFC 5107, February 2008 (TXT).
[RFC5192] Morand, L., Yegin, A., Kumar, S., and S. Madanapalli, “DHCP Options for Protocol for Carrying Authentication for Network Access (PANA) Authentication Agents,” RFC 5192, May 2008 (TXT).
[RFC5223] Schulzrinne, H., Polk, J., and H. Tschofenig, “Discovering Location-to-Service Translation (LoST) Servers Using the Dynamic Host Configuration Protocol (DHCP),” RFC 5223, August 2008 (TXT).
[RFC5859] Johnson, R., “TFTP Server Address Option for DHCPv4,” RFC 5859, June 2010 (TXT).
[RFC5969] Townsley, W. and O. Troan, “IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) -- Protocol Specification,” RFC 5969, August 2010 (TXT).
[draft-failover] Droms, R., “DHCP Failover Protocol,” March 2003.
[I-D.ietf-dhc-dhcpv4-relay-encapsulation] Lemon, T. and H. Deng, “Relay Agent Encapsulation for DHCPv4,” draft-ietf-dhc-dhcpv4-relay-encapsulation-00 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-dhcpv4-bulk-leasequery] Kinnear, K., Volz, B., Russell, N., Stapp, M., Rao, D., Joshi, B., and P. Kurapati, “Bulk DHCPv4 Lease Query,” draft-ietf-dhc-dhcpv4-bulk-leasequery-03 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-leasequery-by-remote-id] Kurapati, P. and B. Joshi, “DHCPv4 lease query by Relay Agent Remote ID,” draft-ietf-dhc-leasequery-by-remote-id-09 (work in progress), December 2010 (TXT).
[I-D.ietf-dhc-relay-id-suboption] Stapp, M., “The DHCPv4 Relay Agent Identifier Suboption,” draft-ietf-dhc-relay-id-suboption-07 (work in progress), July 2009 (TXT).
[I-D.ietf-mip6-hiopt] Jang, H., Yegin, A., Chowdhury, K., and J. Choi, “DHCP Options for Home Information Discovery in MIPv6,” draft-ietf-mip6-hiopt-17 (work in progress), May 2008 (TXT).


 TOC 

7.2. Published Common (DHCPv4/DHCPv6) References

[RFC4280] Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” RFC 4280, November 2005 (TXT).
[RFC4477] Chown, T., Venaas, S., and C. Strauf, “Dynamic Host Configuration Protocol (DHCP): IPv4 and IPv6 Dual-Stack Issues,” RFC 4477, May 2006 (TXT).
[RFC4578] Johnston, M. and S. Venaas, “Dynamic Host Configuration Protocol (DHCP) Options for the Intel Preboot eXecution Environment (PXE),” RFC 4578, November 2006 (TXT).
[RFC4776] Schulzrinne, H., “Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Option for Civic Addresses Configuration Information,” RFC 4776, November 2006 (TXT).
[RFC4833] Lear, E. and P. Eggert, “Timezone Options for DHCP,” RFC 4833, April 2007 (TXT).
[RFC5417] Calhoun, P., “Control And Provisioning of Wireless Access Points (CAPWAP) Access Controller DHCP Option,” RFC 5417, March 2009 (TXT).
[RFC5678] Bajko, G. and S. Das, “Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Options for IEEE 802.21 Mobility Services (MoS) Discovery,” RFC 5678, December 2009 (TXT).
[RFC5908] Gayraud, R. and B. Lourdelet, “Network Time Protocol (NTP) Server Option for DHCPv6,” RFC 5908, June 2010 (TXT).
[RFC5970] Huth, T., Freimann, J., Zimmer, V., and D. Thaler, “DHCPv6 Options for Network Boot,” RFC 5970, September 2010 (TXT).
[RFC5986] Thomson, M. and J. Winterbottom, “Discovering the Local Location Information Server (LIS),” RFC 5986, September 2010 (TXT).
[I-D.ietf-dhc-vpn-option] Kinnear, K., Johnson, R., and M. Stapp, “Virtual Subnet Selection Options for DHCPv4 and DHCPv6,” draft-ietf-dhc-vpn-option-12 (work in progress), October 2010 (TXT).


 TOC 

7.3. Published DHCPv6 References

[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3315, July 2003 (TXT).
[RFC3319] Schulzrinne, H. and B. Volz, “Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers,” RFC 3319, July 2003 (TXT).
[RFC3633] Troan, O. and R. Droms, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6,” RFC 3633, December 2003 (TXT).
[RFC3646] Droms, R., “DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3646, December 2003 (TXT).
[RFC3736] Droms, R., “Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6,” RFC 3736, April 2004 (TXT).
[RFC3898] Kalusivalingam, V., “Network Information Service (NIS) Configuration Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3898, October 2004 (TXT).
[RFC4075] Kalusivalingam, V., “Simple Network Time Protocol (SNTP) Configuration Option for DHCPv6,” RFC 4075, May 2005 (TXT).
[RFC4076] Chown, T., Venaas, S., and A. Vijayabhaskar, “Renumbering Requirements for Stateless Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 4076, May 2005 (TXT).
[RFC4242] Venaas, S., Chown, T., and B. Volz, “Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 4242, November 2005 (TXT).
[RFC4580] Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Subscriber-ID Option,” RFC 4580, June 2006 (TXT).
[RFC4649] Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option,” RFC 4649, August 2006 (TXT).
[RFC4704] Volz, B., “The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option,” RFC 4704, October 2006 (TXT).
[RFC4994] Zeng, S., Volz, B., Kinnear, K., and J. Brzozowski, “DHCPv6 Relay Agent Echo Request Option,” RFC 4994, September 2007 (TXT).
[RFC5007] Brzozowski, J., Kinnear, K., Volz, B., and S. Zeng, “DHCPv6 Leasequery,” RFC 5007, September 2007 (TXT).
[RFC5460] Stapp, M., “DHCPv6 Bulk Leasequery,” RFC 5460, February 2009 (TXT).
[I-D.ietf-mif-dhcpv6-route-option] Dec, W., Mrugalski, T., Sun, T., and B. Sarikaya, “DHCPv6 Route Option,” draft-ietf-mif-dhcpv6-route-option-01 (work in progress), March 2011 (TXT).
[I-D.ietf-dhc-dhcpv6-ldra] Miles, D., Ooghe, S., Dec, W., Krishnan, S., and A. Kavanagh, “Lightweight DHCPv6 Relay Agent,” draft-ietf-dhc-dhcpv6-ldra-03 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-dhcpv6-relay-supplied-options] Lemon, T. and W. Wu, “Relay-Supplied DHCP Options,” draft-ietf-dhc-dhcpv6-relay-supplied-options-06 (work in progress), May 2011 (TXT).
[I-D.ietf-dhc-pd-exclude] Korhonen, J., Savolainen, T., Krishnan, S., and O. Troan, “Prefix Exclude Option for DHCPv6-based Prefix Delegation,” draft-ietf-dhc-pd-exclude-01 (work in progress), January 2011 (TXT).
[I-D.ietf-dhc-secure-dhcpv6] Jiang, S., “Secure DHCPv6 Using CGAs,” draft-ietf-dhc-secure-dhcpv6-02 (work in progress), December 2010 (TXT).
[I-D.ietf-mext-nemo-pd] Droms, R., Thubert, P., Dupont, F., Haddad, W., and C. Bernardos, “DHCPv6 Prefix Delegation for NEMO,” draft-ietf-mext-nemo-pd-07 (work in progress), December 2010 (TXT).
[I-D.ietf-dhc-duid-uuid] Narten, T. and J. Johnson, “Definition of the UUID-based DHCPv6 Unique Identifier (DUID-UUID),” draft-ietf-dhc-duid-uuid-03 (work in progress), February 2011 (TXT).
[I-D.ietf-softwire-ds-lite-tunnel-option] Hankins, D. and T. Mrugalski, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual- Stack Lite,” draft-ietf-softwire-ds-lite-tunnel-option-10 (work in progress), March 2011 (TXT).
[I-D.ietf-mif-dns-server-selection] Savolainen, T. and J. Kato, “Improved DNS Server Selection for Multi-Homed Nodes,” draft-ietf-mif-dns-server-selection-01 (work in progress), March 2011 (TXT).
[I-D.ietf-geopriv-rfc3825bis] Polk, J., Linsner, M., Thomson, M., and B. Aboba, “Dynamic Host Configuration Protocol Options for Coordinate-based Location Configuration Information,” draft-ietf-geopriv-rfc3825bis-17 (work in progress), February 2011 (TXT).
[draft-addr-params] Mrugalski, T., “Address Parameters Option for DHCPv6,” April 2007.


 TOC 

Authors' Addresses

  David W. Hankins
  Internet Systems Consortium, Inc.
  950 Charter Street
  Redwood City, CA 94063
  
  Tomasz Mrugalski
  Internet Systems Consortium, Inc.
  950 Charter Street
  Redwood City, CA 94063
Phone:  +1 650 423 1345
Email:  Tomasz_Mrugalski@@isc.org
@ 1.1 log @Initial revision @ text @@ 1.1.1.1 log @from ftp.isc.org @ text @@ 1.1.1.2 log @updat to 4.2.5 @ text @d148 1 a148 1  January 04, 2012 a742 4

[RFC5453] (Krishnan, S., “Reserved IPv6 Interface Identifiers,” February 2009.) creates a registry at IANA to reserve interface identifiers and specifies a starting set. These IIDs should not be used when constructing addresses to avoid possible conflicts.

a976 2 [RFC5453] Krishnan, S., “Reserved IPv6 Interface Identifiers,” RFC 5453, February 2009 (TXT). d980 1 a980 1 Dec, W., Mrugalski, T., Sun, T., and B. Sarikaya, “DHCPv6 Route Options,” draft-ietf-mif-dhcpv6-route-option-03 (work in progress), September 2011 (TXT). d984 1 a984 1 Lemon, T. and W. Wu, “Relay-Supplied DHCP Options,” draft-ietf-dhc-dhcpv6-relay-supplied-options-09 (work in progress), September 2011 (TXT). @ 1.1.1.2.32.1 log @Sync with HEAD, resolve some conflicts @ text @@ 1.1.1.3 log @ Internet Systems Consortium DHCP Distribution Version 4.4.1 28 February 2018 Release Notes NEW FEATURES Please note that that ISC DHCP is now licensed under the Mozilla Public License, MPL 2.0. Please see https://www.mozilla.org/en-US/MPL/2.0/ to read the MPL 2.0 license terms. The areas of focus for ISC DHCP 4.4 were: 1. Dynamic DNS additions 2. dhclient improvements 3. Support for dynamic shared libraries Dynamic DNS Improvements: - We added three new server configuration parameters which influence DDNS conflict resolution: 1. ddns-dual-stack-mixed-mode - alters DNS conflict resolution behavior to mitigate issues with non-compliant clients in dual stack environments. 2. ddns-guard-id-must-match - relaxes the DHCID RR client id matching requirement of DNS conflict resolution. 3. ddns-other-guard-is-dynamic - alters dual-stack-mixed-mode behavior to allow unguarded DNS entries to be overwritten in certain cases - The server now honors update-static-leases parameter for static DHCPv6 hosts. dhclient Improvements: - We've added three command line parameters to dhclient: 1. --prefix-len-hint - directs dhclient to use the given length as the prefix length hint when requesting prefixes 2. --decline-wait-time - instructs the client to wait the given number of seconds after declining an IPv4 address before issuing a discover 3. --address-prefix-len - specifies the prefix length passed by dhclient into the client script (via the environment variable ip6_prefixlen) with each IPv6 address. We added this parameter because we have changed the default value from 64 to 128 in order to be compliant with RFC3315bis draft (-09, page 64) and RFC5942, Section 4, point 1. **WARNING**: The new default value of 128 may not be backwardly compatible with your environment. If you are operating without a router, such as between VMs on a host, you may find they cannot see each other with prefix length of 128. In such cases, you'll need to either provide routing or use the command line parameter to set the value to 64. Alternatively you may change the default at compile time by setting DHCLIENT_DEFAULT_PREFIX_LEN in includes/site.h. - dhclient will now generate a DHCPv6 DECLINE message when the client script indicates a DAD failure Dynamic shared library support: Configure script, configure.ac+lt, which supports libtool is now provided with the source tar ball. This script can be used to configure ISC DHCP to build with libtool and thus use dynamic shared libraries. Other Highlights: - The server now supports dhcp-cache-threshold for DHCPv6 operations - The server now supports DHPv6 address allocation based on EUI-64 DUIDs - Experimental support for alternate relay port in the both the server and relay for IPv4, IPv6 and 4o6 (see: draft-ietf-dhc-relay-port-10.txt) For information on how to install, configure and run this software, as well as how to find documentation and report bugs, please consult the README file. ISC DHCP uses standard GNU configure for installation. Please review the output of "./configure --help" to see what options are available. The system has only been tested on Linux, FreeBSD, and Solaris, and may not work on other platforms. Please report any problems and suggested fixes to . ISC DHCP is open source software maintained by Internet Systems Consortium. This product includes cryptographic software written by Eric Young (eay@@cryptsoft.com). Changes since 4.4.0 (New Features) - none Changes since 4.4.0 (Bug Fixes) - A delayed-ack value of 0 (the default), now correctly disables the delayed feature. A change in 4.4.0 prohibited lease updates marking leases active from be written to the lease file when delayed-ack is 0. This in turn, caused servers to lose active lease assignments upon restart. [ISC-Bugs #47141] ! Option reference count was not correctly decremented in error path when parsing buffer for options. Reported by Felix Wilhelm, Google Security Team. [ISC-Bugs #47140] CVE: CVE-2018-5733 ! Corrected an issue where large sized 'X/x' format options were causing option handling logic to overwrite memory when expanding them to human readable form. Reported by Felix Wilhelm, Google Security Team. [ISC-Bugs #47139] CVE: CVE-2018-5732 Changes since 4.4.0b1 (New Features) - Duplicate address detection when binding to a new IPv6 address was added to the following dhclient scripts: linux,freebsd,netbsd,openbsd, and macos. The scripts will check for DAD errors after binding to a new IPv6 address for at most --dad-wait-time seconds. If a DAD error is detected the script will exit with a value of 3, instructing dhclient to decline the address. If dad-wait-time is zero (the default), DAD error checking is not peformed. [ISC-Bugs 46805] - Support for sending and receiving additional DHCP4 options has been added to both the dhcpd and dhclient. Specifically: option codes 93,94, and 97 (RFC 4578); code 150 (RFC 5859); and codes 209,219, and 211 (RFC 5071). Beyond configuring, sending, requesting, and receiving these options neither server nor client apply any additional logic based on their values. Thanks to Peter Lewis for requesting this change. [ISC-Bugs 47062] Changes since 4.4.0b1 (Bug Fixes) - Added clarifying text to dhcpd.conf.5 explaining the class match expressions cannot rely on the results of executable statements. [ISC-Bugs #45451] - Fixed a bug which causes dhcpd and dhclient to crash on certain systems when given relative path names for lease or pid files on the command line. Affected systems are those on which the C library function, realpath() does not support a second parameter value of NULL (see manpages for realpath(3)). [ISC-Bugs #46957] - Fixed a build issue when building with embedded BIND9 under OpenBSD that was causing BIND9 build to not generate dns/enumclass.h and dns/enumtype.h. [ISC-Bugs #46971] - Added /m4/README to the distribution tarball. Some versions of ac_local() treat the absence of the m4 subdirectory as error rather than warning. This was causing the call to autoreconf, necessary for building with libtool, to fail. [ISC-Bugs #47075] Changes since 4.4.0a1 (New Features) - Added experimental support for relay port (draft-ietf-dhc-relay-port-10.txt) feature for DHCPv4, DHCPv6 and DHCPv4-over-DHCPv6. Relay port has to be enabled at compile time via --enable-relay-port and is fully backward compatible (i.e. works with previous implementations of servers and relays using the standard ports). A new --rp command line option specifies to dhcrelay an alternate source port for upstream (i.e. toward the server) messages. Thanks to Naiming Shen and Enke Chen of Cisco systems for submitting these patches. [ISC-Bugs #44535] - Added --release-on-roam to dhcpd server. When enabled and the server detects that a DHCPv6 client (IAID+DUID) has roamed to a new network, it will release the pre-existing leases on the old network and emit a log statement similar to the following: "Client: roamed to new network, releasing lease:
" The server will carry out all of the same steps that would normally occur when a client explicitly releases a lease. This behavior is disabled by default and may only be specified globally. Prior to this the server renders the leases unavailable until they expire or the server is restarted. Clients that need leases in multiple networks must supply a unique IAID in each IA. When release-on-roam is disabled (the default) the server maintains the prior behavior of making such leases unavailable until they expire or the server is restarted. Clients that need leases in multiple networks must supply a unique IAID in each IA. This parameter may only be specified at the global level. Thanks to Fernando Soto from BlueCat Networks for suggesting this change. [ISC-Bugs #44576] [ISC-Bugs #46849] - Support for delayed-ack is now compiled in by default. Prior to this it had to be enabled at compile time via --enable-delayed-acks. The default value for delayed-ack, however, has been changed from 28 to 0 (i.e. disabled). This was done to minimize the impact on users not currently using the feature. Please note that the delayed-ack feature is not currently compatible with support for DHPCv4-over-DHCPv6 so when a 4to6 port command line argument enables this in the server the delayed-ack value is reset to 0. [ISC-Bugs #42446] - The server (-6) now honors the parameter, update-static-leases, for static (fixed-address6) DHCPv6 leases. It is worth noting that because stateful data is not retained by the server for static leases, each time a client requests or renews a static lease, the server will perform DDNS updates for it. This may have significant performance implications for environments with many clients that request or renew static leases often. Similarly, the DNS entries will not be removed by server when a client issues a RELEASE nor if the lease is deleted from the configuration. In such cases the DNS entries must be removed manually. This feature is disabled by default. Thanks to both Bill Shirley and dgutier-at-cern-dot-ch for requesting this change. [ISC-Bugs #34097] [ISC-Bugs #41054] [ISC-Bugs #41450] - Added to the server (-6) a new statement, local-address6, which specifies the source address of packets sent by the server. An additional flag, bind-local-address6, disabled by default, binds the service socket to to local-address6. Note that bind-local-address does not work with direct clients: a relay has to forward packets to the server using the local-address6 destination. [ISC-Bugs #46084] Changes since 4.4.0a1 (Bugs) - The server now recognizes environment variables PATH_DHCPD_DB and PATH_DHCPD_PID. These had been incorrectly compiled out of the code unless DHCPv6 support was disabled. Additionally, the server man pages were corrected to accurately reflect how the server chooses file names (see lease-file-name and pid-file-name statements). Thanks to Fernando Soto at Bluecat Networks for bringing this matter to our attention. [ISC-Bugs #46859] - Removed an "Impossible condition" error upon exit in the dhcpd server that has been shutdown via OMAPI. This condition was only apparent under Solaris when building with --enable-use-sockets and --enable-ipv4-pktinfo. [ISC-Bugs #36118] - Corrected some minor Coverity issues: CID 1426059, 1426058, and 1426057. [ISC-Bugs #46836] - Added missing text to dhclient.8 and expanded release note coverage for --address-prefix-len changes. Changes since 4.3.6 (New Features) - Added --enable-bind-install to install embedded bind includes and libraries. Default is to not install them (it was the previous behavior). If you'd like to change the includedir and/or libdir installation directories to something different than for ISC DHCP you must pass them using the --with-bind-extra-config configuration arguments. [ISC-Bugs #39318] - Added support of dynamic shared libraries with libtool. A new --enable-libtool configuration parameter is available but should not be used directly: *please* read the build configuration section in the README file for the recommended procedure. [ISC-Bugs #29402] - IPv6 operation now supports an EUI-64 based address allocation which will calculate addresses for clients with EUI-64 DUIDs based on those DUIDs when enabled by setting use-eui-64 true. The parameter may defined down to the pool scope. Note this feature must be compiled in by defining EUI_64 in includes/site.h. This flag is undefined by default. [ISC-Bugs #43927] - The directory includes/isc-dhcp and it's only occupant, dst.h, have been removed from the source tree. They are obsolete for branches other than v4_1_esv. [ISC-bugs #45541] - Replaced ISC licensing with Mozilla Public License, MPL 2.0 licensing throughout. Please see https://www.mozilla.org/en-US/MPL/2.0/ to read the MPL 2.0 license terms. [ISC-Bugs #45541] - Load balancing for failover peers can now be disabled by setting "load balance max secs" to 0. Doing so for both peers means both servers will respond to all DHCPDISCOVERs or DHCPREQUESTs as soon as they are received. [ISC-Bugs #39669] - Added a new dhclient command line parameter, --prefix-len-hint . When used in conjunction with -P, it directs dhclient to use the given length as the prefix length hint when requesting prefixes. Thanks to both Indy, of the FireballISO open source project and H. Peter Anvin for suggesting this change. [ISC-Bugs #43792] [ISC-Bugs #35112] [ISC-Bugs #32228] [ISC-Bugs #29470] - dhclient will now wait for 10 seconds after declining an IPv4 address before issuing a discover. This is in keeping with RFC 2131, section 3.1.5. Prior to this dhclient did not wait at all. The amount of time dhclient waits can be specified via a new command line parameter: --decline-wait-time . A value of zero equates to no wait at all. Thanks to Pavel Kankovsky for bringing this matter to our attention. **NOTE: THIS IS CHANGE IN DEFAULT BEHAVIOR. [ISC-Bugs #45457] - dhclient will now include the lease address when logging DHCPOFFERs, DHCPREQUESTs, DHCPACKs, DHCPRELEASEs, and DHCPDECLINEs. Additionally, DHCPOFFERs will be logged before their corresponding DHCPREQUESTs are sent and logged. [ISC-Bugs #2729] - When given the -T command line argument, in addition to reading the current lease file, the server will write the leases to a temporary lease file. This can help detect issues in server configuration that only surface when leases are written to the file. The current lease file will not be modified and the temporary lease file is removed upon completion of the test. [ISC-Bugs #22267] - dhclient will now generate a DHCPv6 DECLINE message containing all IA_NA addresses which for which the client script indicates a DAD failure. After receiving the DECLINE reply, dhclient will restart the solicit process. Note, the client script must exit with a value of 3 to signify that the address failed DAD. Thanks to Jiri Popelka of Red Hat for submitting the patch that was the foundation for this change. **NOTE: THIS IS CHANGE IN DEFAULT BEHAVIOR. [ISC-Bugs #21237] [ISC-Bugs #23357] [ISC-Bugs #36966] - Replaced compilation option, enable-secs-byteorder, with a run-time, server configuration parameter, check-secs-byte-order. When enabled, the server will check for clients that do the byte ordering on the secs field incorrectly. This field should be in network byte order but some clients get it wrong. When this parameter is enabled the server will examine the secs field and if it looks wrong (high byte non zero and low byte zero) swap the bytes. The default is disabled. This parameter is only useful when doing load balancing within failover. [ISC-Bugs #45364] - The default value for server (-6) parameter, prefix-length-mode, has been changed from "exact" to "prefer". In "prefer" mode the server will offer the first available prefix with the same length as that requested by the client. If none are found then it will offer the first available prefix of any length. This is more in line with with RFC 8168 and should improve the out-of-the-box user experience. **NOTE: THIS IS CHANGE IN DEFAULT BEHAVIOR. [ISC-Bugs #45615] - Added support for 'dhcp-cache-threshold' to IPv6 operation: If a client renews before 'dhcp-cache-threshold' percent of its lease has elapsed (default 25%), the server will reuse the allocated lease (provide a lease within the currently allocated lease-time) rather than extend or renew the lease. This allows the server to reply without needlessly writing leases to disk. The preferred and valid lease lifetimes sent to the client will be reduced by the age of the lease. The option may be specified down to the pool level and is supported for all three pool types: NA, TA, and PD. [ISC-Bugs #45292] - Added three new server configuration parameters which influence DDNS: 1. ddns-dual-stack-mixed-mode - alters DNS conflict resolution behavior to mitigate issues with non-compliant clients in dual stack environments. 2. ddns-guard-id-must-match - relaxes the DHCID RR client id matching requirement of DNS conflict resolution. 3. ddns-other-guard-is-dynamic - alters dual-stack-mixed-mode behavior to allow unguarded DNS entries to be overwritten in certain cases [ISC-Bugs #42620] [ISC-Bugs #42621] [ISC-Bugs #44753] - A "key-algorithm " statement has been added to omshell to allow the specification of the key algorithm to use during transaction authentication. Prior to this it was hard-coded to be hmac-md5. It now supports all of the same algorithms as the dhcpd server: hmac-md5 (the default), hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, and hmac-sha512. [ISC-Bugs #46771] - Added a server configuration parameter, persist-eui-64-leases, which determines whether or not EUI-64 based leases are written to the leases file. Default is true. [ISC-Bugs #45046] - Changed the default value of the prefix length passed by dhclient into the client script for each IPv6 address from 64 to 128. This was done to comply with RFC3315bis draft (-09, page 64) and RFC5942, Section 4, point 1. In addition, dhclient now supports a command line argument, --address-prefix-len, which may be used to override the default value. **WARNING**: This change may not be backwardly compatible with your environment. If you are operating without a router, such as between VMs on a host, you may find they cannot see each with prefix length of 128. In such cases, you'll need to either provide routing or use the command line parameter to set the value to 64. Alternatively you may change the default at compile time by setting DHCLIENT_DEFAULT_PREFIX_LEN in includes/site.h. [ISC-Bugs #23252] [ISC-Bugs #37221] - Modified dhclient (-6) to bypass sending a confirm (INIT REBOOT) when it has only expired address associations. Thanks to Jiri Popelka at Red Hat for raising the issue and submitting the patch. [ISC-Bugs #22675] Changes since 4.3.6 (Bugs): - Corrected an issue where the server would return a client's previously released prefix lease even when the client provides a prefix length hint that does not match the prior lease. Now the server will only return the previous lease if it exactly matches the hint. If not it will attempt to allocate a new prefix based on the hint and the prefix-length-mode. Thanks to Tim DeNike - Lightspeed Communications for pointing out the error of our ways. [ISC-bugs #45780] - Added explicit include of BIND9 isc/util.h to adapt to revisions in BIND9 (see BIND9 ticket #46311). Prior to this the build was failing with implicit function declarations errors for POST() and INSIST(). [ISC-bugs #46332] - Added to code ignore empty IPv4 host name option (code 12). While RFC 2132 states the option cannot be empty, some clients are apparently capable of sending it. Prior to this the server was attempting to use it and store it in the lease file causing issues with DDNS and so forth. [ISC-bugs #43786] - Corrected dhclient command line parsing for --dad-wait-time that causes even valid values to fail as invalid on some environments. [ISC-Bugs #46535] - Replaced iasubopt::heap_index with separate values for active and inactive heaps: iasubopt::active_index and iasubopt::inactive_index. This was done to accommodate a change in behavior in BIND9 isc_heap_delete(). [ISC-bugs #46719] ! Plugged a socket descriptor leak in OMAPI, that can occur when there is data pending to be written to an OMAPI connection, when the connection is closed by the reader. Thanks to Pavel Zhukov at RedHat for bringing this issue to our attention and whose patch helped guide us in the right direction. [ISC-Bugs #46767] - The ability of the server to send back dhcp6.vendor-opts values has been restored. A change in 4.3.5 (see #29246) which enabled it to send back the FQDN option unfortunately broke its ability send back dhcp6.vendor-opts. Thanks to Sumant Gupta (sumantgupta at gmail dot com) of Landis+Gry for bringing this issue to our attention. [ISC-Bugs #46427] Changes since 4.3.6b1 - None Changes since 4.3.5 - The server now allows the client identifier (option 61) to own leases in more than one subnet concurrently. Prior to this the server would incorrectly release an existing lease in one subnet prior to assigning a lease in another subnet. Note that the prior behavior can be still be achieved by enabling one-lease-per-client. Thanks to both David Zych at the University of Illinois and Norm Proffitt of Infoblox for reporting the issue; and Norm for suggesting a solution. [ISC-Bugs #41358] - When replying to a DHCPINFORM, the server will now include options specified at the pool scope, provided the ciaddr field of the DHCPINFORM is populated. Prior to this the server only evaluated options down to the subnet scope. Thanks to Fernando Soto at BlueCat Networks for reporting the issue. [ISC-Bugs #43219] [ISC-Bugs #45051] - When memory allocation fails in a repeated way the process writes "Run out of memory." on the standard error and exists with status 1. [ISC-Bugs #32744] - The new lmdb (Lightning Memory DataBase) bind9 configure option is now disabled by default to avoid the presence of this library to be detected which can lead to a link failure. [ISC-Bugs #45069] - The linux interface discovery code has been modified to use getifaddrs() as is done for BSD and OS-X. Prior to this the code would only recognize the first address on an interface and thereby omit vlans. Thanks to Jiri Popelka at Redhat, Marius Tomaschewski at SUSE, and Wei Kong at Novell, who all submitted patches. [ISC-Bugs #28761] [ISC-Bugs #31992] [ISC-Bugs #25428] [ISC-Bugs #31940] [ISC-Bugs #32935] - Fixed a bug in OMAPI that causes omshell to crash when a name-value pair with a zero length value is shipped in an object. Thanks to Fernando Soto at BlueCat Networks for reporting the issue and supplying the patch. [ISC-Bugs #29108] - On 64-bit platforms, dhclient now generates the correct value for the script environment variable, "expiry", the lease expiry value exceeds 0x7FFFFFFF. Prior to this such values would produce negative values for expiry in the script environment. [ISC-Bugs #43326] - Common timer logic was modified to cap the maximum timeout values at 0x7FFFFFFF - 1. Values larger than that were causing fatal timer out of range errors on 64-bit platforms. Thanks to Jiri Popelka at Red Hat for reporting the issue. [ISC-Bugs #28038] - DHCP6 FQDN option unpacking code now correctly handles values that contain spaces, special, or non-printable characters. Prior to this the buffer size needed was underestimated causing a conversion error message to be logged and DNS updates to be skipped. Thanks to Fernando Soto at BlueCat Networks for bringing the matter to our attention. [ISC-Bugs #43592] - When running in -6 mode, dhclient can enforce the require option statement and will discard offered leases that do not contain all the required options specified in the client configuration. If not enabled the client will still consider such leases. This must be enabled at compile time (see ENFORCE_DHCPV6_CLIENT_REQUIRE in includes/site.h). Thanks to Mritunjaykumar Dubey at Nokia for reporting the issue. [ISC-Bugs #41473] - Altered DHCPv4 lease time calculation to avoid roll over errors on 64-bit OS systems when using -1 or large values for default-lease-time. Rollover values will be replaced with 0x7FFFFFFF - 1. This alleviates unintentionally short expiration times being handed out when infinite lease times (-1) in conjunction with failover. Our thanks to Alessandro Gherardi for bringing the issue to our attention. [ISC-Bugs #41976] - Added new compile time option --with-srv-conf-file which specifies a default location of the server configuration file. [ISC-Bugs #44765] - Added --dad-wait-time parameter to dhclient. It specifies the maximum time, in seconds, that the client process should wait for the duplicate address detection to complete before initiating DHCP requests. This value is propagated to the dhclient script and the script is responsible for waiting the specified amount of time or until DAD has completed. If the script does not support it, specifying this parameter has no effect. The default value is 0 which specifies that the script should not wait for DAD. With this change the following scripts have been modified to support the new parameter: freebsd, linux, macos, netbsd, openbsd. [ISC-Bugs #36169] - The server nows checks both the address and length of a prefix delegation when attempting to match it to a prefix pool. This ensures the server responds properly when pool configurations change such that once valid, "in-pool" delegations are now treated as being invalid. During lease file loading at startup, the server will discard any PD leases that are deemed "out-of-pool" either by address or mis-matched prefix length. Clients seeking to renew or rebind such leases will get a response of No Binding in the case of the former, and the prefix delegation with lifetimes set to zero in the case of the latter. Thanks to Mark Nejedlo at TDS Telecom for reporting this issue. [ISC-Bugs #35378] - Modified DDNS support initialization such that DNS related ports will only be opened by the server (dhcpd) at startup if ddns-update-style is not "none"; by dhclient only if and when the it first attempts an update; and never by dhcrelay. Prior to this all three always did the initialization at startup which causes them to always open on and listen for traffic on two random ports. Thanks to Rodney Beede for reporting this issue. [ISC-Bugs #45290] [ISC-Bugs #33377] - Added error logging to two memory allocation failure checks. Thanks to Bill Parker (wp02855 at gmail dot com) for reporting the issue. [ISC-Bugs #41185] - Corrected a dhclient -6 issue that caused the client to crash with an "Impossible condition" error after de-preferencing its only IA binding. The crash occurred when server configuration changes rendered the existing binding out-of-range and no other leases were available to offer. Thanks to Pierre Clerissi for bringing this issue to our attention. [ISC-Bugs #44373] - By defining CALL_SCRIPT_ON_ONETRY_FAIL in includes/site.h, dhclient will now call the script with reason set to FAIL when run with -1 (one try) and there are no server responses. This applies to IPv4 mode only. Thanks for a patch by Martin Pitt which got to us via Andrew Pollock. [ISC-bugs #18183] - The server now detects failover peers that are not referenced in at least one pool when run with the command line option for test mode, -T. Prior to this the check was performed too far down stream to be detected in test mode. [ISC-Bugs #29892] - Linux script updated. The script is now based on Debian version. It uses ip tool from iproute2 package and ifconfig is no longer used. This also addresses an issue of calling arping with inappropriate parameter. [ISC-bugs #19430] [ISC-bugs #18111] - Changed severity of the log message indicating UDP checksum errors in the received packets from 'info' to 'debug' to avoid logging excessive number of false positives when UDP checksum offloading is enabled. [ISC-bugs #41757] - The directory minires has been removed from the source tree. It has long been obsolete for branches other than v4_1_esv. Additionally, includes/minires.h was renamed includes/ns_name.h. [ISC-bugs #45471] - Replaced ifconfig parameters "add" and "delete" with "alias" and "-alias" for IPv6 mode in the client scripts, netbsd and openbsd. This was preventing IPv6 addresses from being added or removed from interfaces. Thanks to Tim Dean for reporting this issue. [ISC-bugs #31573] Changes since 4.3.5b1 - Corrected a bug which could cause the server to sporadically crash while loading lease files with the lease-id-format is set to "hex". Our thanks to Jay Ford, University of Iowa for reporting the issue. [ISC-Bugs #43185] - Eliminated a noisy, but otherwise harmless debug log statment that may appear during server startup when building with --enable-binary-leases and configuring multiple pools in a shared network. Thanks to Fernando Soto from BlueCat Networks for reporting the issue and supplying a patch. [ISC-Bugs #43262] Changes since 4.3.4 - Fixed util/bindvar.sh error handling. [ISC-Bugs #41973] - Correct error message in relay to use remote id length instead of circuit id length. [ISC-Bugs #42556] - Add logic to test directory Makefiles to avoid copying Attfile(s) when building within the source tree. This eliminates a noisy but otherwise harmless error message when running "make check". [ISC-Bugs #41883] - Leases are now scrubbed of certain prior use information when pool re-balancing reassigns them from one FO peer to the other. This corrects an issue where leases that were offered but not used by the client retained the client hostname from the original client. Thanks to Pavel Polacek, Jan Evangelista Purkyne University for reporting the issue. [ISC-Bugs #42008] - In the LDAP code and schema add some missing '6' characters to use the v6 instead of the v4 versions. Thanks to Denis Taranushin for reporting this issue and supplying its patch. [ISC-Bugs #42666] - Correct how the pick-first-value expression is written to a lease file. Previously it was written as a concat expression due to a cut and paste error. [ISC-Bugs #42253] - Modify the DDNS code to clean up the PTR record even if there are issues while cleaning up the A or AAAA records. [ISC-Bugs #23954] - Added global configuration parameter, abandon-lease-time, which determines the amount of time a lease remains abandoned. The default is 84600 seconds. Additionaly, the server now conducts a ping check (if ping checks are enabled) prior to offering an abandoned lease to client. Our thanks to David Zych at University of Illinois for reporting the issue and working with us to produce a viable solution. [ISC-Bugs #41815] - Correct handling of interface names during interface discovery. This addresses an issue where interface names of 15 characters in length could lead to crashes or interface recognition errors during startup of dhcpd, dhclient, and dhcrelay. [ISC-Bugs #42226] - Updates to contrib/dhcp-lease-list.pl to make it more friendly. The updates are: looking for the lease file in more places and skipping the "processing complete" output when creating machine readable output. Thanks to Cameron Paine (cbp at null dot net) for the patch. [ISC-Bugs #42113] - When reusing a lease for dhcp-cache-threshold return the hostname to the original lease. Also if the host pointer, UID or hardware address change don't allow reuse of the lease. Thanks to Michael Vincent for reporting this and helping us verify the problem and fix. [ISC-Bugs #42849] - Change dmalloc to use a size_t as the length argument to bring it in line with the call it will make to malloc(). [ISC-Bugs #40843] - If the failover socket can't be bound, close it. Otherwise if the user configures an incorrect address in the failover stanza the server will continue to open new sockets every 90 seconds until it runs out. [ISC-Bugs #42452] - Add DHCPv4-mode, dhcrelay command line options, "-iu" and "-id", that allow interfaces to be upstream or downstream respectively. Upstream interfaces will accept and forward only BOOTP replies, while downstream interfaces will accept and forward only BOOTP requests. [ISC-Bugs #41547] - Clean up some memory references in the vendor-class construct. [ISC-Bugs #42984] Changes since 4.3.4b1 - None Changes since 4.3.3 - Corrected a static analyzer warning in common/execute.c [ISC-Bugs #40374] - ISC DHCP now follows the common convention to use the base name a program is invoked with (aka argv[0], vs. a builtin name) for logs. This should help differentiate syslog entries for DHCPv4 and DHCPv6 servers. You can define OLD_LOG_NAME in includes/site.h to keep the previous behavior. [ISC-Bugs #38692] - The Linux packet filter code now correctly treats only the least significant 12 bits in an inbound packet's TCI value as the VLAN id (per IEEE 802.1Q). Prior to this it was using the entire 16 bit value as the VLAN id and incorrectly discarding packets. Thanks to Jiri Popelka at Red Hat for reporting this issue and supplying its patch. [ISC-Bugs #40591] - Fixed several static analysis issues such as potential null references, unchecked strdup returns. Thanks to Bill Parker (wp02855 at gmail dot com) who identified these issues and supplied patches to address them. [ISC-Bugs #40754] [ISC-Bugs #40823] - Corrected compilation errors that prohibited building the server and its ATF unit tests when failover is disabled. [ISC-Bugs #40372] - Added the lease address to the end of the debug level log message emitted when an existing lease is renewed within the dhcp-cache-threshold. Thanks to Nathan Neulinger at Missouri S&T for suggesting the change. [ISC-Bugs #40598] - Added dhcpv6 and delayed-ack to settings listed in the "Features:" section of the configure script output. Additionally, all of the features reported on will now always show either a "yes" or "no" value. Prior to this features left to their default setting would not show a value. [ISC-Bugs #40381] - Added a parameter, authoring-byte-order, to the lease file. This value is automatically added to the top of new lease files by the server and indicates the internal byte order (big endian or little endian) of the server. This permits lease files generated on a server with one form of byte order to be used on a server with the opposite form. Our thanks to Timothe Litt for calling this to our attention and for the suggestions he provided. [ISC-Bugs #38396] - Fixed a small memory leak in the DHCPv6 version of the client code. This is unlikely to cause significant issues in actual use. [ISC-Bugs #40990] - Corrected a few minor memory leaks in omapi's dereferencing of host objects. Thanks to Jiri Popelka at Red Hat for reporting the issue and supplying the patches. [ISC-Bugs #33990] [ISC-Bugs #41325] - Cleaned up some of the Make infrastructure to make --with-libbind work better. Though it still only works with an absolute path. [ISC-Bugs #39210] - Made the embedded bind libraries able to be cross compiled (please refer to the bind9 documentation to learn how to cross compile DHCP and its bind library dependency). [ISC-Bugs #38836] - Update the client code to better support getting IA_NAs and IA_PDs in the same packet, see RFC7550 for some discussion. [ISC-Bugs #40190] ! Update the bounds checking when receiving a packet. Thanks to Sebastian Poehn from Sophos for the bug report and a suggested patch. [ISC-Bugs #41267] CVE: CVE-2015-8605 - When handling an incorrect command line for dhcpd, dhclient or dhcrelay print out a specific error message about the first error in addition to the usage string. This may be disabled by editing includes/site.h. [ISC-Bugs #40321] [ISC-Bugs #41454] - The configure script will now exit with an error message if it cannot find a GNU-style make tool (needed when building BIND libraries) or pkg-config (needed to locate ATF used for building unit tests). Prior to this the script would exit indicating success causing subsequent attempts to build the software to fail. [ISC-Bugs #40371] - Properly terminate strings before passing them to regex and fix a boundary error when creating certain new data strings. Thanks to Andrey Jr. Melnikov for the bug report. [ISC-Bugs #41217] - Option expressions, such as prepend and append, are now supported when running dhclient for IPv6. Prior to this such statements in the client configuration file would be parsed but have no affect. Thanks to Jiri Popelka at Red Hat for reporting the issue. [ISC-Bugs #39952] - A failover primary server will now accept a binding status update from the secondary which transitions a lease from ACTIVE to ABANDONED. This accounts for instances in which a client declines a lease and only the secondary server receives it. Prior to this the primary server would reject such an update as an "invalid state transition". [ISC_BUGS #25189] - Properly allocate memory for a bpf filter. Thanks to Bill Parker (wp02855 at gmail dot com) who identified this issue. [ISC-Bugs #41485] - Updated contrib/dhcp-lease-list.pl to handle garbage in the oui file better and to print out the hostnames a bit better. Thanks to Antoine Beaupré from Debian for the suggested patch. [ISC-Bugs #41288] - The DHCPv6 server now handles long valid and preferred lease times better. Values that would cause the internal end time of the lease to wrap are modified to work as infinite. [ISC-Bugs #40773] - Updated support for cross compiling by allowing the library archiver to be set at configure time via the environment variable 'AR'. [ISC-Bugs #41536] - The server will now match DHCPv6 relayed clients to host declarations which include the "hardware" statement, if the relay connected to the client supplies the client's hardware address via client-linklayer-address option as per RFC 6939. [ISC-Bugs #40334] - Allow a filename to be specified instead of /dev/random during configuration. This is passed to the BIND configuration to allow for cross compilation. [ISC-Bugs #33835] - Add more option definitions. [ISC-Bugs #40562] - Correct outputting of long lines in the lease file when writing a lease that includes long strings in an execute statement. [ISC-Bugs #40994] - The server will now correctly treat a lease as reserved when the client requests an infinite lease time (i.e. OxFFFFFFFF) and "infinite-is-reserved" is enabled. Prior to this the server would halt. In addition, corrections were made to the server to allow a lease's flags field to be set via omapi. Prior to this, the server, depending on the host architecture, would incorrectly parse the new flags value from the omapi message. [ISC-Bugs #31179] - ISC DHCP can now be configured and built from a directory other than the top level source directory. Note that "make distcheck" uses this feature. [ISC-Bugs #39262] - Add support for RFC 3527 to dhcrelay. A new, dhcrelay command line argument, "-U " enables the addition of a RFC 3527 compliant link selection suboption to the agent option added for clients directly connected to the relay. [ISC-Bugs #34875] [ISC-Bugs #41708] - Add a new global DHCPv6 option, dhcpv6-set-tee-times, which when enabled instructs the server to calculate T1 and T2 as recommended in RFC 3315, Section 22.4. [ISC-Bugs #25687] - Corrected minor Coverity issues. [ISC-Bugs #35144] - Add support for RFC 7341 DHCPv4 over DHCPv6 with a new configuration option "--enable-dhcpv4o6". Note this feature requires DHCPv6 support and is not compatible with delayed-ack. Both client and server use 2 processes which communicate over UDP on a pair of sockets. The new "-4o6 " command line argument enables DHCPv4 over DHCPv6 support and specifies the consecutive ports to use for inter-process communication. Please look at doc/DHCPv4-over-DHCPv6 for more details. [ISC-Bugs #35711] - Correct interface name formation when using DLPI under Solaris 11. As of Solaris 11, ethernet device files are located in "/dev/net". The configure script has been modified to detect this situation and adjust the directory used accordingly. Thanks to Jarkko Torppa for reporting this issue and submitting a patch [ISC-Bugs #37954] [ISC-Bugs #40752] - Add a dereference call when handling an error condition while decoding a packet. [ISC-Bugs #41774] - Add a new parameter, lease-id-format, to both dhcpd and dhclient. The parameter controls the format in which certain values are written to lease files. Formats supported are octal - quoted string containing octal escapes, and hex - unquoted, colon separated hex digits. Thanks to Jay Ford, University of Iowa for bringing the issue to our attention. [ISC-Bugs #26378] ! Add an option in site.h to limit the number of failover and control connections the server will accept. By default this is 200. [ISC-Bugs #41845] CVE: CVE-2016-2774 @ text @d160 1 a160 1

Copyright (c) 2006-2017 by Internet Systems d163 4 a166 3

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. @ 1.1.1.2.10.1 log @file References.html was added on branch yamt-pagecache on 2014-05-22 15:44:32 +0000 @ text @d1 1037 @ 1.1.1.2.10.2 log @sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments") @ text @a0 1037 ISC-DHCP-REFERENCES: ISC DHCP References Collection
 TOC 
ISC-DHCP-REFERENCESD. Hankins
 T. Mrugalski
 ISC
 January 04, 2012


ISC DHCP References Collection

Abstract

This document describes a collection of reference material to which ISC DHCP has been implemented as well as a more complete listing of references for DHCP and DHCPv6 protocols.

Copyright Notice

Copyright (c) 2006-2007,2009,2011 by Internet Systems Consortium, Inc. ("ISC")

Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.



Table of Contents

1.  Introduction

2.  Definition: Reference Implementation

3.  Low Layer References
    3.1.  Ethernet Protocol References
    3.2.  Token Ring Protocol References
    3.3.  FDDI Protocol References
    3.4.  Internet Protocol Version 4 References
    3.5.  Unicast Datagram Protocol References

4.  BOOTP Protocol References

5.  DHCPv4 Protocol References
    5.1.  DHCPv4 Protocol
        5.1.1.  Core Protocol References
    5.2.  DHCPv4 Option References
        5.2.1.  Relay Agent Information Option Options
        5.2.2.  Dynamic DNS Updates References
        5.2.3.  Experimental: Failover References
    5.3.  DHCP Procedures

6.  DHCPv6 Protocol References
    6.1.  DHCPv6 Protocol References
    6.2.  DHCPv6 Options References

7.  References
    7.1.  Published DHCPv4 References
    7.2.  Published Common (DHCPv4/DHCPv6) References
    7.3.  Published DHCPv6 References

§  Authors' Addresses




 TOC 

1.  Introduction

As a little historical anecdote, ISC DHCP once packaged all the relevant RFCs and standards documents along with the software package. Until one day when a voice was heard from one of the many fine institutions that build and distribute this software... they took issue with the IETF's copyright on the RFC's. It seems the IETF's copyrights don't allow modification of RFC's (except for translation purposes).

Our main purpose in providing the RFCs is to aid in documentation, but since RFCs are now available widely from many points of distribution on the Internet, there is no real need to provide the documents themselves. So, this document has been created in their stead, to list the various IETF RFCs one might want to read, and to comment on how well (or poorly) we have managed to implement them.



 TOC 

2.  Definition: Reference Implementation

ISC DHCP, much like its other cousins in ISC software, is self-described as a 'Reference Implementation.' There has been a great deal of confusion about this term. Some people seem to think that this term applies to any software that once passed a piece of reference material on its way to market (but may do quite a lot of things that aren't described in any reference, or may choose to ignore the reference it saw entirely). Other folks get confused by the word 'reference' and understand that to mean that there is some special status applied to the software - that the software itself is the reference by which all other software is measured. Something along the lines of being "The DHCP Protocol's Reference Clock," it is supposed.

The truth is actually quite a lot simpler. Reference implementations are software packages which were written to behave precisely as appears in reference material. They are written "to match reference."

If the software has a behaviour that manifests itself externally (whether it be something as simple as the 'wire format' or something higher level, such as a complicated behaviour that arises from multiple message exchanges), that behaviour must be found in a reference document.

Anything else is a bug, the only question is whether the bug is in reference or software (failing to implement the reference).

This means:

  • To produce new externally-visible behaviour, one must first provide a reference.
  • Before changing externally visible behaviour to work around simple incompatibilities in any other implementation, one must first provide a reference.

That is the lofty goal, at any rate. It's well understood that, especially because the ISC DHCP Software package has not always been held to this standard (but not entirely due to it), there are many non-referenced behaviours within ISC DHCP.

The primary goal of reference implementation is to prove the reference material. If the reference material is good, then you should be able to sit down and write a program that implements the reference, to the word, and come to an implementation that is distinguishable from others in the details, but not in the facts of operating the protocol. This means that there is no need for 'special knowledge' to work around arcane problems that were left undocumented. No secret handshakes need to be learned to be imparted with the necessary "real documentation".

Also, by accepting only reference as the guidebook for ISC DHCP's software implementation, anyone who can make an impact on the color texture or form of that reference has a (somewhat indirect) voice in ISC DHCP's software design. As the IETF RFC's have been selected as the source of reference, that means everyone on the Internet with the will to participate has a say.



 TOC 

3.  Low Layer References

It may surprise you to realize that ISC DHCP implements 802.1 'Ethernet' framing, Token Ring, and FDDI. In order to bridge the gap there between these physical and DHCP layers, it must also implement IP and UDP framing.

The reason for this stems from Unix systems' handling of BSD sockets (the general way one might engage in transmission of UDP packets) on unconfigured interfaces, or even the handling of broadcast addressing on configured interfaces.

There are a few things that DHCP servers, relays, and clients all need to do in order to speak the DHCP protocol in strict compliance with [RFC2131] (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.).

  1. Transmit a UDP packet from IP:0.0.0.0 Ethernet:Self, destined to IP:255.255.255.255 LinkLayer:Broadcast on an unconfigured (no IP address yet) interface.
  2. Receive a UDP packet from IP:remote-system LinkLayer:remote-system, destined to IP:255.255.255.255 LinkLayer:Broadcast, again on an unconfigured interface.
  3. Transmit a UDP packet from IP:Self, Ethernet:Self, destined to IP:remote-system LinkLayer:remote-system, without transmitting a single ARP.
  4. And of course the simple case, a regular IP unicast that is routed via the usual means (so it may be direct to a local system, with ARP providing the glue, or it may be to a remote system via one or more routers as normal). In this case, the interfaces are always configured.

The above isn't as simple as it sounds on a regular BSD socket. Many unix implementations will transmit broadcasts not to 255.255.255.255, but to x.y.z.255 (where x.y.z is the system's local subnet). Such packets are not received by several known DHCP client implementations - and it's not their fault, [RFC2131] (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.) very explicitly demands that these packets' IP destination addresses be set to 255.255.255.255.

Receiving packets sent to 255.255.255.255 isn't a problem on most modern unixes...so long as the interface is configured. When there is no IPv4 address on the interface, things become much more murky.

So, for this convoluted and unfortunate state of affairs in the unix systems of the day ISC DHCP was manufactured, in order to do what it needs not only to implement the reference but to interoperate with other implementations, the software must create some form of raw socket to operate on.

What it actually does is create, for each interface detected on the system, a Berkeley Packet Filter socket (or equivalent), and program it with a filter that brings in only DHCP packets. A "fallback" UDP Berkeley socket is generally also created, a single one no matter how many interfaces. Should the software need to transmit a contrived packet to the local network the packet is formed piece by piece and transmitted via the BPF socket. Hence the need to implement many forms of Link Layer framing and above. The software gets away with not having to implement IP routing tables as well by simply utilizing the aforementioned 'fallback' UDP socket when unicasting between two configured systems is needed.

Modern unixes have opened up some facilities that diminish how much of this sort of nefarious kludgery is necessary, but have not found the state of affairs absolutely resolved. In particular, one might now unicast without ARP by inserting an entry into the ARP cache prior to transmitting. Unconfigured interfaces remain the sticking point, however...on virtually no modern unixes is it possible to receive broadcast packets unless a local IPv4 address has been configured, unless it is done with raw sockets.



 TOC 

3.1.  Ethernet Protocol References

ISC DHCP Implements Ethernet Version 2 ("DIX"), which is a variant of IEEE 802.2. No good reference of this framing is known to exist at this time, but it is vaguely described in [RFC0894] (Hornig, C., “Standard for the transmission of IP datagrams over Ethernet networks,” April 1984.) see the section titled "Packet format"), and the following URL is also thought to be useful.

http://en.wikipedia.org/wiki/DIX_Ethernet



 TOC 

3.2.  Token Ring Protocol References

IEEE 802.5 defines the Token Ring framing format used by ISC DHCP.



 TOC 

3.3.  FDDI Protocol References

[RFC1188] (Katz, D., “Proposed Standard for the Transmission of IP Datagrams over FDDI Networks,” October 1990.) is the most helpful reference ISC DHCP has used to form FDDI packets.



 TOC 

3.4.  Internet Protocol Version 4 References

RFC760 (Postel, J., “DoD standard Internet Protocol,” January 1980.) [RFC0760] fundamentally defines the bare IPv4 protocol which ISC DHCP implements.



 TOC 

3.5.  Unicast Datagram Protocol References

RFC768 (Postel, J., “User Datagram Protocol,” August 1980.) [RFC0768] defines the User Datagram Protocol that ultimately carries the DHCP or BOOTP protocol. The destination DHCP server port is 67, the client port is 68. Source ports are irrelevant.



 TOC 

4.  BOOTP Protocol References

The DHCP Protocol is strange among protocols in that it is grafted over the top of another protocol - BOOTP (but we don't call it "DHCP over BOOTP" like we do, say "TCP over IP"). BOOTP and DHCP share UDP packet formats - DHCP is merely a conventional use of both BOOTP header fields and the trailing 'options' space.

The ISC DHCP server supports BOOTP clients conforming to RFC951 (Croft, B. and J. Gilmore, “Bootstrap Protocol,” September 1985.) [RFC0951] and RFC1542 (Wimer, W., “Clarifications and Extensions for the Bootstrap Protocol,” October 1993.) [RFC1542].



 TOC 

5.  DHCPv4 Protocol References



 TOC 

5.1.  DHCPv4 Protocol

"The DHCP[v4] Protocol" is not defined in a single document. The following collection of references of what ISC DHCP terms "The DHCPv4 Protocol".



 TOC 

5.1.1.  Core Protocol References

RFC2131 (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.) [RFC2131] defines the protocol format and procedures. ISC DHCP is not known to diverge from this document in any way. There are, however, a few points on which different implementations have arisen out of vagueries in the document. DHCP Clients exist which, at one time, present themselves as using a Client Identifier Option which is equal to the client's hardware address. Later, the client transmits DHCP packets with no Client Identifier Option present - essentially identifying themselves using the hardware address. Some DHCP Servers have been developed which identify this client as a single client. ISC has interpreted RFC2131 to indicate that these clients must be treated as two separate entities (and hence two, separate addresses). Client behaviour (Embedded Windows products) has developed that relies on the former implementation, and hence is incompatible with the latter. Also, RFC2131 demands explicitly that some header fields be zeroed upon certain message types. The ISC DHCP Server instead copies many of these fields from the packet received from the client or relay, which may not be zero. It is not known if there is a good reason for this that has not been documented.

RFC2132 (Alexander, S. and R. Droms, “DHCP Options and BOOTP Vendor Extensions,” March 1997.) [RFC2132] defines the initial set of DHCP Options and provides a great deal of guidance on how to go about formatting and processing options. The document unfortunately waffles to a great extent about the NULL termination of DHCP Options, and some DHCP Clients (Windows 95) have been implemented that rely upon DHCP Options containing text strings to be NULL-terminated (or else they crash). So, ISC DHCP detects if clients null-terminate the host-name option and, if so, null terminates any text options it transmits to the client. It also removes NULL termination from any known text option it receives prior to any other processing.



 TOC 

5.2.  DHCPv4 Option References

RFC2241 (Provan, D., “DHCP Options for Novell Directory Services,” November 1997.) [RFC2241] defines options for Novell Directory Services.

RFC2242 (Droms, R. and K. Fong, “NetWare/IP Domain Name and Information,” November 1997.) [RFC2242] defines an encapsulated option space for NWIP configuration.

RFC2485 (Drach, S., “DHCP Option for The Open Group's User Authentication Protocol,” January 1999.) [RFC2485] defines the Open Group's UAP option.

RFC2610 (Perkins, C. and E. Guttman, “DHCP Options for Service Location Protocol,” June 1999.) [RFC2610] defines options for the Service Location Protocol (SLP).

RFC2937 (Smith, C., “The Name Service Search Option for DHCP,” September 2000.) [RFC2937] defines the Name Service Search Option (not to be confused with the domain-search option). The Name Service Search Option allows eg nsswitch.conf to be reconfigured via dhcp. The ISC DHCP server implements this option, and the ISC DHCP client is compatible...but does not by default install this option's value. One would need to make their relevant dhclient-script process this option in a way that is suitable for the system.

RFC3004 (Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, “The User Class Option for DHCP,” November 2000.) [RFC3004] defines the User-Class option. Note carefully that ISC DHCP currently does not implement to this reference, but has (inexplicably) selected an incompatible format: a plain text string.

RFC3011 (Waters, G., “The IPv4 Subnet Selection Option for DHCP,” November 2000.) [RFC3011] defines the Subnet-Selection plain DHCPv4 option. Do not confuse this option with the relay agent "link selection" sub-option, although their behaviour is similar.

RFC3396 (Lemon, T. and S. Cheshire, “Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4),” November 2002.) [RFC3396] documents both how long options may be encoded in DHCPv4 packets, and also how multiple instances of the same option code within a DHCPv4 packet will be decoded by receivers.

RFC3397 (Aboba, B. and S. Cheshire, “Dynamic Host Configuration Protocol (DHCP) Domain Search Option,” November 2002.) [RFC3397] documents the Domain-Search Option, which allows the configuration of the /etc/resolv.conf 'search' parameter in a way that is RFC1035 (Mockapetris, P., “Domain names - implementation and specification,” November 1987.) [RFC1035] wire format compatible (in fact, it uses the RFC1035 wire format). ISC DHCP has both client and server support, and supports RFC1035 name compression.

RFC3679 (Droms, R., “Unused Dynamic Host Configuration Protocol (DHCP) Option Codes,” January 2004.) [RFC3679] documents a number of options that were documented earlier in history, but were not made use of.

RFC3925 (Littlefield, J., “Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4),” October 2004.) [RFC3925] documents a pair of Enterprise-ID delimited option spaces for vendors to use in order to inform servers of their "vendor class" (sort of like 'uname' or 'who and what am I'), and a means to deliver vendor-specific and vendor-documented option codes and values.

RFC3942 (Volz, B., “Reclassifying Dynamic Host Configuration Protocol version 4 (DHCPv4) Options,” November 2004.) [RFC3942] redefined the 'site local' option space.

[RFC4280] (Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” November 2005.) defines two BCMS server options for each protocol family.

RFC4388 (Woundy, R. and K. Kinnear, “Dynamic Host Configuration Protocol (DHCP) Leasequery,” February 2006.) [RFC4388] defined the DHCPv4 LEASEQUERY message type and a number of suitable response messages, for the purpose of sharing information about DHCP served addresses and clients.



 TOC 

5.2.1.  Relay Agent Information Option Options

RFC3046 (Patrick, M., “DHCP Relay Agent Information Option,” January 2001.) [RFC3046] defines the Relay Agent Information Option and provides a number of sub-option definitions.

RFC3256 (Jones, D. and R. Woundy, “The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option,” April 2002.) [RFC3256] defines the DOCSIS Device Class sub-option.

RFC3527 (Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, “Link Selection sub-option for the Relay Agent Information Option for DHCPv4,” April 2003.) [RFC3527] defines the Link Selection sub-option.



 TOC 

5.2.2.  Dynamic DNS Updates References

The collection of documents that describe the standards-based method to update dns names of DHCP clients starts most easily with RFC4703 (Stapp, M. and B. Volz, “Resolution of Fully Qualified Domain Name (FQDN) Conflicts among Dynamic Host Configuration Protocol (DHCP) Clients,” October 2006.) [RFC4703] to define the overall architecture, travels through RFCs 4702 (Stapp, M., Volz, B., and Y. Rekhter, “The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option,” October 2006.) [RFC4702] and 4704 (Volz, B., “The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option,” October 2006.) [RFC4704] to describe the DHCPv4 and DHCPv6 FQDN options (to carry the client name), and ends up at RFC4701 (Stapp, M., Lemon, T., and A. Gustafsson, “A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR),” October 2006.) [RFC4701] which describes the DHCID RR used in DNS to perform a kind of atomic locking.

ISC DHCP adopted early versions of these documents, and has not yet synchronized with the final standards versions.

For RFCs 4702 and 4704, the 'N' bit is not yet supported. The result is that it is always set zero, and is ignored if set.

For RFC4701, which is used to match client identities with names in the DNS as part of name conflict resolution. Note that ISC DHCP's implementation of DHCIDs vary wildly from this specification. First, ISC DHCP uses a TXT record in which the contents are stored in hexadecimal. Second, there is a flaw in the selection of the 'Identifier Type', which results in a completely different value being selected than was defined in an older revision of this document...also this field is one byte prior to hexadecimal encoding rather than two. Third, ISC DHCP does not use a digest type code. Rather, all values for such TXT records are reached via an MD5 sum. In short, nothing is compatible, but the principle of the TXT record is the same as the standard DHCID record. However, for DHCPv6 FQDN, we do use DHCID type code '2', as no other value really makes sense in our context.



 TOC 

5.2.3.  Experimental: Failover References

The Failover Protocol defines means by which two DHCP Servers can share all the relevant information about leases granted to DHCP clients on given networks, so that one of the two servers may fail and be survived by a server that can act responsibly.

Unfortunately it has been quite some years (2003) since the last time this document was edited, and the authors no longer show any interest in fielding comments or improving the document.

The status of this protocol is very unsure, but ISC's implementation of it has proven stable and suitable for use in sizable production environments.

draft-ietf-dhc-failover-12.txt (Droms, R., “DHCP Failover Protocol,” March 2003.) [draft‑failover] describes the Failover Protocol. In addition to what is described in this document, ISC DHCP has elected to make some experimental changes that may be revoked in a future version of ISC DHCP (if the draft authors do not adopt the new behaviour). Specifically, ISC DHCP's POOLREQ behaviour differs substantially from what is documented in the draft, and the server also implements a form of 'MAC Address Affinity' which is not described in the failover document. The full nature of these changes have been described on the IETF DHC WG mailing list (which has archives), and also in ISC DHCP's manual pages. Also note that although this document references a RECOVER-WAIT state, it does not document a protocol number assignment for this state. As a consequence, ISC DHCP has elected to use the value 254.

An optimization described in the failover protocol draft is included since 4.2.0a1. It permits a DHCP server operating in communications-interrupted state to 'rewind' a lease to the state most recently transmitted to its peer, greatly increasing a server's endurance in communications-interrupted. This is supported using a new 'rewind state' record on the dhcpd.leases entry for each lease.

[RFC3074] (Volz, B., Gonczi, S., Lemon, T., and R. Stevens, “DHC Load Balancing Algorithm,” February 2001.) describes the Load Balancing Algorithm (LBA) that ISC DHCP uses in concert with the Failover protocol. Note that versions 3.0.* are known to misimplement the hash algorithm (it will only use the low 4 bits of every byte of the hash bucket array).



 TOC 

5.3.  DHCP Procedures

[RFC2939] (Droms, R., “Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types,” September 2000.) explains how to go about obtaining a new DHCP Option code assignment.



 TOC 

6.  DHCPv6 Protocol References



 TOC 

6.1.  DHCPv6 Protocol References

For now there is only one document that specifies the base of the DHCPv6 protocol (there have been no updates yet), [RFC3315] (Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” July 2003.).

Support for DHCPv6 was first added in version 4.0.0. The server and client support only IA_NA. While the server does support multiple IA_NAs within one packet from the client, our client only supports sending one. There is no relay support.

DHCPv6 introduces some new and uncomfortable ideas to the common software library.

  1. Options sometimes may appear multiple times. The common library used to treat all appearance of multiple options as specified in RFC2131 - to be concatenated. DHCPv6 options may sometimes appear multiple times (such as with IA_NA or IAADDR), but often must not. As of 4.2.1-P1, multiple IA_NA, IA_PD or IA_TA are not supported.
  2. The same option space appears in DHCPv6 packets multiple times. If the packet was got via a relay, then the client's packet is stored to an option within the relay's packet...if there were two relays, this recurses. At each of these steps, the root "DHCPv6 option space" is used. Further, a client packet may contain an IA_NA, which may contain an IAADDR - but really, in an abstract sense, this is again re-encapsulation of the DHCPv6 option space beneath options it also contains.

Precisely how to correctly support the above conundrums has not quite yet been settled, so support is incomplete.

[RFC5453] (Krishnan, S., “Reserved IPv6 Interface Identifiers,” February 2009.) creates a registry at IANA to reserve interface identifiers and specifies a starting set. These IIDs should not be used when constructing addresses to avoid possible conflicts.



 TOC 

6.2.  DHCPv6 Options References

[RFC3319] (Schulzrinne, H. and B. Volz, “Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers,” July 2003.) defines the SIP server options for DHCPv6.

[RFC3646] (Droms, R., “DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” December 2003.) documents the DHCPv6 name-servers and domain-search options.

[RFC3633] (Troan, O. and R. Droms, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6,” December 2003.) documents the Identity Association Prefix Delegation for DHCPv6, which is included here for protocol wire reference, but which is not supported by ISC DHCP.

[RFC3898] (Kalusivalingam, V., “Network Information Service (NIS) Configuration Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” October 2004.) documents four NIS options for delivering NIS servers and domain information in DHCPv6.

[RFC4075] (Kalusivalingam, V., “Simple Network Time Protocol (SNTP) Configuration Option for DHCPv6,” May 2005.) defines the DHCPv6 SNTP Servers option.

[RFC4242] (Venaas, S., Chown, T., and B. Volz, “Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” November 2005.) defines the Information Refresh Time option, which advises DHCPv6 Information-Request clients to return for updated information.

[RFC4280] (Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” November 2005.) defines two BCMS server options for each protocol family.

[RFC4580] (Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Subscriber-ID Option,” June 2006.) defines a DHCPv6 subscriber-id option, which is similar in principle to the DHCPv4 relay agent option of the same name.

[RFC4649] (Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option,” August 2006.) defines a DHCPv6 remote-id option, which is similar in principle to the DHCPv4 relay agent remote-id.



 TOC 

7.  References



 TOC 

7.1. Published DHCPv4 References

[RFC0760] Postel, J., “DoD standard Internet Protocol,” RFC 760, January 1980 (TXT).
[RFC0768] Postel, J., “User Datagram Protocol,” STD 6, RFC 768, August 1980 (TXT).
[RFC0894] Hornig, C., “Standard for the transmission of IP datagrams over Ethernet networks,” STD 41, RFC 894, April 1984 (TXT).
[RFC0951] Croft, B. and J. Gilmore, “Bootstrap Protocol,” RFC 951, September 1985 (TXT).
[RFC1035] Mockapetris, P., “Domain names - implementation and specification,” STD 13, RFC 1035, November 1987 (TXT).
[RFC1188] Katz, D., “Proposed Standard for the Transmission of IP Datagrams over FDDI Networks,” RFC 1188, October 1990 (TXT).
[RFC1542] Wimer, W., “Clarifications and Extensions for the Bootstrap Protocol,” RFC 1542, October 1993 (TXT).
[RFC2131] Droms, R., “Dynamic Host Configuration Protocol,” RFC 2131, March 1997 (TXT, HTML, XML).
[RFC2132] Alexander, S. and R. Droms, “DHCP Options and BOOTP Vendor Extensions,” RFC 2132, March 1997 (TXT, HTML, XML).
[RFC2241] Provan, D., “DHCP Options for Novell Directory Services,” RFC 2241, November 1997 (TXT, HTML, XML).
[RFC2242] Droms, R. and K. Fong, “NetWare/IP Domain Name and Information,” RFC 2242, November 1997 (TXT, HTML, XML).
[RFC2485] Drach, S., “DHCP Option for The Open Group's User Authentication Protocol,” RFC 2485, January 1999 (TXT, HTML, XML).
[RFC2563] Troll, R., “DHCP Option to Disable Stateless Auto-Configuration in IPv4 Clients,” RFC 2563, May 1999 (TXT).
[RFC2610] Perkins, C. and E. Guttman, “DHCP Options for Service Location Protocol,” RFC 2610, June 1999 (TXT).
[RFC2855] Fujisawa, K., “DHCP for IEEE 1394,” RFC 2855, June 2000 (TXT).
[RFC2937] Smith, C., “The Name Service Search Option for DHCP,” RFC 2937, September 2000 (TXT).
[RFC2939] Droms, R., “Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types,” BCP 43, RFC 2939, September 2000 (TXT).
[RFC3004] Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, “The User Class Option for DHCP,” RFC 3004, November 2000 (TXT).
[RFC3011] Waters, G., “The IPv4 Subnet Selection Option for DHCP,” RFC 3011, November 2000 (TXT).
[RFC3046] Patrick, M., “DHCP Relay Agent Information Option,” RFC 3046, January 2001 (TXT).
[RFC3074] Volz, B., Gonczi, S., Lemon, T., and R. Stevens, “DHC Load Balancing Algorithm,” RFC 3074, February 2001 (TXT).
[RFC3118] Droms, R. and W. Arbaugh, “Authentication for DHCP Messages,” RFC 3118, June 2001 (TXT).
[RFC3203] T'Joens, Y., Hublet, C., and P. De Schrijver, “DHCP reconfigure extension,” RFC 3203, December 2001 (TXT).
[RFC3256] Jones, D. and R. Woundy, “The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option,” RFC 3256, April 2002 (TXT).
[RFC3361] Schulzrinne, H., “Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers,” RFC 3361, August 2002 (TXT).
[RFC3396] Lemon, T. and S. Cheshire, “Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4),” RFC 3396, November 2002 (TXT).
[RFC3397] Aboba, B. and S. Cheshire, “Dynamic Host Configuration Protocol (DHCP) Domain Search Option,” RFC 3397, November 2002 (TXT).
[RFC3442] Lemon, T., Cheshire, S., and B. Volz, “The Classless Static Route Option for Dynamic Host Configuration Protocol (DHCP) version 4,” RFC 3442, December 2002 (TXT).
[RFC3456] Patel, B., Aboba, B., Kelly, S., and V. Gupta, “Dynamic Host Configuration Protocol (DHCPv4) Configuration of IPsec Tunnel Mode,” RFC 3456, January 2003 (TXT).
[RFC3495] Beser, B. and P. Duffy, “Dynamic Host Configuration Protocol (DHCP) Option for CableLabs Client Configuration,” RFC 3495, March 2003 (TXT).
[RFC3527] Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, “Link Selection sub-option for the Relay Agent Information Option for DHCPv4,” RFC 3527, April 2003 (TXT).
[RFC3594] Duffy, P., “PacketCable Security Ticket Control Sub-Option for the DHCP CableLabs Client Configuration (CCC) Option,” RFC 3594, September 2003 (TXT).
[RFC3634] Luehrs, K., Woundy, R., Bevilacqua, J., and N. Davoust, “Key Distribution Center (KDC) Server Address Sub-option for the Dynamic Host Configuration Protocol (DHCP) CableLabs Client Configuration (CCC) Option,” RFC 3634, December 2003 (TXT).
[RFC3679] Droms, R., “Unused Dynamic Host Configuration Protocol (DHCP) Option Codes,” RFC 3679, January 2004 (TXT).
[RFC3825] Polk, J., Schnizlein, J., and M. Linsner, “Dynamic Host Configuration Protocol Option for Coordinate-based Location Configuration Information,” RFC 3825, July 2004 (TXT).
[RFC3925] Littlefield, J., “Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4),” RFC 3925, October 2004 (TXT).
[RFC3942] Volz, B., “Reclassifying Dynamic Host Configuration Protocol version 4 (DHCPv4) Options,” RFC 3942, November 2004 (TXT).
[RFC3993] Johnson, R., Palaniappan, T., and M. Stapp, “Subscriber-ID Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 3993, March 2005 (TXT).
[RFC4014] Droms, R. and J. Schnizlein, “Remote Authentication Dial-In User Service (RADIUS) Attributes Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Information Option,” RFC 4014, February 2005 (TXT).
[RFC4030] Stapp, M. and T. Lemon, “The Authentication Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 4030, March 2005 (TXT).
[RFC4039] Park, S., Kim, P., and B. Volz, “Rapid Commit Option for the Dynamic Host Configuration Protocol version 4 (DHCPv4),” RFC 4039, March 2005 (TXT).
[RFC4174] Monia, C., Tseng, J., and K. Gibbons, “The IPv4 Dynamic Host Configuration Protocol (DHCP) Option for the Internet Storage Name Service,” RFC 4174, September 2005 (TXT).
[RFC4243] Stapp, M., Johnson, R., and T. Palaniappan, “Vendor-Specific Information Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 4243, December 2005 (TXT).
[RFC4361] Lemon, T. and B. Sommerfeld, “Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4),” RFC 4361, February 2006 (TXT).
[RFC4388] Woundy, R. and K. Kinnear, “Dynamic Host Configuration Protocol (DHCP) Leasequery,” RFC 4388, February 2006 (TXT).
[RFC4390] Kashyap, V., “Dynamic Host Configuration Protocol (DHCP) over InfiniBand,” RFC 4390, April 2006 (TXT).
[RFC4436] Aboba, B., Carlson, J., and S. Cheshire, “Detecting Network Attachment in IPv4 (DNAv4),” RFC 4436, March 2006 (TXT).
[RFC4701] Stapp, M., Lemon, T., and A. Gustafsson, “A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR),” RFC 4701, October 2006 (TXT).
[RFC4702] Stapp, M., Volz, B., and Y. Rekhter, “The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option,” RFC 4702, October 2006 (TXT).
[RFC4703] Stapp, M. and B. Volz, “Resolution of Fully Qualified Domain Name (FQDN) Conflicts among Dynamic Host Configuration Protocol (DHCP) Clients,” RFC 4703, October 2006 (TXT).
[RFC5010] Kinnear, K., Normoyle, M., and M. Stapp, “The Dynamic Host Configuration Protocol Version 4 (DHCPv4) Relay Agent Flags Suboption,” RFC 5010, September 2007 (TXT).
[RFC5071] Hankins, D., “Dynamic Host Configuration Protocol Options Used by PXELINUX,” RFC 5071, December 2007 (TXT).
[RFC5107] Johnson, R., Kumarasamy, J., Kinnear, K., and M. Stapp, “DHCP Server Identifier Override Suboption,” RFC 5107, February 2008 (TXT).
[RFC5192] Morand, L., Yegin, A., Kumar, S., and S. Madanapalli, “DHCP Options for Protocol for Carrying Authentication for Network Access (PANA) Authentication Agents,” RFC 5192, May 2008 (TXT).
[RFC5223] Schulzrinne, H., Polk, J., and H. Tschofenig, “Discovering Location-to-Service Translation (LoST) Servers Using the Dynamic Host Configuration Protocol (DHCP),” RFC 5223, August 2008 (TXT).
[RFC5859] Johnson, R., “TFTP Server Address Option for DHCPv4,” RFC 5859, June 2010 (TXT).
[RFC5969] Townsley, W. and O. Troan, “IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) -- Protocol Specification,” RFC 5969, August 2010 (TXT).
[draft-failover] Droms, R., “DHCP Failover Protocol,” March 2003.
[I-D.ietf-dhc-dhcpv4-relay-encapsulation] Lemon, T. and H. Deng, “Relay Agent Encapsulation for DHCPv4,” draft-ietf-dhc-dhcpv4-relay-encapsulation-00 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-dhcpv4-bulk-leasequery] Kinnear, K., Volz, B., Russell, N., Stapp, M., Rao, D., Joshi, B., and P. Kurapati, “Bulk DHCPv4 Lease Query,” draft-ietf-dhc-dhcpv4-bulk-leasequery-03 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-leasequery-by-remote-id] Kurapati, P. and B. Joshi, “DHCPv4 lease query by Relay Agent Remote ID,” draft-ietf-dhc-leasequery-by-remote-id-09 (work in progress), December 2010 (TXT).
[I-D.ietf-dhc-relay-id-suboption] Stapp, M., “The DHCPv4 Relay Agent Identifier Suboption,” draft-ietf-dhc-relay-id-suboption-07 (work in progress), July 2009 (TXT).
[I-D.ietf-mip6-hiopt] Jang, H., Yegin, A., Chowdhury, K., and J. Choi, “DHCP Options for Home Information Discovery in MIPv6,” draft-ietf-mip6-hiopt-17 (work in progress), May 2008 (TXT).


 TOC 

7.2. Published Common (DHCPv4/DHCPv6) References

[RFC4280] Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” RFC 4280, November 2005 (TXT).
[RFC4477] Chown, T., Venaas, S., and C. Strauf, “Dynamic Host Configuration Protocol (DHCP): IPv4 and IPv6 Dual-Stack Issues,” RFC 4477, May 2006 (TXT).
[RFC4578] Johnston, M. and S. Venaas, “Dynamic Host Configuration Protocol (DHCP) Options for the Intel Preboot eXecution Environment (PXE),” RFC 4578, November 2006 (TXT).
[RFC4776] Schulzrinne, H., “Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Option for Civic Addresses Configuration Information,” RFC 4776, November 2006 (TXT).
[RFC4833] Lear, E. and P. Eggert, “Timezone Options for DHCP,” RFC 4833, April 2007 (TXT).
[RFC5417] Calhoun, P., “Control And Provisioning of Wireless Access Points (CAPWAP) Access Controller DHCP Option,” RFC 5417, March 2009 (TXT).
[RFC5678] Bajko, G. and S. Das, “Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Options for IEEE 802.21 Mobility Services (MoS) Discovery,” RFC 5678, December 2009 (TXT).
[RFC5908] Gayraud, R. and B. Lourdelet, “Network Time Protocol (NTP) Server Option for DHCPv6,” RFC 5908, June 2010 (TXT).
[RFC5970] Huth, T., Freimann, J., Zimmer, V., and D. Thaler, “DHCPv6 Options for Network Boot,” RFC 5970, September 2010 (TXT).
[RFC5986] Thomson, M. and J. Winterbottom, “Discovering the Local Location Information Server (LIS),” RFC 5986, September 2010 (TXT).
[I-D.ietf-dhc-vpn-option] Kinnear, K., Johnson, R., and M. Stapp, “Virtual Subnet Selection Options for DHCPv4 and DHCPv6,” draft-ietf-dhc-vpn-option-12 (work in progress), October 2010 (TXT).


 TOC 

7.3. Published DHCPv6 References

[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3315, July 2003 (TXT).
[RFC3319] Schulzrinne, H. and B. Volz, “Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers,” RFC 3319, July 2003 (TXT).
[RFC3633] Troan, O. and R. Droms, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6,” RFC 3633, December 2003 (TXT).
[RFC3646] Droms, R., “DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3646, December 2003 (TXT).
[RFC3736] Droms, R., “Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6,” RFC 3736, April 2004 (TXT).
[RFC3898] Kalusivalingam, V., “Network Information Service (NIS) Configuration Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3898, October 2004 (TXT).
[RFC4075] Kalusivalingam, V., “Simple Network Time Protocol (SNTP) Configuration Option for DHCPv6,” RFC 4075, May 2005 (TXT).
[RFC4076] Chown, T., Venaas, S., and A. Vijayabhaskar, “Renumbering Requirements for Stateless Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 4076, May 2005 (TXT).
[RFC4242] Venaas, S., Chown, T., and B. Volz, “Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 4242, November 2005 (TXT).
[RFC4580] Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Subscriber-ID Option,” RFC 4580, June 2006 (TXT).
[RFC4649] Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option,” RFC 4649, August 2006 (TXT).
[RFC4704] Volz, B., “The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option,” RFC 4704, October 2006 (TXT).
[RFC4994] Zeng, S., Volz, B., Kinnear, K., and J. Brzozowski, “DHCPv6 Relay Agent Echo Request Option,” RFC 4994, September 2007 (TXT).
[RFC5007] Brzozowski, J., Kinnear, K., Volz, B., and S. Zeng, “DHCPv6 Leasequery,” RFC 5007, September 2007 (TXT).
[RFC5453] Krishnan, S., “Reserved IPv6 Interface Identifiers,” RFC 5453, February 2009 (TXT).
[RFC5460] Stapp, M., “DHCPv6 Bulk Leasequery,” RFC 5460, February 2009 (TXT).
[I-D.ietf-mif-dhcpv6-route-option] Dec, W., Mrugalski, T., Sun, T., and B. Sarikaya, “DHCPv6 Route Options,” draft-ietf-mif-dhcpv6-route-option-03 (work in progress), September 2011 (TXT).
[I-D.ietf-dhc-dhcpv6-ldra] Miles, D., Ooghe, S., Dec, W., Krishnan, S., and A. Kavanagh, “Lightweight DHCPv6 Relay Agent,” draft-ietf-dhc-dhcpv6-ldra-03 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-dhcpv6-relay-supplied-options] Lemon, T. and W. Wu, “Relay-Supplied DHCP Options,” draft-ietf-dhc-dhcpv6-relay-supplied-options-09 (work in progress), September 2011 (TXT).
[I-D.ietf-dhc-pd-exclude] Korhonen, J., Savolainen, T., Krishnan, S., and O. Troan, “Prefix Exclude Option for DHCPv6-based Prefix Delegation,” draft-ietf-dhc-pd-exclude-01 (work in progress), January 2011 (TXT).
[I-D.ietf-dhc-secure-dhcpv6] Jiang, S., “Secure DHCPv6 Using CGAs,” draft-ietf-dhc-secure-dhcpv6-02 (work in progress), December 2010 (TXT).
[I-D.ietf-mext-nemo-pd] Droms, R., Thubert, P., Dupont, F., Haddad, W., and C. Bernardos, “DHCPv6 Prefix Delegation for NEMO,” draft-ietf-mext-nemo-pd-07 (work in progress), December 2010 (TXT).
[I-D.ietf-dhc-duid-uuid] Narten, T. and J. Johnson, “Definition of the UUID-based DHCPv6 Unique Identifier (DUID-UUID),” draft-ietf-dhc-duid-uuid-03 (work in progress), February 2011 (TXT).
[I-D.ietf-softwire-ds-lite-tunnel-option] Hankins, D. and T. Mrugalski, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual- Stack Lite,” draft-ietf-softwire-ds-lite-tunnel-option-10 (work in progress), March 2011 (TXT).
[I-D.ietf-mif-dns-server-selection] Savolainen, T. and J. Kato, “Improved DNS Server Selection for Multi-Homed Nodes,” draft-ietf-mif-dns-server-selection-01 (work in progress), March 2011 (TXT).
[I-D.ietf-geopriv-rfc3825bis] Polk, J., Linsner, M., Thomson, M., and B. Aboba, “Dynamic Host Configuration Protocol Options for Coordinate-based Location Configuration Information,” draft-ietf-geopriv-rfc3825bis-17 (work in progress), February 2011 (TXT).
[draft-addr-params] Mrugalski, T., “Address Parameters Option for DHCPv6,” April 2007.


 TOC 

Authors' Addresses

  David W. Hankins
  Internet Systems Consortium, Inc.
  950 Charter Street
  Redwood City, CA 94063
  
  Tomasz Mrugalski
  Internet Systems Consortium, Inc.
  950 Charter Street
  Redwood City, CA 94063
Phone:  +1 650 423 1345
Email:  Tomasz_Mrugalski@@isc.org
@ 1.1.1.2.4.1 log @file References.html was added on branch tls-maxphys on 2013-06-23 06:26:28 +0000 @ text @d1 1037 @ 1.1.1.2.4.2 log @resync from head @ text @a0 1037 ISC-DHCP-REFERENCES: ISC DHCP References Collection
 TOC 
ISC-DHCP-REFERENCESD. Hankins
 T. Mrugalski
 ISC
 January 04, 2012


ISC DHCP References Collection

Abstract

This document describes a collection of reference material to which ISC DHCP has been implemented as well as a more complete listing of references for DHCP and DHCPv6 protocols.

Copyright Notice

Copyright (c) 2006-2007,2009,2011 by Internet Systems Consortium, Inc. ("ISC")

Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.



Table of Contents

1.  Introduction

2.  Definition: Reference Implementation

3.  Low Layer References
    3.1.  Ethernet Protocol References
    3.2.  Token Ring Protocol References
    3.3.  FDDI Protocol References
    3.4.  Internet Protocol Version 4 References
    3.5.  Unicast Datagram Protocol References

4.  BOOTP Protocol References

5.  DHCPv4 Protocol References
    5.1.  DHCPv4 Protocol
        5.1.1.  Core Protocol References
    5.2.  DHCPv4 Option References
        5.2.1.  Relay Agent Information Option Options
        5.2.2.  Dynamic DNS Updates References
        5.2.3.  Experimental: Failover References
    5.3.  DHCP Procedures

6.  DHCPv6 Protocol References
    6.1.  DHCPv6 Protocol References
    6.2.  DHCPv6 Options References

7.  References
    7.1.  Published DHCPv4 References
    7.2.  Published Common (DHCPv4/DHCPv6) References
    7.3.  Published DHCPv6 References

§  Authors' Addresses




 TOC 

1.  Introduction

As a little historical anecdote, ISC DHCP once packaged all the relevant RFCs and standards documents along with the software package. Until one day when a voice was heard from one of the many fine institutions that build and distribute this software... they took issue with the IETF's copyright on the RFC's. It seems the IETF's copyrights don't allow modification of RFC's (except for translation purposes).

Our main purpose in providing the RFCs is to aid in documentation, but since RFCs are now available widely from many points of distribution on the Internet, there is no real need to provide the documents themselves. So, this document has been created in their stead, to list the various IETF RFCs one might want to read, and to comment on how well (or poorly) we have managed to implement them.



 TOC 

2.  Definition: Reference Implementation

ISC DHCP, much like its other cousins in ISC software, is self-described as a 'Reference Implementation.' There has been a great deal of confusion about this term. Some people seem to think that this term applies to any software that once passed a piece of reference material on its way to market (but may do quite a lot of things that aren't described in any reference, or may choose to ignore the reference it saw entirely). Other folks get confused by the word 'reference' and understand that to mean that there is some special status applied to the software - that the software itself is the reference by which all other software is measured. Something along the lines of being "The DHCP Protocol's Reference Clock," it is supposed.

The truth is actually quite a lot simpler. Reference implementations are software packages which were written to behave precisely as appears in reference material. They are written "to match reference."

If the software has a behaviour that manifests itself externally (whether it be something as simple as the 'wire format' or something higher level, such as a complicated behaviour that arises from multiple message exchanges), that behaviour must be found in a reference document.

Anything else is a bug, the only question is whether the bug is in reference or software (failing to implement the reference).

This means:

  • To produce new externally-visible behaviour, one must first provide a reference.
  • Before changing externally visible behaviour to work around simple incompatibilities in any other implementation, one must first provide a reference.

That is the lofty goal, at any rate. It's well understood that, especially because the ISC DHCP Software package has not always been held to this standard (but not entirely due to it), there are many non-referenced behaviours within ISC DHCP.

The primary goal of reference implementation is to prove the reference material. If the reference material is good, then you should be able to sit down and write a program that implements the reference, to the word, and come to an implementation that is distinguishable from others in the details, but not in the facts of operating the protocol. This means that there is no need for 'special knowledge' to work around arcane problems that were left undocumented. No secret handshakes need to be learned to be imparted with the necessary "real documentation".

Also, by accepting only reference as the guidebook for ISC DHCP's software implementation, anyone who can make an impact on the color texture or form of that reference has a (somewhat indirect) voice in ISC DHCP's software design. As the IETF RFC's have been selected as the source of reference, that means everyone on the Internet with the will to participate has a say.



 TOC 

3.  Low Layer References

It may surprise you to realize that ISC DHCP implements 802.1 'Ethernet' framing, Token Ring, and FDDI. In order to bridge the gap there between these physical and DHCP layers, it must also implement IP and UDP framing.

The reason for this stems from Unix systems' handling of BSD sockets (the general way one might engage in transmission of UDP packets) on unconfigured interfaces, or even the handling of broadcast addressing on configured interfaces.

There are a few things that DHCP servers, relays, and clients all need to do in order to speak the DHCP protocol in strict compliance with [RFC2131] (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.).

  1. Transmit a UDP packet from IP:0.0.0.0 Ethernet:Self, destined to IP:255.255.255.255 LinkLayer:Broadcast on an unconfigured (no IP address yet) interface.
  2. Receive a UDP packet from IP:remote-system LinkLayer:remote-system, destined to IP:255.255.255.255 LinkLayer:Broadcast, again on an unconfigured interface.
  3. Transmit a UDP packet from IP:Self, Ethernet:Self, destined to IP:remote-system LinkLayer:remote-system, without transmitting a single ARP.
  4. And of course the simple case, a regular IP unicast that is routed via the usual means (so it may be direct to a local system, with ARP providing the glue, or it may be to a remote system via one or more routers as normal). In this case, the interfaces are always configured.

The above isn't as simple as it sounds on a regular BSD socket. Many unix implementations will transmit broadcasts not to 255.255.255.255, but to x.y.z.255 (where x.y.z is the system's local subnet). Such packets are not received by several known DHCP client implementations - and it's not their fault, [RFC2131] (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.) very explicitly demands that these packets' IP destination addresses be set to 255.255.255.255.

Receiving packets sent to 255.255.255.255 isn't a problem on most modern unixes...so long as the interface is configured. When there is no IPv4 address on the interface, things become much more murky.

So, for this convoluted and unfortunate state of affairs in the unix systems of the day ISC DHCP was manufactured, in order to do what it needs not only to implement the reference but to interoperate with other implementations, the software must create some form of raw socket to operate on.

What it actually does is create, for each interface detected on the system, a Berkeley Packet Filter socket (or equivalent), and program it with a filter that brings in only DHCP packets. A "fallback" UDP Berkeley socket is generally also created, a single one no matter how many interfaces. Should the software need to transmit a contrived packet to the local network the packet is formed piece by piece and transmitted via the BPF socket. Hence the need to implement many forms of Link Layer framing and above. The software gets away with not having to implement IP routing tables as well by simply utilizing the aforementioned 'fallback' UDP socket when unicasting between two configured systems is needed.

Modern unixes have opened up some facilities that diminish how much of this sort of nefarious kludgery is necessary, but have not found the state of affairs absolutely resolved. In particular, one might now unicast without ARP by inserting an entry into the ARP cache prior to transmitting. Unconfigured interfaces remain the sticking point, however...on virtually no modern unixes is it possible to receive broadcast packets unless a local IPv4 address has been configured, unless it is done with raw sockets.



 TOC 

3.1.  Ethernet Protocol References

ISC DHCP Implements Ethernet Version 2 ("DIX"), which is a variant of IEEE 802.2. No good reference of this framing is known to exist at this time, but it is vaguely described in [RFC0894] (Hornig, C., “Standard for the transmission of IP datagrams over Ethernet networks,” April 1984.) see the section titled "Packet format"), and the following URL is also thought to be useful.

http://en.wikipedia.org/wiki/DIX_Ethernet



 TOC 

3.2.  Token Ring Protocol References

IEEE 802.5 defines the Token Ring framing format used by ISC DHCP.



 TOC 

3.3.  FDDI Protocol References

[RFC1188] (Katz, D., “Proposed Standard for the Transmission of IP Datagrams over FDDI Networks,” October 1990.) is the most helpful reference ISC DHCP has used to form FDDI packets.



 TOC 

3.4.  Internet Protocol Version 4 References

RFC760 (Postel, J., “DoD standard Internet Protocol,” January 1980.) [RFC0760] fundamentally defines the bare IPv4 protocol which ISC DHCP implements.



 TOC 

3.5.  Unicast Datagram Protocol References

RFC768 (Postel, J., “User Datagram Protocol,” August 1980.) [RFC0768] defines the User Datagram Protocol that ultimately carries the DHCP or BOOTP protocol. The destination DHCP server port is 67, the client port is 68. Source ports are irrelevant.



 TOC 

4.  BOOTP Protocol References

The DHCP Protocol is strange among protocols in that it is grafted over the top of another protocol - BOOTP (but we don't call it "DHCP over BOOTP" like we do, say "TCP over IP"). BOOTP and DHCP share UDP packet formats - DHCP is merely a conventional use of both BOOTP header fields and the trailing 'options' space.

The ISC DHCP server supports BOOTP clients conforming to RFC951 (Croft, B. and J. Gilmore, “Bootstrap Protocol,” September 1985.) [RFC0951] and RFC1542 (Wimer, W., “Clarifications and Extensions for the Bootstrap Protocol,” October 1993.) [RFC1542].



 TOC 

5.  DHCPv4 Protocol References



 TOC 

5.1.  DHCPv4 Protocol

"The DHCP[v4] Protocol" is not defined in a single document. The following collection of references of what ISC DHCP terms "The DHCPv4 Protocol".



 TOC 

5.1.1.  Core Protocol References

RFC2131 (Droms, R., “Dynamic Host Configuration Protocol,” March 1997.) [RFC2131] defines the protocol format and procedures. ISC DHCP is not known to diverge from this document in any way. There are, however, a few points on which different implementations have arisen out of vagueries in the document. DHCP Clients exist which, at one time, present themselves as using a Client Identifier Option which is equal to the client's hardware address. Later, the client transmits DHCP packets with no Client Identifier Option present - essentially identifying themselves using the hardware address. Some DHCP Servers have been developed which identify this client as a single client. ISC has interpreted RFC2131 to indicate that these clients must be treated as two separate entities (and hence two, separate addresses). Client behaviour (Embedded Windows products) has developed that relies on the former implementation, and hence is incompatible with the latter. Also, RFC2131 demands explicitly that some header fields be zeroed upon certain message types. The ISC DHCP Server instead copies many of these fields from the packet received from the client or relay, which may not be zero. It is not known if there is a good reason for this that has not been documented.

RFC2132 (Alexander, S. and R. Droms, “DHCP Options and BOOTP Vendor Extensions,” March 1997.) [RFC2132] defines the initial set of DHCP Options and provides a great deal of guidance on how to go about formatting and processing options. The document unfortunately waffles to a great extent about the NULL termination of DHCP Options, and some DHCP Clients (Windows 95) have been implemented that rely upon DHCP Options containing text strings to be NULL-terminated (or else they crash). So, ISC DHCP detects if clients null-terminate the host-name option and, if so, null terminates any text options it transmits to the client. It also removes NULL termination from any known text option it receives prior to any other processing.



 TOC 

5.2.  DHCPv4 Option References

RFC2241 (Provan, D., “DHCP Options for Novell Directory Services,” November 1997.) [RFC2241] defines options for Novell Directory Services.

RFC2242 (Droms, R. and K. Fong, “NetWare/IP Domain Name and Information,” November 1997.) [RFC2242] defines an encapsulated option space for NWIP configuration.

RFC2485 (Drach, S., “DHCP Option for The Open Group's User Authentication Protocol,” January 1999.) [RFC2485] defines the Open Group's UAP option.

RFC2610 (Perkins, C. and E. Guttman, “DHCP Options for Service Location Protocol,” June 1999.) [RFC2610] defines options for the Service Location Protocol (SLP).

RFC2937 (Smith, C., “The Name Service Search Option for DHCP,” September 2000.) [RFC2937] defines the Name Service Search Option (not to be confused with the domain-search option). The Name Service Search Option allows eg nsswitch.conf to be reconfigured via dhcp. The ISC DHCP server implements this option, and the ISC DHCP client is compatible...but does not by default install this option's value. One would need to make their relevant dhclient-script process this option in a way that is suitable for the system.

RFC3004 (Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, “The User Class Option for DHCP,” November 2000.) [RFC3004] defines the User-Class option. Note carefully that ISC DHCP currently does not implement to this reference, but has (inexplicably) selected an incompatible format: a plain text string.

RFC3011 (Waters, G., “The IPv4 Subnet Selection Option for DHCP,” November 2000.) [RFC3011] defines the Subnet-Selection plain DHCPv4 option. Do not confuse this option with the relay agent "link selection" sub-option, although their behaviour is similar.

RFC3396 (Lemon, T. and S. Cheshire, “Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4),” November 2002.) [RFC3396] documents both how long options may be encoded in DHCPv4 packets, and also how multiple instances of the same option code within a DHCPv4 packet will be decoded by receivers.

RFC3397 (Aboba, B. and S. Cheshire, “Dynamic Host Configuration Protocol (DHCP) Domain Search Option,” November 2002.) [RFC3397] documents the Domain-Search Option, which allows the configuration of the /etc/resolv.conf 'search' parameter in a way that is RFC1035 (Mockapetris, P., “Domain names - implementation and specification,” November 1987.) [RFC1035] wire format compatible (in fact, it uses the RFC1035 wire format). ISC DHCP has both client and server support, and supports RFC1035 name compression.

RFC3679 (Droms, R., “Unused Dynamic Host Configuration Protocol (DHCP) Option Codes,” January 2004.) [RFC3679] documents a number of options that were documented earlier in history, but were not made use of.

RFC3925 (Littlefield, J., “Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4),” October 2004.) [RFC3925] documents a pair of Enterprise-ID delimited option spaces for vendors to use in order to inform servers of their "vendor class" (sort of like 'uname' or 'who and what am I'), and a means to deliver vendor-specific and vendor-documented option codes and values.

RFC3942 (Volz, B., “Reclassifying Dynamic Host Configuration Protocol version 4 (DHCPv4) Options,” November 2004.) [RFC3942] redefined the 'site local' option space.

[RFC4280] (Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” November 2005.) defines two BCMS server options for each protocol family.

RFC4388 (Woundy, R. and K. Kinnear, “Dynamic Host Configuration Protocol (DHCP) Leasequery,” February 2006.) [RFC4388] defined the DHCPv4 LEASEQUERY message type and a number of suitable response messages, for the purpose of sharing information about DHCP served addresses and clients.



 TOC 

5.2.1.  Relay Agent Information Option Options

RFC3046 (Patrick, M., “DHCP Relay Agent Information Option,” January 2001.) [RFC3046] defines the Relay Agent Information Option and provides a number of sub-option definitions.

RFC3256 (Jones, D. and R. Woundy, “The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option,” April 2002.) [RFC3256] defines the DOCSIS Device Class sub-option.

RFC3527 (Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, “Link Selection sub-option for the Relay Agent Information Option for DHCPv4,” April 2003.) [RFC3527] defines the Link Selection sub-option.



 TOC 

5.2.2.  Dynamic DNS Updates References

The collection of documents that describe the standards-based method to update dns names of DHCP clients starts most easily with RFC4703 (Stapp, M. and B. Volz, “Resolution of Fully Qualified Domain Name (FQDN) Conflicts among Dynamic Host Configuration Protocol (DHCP) Clients,” October 2006.) [RFC4703] to define the overall architecture, travels through RFCs 4702 (Stapp, M., Volz, B., and Y. Rekhter, “The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option,” October 2006.) [RFC4702] and 4704 (Volz, B., “The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option,” October 2006.) [RFC4704] to describe the DHCPv4 and DHCPv6 FQDN options (to carry the client name), and ends up at RFC4701 (Stapp, M., Lemon, T., and A. Gustafsson, “A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR),” October 2006.) [RFC4701] which describes the DHCID RR used in DNS to perform a kind of atomic locking.

ISC DHCP adopted early versions of these documents, and has not yet synchronized with the final standards versions.

For RFCs 4702 and 4704, the 'N' bit is not yet supported. The result is that it is always set zero, and is ignored if set.

For RFC4701, which is used to match client identities with names in the DNS as part of name conflict resolution. Note that ISC DHCP's implementation of DHCIDs vary wildly from this specification. First, ISC DHCP uses a TXT record in which the contents are stored in hexadecimal. Second, there is a flaw in the selection of the 'Identifier Type', which results in a completely different value being selected than was defined in an older revision of this document...also this field is one byte prior to hexadecimal encoding rather than two. Third, ISC DHCP does not use a digest type code. Rather, all values for such TXT records are reached via an MD5 sum. In short, nothing is compatible, but the principle of the TXT record is the same as the standard DHCID record. However, for DHCPv6 FQDN, we do use DHCID type code '2', as no other value really makes sense in our context.



 TOC 

5.2.3.  Experimental: Failover References

The Failover Protocol defines means by which two DHCP Servers can share all the relevant information about leases granted to DHCP clients on given networks, so that one of the two servers may fail and be survived by a server that can act responsibly.

Unfortunately it has been quite some years (2003) since the last time this document was edited, and the authors no longer show any interest in fielding comments or improving the document.

The status of this protocol is very unsure, but ISC's implementation of it has proven stable and suitable for use in sizable production environments.

draft-ietf-dhc-failover-12.txt (Droms, R., “DHCP Failover Protocol,” March 2003.) [draft‑failover] describes the Failover Protocol. In addition to what is described in this document, ISC DHCP has elected to make some experimental changes that may be revoked in a future version of ISC DHCP (if the draft authors do not adopt the new behaviour). Specifically, ISC DHCP's POOLREQ behaviour differs substantially from what is documented in the draft, and the server also implements a form of 'MAC Address Affinity' which is not described in the failover document. The full nature of these changes have been described on the IETF DHC WG mailing list (which has archives), and also in ISC DHCP's manual pages. Also note that although this document references a RECOVER-WAIT state, it does not document a protocol number assignment for this state. As a consequence, ISC DHCP has elected to use the value 254.

An optimization described in the failover protocol draft is included since 4.2.0a1. It permits a DHCP server operating in communications-interrupted state to 'rewind' a lease to the state most recently transmitted to its peer, greatly increasing a server's endurance in communications-interrupted. This is supported using a new 'rewind state' record on the dhcpd.leases entry for each lease.

[RFC3074] (Volz, B., Gonczi, S., Lemon, T., and R. Stevens, “DHC Load Balancing Algorithm,” February 2001.) describes the Load Balancing Algorithm (LBA) that ISC DHCP uses in concert with the Failover protocol. Note that versions 3.0.* are known to misimplement the hash algorithm (it will only use the low 4 bits of every byte of the hash bucket array).



 TOC 

5.3.  DHCP Procedures

[RFC2939] (Droms, R., “Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types,” September 2000.) explains how to go about obtaining a new DHCP Option code assignment.



 TOC 

6.  DHCPv6 Protocol References



 TOC 

6.1.  DHCPv6 Protocol References

For now there is only one document that specifies the base of the DHCPv6 protocol (there have been no updates yet), [RFC3315] (Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” July 2003.).

Support for DHCPv6 was first added in version 4.0.0. The server and client support only IA_NA. While the server does support multiple IA_NAs within one packet from the client, our client only supports sending one. There is no relay support.

DHCPv6 introduces some new and uncomfortable ideas to the common software library.

  1. Options sometimes may appear multiple times. The common library used to treat all appearance of multiple options as specified in RFC2131 - to be concatenated. DHCPv6 options may sometimes appear multiple times (such as with IA_NA or IAADDR), but often must not. As of 4.2.1-P1, multiple IA_NA, IA_PD or IA_TA are not supported.
  2. The same option space appears in DHCPv6 packets multiple times. If the packet was got via a relay, then the client's packet is stored to an option within the relay's packet...if there were two relays, this recurses. At each of these steps, the root "DHCPv6 option space" is used. Further, a client packet may contain an IA_NA, which may contain an IAADDR - but really, in an abstract sense, this is again re-encapsulation of the DHCPv6 option space beneath options it also contains.

Precisely how to correctly support the above conundrums has not quite yet been settled, so support is incomplete.

[RFC5453] (Krishnan, S., “Reserved IPv6 Interface Identifiers,” February 2009.) creates a registry at IANA to reserve interface identifiers and specifies a starting set. These IIDs should not be used when constructing addresses to avoid possible conflicts.



 TOC 

6.2.  DHCPv6 Options References

[RFC3319] (Schulzrinne, H. and B. Volz, “Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers,” July 2003.) defines the SIP server options for DHCPv6.

[RFC3646] (Droms, R., “DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” December 2003.) documents the DHCPv6 name-servers and domain-search options.

[RFC3633] (Troan, O. and R. Droms, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6,” December 2003.) documents the Identity Association Prefix Delegation for DHCPv6, which is included here for protocol wire reference, but which is not supported by ISC DHCP.

[RFC3898] (Kalusivalingam, V., “Network Information Service (NIS) Configuration Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” October 2004.) documents four NIS options for delivering NIS servers and domain information in DHCPv6.

[RFC4075] (Kalusivalingam, V., “Simple Network Time Protocol (SNTP) Configuration Option for DHCPv6,” May 2005.) defines the DHCPv6 SNTP Servers option.

[RFC4242] (Venaas, S., Chown, T., and B. Volz, “Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” November 2005.) defines the Information Refresh Time option, which advises DHCPv6 Information-Request clients to return for updated information.

[RFC4280] (Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” November 2005.) defines two BCMS server options for each protocol family.

[RFC4580] (Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Subscriber-ID Option,” June 2006.) defines a DHCPv6 subscriber-id option, which is similar in principle to the DHCPv4 relay agent option of the same name.

[RFC4649] (Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option,” August 2006.) defines a DHCPv6 remote-id option, which is similar in principle to the DHCPv4 relay agent remote-id.



 TOC 

7.  References



 TOC 

7.1. Published DHCPv4 References

[RFC0760] Postel, J., “DoD standard Internet Protocol,” RFC 760, January 1980 (TXT).
[RFC0768] Postel, J., “User Datagram Protocol,” STD 6, RFC 768, August 1980 (TXT).
[RFC0894] Hornig, C., “Standard for the transmission of IP datagrams over Ethernet networks,” STD 41, RFC 894, April 1984 (TXT).
[RFC0951] Croft, B. and J. Gilmore, “Bootstrap Protocol,” RFC 951, September 1985 (TXT).
[RFC1035] Mockapetris, P., “Domain names - implementation and specification,” STD 13, RFC 1035, November 1987 (TXT).
[RFC1188] Katz, D., “Proposed Standard for the Transmission of IP Datagrams over FDDI Networks,” RFC 1188, October 1990 (TXT).
[RFC1542] Wimer, W., “Clarifications and Extensions for the Bootstrap Protocol,” RFC 1542, October 1993 (TXT).
[RFC2131] Droms, R., “Dynamic Host Configuration Protocol,” RFC 2131, March 1997 (TXT, HTML, XML).
[RFC2132] Alexander, S. and R. Droms, “DHCP Options and BOOTP Vendor Extensions,” RFC 2132, March 1997 (TXT, HTML, XML).
[RFC2241] Provan, D., “DHCP Options for Novell Directory Services,” RFC 2241, November 1997 (TXT, HTML, XML).
[RFC2242] Droms, R. and K. Fong, “NetWare/IP Domain Name and Information,” RFC 2242, November 1997 (TXT, HTML, XML).
[RFC2485] Drach, S., “DHCP Option for The Open Group's User Authentication Protocol,” RFC 2485, January 1999 (TXT, HTML, XML).
[RFC2563] Troll, R., “DHCP Option to Disable Stateless Auto-Configuration in IPv4 Clients,” RFC 2563, May 1999 (TXT).
[RFC2610] Perkins, C. and E. Guttman, “DHCP Options for Service Location Protocol,” RFC 2610, June 1999 (TXT).
[RFC2855] Fujisawa, K., “DHCP for IEEE 1394,” RFC 2855, June 2000 (TXT).
[RFC2937] Smith, C., “The Name Service Search Option for DHCP,” RFC 2937, September 2000 (TXT).
[RFC2939] Droms, R., “Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types,” BCP 43, RFC 2939, September 2000 (TXT).
[RFC3004] Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, “The User Class Option for DHCP,” RFC 3004, November 2000 (TXT).
[RFC3011] Waters, G., “The IPv4 Subnet Selection Option for DHCP,” RFC 3011, November 2000 (TXT).
[RFC3046] Patrick, M., “DHCP Relay Agent Information Option,” RFC 3046, January 2001 (TXT).
[RFC3074] Volz, B., Gonczi, S., Lemon, T., and R. Stevens, “DHC Load Balancing Algorithm,” RFC 3074, February 2001 (TXT).
[RFC3118] Droms, R. and W. Arbaugh, “Authentication for DHCP Messages,” RFC 3118, June 2001 (TXT).
[RFC3203] T'Joens, Y., Hublet, C., and P. De Schrijver, “DHCP reconfigure extension,” RFC 3203, December 2001 (TXT).
[RFC3256] Jones, D. and R. Woundy, “The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option,” RFC 3256, April 2002 (TXT).
[RFC3361] Schulzrinne, H., “Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers,” RFC 3361, August 2002 (TXT).
[RFC3396] Lemon, T. and S. Cheshire, “Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4),” RFC 3396, November 2002 (TXT).
[RFC3397] Aboba, B. and S. Cheshire, “Dynamic Host Configuration Protocol (DHCP) Domain Search Option,” RFC 3397, November 2002 (TXT).
[RFC3442] Lemon, T., Cheshire, S., and B. Volz, “The Classless Static Route Option for Dynamic Host Configuration Protocol (DHCP) version 4,” RFC 3442, December 2002 (TXT).
[RFC3456] Patel, B., Aboba, B., Kelly, S., and V. Gupta, “Dynamic Host Configuration Protocol (DHCPv4) Configuration of IPsec Tunnel Mode,” RFC 3456, January 2003 (TXT).
[RFC3495] Beser, B. and P. Duffy, “Dynamic Host Configuration Protocol (DHCP) Option for CableLabs Client Configuration,” RFC 3495, March 2003 (TXT).
[RFC3527] Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy, “Link Selection sub-option for the Relay Agent Information Option for DHCPv4,” RFC 3527, April 2003 (TXT).
[RFC3594] Duffy, P., “PacketCable Security Ticket Control Sub-Option for the DHCP CableLabs Client Configuration (CCC) Option,” RFC 3594, September 2003 (TXT).
[RFC3634] Luehrs, K., Woundy, R., Bevilacqua, J., and N. Davoust, “Key Distribution Center (KDC) Server Address Sub-option for the Dynamic Host Configuration Protocol (DHCP) CableLabs Client Configuration (CCC) Option,” RFC 3634, December 2003 (TXT).
[RFC3679] Droms, R., “Unused Dynamic Host Configuration Protocol (DHCP) Option Codes,” RFC 3679, January 2004 (TXT).
[RFC3825] Polk, J., Schnizlein, J., and M. Linsner, “Dynamic Host Configuration Protocol Option for Coordinate-based Location Configuration Information,” RFC 3825, July 2004 (TXT).
[RFC3925] Littlefield, J., “Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4),” RFC 3925, October 2004 (TXT).
[RFC3942] Volz, B., “Reclassifying Dynamic Host Configuration Protocol version 4 (DHCPv4) Options,” RFC 3942, November 2004 (TXT).
[RFC3993] Johnson, R., Palaniappan, T., and M. Stapp, “Subscriber-ID Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 3993, March 2005 (TXT).
[RFC4014] Droms, R. and J. Schnizlein, “Remote Authentication Dial-In User Service (RADIUS) Attributes Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Information Option,” RFC 4014, February 2005 (TXT).
[RFC4030] Stapp, M. and T. Lemon, “The Authentication Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 4030, March 2005 (TXT).
[RFC4039] Park, S., Kim, P., and B. Volz, “Rapid Commit Option for the Dynamic Host Configuration Protocol version 4 (DHCPv4),” RFC 4039, March 2005 (TXT).
[RFC4174] Monia, C., Tseng, J., and K. Gibbons, “The IPv4 Dynamic Host Configuration Protocol (DHCP) Option for the Internet Storage Name Service,” RFC 4174, September 2005 (TXT).
[RFC4243] Stapp, M., Johnson, R., and T. Palaniappan, “Vendor-Specific Information Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option,” RFC 4243, December 2005 (TXT).
[RFC4361] Lemon, T. and B. Sommerfeld, “Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4),” RFC 4361, February 2006 (TXT).
[RFC4388] Woundy, R. and K. Kinnear, “Dynamic Host Configuration Protocol (DHCP) Leasequery,” RFC 4388, February 2006 (TXT).
[RFC4390] Kashyap, V., “Dynamic Host Configuration Protocol (DHCP) over InfiniBand,” RFC 4390, April 2006 (TXT).
[RFC4436] Aboba, B., Carlson, J., and S. Cheshire, “Detecting Network Attachment in IPv4 (DNAv4),” RFC 4436, March 2006 (TXT).
[RFC4701] Stapp, M., Lemon, T., and A. Gustafsson, “A DNS Resource Record (RR) for Encoding Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR),” RFC 4701, October 2006 (TXT).
[RFC4702] Stapp, M., Volz, B., and Y. Rekhter, “The Dynamic Host Configuration Protocol (DHCP) Client Fully Qualified Domain Name (FQDN) Option,” RFC 4702, October 2006 (TXT).
[RFC4703] Stapp, M. and B. Volz, “Resolution of Fully Qualified Domain Name (FQDN) Conflicts among Dynamic Host Configuration Protocol (DHCP) Clients,” RFC 4703, October 2006 (TXT).
[RFC5010] Kinnear, K., Normoyle, M., and M. Stapp, “The Dynamic Host Configuration Protocol Version 4 (DHCPv4) Relay Agent Flags Suboption,” RFC 5010, September 2007 (TXT).
[RFC5071] Hankins, D., “Dynamic Host Configuration Protocol Options Used by PXELINUX,” RFC 5071, December 2007 (TXT).
[RFC5107] Johnson, R., Kumarasamy, J., Kinnear, K., and M. Stapp, “DHCP Server Identifier Override Suboption,” RFC 5107, February 2008 (TXT).
[RFC5192] Morand, L., Yegin, A., Kumar, S., and S. Madanapalli, “DHCP Options for Protocol for Carrying Authentication for Network Access (PANA) Authentication Agents,” RFC 5192, May 2008 (TXT).
[RFC5223] Schulzrinne, H., Polk, J., and H. Tschofenig, “Discovering Location-to-Service Translation (LoST) Servers Using the Dynamic Host Configuration Protocol (DHCP),” RFC 5223, August 2008 (TXT).
[RFC5859] Johnson, R., “TFTP Server Address Option for DHCPv4,” RFC 5859, June 2010 (TXT).
[RFC5969] Townsley, W. and O. Troan, “IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) -- Protocol Specification,” RFC 5969, August 2010 (TXT).
[draft-failover] Droms, R., “DHCP Failover Protocol,” March 2003.
[I-D.ietf-dhc-dhcpv4-relay-encapsulation] Lemon, T. and H. Deng, “Relay Agent Encapsulation for DHCPv4,” draft-ietf-dhc-dhcpv4-relay-encapsulation-00 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-dhcpv4-bulk-leasequery] Kinnear, K., Volz, B., Russell, N., Stapp, M., Rao, D., Joshi, B., and P. Kurapati, “Bulk DHCPv4 Lease Query,” draft-ietf-dhc-dhcpv4-bulk-leasequery-03 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-leasequery-by-remote-id] Kurapati, P. and B. Joshi, “DHCPv4 lease query by Relay Agent Remote ID,” draft-ietf-dhc-leasequery-by-remote-id-09 (work in progress), December 2010 (TXT).
[I-D.ietf-dhc-relay-id-suboption] Stapp, M., “The DHCPv4 Relay Agent Identifier Suboption,” draft-ietf-dhc-relay-id-suboption-07 (work in progress), July 2009 (TXT).
[I-D.ietf-mip6-hiopt] Jang, H., Yegin, A., Chowdhury, K., and J. Choi, “DHCP Options for Home Information Discovery in MIPv6,” draft-ietf-mip6-hiopt-17 (work in progress), May 2008 (TXT).


 TOC 

7.2. Published Common (DHCPv4/DHCPv6) References

[RFC4280] Chowdhury, K., Yegani, P., and L. Madour, “Dynamic Host Configuration Protocol (DHCP) Options for Broadcast and Multicast Control Servers,” RFC 4280, November 2005 (TXT).
[RFC4477] Chown, T., Venaas, S., and C. Strauf, “Dynamic Host Configuration Protocol (DHCP): IPv4 and IPv6 Dual-Stack Issues,” RFC 4477, May 2006 (TXT).
[RFC4578] Johnston, M. and S. Venaas, “Dynamic Host Configuration Protocol (DHCP) Options for the Intel Preboot eXecution Environment (PXE),” RFC 4578, November 2006 (TXT).
[RFC4776] Schulzrinne, H., “Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Option for Civic Addresses Configuration Information,” RFC 4776, November 2006 (TXT).
[RFC4833] Lear, E. and P. Eggert, “Timezone Options for DHCP,” RFC 4833, April 2007 (TXT).
[RFC5417] Calhoun, P., “Control And Provisioning of Wireless Access Points (CAPWAP) Access Controller DHCP Option,” RFC 5417, March 2009 (TXT).
[RFC5678] Bajko, G. and S. Das, “Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Options for IEEE 802.21 Mobility Services (MoS) Discovery,” RFC 5678, December 2009 (TXT).
[RFC5908] Gayraud, R. and B. Lourdelet, “Network Time Protocol (NTP) Server Option for DHCPv6,” RFC 5908, June 2010 (TXT).
[RFC5970] Huth, T., Freimann, J., Zimmer, V., and D. Thaler, “DHCPv6 Options for Network Boot,” RFC 5970, September 2010 (TXT).
[RFC5986] Thomson, M. and J. Winterbottom, “Discovering the Local Location Information Server (LIS),” RFC 5986, September 2010 (TXT).
[I-D.ietf-dhc-vpn-option] Kinnear, K., Johnson, R., and M. Stapp, “Virtual Subnet Selection Options for DHCPv4 and DHCPv6,” draft-ietf-dhc-vpn-option-12 (work in progress), October 2010 (TXT).


 TOC 

7.3. Published DHCPv6 References

[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3315, July 2003 (TXT).
[RFC3319] Schulzrinne, H. and B. Volz, “Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers,” RFC 3319, July 2003 (TXT).
[RFC3633] Troan, O. and R. Droms, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6,” RFC 3633, December 2003 (TXT).
[RFC3646] Droms, R., “DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3646, December 2003 (TXT).
[RFC3736] Droms, R., “Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6,” RFC 3736, April 2004 (TXT).
[RFC3898] Kalusivalingam, V., “Network Information Service (NIS) Configuration Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 3898, October 2004 (TXT).
[RFC4075] Kalusivalingam, V., “Simple Network Time Protocol (SNTP) Configuration Option for DHCPv6,” RFC 4075, May 2005 (TXT).
[RFC4076] Chown, T., Venaas, S., and A. Vijayabhaskar, “Renumbering Requirements for Stateless Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 4076, May 2005 (TXT).
[RFC4242] Venaas, S., Chown, T., and B. Volz, “Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6 (DHCPv6),” RFC 4242, November 2005 (TXT).
[RFC4580] Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Subscriber-ID Option,” RFC 4580, June 2006 (TXT).
[RFC4649] Volz, B., “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Relay Agent Remote-ID Option,” RFC 4649, August 2006 (TXT).
[RFC4704] Volz, B., “The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) Option,” RFC 4704, October 2006 (TXT).
[RFC4994] Zeng, S., Volz, B., Kinnear, K., and J. Brzozowski, “DHCPv6 Relay Agent Echo Request Option,” RFC 4994, September 2007 (TXT).
[RFC5007] Brzozowski, J., Kinnear, K., Volz, B., and S. Zeng, “DHCPv6 Leasequery,” RFC 5007, September 2007 (TXT).
[RFC5453] Krishnan, S., “Reserved IPv6 Interface Identifiers,” RFC 5453, February 2009 (TXT).
[RFC5460] Stapp, M., “DHCPv6 Bulk Leasequery,” RFC 5460, February 2009 (TXT).
[I-D.ietf-mif-dhcpv6-route-option] Dec, W., Mrugalski, T., Sun, T., and B. Sarikaya, “DHCPv6 Route Options,” draft-ietf-mif-dhcpv6-route-option-03 (work in progress), September 2011 (TXT).
[I-D.ietf-dhc-dhcpv6-ldra] Miles, D., Ooghe, S., Dec, W., Krishnan, S., and A. Kavanagh, “Lightweight DHCPv6 Relay Agent,” draft-ietf-dhc-dhcpv6-ldra-03 (work in progress), October 2010 (TXT).
[I-D.ietf-dhc-dhcpv6-relay-supplied-options] Lemon, T. and W. Wu, “Relay-Supplied DHCP Options,” draft-ietf-dhc-dhcpv6-relay-supplied-options-09 (work in progress), September 2011 (TXT).
[I-D.ietf-dhc-pd-exclude] Korhonen, J., Savolainen, T., Krishnan, S., and O. Troan, “Prefix Exclude Option for DHCPv6-based Prefix Delegation,” draft-ietf-dhc-pd-exclude-01 (work in progress), January 2011 (TXT).
[I-D.ietf-dhc-secure-dhcpv6] Jiang, S., “Secure DHCPv6 Using CGAs,” draft-ietf-dhc-secure-dhcpv6-02 (work in progress), December 2010 (TXT).
[I-D.ietf-mext-nemo-pd] Droms, R., Thubert, P., Dupont, F., Haddad, W., and C. Bernardos, “DHCPv6 Prefix Delegation for NEMO,” draft-ietf-mext-nemo-pd-07 (work in progress), December 2010 (TXT).
[I-D.ietf-dhc-duid-uuid] Narten, T. and J. Johnson, “Definition of the UUID-based DHCPv6 Unique Identifier (DUID-UUID),” draft-ietf-dhc-duid-uuid-03 (work in progress), February 2011 (TXT).
[I-D.ietf-softwire-ds-lite-tunnel-option] Hankins, D. and T. Mrugalski, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual- Stack Lite,” draft-ietf-softwire-ds-lite-tunnel-option-10 (work in progress), March 2011 (TXT).
[I-D.ietf-mif-dns-server-selection] Savolainen, T. and J. Kato, “Improved DNS Server Selection for Multi-Homed Nodes,” draft-ietf-mif-dns-server-selection-01 (work in progress), March 2011 (TXT).
[I-D.ietf-geopriv-rfc3825bis] Polk, J., Linsner, M., Thomson, M., and B. Aboba, “Dynamic Host Configuration Protocol Options for Coordinate-based Location Configuration Information,” draft-ietf-geopriv-rfc3825bis-17 (work in progress), February 2011 (TXT).
[draft-addr-params] Mrugalski, T., “Address Parameters Option for DHCPv6,” April 2007.


 TOC 

Authors' Addresses

  David W. Hankins
  Internet Systems Consortium, Inc.
  950 Charter Street
  Redwood City, CA 94063
  
  Tomasz Mrugalski
  Internet Systems Consortium, Inc.
  950 Charter Street
  Redwood City, CA 94063
Phone:  +1 650 423 1345
Email:  Tomasz_Mrugalski@@isc.org
@