# NAME

      RRRequest.seq - Requesting Router transmit Request messages to populate IA_PD with delegated prefix

# TARGET

      Router for DHCP client

# SYNOPSIS

RRRequest.seq [-tooloption ...] -pkt RRRequest.def -tooloption : v6eval tool option

# TOPOLOGY

>        TN       TN1
>         |        |            ISP site
>       --+----+---+----------- Link0
>              |
>             NUT     Host
>              |       |        Customer site
>       -------+-------+------- Link1 3ffe:501:fffb:XXXX::/64

> `TN (Preference 200)` | `Link-local` | `fe80::200:ff:fe00:a0a0`
> `Ether` | `00:00:00:00:a0:a0`
> `Delegate Prefix` | `3ffe:501:fffb::`
> `Prefix Length` | `48`
> `TN1 (Preference 100)` | `Link-local` | `fe80::200:ff:fe00:a1a1`
> `Ether` | `00:00:00:00:a1:a1`
> `Delegate Prefix` | `3ffe:501:fffb::`
> `Prefix Length` | `48`
> `Host` | `Link-local` | `fe80::200:ff:fe00:101`
> `ether` | `00:00:00:00:01:01`

# INITIALIZATION

1. NUT sets up Prefix Delegation.
2. NUT sets up Router Advertisement to the interface by the side of downstream.

    Tester as Server          Target as Client        Tester as Host
        |                           |                           |
        |<--------------------------|                           |
        |   DHCP Solicit message    |                           |
        |                           |                           |
        |-------------------------->|                           |
        |   DHCP Advertise messages |                           |
        |   with Preference option  |                           |
        |   containing preference   |                           |
        |   value: 200              |                           |
        |                           |                           |
        |-------------------------->|                           |
        |   DHCP Advertise messages |                           |
        |   with Preference option  |                           |
        |   containing preference   |                           |
        |   value: 100              |                           |
        |                           |                           |

      1. Wait DHCP Solicit message
      2. Send DHCP Advertise messages with preference value 200
      3. Send DHCP Advertise messages with preference value 100

    Addresses

    Solicit message

          Src
          NUT link-local address

          Dst
          All_DHCP_Relay_Agents_and_Servers

    All_DHCP_Relay_Agents_and_Servers FF02::1:2

    Advertise message

          Src
          fe80::200:ff:fe00:a0a0

          Dst
          NUT link-local address

    UDP Ports

          Clients listen for DHCP messages on UDP port 546
          Server listen for DHCP messages on UDP port 547

    DHCP Messages

    DHCP Solicit message

          msg-type
          SOLICIT(1)

          transaction-id
          The transaction ID for this message exchange

          options

          Client Identifier Option (MUST)

          IA_PD Option (MUST)

          Code
          33 (TBD)

          IAID
          The unique identifier which client specified

          T1
          ANY

          T2
          ANY

          Elapsed Time Option (MUST)

          elapsed-time
          ANY

          Option Request Option (Optional)

    DHCP Advertise message 1 with Preference option including pref-value 200

          msg-type
          ADVERTISE(2)

          transaction-id
          The same transaction ID previous message

          options

          Client Identifier Option

          Server Identifier Option

          DUID Contents type
          1 Link-layer address plus time

          hardware type
          1 Ether

          time
          Time which the server included

          link-layer address
          00:00:00:00:a0:a0

          Preference Option

          pref-value
          200

          IA_PD Option

          Code
          33 (TBD)

          IAID
          Unique identifier which client specified

          T1
          40

          T2
          64

          IA_PD Prefix Option

          Code
          34 (TBD)

          preferred-lifetime
          80

          valid-lifetime
          120

          prefix-length
          48

          IPv6 prefix
          3ffe:501:fffb::

    DHCP Advertise message 2 with Preference option including pref-value 100

          msg-type
          ADVERTISE(2)

          transaction-id
          The same transaction ID previous message

          options

          Client Identifier Option

          Server Identifier Option

          DUID Contents type
          1 Link-layer address plus time

          hardware type
          1 Ether

          time
          Time which the server included

          link-layer address
          00:00:00:00:a1:a1

          Preference Option

          pref-value
          100

          IA_PD Option

          Code
          33 (TBD)

          IAID
          Unique identifier which client specified

          T1
          300

          T2
          480

          IA_PD Prefix Option

          Code
          34 (TBD)

          preferred-lifetime
          600

          valid-lifetime
          1200

          prefix-length
          48

          IPv6 prefix
          3ffe:501:fffd::

