Subject: Draft text for DUID and IAID

From: Ralph Droms <[email-masked]>
Date: Fri, 22 Jun 2001 15:54:45 -0400

Included below is draft text from the -19 rev of the DHCPv6 spec that 
describes the "DHCP unique identifier" (DUID) and the "identity association 
identifier" (IAID).

I've explicitly separated the DUID from the IAID.  We had been discussing 
generating an "IA identifier" as the combination of a client identifier and 
an interface index.  Separating the two identifiers seemed cleaner to 
me.  A binding is now identified by <DUID, IAID>.

The rules for selecting a DUID are still TBD.

Please review and comment on this draft text.

- Ralph

=====

6.2. DHCP Terminology

    Terminology specific to DHCP can be found below.

       binding                   A binding (or, client binding) is a
                                 group of server data records containing
                                 the server's information about the
                                 addresses in an IA and any other
                                 configuration information assigned to
                                 the client.  A binding is indexed by the
                                 tuple <DUID, IAID>.

       DUID                      A DHCP unique identifier for a client.

                                 DISCUSSION:

                                    Rules for choosing a DUID are TBD.

       Identity association (IA) A collection of addresses assigned to
                                 a client.  Each IA has an associated
                                 IAID. An IA may have 0 or more addresses
                                 associated with it.

       Identity association identifier (IAID) An identifier for an IA,
                                 chosen by the client.  Each IA has an
                                 IAID, which is chosen to be unique among
                                 all IAIDs for IAs belonging to that
                                 client.

11. DHCP unique identifier (DUID)

    Each DHCP client has a DUID. DHCP servers use DUIDs to identify
    clients for the selection of configuration parameters and in
    the association of IAs with clients.  See section 18.2 for the
    representation of a DUID in a DHCP message.

    DISCUSSION:

       The syntax, rules for selecting and requirements for gloabl
       uniqueness in DUIDs are TBD.

       The DUID is carried in an option because it may be variable
       length and because it is not required in all DHCP options
       (e.g., messages sent by servers need not include a DUID).

12. Identity association

    An "identity-association" (IA) is a construct through which a server
    and a client can identify, group and manage IPv6 addresses.  Each IA
    consists of an IAID and a list of associated IPv6 addresses (the list
    may be empty).  A client associates an IA with one of its interfaces
    and uses the IA to obtain IPv6 addresses for that interface from a
    server.

    See section 18.3 for the representation of an IA in a DHCP message.

18. DHCP options

    Options are used to carry additional information and parameters
    in DHCP messages.  Every option shares a common base format, as
    described in section 18.1.

    This document describes the DHCP options defined as part of the base
    DHCP specification.  Other options may be defined in the future in a
    separate document.

18.1. Format of DHCP options

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          option-code          |           option-len          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          option-data                          |
      |                      (option-len octets)                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       option-code   An unsigned integer identifying the specific option
                     type carried in this option.

       option-len    An unsigned integer giving the length of the data in
                     this option in octets.

       option-data   The data for the option; the format of this data
                     depends on the definition of the option.

18.2. DHCP unique identifier option

    The DHCP unique identifier option is used to carry a DUID. The format
    for the DUID is keyed to mark the type of identifier and is of
    variable length.  The format of the DUID option is:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          OPTION DUID          |          option-len           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           DUID type           |           DUID len            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                             DUID                              |
      .                                                               .
      .                                                               .
      .                                                               .
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

18.3. Identity association option

    The identity association option is used to carry an identity
    association, the parameters associated with the IA and the addresses
    assigned to the IA.

    The format of the IA option is:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           OPTION IA           |          option-len           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        IAID (4 octets)                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              T1                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              T2                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   IA status   |   num-addrs   |T| addr status | prefix length |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                         IPv6 address                          |
      |                          (16 octets)                          |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      preferred lifetime                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        valid lifetime                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |T| addr status | prefix length |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
      |                         IPv6 address                          |
      |                          (16 octets)                          |
      |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                               |      preferred lifetime       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | pref. lifetime (cont.)        |        valid lifetime         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | valid lifetime (cont.)        |T| addr status | prefix length |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                         IPv6 address                          |
      |                          (16 octets)                          |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              ...                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       option-code          OPTION_IA (1)

       option-len           Variable; equal to 24 + num-addrs*26

       IA ID                The unique identifier for this IA; chosen by
                            the client

       T1                   The time at which the client contacts the
                            server from which the addresses in the IA
                            were obtained to extend the lifetimes of the
                            addresses assigned to the IA.

       T2                   The time at which the client contacts any
                            available server to extend the lifetimes of
                            the addresses assigned to the IA.

       T                    When set to 1, indicates that this address
                            is a "temporary address" [?]; when set to 0,
                            the address is not a temporary address.

       IA status            Status of the IA in this option.

       num-addrs            An unsigned integer giving the number of
                            addresses carried in this IA option (MAY be
                            zero).

       addr status          Status of the addresses in this IA.

       prefix length        Prefix length for this address.

       IPv6 address         An IPv6 address assigned to this IA.

       preferred lifetime   The preferred lifetime for the associated
                            IPv6 address.

       valid lifetime       The valid lifetime for the associated IPv6
                            address.

    The "IPv6 address", "preferred lifetime" and "valid lifetime" fields
    are repeated for each address in the IA option (as determined by the
    "num-addrs" field).

    Note that an IA has no explicit "lifetime" or "lease length" of
    its own.  When the lifetimes of all of the addresses in an IA have
    expired, the IA can be considered as having expired.  T1 and T2
    are included to give servers explicit control over when a client
    recontacts the server about a specific IA.

    The 'T' bit identifies the associated address as a temporary address.
    If the server is configured to assign temporary addresses to the
    client, the server marks those temporary addresses with the 'T'
    bit.  The number of temporary addresses assigned to the client and
    the lifetimes of those addresses is determined by the administrative
    configuration of the server.  The 'T' bit only identifies an address
    as a temporary address; identification of an address as ``temporary''
    has no implication on the lifetime of the extensibility of the
    lifetime of the address.