# NAME

      DDDHCPv6.seq - Host requests DNS configuration using DHCPv6

# TARGET

      Host

# SYNOPSIS

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

# TOPOLOGY

       Host1
        |                     ISP site
      --+----+--------------- Link1 3ffe:501:ffff:101::/64
             |
            TN      NUT
             |       |        Customer site
      -------+-------+------- Link0 3ffe:501:ffff:100::/64

> `Host1` | `Global address` | `3ffe:501:ffff:101:200:ff:fe00:a1a1`
> `TN DHCP and DNS Server` | Link0 | `Link-local` | `fe80::200:ff:fe00:a0a0`
> `Global address` | `3ffe:501:ffff:100:200:ff:fe00:a0a0`
> `Ether` | `00:00:00:00:a0:a0`
> `NUT` | `Link-local` | `NUT link-local address`
> `Global address` | `NUT 3ffe:501:ffff:100: + NUT's MAC Addr`

# INITIALIZATION

1. NUT sets up as DHCPv6 client Host

    Tester as Server        Target as Client
        |                           |
        |<--------------------------|
        |   Router Solicitation     |
        |                           |
        |-------------------------->|
        |   Router Advertisement    |
        |                           |

      1. Wait Router Solicitation
      2. Send Router Advertisement

# TEST PROCEDURE

    Tester as Server        Target as Client
        |                           |
        |<--------------------------|
        |   Judgment #1             |
        |  DHCP Information-request |
        |                           |
        |-------------------------->|
        |   DHCP Reply message      |
        |  w/ Domain list option    |
        |                           |
        |           <---------------|
        |          ICMP Echo request|
        |          to test.tahi.org |
        |                           |
        |<--------------------------|
        |   Judgment #2             |
        |  NUT send standard query  |
        | to distributed address by |
        |the DHCP for AAAA record of|
        |  "test.tahi.org"          |
        |                           |
        |-------------------------->|
        |   DNS response            |
        |  for AAAA record of       |
        |  "test.tahi.org           |
        |                           |
        |<--------------------------|
        |   Judgment #3             |
        |   ICMP Echo request       |
        |   to test.tahi.org        |
        |                           |
        |-------------------------->|
        |   ICMP Echo reply         |
        |   from test.tahi.org      |
        |                           |
        v                           v

      1. Wait DHCP Information-request message
      2. Send DHCP Reply message
      3. Wait DNS query to distributed address by the DHCP server for AAAA record of "test.tahi.org"
      4. Send DNS response for AAAA record of "test.tahi.org"
      5. Wait Echo request to test.tahi.org
      6. Send Echo reply from test.tahi.org

> DHCP Information-Request message

> msg-type | INFORMATION-REQUEST (11)
> option
> Client Identifier Option
> Elapsed Time Option (MUST)
> | elapsed-time | ANY
> Option Request Option
> | option-code | OPTION_DNS_SERVERS (tbd)

> DHCP Reply message

> msg-type | REPLY(7)
> options
> Client Identifier Option
> Server Identifier Option
> Domain Name Server option
> | Code | OPTION_DNS_SERVERS (tbd)
> | DNS-server | `3ffe:501:ffff:100:200:ff:fe00:a0a0`

> DNS query message
> Destination address is 3ffe:501:ffff:100:200:ff:fe00:a0a0

> Header
> | QR | 0 (SQUERY)
> | OPCODE | 0 (SQUERY)
> Question section
> | QNAME | test.tahi.org
> | QTYPE | 28 (IPv6 address)
> | QCLASS | 1 (Internet)

> DNS standard query response message

> Header
> | QR | 1 (RESPONSE)
> | OPCODE | 0 (SQUERY)
> | AA | 1 (Authoritative Answer)
> Question section
> | QNAME | test.tahi.org
> | QTYPE | 28 (IPv6 address)
> | QCLASS | 1 (Internet)
> Answer section
> | RRs |
> |  | NAME | test.tahi.org
> |  | TYPE | 28 (IPv6 address)
> |  | CLASS | 1 (Internet)
> |  | TTL | 1800 (second)
> |  | RDLENGTH | 16
> |  | RDATA | 3ffe:501:ffff:101:200:ff:fe00:a2a2

# JUDGEMENT

      1. DHCP Information-request is recieved

      2. DNS query message is recieved

      3. ICMP Echo Request is recieved

# TERMINATION

      N/A

# REFERENCE

    draft-ietf-ipv6-dns-discovery-07.txt
    6.4 DNS forwarder with DHCPv6 interactions

       In this variant scenario, DHCPv6 is be used between the PE and CPE to
       do prefix delegation [DELEG] and recursive DNS server discovery.

                                                         -------------
                                                        /            |
                --------           --------------      /             |
                |ISP   |           |customer CPE|     /    Customer  |
                |DHCPv6|===========|      DHCPv6|====<     site      |
                |server|    <------|------client|     \              |
                --------           --------------      \             |
                                                        \            |
                                                         -------------

       This example will show how DHCPv6 and well known site local unicast
       addresses cooperate to enable the internal nodes to access DNS.

       The customer router CPE is configured on its internal interface with
       one of the reserved site local addresses and listen for DNS queries.
       It would act as a DNS forwarder, as in 5.2,  forwarding those queries
       to the recursive DNS server pointed out by the ISP in the DHCPv6
       exchange.

                                                       -------------
                                                      /            |
            ----------           --------------      /             |
            |ISP     |           |customer CPE|     /    Customer  |
            |DNS     |===========|         DNS|====<     site      |
            |resolver|    <------|---forwarder|-----\----          |
            ----------           --------------      \             |
                                                      \            |
                                                       -------------

       The same CPE router could also implement a local DHCPv6 server and
       advertizes itself as DNS forwarder.

                                                         -------------
                                                        /            |
                --------           --------------      /   Customer  |
                |ISP PE|           |customer CPE|     /    site      |
                |      |===========|DHCPv6      |====<               |
                |      |           |server------|-----\--->          |
                --------           --------------      \             |
                                                        \            |
                                                         -------------

       Within the site:

          a) DHCPv6 aware clients use DHCPv6 to obtain the address of the
          DNS forwarder...

                                                       -------------
                                                      /            |
            ----------           --------------      /   Customer  |
            |ISP     |           |customer CPE|     /    site      |
            |DNS     |===========|         DNS|====<               |
            |resolver|    <------|---forwarder|-----\----DHCPv6    |
            ----------           --------------      \   client    |
                                                      \            |
                                                       -------------
              (The address of the DNS forwarder is acquired via DHCPv6.)

          b) other nodes simply send their DNS request to the reserved site
          local addresses.

                                                       -------------
                                                      /            |
            ----------           --------------      /   customer  |
            |ISP     |           |customer CPE|     /    site      |
            |DNS     |===========|         DNS|====<               |
            |resolver|    <------|---forwarder|-----\----non DHCPv6|
            ----------           --------------      \   node      |
                                                      \            |
                                                       -------------
              (Internal nodes use the reserved site local unicast address.)

       A variant of this scenario is the CPE can decide to pass the global
       address of the ISP recursive DNS server in the DHCPv6 exchange with
       the internal nodes.

# SEE ALSO

      perldoc V6evalTool