# TEST PROCEDURE

    Tester as PE              Target as CPE             Tester as client
        |                           |                           |
        |<--------------------------|                           |
        |   Judgment #1             |                           |
        |   DHCP Request message    |                           |
        |                           |                           |
        |           :               |                           |
        |   Judgment #2             |                           |
        |  Contining REQ_MAX_RC(10) |                           |
        |   times                   |                           |
        |           :               |                           |
        |                           |                           |
        |<--------------------------|                           |
        |   Judgment #3             |                           |
        |   DHCP Request message    |                           |
        |   to TN1's DUID           |                           |
        |        or                 |                           |
        |   DHCP Solicit message    |                           |
        |                           |                           |
        |                           |                           |
        v                           v

      1. Wait until receiving DHCP Request message REQ_MAX_RC(10) times.
      2. NUT takes an action based on the client's local policy.
        -  Select another server from a list of servers known to the client;
           for example, servers that responded with an Advertise message
        -  Initiate the server discovery process described in section 17
        -  Terminate the configuration process and report failure

    Addresses

    Request messages

          Src
          NUT link-local address

          Dst
          All_DHCP_Relay_Agents_and_Servers

    All_DHCP_Relay_Agents_and_Servers FF02::1:2

    UDP Ports

          Clients listen for DHCP messages on UDP port 546
          Server listen for DHCP messages on UDP port 547

    DHCP Messages

    DHCP Request message with IA_PD option including TNs DUID

          msg-type
          REQUEST(3)

          transaction-id
          The transaction ID for this message exchange

          options

          Client Identifier Option  (MUST)

          Server Identifier Option  (MUST)

          DUID Contents type
          1 Link-layer address plus time

          hardware type
          1 Ether

          time
          Time which the server included

          link-layer address
          00:00:00:00:a0:a0

          IA_PD Option  (MUST)

          Code
          33 (TBD)

          IAID
          Unique identifier which client specified

          T1
          ANY

          T2
          ANY

          IA_PD Prefix Option (Optional)

          Code
          34 (TBD)

          preferred-lifetime
          ANY

          valid-lifetime
          ANY

          prefix-length
          48

          IPv6 prefix
          3ffe:501:fffb::

            Elapsed Time Option  (MUST)

          elapsed-time
          ANY

           Option Request Option (Optional)

    DHCP Request message with IA_PD option including TN1s DUID

          msg-type
          REQUEST(3)

          transaction-id
          The transaction ID for this message exchange

          options

          Client Identifier Option  (MUST)

          Server Identifier Option  (MUST)

          DUID Contents type
          1 Link-layer address plus time

          hardware type
          1 Ether

          time
          Time which the server included

          link-layer address
          00:00:00:00:a1:a1

          IA_PD Option  (MUST)

          Code
          33 (TBD)

          IAID
          Unique identifier which client specified

          T1
          ANY

          T2
          ANY

          IA_PD Prefix Option (Optional)

          Code
          34 (TBD)

          preferred-lifetime
          ANY

          valid-lifetime
          ANY

          prefix-length
          48

          IPv6 prefix
          3ffe:501:fffb::

            Elapsed Time Option  (MUST)

          elapsed-time
          ANY

           Option Request Option (Optional)

    DHCP Solicit message is same above.

# JUDGEMENT

      1. DHCP Request message is recieved

      2. DHCP Request message is received to REQ_MAX_RC(10) times.

      3. NUT takes an action based on the client's local policy.

# TERMINATION

      N/A

