CL_RFC1035_7_4_cache_RRs - Caching several RRs of same type
Verify that a NUT uses the cached data
- When several RRs of the same type are available for a
- particular owner name, the resolver should either cache them
- all or none at all.
Client (with Caching function)
CL_RFC1035_7_4_cache_RRs.seq [-tooloption ...]: KOI tool option
See also DNSConfig.pm
AP Server1(TN):A.example.com DNS Server1(TN) DNS Server2(TN) DNS Server3(TN)
|3ffe:501:ffff:101::10 |3ffe:501:ffff:101::20 |3ffe:501:ffff:101::30 |3ffe:501:ffff:101::40
|192.168.1.10 |192.168.1.20 |192.168.1.30 |192.168.1.40
| | | |
Net-y --+--------+-----------------------+-------------------------+-------------------------+--- 3ffe:501:ffff:101::/64
| 192.168.1/24
|
|
ROUTER1(TN)
|3ffe:501:ffff:100::1
|192.168.0.1
|
Net-z --+--------+------------------------------------------------------------------------------- 3ffe:501:ffff:100::/64
| 192.168.0/24
DNS Client1(NUT)
3ffe:501:ffff:100:XXXX
192.168.0.10
XXXX: EUI64 address
Setup
Set the DNS Server1(TN)'s address on NUT as above mentioned Network Topology.
Pre-Sequence
In order to send the query for NS type(IN class) of example.com to the DNS Server1(TN),
NUT is configured.
This test sequence is following.
DNS Client1 (NUT) DNS Server1 (TN)
| |
|--------------------------------------------->|
| 1. Send standard query |
| QNAME=example.com |
| QTYPE=NS |
| |
|<---------------------------------------------|
| 2. Standard query response |
| QNAME=example.com |
| QTYPE=NS |
| RDATA=NS2.example.com |
| RDATA=NS3.example.com |
| |
|--------------------------------------------->|
| 3. Send standard query |
| QNAME=NS2.example.com |
| QTYPE=A |
| |
|--------------------------------------------->|
| 4. Send standard query |
| QNAME=NS3.example.com |
| QTYPE=A |
| |
v v
1. NUT send standard query(QNAME=example.com, QTYPE=NS) to DNS Server1(TN).
Judgment (Check *1)
2. TN send standard query response(RDATA=NS2.example.com, RDATA=NS3.example.com) to NUT.
3. NUT send standard query(QNAME=NS2.example.com, QTYPE=A) to TN.
Judgment (Check *3)
4. NUT send standard query(QNAME=NS3.example.com, QTYPE=A) to TN.
Judgment (Check *4)
Packet Description
1st Packet
|
1. Standard query from DNS Client1 (NUT) to DNS Server1 (TN)
|
| IP Header |
Source Address |
NUT_NETZ |
| Destination Address |
SV_NETY |
UDP Header
|
Src Port
|
any
|
Dst Port
|
53
|
DNS Header
|
ID |
any |
QR
|
0
|
OPCODE
|
0
|
AA
|
any
|
| TC |
0 |
| RD |
any |
RA
|
any
|
Z
|
any
|
RCODE
|
any
|
QDCOUNT
|
1
|
ANCOUNT
|
0
|
NSCOUNT
|
0
|
ARCOUNT
|
any
|
DNS Question section
|
QNAME |
example.com
|
QTYPE
|
NS (0x0002)
|
QCLASS
|
IN (0x0001)
|
2nd packet.
|
2. Standard query response from DNS Server1 (TN) to Client1 (NUT)
|
| IP Header |
Source Address |
SV_NETY |
| Destination Address |
NUT_NETZ |
| UDP Header |
Src Port |
53 |
| Dst Port |
Same as 1st Packet's Src Port |
| DNS Header |
ID |
Same as 1st Packet's ID |
| QR |
1 |
| OPCODE |
0 |
| AA |
1 |
| TC |
0 |
| RD |
Same as 1st Packet's RD |
| RA |
0 |
| Z |
0 |
| RCODE |
0 |
| QDCOUNT |
1 |
| ANCOUNT |
2 |
| NSCOUNT |
2 |
| ARCOUNT |
2 |
| DNS Question section |
QNAME |
example.com |
| QTYPE |
NS (0x0002) |
| QCLASS |
IN (0x0001) |
| DNS Answer section |
NAME |
example.com (Pointer 0xC00C) |
| TYPE |
NS (0x0002) |
| CLASS |
IN (0x0001) |
| TTL |
1 day (86400) |
| RDLENGTH |
6 |
| NSDNAME |
NS2.example.com (NS2 + Pointer 0xC00C) |
| DNS Answer section |
NAME |
example.com (Pointer 0xC00C) |
| TYPE |
NS (0x0002) |
| CLASS |
IN (0x0001) |
| TTL |
1 day (86400) |
| RDLENGTH |
6 |
| NSDNAME |
NS3.example.com (NS3 + Pointer 0xC00C) |
| DNS Authority section |
NAME |
example.com (Pointer 0xC00C) |
| TYPE |
NS (0x0002) |
| CLASS |
IN (0x0001) |
| TTL |
1 day (86400) |
| RDLENGTH |
6 |
| NSDNAME |
NS2.example.com (Pointer 0xC029) |
| DNS Authority section |
NAME |
example.com (Pointer 0xC00C) |
| TYPE |
NS (0x0002) |
| CLASS |
IN (0x0001) |
| TTL |
1 day (86400) |
| RDLENGTH |
6 |
| NSDNAME |
NS3.example.com (Pointer 0xC03B) |
| DNS Additional section |
NAME |
NS2.example.com (Pointer 0xC029) |
TYPE
|
A (0x0001) |
| CLASS |
IN (0x0001) |
| TTL |
1 day (86400) |
| RDLENGTH |
4 |
| ADDRESS |
192.168.1.30 |
| DNS Additional section |
NAME |
NS3.example.com (Pointer 0xC03B) |
TYPE
|
A (0x0001) |
| CLASS |
IN (0x0001) |
| TTL |
1 day (86400) |
| RDLENGTH |
4 |
| ADDRESS |
192.168.1.40 |
3rd Packet
|
3. Standard query from DNS Client1 (NUT) to TN
|
| IP Header |
Source Address |
NUT_NETZ |
| Destination Address |
SV_NETY or SV2_NETY or SV3_NETY |
UDP Header
|
Src Port
|
any
|
Dst Port
|
53
|
DNS Header
|
ID |
any |
QR
|
0
|
OPCODE
|
0
|
AA
|
any
|
| TC |
0 |
| RD |
any |
RA
|
any
|
Z
|
any
|
RCODE
|
any
|
QDCOUNT
|
1
|
ANCOUNT
|
0
|
NSCOUNT
|
0
|
ARCOUNT
|
any
|
DNS Question section
|
QNAME |
NS2.example.com
|
QTYPE
|
A (0x0001)
|
QCLASS
|
IN (0x0001)
|
4th Packet
|
4. Standard query from DNS Client1 (NUT) to TN
|
| IP Header |
Source Address |
NUT_NETZ |
| Destination Address |
SV_NETY or SV2_NETY or SV3_NETY |
UDP Header
|
Src Port
|
any
|
Dst Port
|
53
|
DNS Header
|
ID |
any |
QR
|
0
|
OPCODE
|
0
|
AA
|
any
|
| TC |
0 |
| RD |
any |
RA
|
any
|
Z
|
any
|
RCODE
|
any
|
QDCOUNT
|
1
|
ANCOUNT
|
0
|
NSCOUNT
|
0
|
ARCOUNT
|
any
|
DNS Question section
|
QNAME |
NS3.example.com
|
QTYPE
|
A (0x0001)
|
QCLASS
|
IN (0x0001)
|
NUT_NETZ : DNS Client1(NUT)'s address
SV_NETY : DNS Server1(TN)'s address
SV2_NETY : DNS Server2(TN)'s address
SV3_NETY : DNS Server3(TN)'s address
1. Received standard query QNAME=example.com from NUT.
3. Received standard query QNAME=NS2.example.com from NUT.
4. Received standard query QNAME=NS3.example.com from NUT.
or
3. Not received standard query QNAME=NS2.example.com from NUT.
4. Not received standard query QNAME=NS3.example.com from NUT.
If NUT has cache function, clear the cache.
RFC1035 DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
7.4. Using the cache