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>