1: <?xml version='1.0' ?>
2:
3: <!-- $Id: References.xml,v 1.1.1.1 2012/10/09 09:06:54 misho 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>