# REFERENCE

    draft-ietf-dhc-dhcpv6-opt-prefix-delegation-01.txt

    11. Requesting router initiated prefix delegation

       A requesting router uses the same message exchanges as described in
       section "DHCP Client-Initiated Configuration Exchange" of the DHCP
       specification [6] to obtain or update prefix(es) from a delegating
       router.  The requesting router and the delegating router use the
       IA_PD Prefix option to exchange information about prefix(es) in much
       the same way IA Address options are used for assigned addresses.

    11.1 Requesting router behaviour

       The requesting router uses a Request message to populate IA_PDs with
       prefixes.  The requesting router includes one or more IA_PD options
       in the Request message.  The delegating router then returns the
       prefixes for the IA_PDs to the requesting router in IA_PD options in
       a Reply message.

    draft-ietf-dhc-dhcpv6-28.txt

    14. Reliability of Client Initiated Message Exchanges

       see the retransmission mechanism

    15. Message Validation

    15.4. Request Message

       Clients MUST discard any received Request messages.

       Servers MUST discard any received Request message that meet any of
       the following conditions:

        -  the message does not include a Server Identifier option

        -  the contents of the Server Identifier option do not match the
           server's DUID

        -  the message does not include a Client Identifier option

    18. DHCP Client-Initiated Configuration Exchange

       A client initiates a message exchange with a server or servers
       to acquire or update configuration information of interest.  The
       client may initiate the configuration exchange as part of the
       operating system configuration process, when requested to do
       so by the application layer, when required by Stateless Address
       Autoconfiguration or as required to extend the lifetime of an address
       (Renew and Rebind messages).

    18.1. Client Behavior

       A client uses Request, Renew, Rebind, Release and Decline messages
       during the normal life cycle of addresses.  It uses Confirm to
       validate addresses when it may have moved to a new link.  It uses
       Information-Request messages when it needs configuration information
       but no addresses.

       If the client has a source address of sufficient scope that can be
       used by the server as a return address and the client has received
       a Server Unicast option (section 22.12) from the server, the client
       SHOULD unicast any Request, Renew, Release and Decline messages to
       the server.

       DISCUSSION:

          Use of unicast may avoid delays due to relaying of messages
          by relay agents as well as avoid overhead and duplicate
          responses by servers due to delivery of client messages to
          multiple servers.  Requiring the client to relay all DHCP
          messages through a relay agent enables the inclusion of
          relay agent options in all messages sent by the client.  The
          server should enable the use of unicast only when relay
          agent options will not be used.

    18.1.1. Creation and Transmission of Request Messages

       The client uses a Request message to populate IAs with addresses and
       obtain other configuration information.  The client includes one or
       more IA options in the Request message.  The server then returns
       addresses and other information about the IAs to the client in IA
       options in a Reply message.

       The client generates a transaction ID and inserts this value in the
       "transaction-id" field.

       The client places the identifier of the destination server in a
       Server Identifier option.

       The client MUST include a Client Identifier option to identify itself
       to the server.  The client adds any other appropriate options,
       including one or more IA options (if the client is requesting that
       the server assign it some network addresses).

       The client MUST include an Option Request option (see section 22.7)
       to indicate the options the client is interested in receiving.  The
       client MAY include options with data values as hints to the server
       about parameter values the client would like to have returned.

       The client includes a Reconfigure Accept option (see section
       indicating whether or not the client is willing to accept Reconfigure
       messages from the server.

       The client transmits the message according to section 14, using the
       following parameters:

          IRT   REQ_TIMEOUT

          MRT   REQ_MAX_RT

          MRC   REQ_MAX_RC

          MRD   0

       If the message exchange fails, the client takes an action based on
       the client's local policy.  Examples of actions the client might take
       include:

        -  Select another server from a list of servers known to the client;
           for example, servers that responded with an Advertise message

        -  Initiate the server discovery process described in section 17

        -  Terminate the configuration process and report failure

    5.5. Transmission and Retransmission Parameters

       This section presents a table of values used to describe the message
       transmission behavior of clients and servers.

          Parameter     Default  Description
       -------------------------------------
       REQ_TIMEOUT       1 sec   Initial Request timeout
       REQ_MAX_RT       30 secs  Max Request timeout value
       REQ_MAX_RC       10       Max Request retry attempts

    24.2. DHCP Message Types

       IANA is requested to record the following message types (defined
       in section 5.3).  IANA is requested to maintain a registry of DHCP

          REQUEST               3

    A. Appearance of Options in Message Types

       The following table indicates with a "*" the options are allowed in
       each DHCP message type:

            Client Server IA_NA  Option Pref  Time Relay Auth. Server
              ID     ID   IA_TA  Request            Msg.       Unica.
    Request   *      *      *      *           *           *
             Status  Rap. User  Vendor Vendor Inter. Recon. Recon.
              Code  Comm. Class Class  Spec.    ID    Msg.  Accept
    Request                 *     *      *                    *

# SEE ALSO

      perldoc V6evalTool