Annotation of embedaddon/dhcp/doc/References.txt, revision 1.1
1.1 ! misho 1:
! 2:
! 3:
! 4: ISC-DHCP-REFERENCES D. Hankins
! 5: ISC
! 6: May 2007
! 7:
! 8:
! 9: ISC DHCP References Collection
! 10:
! 11: Copyright Notice
! 12:
! 13: Copyright (c) 2006-2007,2009 by Internet Systems Consortium, Inc.
! 14: ("ISC")
! 15:
! 16: Permission to use, copy, modify, and distribute this software for any
! 17: purpose with or without fee is hereby granted, provided that the
! 18: above copyright notice and this permission notice appear in all
! 19: copies.
! 20:
! 21: THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
! 22: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 23: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
! 24: SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 25: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 26: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 27: OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 28:
! 29: Abstract
! 30:
! 31: This document describes a collection of Reference material that ISC
! 32: DHCP has been implemented to.
! 33:
! 34:
! 35:
! 36:
! 37:
! 38:
! 39:
! 40:
! 41:
! 42:
! 43:
! 44:
! 45:
! 46:
! 47:
! 48:
! 49:
! 50:
! 51:
! 52:
! 53:
! 54:
! 55: Hankins [Page 1]
! 56:
! 57: ISC DHCP References Collection May 2007
! 58:
! 59:
! 60: Table of Contents
! 61:
! 62: 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
! 63:
! 64: 2. Definition: Reference Implementation . . . . . . . . . . . . . 3
! 65:
! 66: 3. Low Layer References . . . . . . . . . . . . . . . . . . . . . 4
! 67: 3.1. Ethernet Protocol References . . . . . . . . . . . . . . . 6
! 68: 3.2. Token Ring Protocol References . . . . . . . . . . . . . . 6
! 69: 3.3. FDDI Protocol References . . . . . . . . . . . . . . . . . 6
! 70: 3.4. Internet Protocol Version 4 References . . . . . . . . . . 6
! 71: 3.5. Unicast Datagram Protocol References . . . . . . . . . . . 6
! 72:
! 73: 4. BOOTP Protocol References . . . . . . . . . . . . . . . . . . 6
! 74:
! 75: 5. DHCP Protocol References . . . . . . . . . . . . . . . . . . . 7
! 76: 5.1. DHCPv4 Protocol . . . . . . . . . . . . . . . . . . . . . 7
! 77: 5.1.1. Core Protocol References . . . . . . . . . . . . . . . 7
! 78: 5.2. DHCPv6 Protocol References . . . . . . . . . . . . . . . . 7
! 79: 5.3. DHCP Option References . . . . . . . . . . . . . . . . . . 8
! 80: 5.3.1. Relay Agent Information Option Options . . . . . . . . 10
! 81: 5.3.2. Dynamic DNS Updates References . . . . . . . . . . . . 10
! 82: 5.3.3. Experimental: Failover References . . . . . . . . . . 11
! 83: 5.4. DHCP Procedures . . . . . . . . . . . . . . . . . . . . . 11
! 84:
! 85: 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
! 86:
! 87: Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 15
! 88:
! 89:
! 90:
! 91:
! 92:
! 93:
! 94:
! 95:
! 96:
! 97:
! 98:
! 99:
! 100:
! 101:
! 102:
! 103:
! 104:
! 105:
! 106:
! 107:
! 108:
! 109:
! 110:
! 111: Hankins [Page 2]
! 112:
! 113: ISC DHCP References Collection May 2007
! 114:
! 115:
! 116: 1. Introduction
! 117:
! 118: As a little historical anecdote, ISC DHCP once packaged all the
! 119: relevant RFCs and standards documents along with the software
! 120: package. Until one day when a voice was heard from one of the many
! 121: fine institutions that build and distribute this software... they
! 122: took issue with the IETF's copyright on the RFC's. It seems the
! 123: IETF's copyrights don't allow modification of RFC's (except for
! 124: translation purposes).
! 125:
! 126: Our main purpose in providing the RFCs is to aid in documentation,
! 127: but since RFCs are now available widely from many points of
! 128: distribution on the Internet, there is no real need to provide the
! 129: documents themselves. So, this document has been created in their
! 130: stead, to list the various IETF RFCs one might want to read, and to
! 131: comment on how well (or poorly) we have managed to implement them.
! 132:
! 133:
! 134: 2. Definition: Reference Implementation
! 135:
! 136: ISC DHCP, much like its other cousins in ISC software, is self-
! 137: described as a 'Reference Implementation.' There has been a great
! 138: deal of confusion about this term. Some people seem to think that
! 139: this term applies to any software that once passed a piece of
! 140: reference material on its way to market (but may do quite a lot of
! 141: things that aren't described in any reference, or may choose to
! 142: ignore the reference it saw entirely). Other folks get confused by
! 143: the word 'reference' and understand that to mean that there is some
! 144: special status applied to the software - that the software itself is
! 145: the reference by which all other software is measured. Something
! 146: along the lines of being "The DHCP Protocol's Reference Clock," it is
! 147: supposed.
! 148:
! 149: The truth is actually quite a lot simpler. Reference implementations
! 150: are software packages which were written to behave precisely as
! 151: appears in reference material. They are written "to match
! 152: reference."
! 153:
! 154: If the software has a behaviour that manifests itself externally
! 155: (whether it be something as simple as the 'wire format' or something
! 156: higher level, such as a complicated behaviour that arises from
! 157: multiple message exchanges), that behaviour must be found in a
! 158: reference document.
! 159:
! 160: Anything else is a bug, the only question is whether the bug is in
! 161: reference or software (failing to implement the reference).
! 162:
! 163: This means:
! 164:
! 165:
! 166:
! 167: Hankins [Page 3]
! 168:
! 169: ISC DHCP References Collection May 2007
! 170:
! 171:
! 172: o To produce new externally-visible behaviour, one must first
! 173: provide a reference.
! 174:
! 175: o Before changing externally visible behaviour to work around simple
! 176: incompatibilities in any other implementation, one must first
! 177: provide a reference.
! 178:
! 179: That is the lofty goal, at any rate. It's well understood that,
! 180: especially because the ISC DHCP Software package has not always been
! 181: held to this standard (but not entirely due to it), there are many
! 182: non-referenced behaviours within ISC DHCP.
! 183:
! 184: The primary goal of reference implementation is to prove the
! 185: reference material. If the reference material is good, then you
! 186: should be able to sit down and write a program that implements the
! 187: reference, to the word, and come to an implementation that is
! 188: distinguishable from others in the details, but not in the facts of
! 189: operating the protocol. This means that there is no need for
! 190: 'special knowledge' to work around arcane problems that were left
! 191: undocumented. No secret handshakes need to be learned to be imparted
! 192: with the necessary "real documentation".
! 193:
! 194: Also, by accepting only reference as the guidebook for ISC DHCP's
! 195: software implementation, anyone who can make an impact on the color
! 196: texture or form of that reference has a (somewhat indirect) voice in
! 197: ISC DHCP's software design. As the IETF RFC's have been selected as
! 198: the source of reference, that means everyone on the Internet with the
! 199: will to participate has a say.
! 200:
! 201:
! 202: 3. Low Layer References
! 203:
! 204: It may surprise you to realize that ISC DHCP implements 802.1
! 205: 'Ethernet' framing, Token Ring, and FDDI. In order to bridge the gap
! 206: there between these physical and DHCP layers, it must also implement
! 207: IP and UDP framing.
! 208:
! 209: The reason for this stems from Unix systems' handling of BSD sockets
! 210: (the general way one might engage in transmission of UDP packets) on
! 211: unconfigured interfaces, or even the handling of broadcast addressing
! 212: on configured interfaces.
! 213:
! 214: There are a few things that DHCP servers, relays, and clients all
! 215: need to do in order to speak the DHCP protocol in strict compliance
! 216: with RFC2131 [RFC2131].
! 217:
! 218: 1. Transmit a UDP packet from IP:0.0.0.0 Ethernet:Self, destined to
! 219: IP:255.255.255.255 LinkLayer:Broadcast on an unconfigured (no IP
! 220:
! 221:
! 222:
! 223: Hankins [Page 4]
! 224:
! 225: ISC DHCP References Collection May 2007
! 226:
! 227:
! 228: address yet) interface.
! 229:
! 230: 2. Receive a UDP packet from IP:remote-system LinkLayer:remote-
! 231: system, destined to IP:255.255.255.255 LinkLayer:Broadcast, again
! 232: on an unconfigured interface.
! 233:
! 234: 3. Transmit a UDP packet from IP:Self, Ethernet:Seelf, destined to
! 235: IP:remote-system LinkLayer:remote-system, without transmitting a
! 236: single ARP.
! 237:
! 238: 4. And of course the simple case, a regular IP unicast that is
! 239: routed via the usual means (so it may be direct to a local
! 240: system, with ARP providing the glue, or it may be to a remote
! 241: system via one or more routers as normal). In this case, the
! 242: interfaces are always configured.
! 243:
! 244: The above isn't as simple as it sounds on a regular BSD socket. Many
! 245: unix implementations will transmit broadcasts not to 255.255.255.255,
! 246: but to x.y.z.255 (where x.y.z is the system's local subnet). Such
! 247: packets are not received by several known DHCP client implementations
! 248: - and it's not their fault, RFC2131 [RFC2131] very explicitly demands
! 249: that these packets' IP destination addresses be set to
! 250: 255.255.255.255.
! 251:
! 252: Receiving packets sent to 255.255.255.255 isn't a problem on most
! 253: modern unixes...so long as the interface is configured. When there
! 254: is no IPv4 address on the interface, things become much more murky.
! 255:
! 256: So, for this convoluted and unfortunate state of affairs in the unix
! 257: systems of the day ISC DHCP was manufactured, in order to do what it
! 258: needs not only to implement the reference but to interoperate with
! 259: other implementations, the software must create some form of raw
! 260: socket to operate on.
! 261:
! 262: What it actually does is create, for each interface detected on the
! 263: system, a Berkeley Packet Filter socket (or equivalent), and program
! 264: it with a filter that brings in only DHCP packets. A "fallback" UDP
! 265: Berkeley socket is generally also created, a single one no matter how
! 266: many interfaces. Should the software need to transmit a contrived
! 267: packet to the local network the packet is formed piece by piece and
! 268: transmitted via the BPF socket. Hence the need to implement many
! 269: forms of Link Layer framing and above. The software gets away with
! 270: not having to implement IP routing tables as well by simply utilizing
! 271: the aforementioned 'fallback' UDP socket when unicasting between two
! 272: configured systems is the need.
! 273:
! 274: Modern unixes have opened up some facilities that diminish how much
! 275: of this sort of nefarious kludgery is necessary, but have not found
! 276:
! 277:
! 278:
! 279: Hankins [Page 5]
! 280:
! 281: ISC DHCP References Collection May 2007
! 282:
! 283:
! 284: the state of affairs absolutely absolved. In particular, one might
! 285: now unicast without ARP by inserting an entry into the ARP cache
! 286: prior to transmitting. Unconfigured interfaces remain the sticking
! 287: point, however...on virtually no modern unixes is it possible to
! 288: receive broadcast packets unless a local IPv4 address has been
! 289: configured, unless it is done with raw sockets.
! 290:
! 291: 3.1. Ethernet Protocol References
! 292:
! 293: ISC DHCP Implements Ethernet Version 2 ("DIX"), which is a variant of
! 294: IEEE 802.2. No good reference of this framing is known to exist at
! 295: this time, but it is vaguely described in RFC894 [RFC0894] (see the
! 296: section titled "Packet format"), and the following URL is also
! 297: thought to be useful.
! 298:
! 299: http://en.wikipedia.org/wiki/DIX
! 300:
! 301: 3.2. Token Ring Protocol References
! 302:
! 303: IEEE 802.5 defines the Token Ring framing format used by ISC DHCP.
! 304:
! 305: 3.3. FDDI Protocol References
! 306:
! 307: RFC1188 [RFC1188] is the most helpful reference ISC DHCP has used to
! 308: form FDDI packets.
! 309:
! 310: 3.4. Internet Protocol Version 4 References
! 311:
! 312: RFC760 [RFC0760] fundamentally defines the bare IPv4 protocol which
! 313: ISC DHCP implements.
! 314:
! 315: 3.5. Unicast Datagram Protocol References
! 316:
! 317: RFC768 [RFC0768] defines the User Datagram Protocol that ultimately
! 318: carries the DHCP or BOOTP protocol. The destination DHCP server port
! 319: is 67, the client port is 68. Source ports are irrelevant.
! 320:
! 321:
! 322: 4. BOOTP Protocol References
! 323:
! 324: The DHCP Protocol is strange among protocols in that it is grafted
! 325: over the top of another protocol - BOOTP (but we don't call it "DHCP
! 326: over BOOTP" like we do, say "TCP over IP"). BOOTP and DHCP share UDP
! 327: packet formats - DHCP is merely a conventional use of both BOOTP
! 328: header fields and the trailing 'options' space.
! 329:
! 330: The ISC DHCP server supports BOOTP clients conforming to RFC951
! 331: [RFC0951] and RFC1542 [RFC1542].
! 332:
! 333:
! 334:
! 335: Hankins [Page 6]
! 336:
! 337: ISC DHCP References Collection May 2007
! 338:
! 339:
! 340: 5. DHCP Protocol References
! 341:
! 342: 5.1. DHCPv4 Protocol
! 343:
! 344: "The DHCP[v4] Protocol" is not defined in a single document. The
! 345: following collection of references of what ISC DHCP terms "The DHCPv4
! 346: Protocol".
! 347:
! 348: 5.1.1. Core Protocol References
! 349:
! 350: RFC2131 [RFC2131] defines the protocol format and procedures. ISC
! 351: DHCP is not known to diverge from this document in any way. There
! 352: are, however, a few points on which different implementations have
! 353: arisen out of vagueries in the document. DHCP Clients exist which,
! 354: at one time, present themselves as using a Client Identifier Option
! 355: which is equal to the client's hardware address. Later, the client
! 356: transmits DHCP packets with no Client Identifier Option present -
! 357: essentially identifying themselves using the hardware address. Some
! 358: DHCP Servers have been developed which identify this client as a
! 359: single client. ISC has interpreted RFC2131 to indicate that these
! 360: clients must be treated as two separate entities (and hence two,
! 361: separate addresses). Client behaviour (Embedded Windows products)
! 362: has developed that relies on the former implementation, and hence is
! 363: incompatible with the latter. Also, RFC2131 demands explicitly that
! 364: some header fields be zeroed upon certain message types. The ISC
! 365: DHCP Server instead copies many of these fields from the packet
! 366: received from the client or relay, which may not be zero. It is not
! 367: known if there is a good reason for this that has not been
! 368: documented.
! 369:
! 370: RFC2132 [RFC2132] defines the initial set of DHCP Options and
! 371: provides a great deal of guidance on how to go about formatting and
! 372: processing options. The document unfortunately waffles to a great
! 373: extent about the NULL termination of DHCP Options, and some DHCP
! 374: Clients (Windows 95) have been implemented that rely upon DHCP
! 375: Options containing text strings to be NULL-terminated (or else they
! 376: crash). So, ISC DHCP detects if clients null-terminate the host-name
! 377: option and, if so, null terminates any text options it transmits to
! 378: the client. It also removes NULL termination from any known text
! 379: option it receives prior to any other processing.
! 380:
! 381: 5.2. DHCPv6 Protocol References
! 382:
! 383: For now there is only one document that specifies the DHCPv6 protocol
! 384: (there have been no updates yet), RFC3315 [RFC3315].
! 385:
! 386: Support for DHCPv6 was added first in version 4.0.0. The server and
! 387: client support only IA_NA. While the server does support multiple
! 388:
! 389:
! 390:
! 391: Hankins [Page 7]
! 392:
! 393: ISC DHCP References Collection May 2007
! 394:
! 395:
! 396: IA_NAs within one packet from the client, our client only supports
! 397: sending one. There is no relay support.
! 398:
! 399: DHCPv6 introduces some new and uncomfortable ideas to the common
! 400: software library.
! 401:
! 402: 1. Options of zero length are normal in DHCPv6. Currently, all ISC
! 403: DHCP software treats zero-length options as errors.
! 404:
! 405: 2. Options sometimes may appear multiple times. The common library
! 406: used to treat all appearance of multiple options as specified in
! 407: RFC2131 - to be concatenated. DHCPv6 options may sometimes
! 408: appear multiple times (such as with IA_NA or IAADDR), but often
! 409: must not.
! 410:
! 411: 3. The same option space appears in DHCPv6 packets multiple times.
! 412: If the packet was got via a relay, then the client's packet is
! 413: stored to an option within the relay's packet...if there were two
! 414: relays, this recurses. At each of these steps, the root "DHCPv6
! 415: option space" is used. Further, a client packet may contain an
! 416: IA_NA, which may contain an IAADDR - but really, in an abstract
! 417: sense, this is again re-encapsulation of the DHCPv6 option space
! 418: beneath options it also contains.
! 419:
! 420: Precisely how to correctly support the above conundrums has not quite
! 421: yet been settled, so support is incomplete.
! 422:
! 423: 5.3. DHCP Option References
! 424:
! 425: RFC2241 [RFC2241] defines options for Novell Directory Services.
! 426:
! 427: RFC2242 [RFC2242] defines an encapsulated option space for NWIP
! 428: configuration.
! 429:
! 430: RFC2485 [RFC2485] defines the Open Group's UAP option.
! 431:
! 432: RFC2610 [RFC2610] defines options for the Service Location Protocol
! 433: (SLP).
! 434:
! 435: RFC2937 [RFC2937] defines the Name Service Search Option (not to be
! 436: confused with the domain-search option). The Name Service Search
! 437: Option allows eg nsswitch.conf to be reconfigured via dhcp. The ISC
! 438: DHCP server implements this option, and the ISC DHCP client is
! 439: compatible...but does not by default install this option's value.
! 440: One would need to make their relevant dhclient-script process this
! 441: option in a way that is suitable for the system.
! 442:
! 443: RFC3004 [RFC3004] defines the User-Class option. Note carefully that
! 444:
! 445:
! 446:
! 447: Hankins [Page 8]
! 448:
! 449: ISC DHCP References Collection May 2007
! 450:
! 451:
! 452: ISC DHCP currently does not implement to this reference, but has
! 453: (inexplicably) selected an incompatible format: a plain text string.
! 454:
! 455: RFC3011 [RFC3011] defines the Subnet-Selection plain DHCPv4 option.
! 456: Do not confuse this option with the relay agent "link selection" sub-
! 457: option, although their behaviour is similar.
! 458:
! 459: RFC3319 [RFC3319] defines the SIP server options for DHCPv6.
! 460:
! 461: RFC3396 [RFC3396] documents both how long options may be encoded in
! 462: DHCPv4 packets, and also how multiple instances of the same option
! 463: code within a DHCPv4 packet will be decoded by receivers.
! 464:
! 465: RFC3397 [RFC3397] documents the Domain-Search Option, which allows
! 466: the configuration of the /etc/resolv.conf 'search' parameter in a way
! 467: that is RFC1035 [RFC1035] wire format compatible (in fact, it uses
! 468: the RFC1035 wire format). ISC DHCP has both client and server
! 469: support, and supports RFC1035 name compression.
! 470:
! 471: RFC3646 [RFC3646] documents the DHCPv6 name-servers and domain-search
! 472: options.
! 473:
! 474: RFC3633 [RFC3633] documents the Identity Association Prefix
! 475: Delegation, which is included here for protocol wire reference, but
! 476: which is not supported by ISC DHCP.
! 477:
! 478: RFC3679 [RFC3679] documents a number of options that were documented
! 479: earlier in history, but were not made use of.
! 480:
! 481: RFC3898 [RFC3898] documents four NIS options for delivering NIS
! 482: servers and domain information in DHCPv6.
! 483:
! 484: RFC3925 [RFC3925] documents a pair of Enterprise-ID delimited option
! 485: spaces for vendors to use in order to inform servers of their "vendor
! 486: class" (sort of like 'uname' or 'who and what am I'), and a means to
! 487: deliver vendor-specific and vendor-documented option codes and
! 488: values.
! 489:
! 490: RFC3942 [RFC3942] redefined the 'site local' option space.
! 491:
! 492: RFC4075 [RFC4075] defines the DHCPv6 SNTP Servers option.
! 493:
! 494: RFC4242 [RFC4242] defines the Information Refresh Time option, which
! 495: advises DHCPv6 Information-Request clients to return for updated
! 496: information.
! 497:
! 498: RFC4280 [RFC4280] defines two BCMS server options.
! 499:
! 500:
! 501:
! 502:
! 503: Hankins [Page 9]
! 504:
! 505: ISC DHCP References Collection May 2007
! 506:
! 507:
! 508: RFC4388 [RFC4388] defined the DHCPv4 LEASEQUERY message type and a
! 509: number of suitable response messages, for the purpose of sharing
! 510: information about DHCP served addresses and clients.
! 511:
! 512: RFC4580 [RFC4580] defines a DHCPv6 subscriber-id option, which is
! 513: similar in principle to the DHCPv4 relay agent option of the same
! 514: name.
! 515:
! 516: RFC4649 [RFC4649] defines a DHCPv6 remote-id option, which is similar
! 517: in principle to the DHCPv4 relay agent remote-id.
! 518:
! 519: 5.3.1. Relay Agent Information Option Options
! 520:
! 521: RFC3046 [RFC3046] defines the Relay Agent Information Option and
! 522: provides a number of sub-option definitions.
! 523:
! 524: RFC3256 [RFC3256] defines the DOCSIS Device Class sub-option.
! 525:
! 526: RFC3527 [RFC3527] defines the Link Selection sub-option.
! 527:
! 528: 5.3.2. Dynamic DNS Updates References
! 529:
! 530: The collection of documents that describe the standards-based method
! 531: to update dns names of DHCP clients starts most easily with RFC4703
! 532: [RFC4703] to define the overall architecture, travels through RFCs
! 533: 4702 [RFC4702] and 4704 [RFC4704] to describe the DHCPv4 and DHCPv6
! 534: FQDN options (to carry the client name), and ends up at RFC4701
! 535: [RFC4701] which describes the DHCID RR used in DNS to perform a kind
! 536: of atomic locking.
! 537:
! 538: ISC DHCP adopted early versions of these documents, and has not yet
! 539: synchronized with the final standards versions.
! 540:
! 541: For RFCs 4702 and 4704, the 'N' bit is not yet supported. The result
! 542: is that it is always set zero, and is ignored if set.
! 543:
! 544: For RFC4701, which is used to match client identities with names in
! 545: the DNS as part of name conflict resolution. Note that ISC DHCP's
! 546: implementation of DHCIDs vary wildly from this specification. First,
! 547: ISC DHCP uses a TXT record in which the contents are stored in
! 548: hexadecimal. Second, there is a flaw in the selection of the
! 549: 'Identifier Type', which results in a completely different value
! 550: being selected than was defined in an older revision of this
! 551: document...also this field is one byte prior to hexadecimal encoding
! 552: rather than two. Third, ISC DHCP does not use a digest type code.
! 553: Rather, all values for such TXT records are reached via an MD5 sum.
! 554: In short, nothing is compatible, but the principle of the TXT record
! 555: is the same as the standard DHCID record. However, for DHCPv6 FQDN,
! 556:
! 557:
! 558:
! 559: Hankins [Page 10]
! 560:
! 561: ISC DHCP References Collection May 2007
! 562:
! 563:
! 564: we do use DHCID type code '2', as no other value really makes sense
! 565: in our context.
! 566:
! 567: 5.3.3. Experimental: Failover References
! 568:
! 569: The Failover Protocol defines a means by which two DHCP Servers can
! 570: share all the relevant information about leases granted to DHCP
! 571: clients on given networks, so that one of the two servers may fail
! 572: and be survived by a server that can act responsibly.
! 573:
! 574: Unfortunately it has been quite some years since the last time this
! 575: document was edited, and the authors no longer show any interest in
! 576: fielding comments or improving the document.
! 577:
! 578: The status of this protocol is very unsure, but ISC's implementation
! 579: of it has proven stable and suitable for use in sizable production
! 580: environments.
! 581:
! 582: draft-ietf-dhc-failover-12.txt [draft-failover] describes the
! 583: Failover Protocol. In addition to what is described in this
! 584: document, ISC DHCP has elected to make some experimental changes that
! 585: may be revoked in a future version of ISC DHCP (if the draft authors
! 586: do not adopt the new behaviour). Specifically, ISC DHCP's POOLREQ
! 587: behaviour differs substantially from what is documented in the draft,
! 588: and the server also implements a form of 'MAC Address Affinity' which
! 589: is not described in the failover document. The full nature of these
! 590: changes have been described on the IETF DHC WG mailing list (which
! 591: has archives), and also in ISC DHCP's manual pages. Also note that
! 592: although this document references a RECOVER-WAIT state, it does not
! 593: document a protocol number assignment for this state. As a
! 594: consequence, ISC DHCP has elected to use the value 254.
! 595:
! 596: RFC3074 [RFC3074] describes the Load Balancing Algorithm (LBA) that
! 597: ISC DHCP uses in concert with the Failover protocol. Note that
! 598: versions 3.0.* are known to misimplement the hash algorithm (it will
! 599: only use the low 4 bits of every byte of the hash bucket array).
! 600:
! 601: 5.4. DHCP Procedures
! 602:
! 603: RFC2939 [RFC2939] explains how to go about obtaining a new DHCP
! 604: Option code assignment.
! 605:
! 606:
! 607: 6. References
! 608:
! 609: [RFC0760] Postel, J., "DoD standard Internet Protocol", RFC 760,
! 610: January 1980.
! 611:
! 612:
! 613:
! 614:
! 615: Hankins [Page 11]
! 616:
! 617: ISC DHCP References Collection May 2007
! 618:
! 619:
! 620: [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
! 621: August 1980.
! 622:
! 623: [RFC0894] Hornig, C., "Standard for the transmission of IP datagrams
! 624: over Ethernet networks", STD 41, RFC 894, April 1984.
! 625:
! 626: [RFC0951] Croft, B. and J. Gilmore, "Bootstrap Protocol", RFC 951,
! 627: September 1985.
! 628:
! 629: [RFC1035] Mockapetris, P., "Domain names - implementation and
! 630: specification", STD 13, RFC 1035, November 1987.
! 631:
! 632: [RFC1188] Katz, D., "Proposed Standard for the Transmission of IP
! 633: Datagrams over FDDI Networks", RFC 1188, October 1990.
! 634:
! 635: [RFC1542] Wimer, W., "Clarifications and Extensions for the
! 636: Bootstrap Protocol", RFC 1542, October 1993.
! 637:
! 638: [RFC2131] Droms, R., "Dynamic Host Configuration Protocol",
! 639: RFC 2131, March 1997.
! 640:
! 641: [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor
! 642: Extensions", RFC 2132, March 1997.
! 643:
! 644: [RFC2241] Provan, D., "DHCP Options for Novell Directory Services",
! 645: RFC 2241, November 1997.
! 646:
! 647: [RFC2242] Droms, R. and K. Fong, "NetWare/IP Domain Name and
! 648: Information", RFC 2242, November 1997.
! 649:
! 650: [RFC2485] Drach, S., "DHCP Option for The Open Group's User
! 651: Authentication Protocol", RFC 2485, January 1999.
! 652:
! 653: [RFC2610] Perkins, C. and E. Guttman, "DHCP Options for Service
! 654: Location Protocol", RFC 2610, June 1999.
! 655:
! 656: [RFC2937] Smith, C., "The Name Service Search Option for DHCP",
! 657: RFC 2937, September 2000.
! 658:
! 659: [RFC2939] Droms, R., "Procedures and IANA Guidelines for Definition
! 660: of New DHCP Options and Message Types", BCP 43, RFC 2939,
! 661: September 2000.
! 662:
! 663: [RFC3004] Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis,
! 664: A., Beser, B., and J. Privat, "The User Class Option for
! 665: DHCP", RFC 3004, November 2000.
! 666:
! 667: [RFC3011] Waters, G., "The IPv4 Subnet Selection Option for DHCP",
! 668:
! 669:
! 670:
! 671: Hankins [Page 12]
! 672:
! 673: ISC DHCP References Collection May 2007
! 674:
! 675:
! 676: RFC 3011, November 2000.
! 677:
! 678: [RFC3046] Patrick, M., "DHCP Relay Agent Information Option",
! 679: RFC 3046, January 2001.
! 680:
! 681: [RFC3074] Volz, B., Gonczi, S., Lemon, T., and R. Stevens, "DHC Load
! 682: Balancing Algorithm", RFC 3074, February 2001.
! 683:
! 684: [RFC3256] Jones, D. and R. Woundy, "The DOCSIS (Data-Over-Cable
! 685: Service Interface Specifications) Device Class DHCP
! 686: (Dynamic Host Configuration Protocol) Relay Agent
! 687: Information Sub-option", RFC 3256, April 2002.
! 688:
! 689: [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
! 690: and M. Carney, "Dynamic Host Configuration Protocol for
! 691: IPv6 (DHCPv6)", RFC 3315, July 2003.
! 692:
! 693: [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration
! 694: Protocol (DHCPv6) Options for Session Initiation Protocol
! 695: (SIP) Servers", RFC 3319, July 2003.
! 696:
! 697: [RFC3396] Lemon, T. and S. Cheshire, "Encoding Long Options in the
! 698: Dynamic Host Configuration Protocol (DHCPv4)", RFC 3396,
! 699: November 2002.
! 700:
! 701: [RFC3397] Aboba, B. and S. Cheshire, "Dynamic Host Configuration
! 702: Protocol (DHCP) Domain Search Option", RFC 3397,
! 703: November 2002.
! 704:
! 705: [RFC3527] Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy,
! 706: "Link Selection sub-option for the Relay Agent Information
! 707: Option for DHCPv4", RFC 3527, April 2003.
! 708:
! 709: [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic
! 710: Host Configuration Protocol (DHCP) version 6", RFC 3633,
! 711: December 2003.
! 712:
! 713: [RFC3646] Droms, R., "DNS Configuration options for Dynamic Host
! 714: Configuration Protocol for IPv6 (DHCPv6)", RFC 3646,
! 715: December 2003.
! 716:
! 717: [RFC3679] Droms, R., "Unused Dynamic Host Configuration Protocol
! 718: (DHCP) Option Codes", RFC 3679, January 2004.
! 719:
! 720: [RFC3898] Kalusivalingam, V., "Network Information Service (NIS)
! 721: Configuration Options for Dynamic Host Configuration
! 722: Protocol for IPv6 (DHCPv6)", RFC 3898, October 2004.
! 723:
! 724:
! 725:
! 726:
! 727: Hankins [Page 13]
! 728:
! 729: ISC DHCP References Collection May 2007
! 730:
! 731:
! 732: [RFC3925] Littlefield, J., "Vendor-Identifying Vendor Options for
! 733: Dynamic Host Configuration Protocol version 4 (DHCPv4)",
! 734: RFC 3925, October 2004.
! 735:
! 736: [RFC3942] Volz, B., "Reclassifying Dynamic Host Configuration
! 737: Protocol version 4 (DHCPv4) Options", RFC 3942,
! 738: November 2004.
! 739:
! 740: [RFC4075] Kalusivalingam, V., "Simple Network Time Protocol (SNTP)
! 741: Configuration Option for DHCPv6", RFC 4075, May 2005.
! 742:
! 743: [RFC4242] Venaas, S., Chown, T., and B. Volz, "Information Refresh
! 744: Time Option for Dynamic Host Configuration Protocol for
! 745: IPv6 (DHCPv6)", RFC 4242, November 2005.
! 746:
! 747: [RFC4280] Chowdhury, K., Yegani, P., and L. Madour, "Dynamic Host
! 748: Configuration Protocol (DHCP) Options for Broadcast and
! 749: Multicast Control Servers", RFC 4280, November 2005.
! 750:
! 751: [RFC4388] Woundy, R. and K. Kinnear, "Dynamic Host Configuration
! 752: Protocol (DHCP) Leasequery", RFC 4388, February 2006.
! 753:
! 754: [RFC4580] Volz, B., "Dynamic Host Configuration Protocol for IPv6
! 755: (DHCPv6) Relay Agent Subscriber-ID Option", RFC 4580,
! 756: June 2006.
! 757:
! 758: [RFC4649] Volz, B., "Dynamic Host Configuration Protocol for IPv6
! 759: (DHCPv6) Relay Agent Remote-ID Option", RFC 4649,
! 760: August 2006.
! 761:
! 762: [RFC4701] Stapp, M., Lemon, T., and A. Gustafsson, "A DNS Resource
! 763: Record (RR) for Encoding Dynamic Host Configuration
! 764: Protocol (DHCP) Information (DHCID RR)", RFC 4701,
! 765: October 2006.
! 766:
! 767: [RFC4702] Stapp, M., Volz, B., and Y. Rekhter, "The Dynamic Host
! 768: Configuration Protocol (DHCP) Client Fully Qualified
! 769: Domain Name (FQDN) Option", RFC 4702, October 2006.
! 770:
! 771: [RFC4703] Stapp, M. and B. Volz, "Resolution of Fully Qualified
! 772: Domain Name (FQDN) Conflicts among Dynamic Host
! 773: Configuration Protocol (DHCP) Clients", RFC 4703,
! 774: October 2006.
! 775:
! 776: [RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for
! 777: IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN)
! 778: Option", RFC 4704, October 2006.
! 779:
! 780:
! 781:
! 782:
! 783: Hankins [Page 14]
! 784:
! 785: ISC DHCP References Collection May 2007
! 786:
! 787:
! 788: [draft-failover]
! 789: Droms, R., "DHCP Failover Protocol", March 2003.
! 790:
! 791:
! 792: Author's Address
! 793:
! 794: David W. Hankins
! 795: Internet Systems Consortium, Inc.
! 796: 950 Charter Street
! 797: Redwood City, CA 94063
! 798:
! 799: Phone: +1 650 423 1300
! 800: Email: David_Hankins@isc.org
! 801:
! 802:
! 803:
! 804:
! 805:
! 806:
! 807:
! 808:
! 809:
! 810:
! 811:
! 812:
! 813:
! 814:
! 815:
! 816:
! 817:
! 818:
! 819:
! 820:
! 821:
! 822:
! 823:
! 824:
! 825:
! 826:
! 827:
! 828:
! 829:
! 830:
! 831:
! 832:
! 833:
! 834:
! 835:
! 836:
! 837:
! 838:
! 839: Hankins [Page 15]
! 840:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>