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