SV_RFC2308_7_2_limit_dead_server - Limit of time (5 munutes) for caching (Dead/Unreachable Server)
Verify that a NUT must not cache a dead server indication for longer than 5 minutes.
- Dead / Unreachable servers are servers that fail to respond in any
way to a query or where the transport layer has provided an
indication that the server does not exist or is unreachable. A
server may be deemed to be dead or unreachable if it has not
responded to an outstanding query within 120 seconds.
- A server MAY cache a dead server indication. If it does so it MUST
NOT be deemed dead for longer than five (5) minutes. The indication
MUST be stored against query tuple "query name, type, class, server
IP address" unless there was a transport layer indication that the
server does not exist, in which case it applies to all queries to
that specific IP address.
Caching Server
SV_RFC2308_7_2_limit_dead_server.seq [-tooloption ...]: KOI tool option
See also DNSConfig.pm
This test sequence is following.
<-------------- TN --------------->
DNS Client1 (TN) DNS Server1 (NUT) DNS Server2 DNS Server3 DNS Server4
| | | | |
|----------------------------->| | | |
| 1. Send standard query | | | |
| QNAME=A.example.org | | | |
| QTYPE=A | | | |
| | | | |
| |-------------------------------->| | |
| | 2. Recv standard query | | |
| | QNAME=A.example.org | | |
| | QTYPE=A | | |
| | | | |
| |<--------------------------------| | |
| | 3. Send standard query response | | |
| | QNAME=A.example.org | | |
| | QTYPE=A | | |
| | AUTHORITY Name=org | | |
| | AUTHORITY Name Server | | |
| | =NS3.example.org | | |
| | ADDITIONAL Name | | |
| | =NS3.example.org | | |
| | ADDITIONAL Address | | |
| | =192.168.1.30 | | |
| | | | |
| | v | |
| | | |
| |-------------------------------------------->| |
| | 4. Recv standard query | |
| | QNAME=A.example.org | |
| | QTYPE=A | |
| | | |
| |<--------------------------------------------| |
| | 5. Send standard query response | |
| | QNAME=A.example.org | |
| | QTYPE=A | |
| | AUTHORITY Name=example.org | |
| | AUTHORITY Name Server | |
| | = NS4.example.org | |
| | ADDITIONAL Name | |
| | = NS4.example.org | |
| | ADDITIONAL Address | |
| | = 192.168.1.40 | |
| | | |
| | v |
| | |
| |-------------------------------------------------------->|
| | 6. Send standard query |
| | QNAME=A.example.org |
| | QTYPE=A |
| | |
| | X <-----------------------------------------------------|
| | 7. Send standard query response|
| | |
// wait 120 seconds // //
| | |
|<-----------------------------| |
| 8. Standard query response | |
| RCODE= 2(Server failure) | |
| QNAME= A.example.org | |
| QTYPE=A | |
| | |
// wait 5 minutes // //
| | |
|----------------------------->| |
| 9. Send standard query | |
| QNAME=A.example.org | |
| QTYPE=A | |
| | |
| |-------------------------------------------------------->|
| | 10. Send standard query |
| | QNAME=A.example.org |
| | QTYPE=A |
| | |
v v v
1. TN send standard query QNAME=A.example.org, QTYPE=A to NUT.
2. NUT transmits standard query to DNS Server2 (TN: root name server) (Judgment *2)
3. TN send query response to NUT w/ AUTHORITY Name=org, AUTHORITY Name Server=NS3.example.org.
4. NUT transmits standard query QNAME=A.example.org, QTYPE=A to DNS Server3 (TN: NS3.example.org) (Judgment *4)
5. TN send query response to NUT w/ AUTHORITY Name=example.org, AUTHORITY Name Server=NS4.example.org.
6. NUT transmits standard query QNAME=A.example.org, QTYPE=A to DNS Server4 (TN: NS4.example.org) (Judgment *6)
7. TN send query response to NUT.
8. NUT transmits query response(server failure) to DNS Client1 (TN) (Judgment *8)
9. TN send standard query QNAME=A.example.org, QTYPE=A to NUT.
10. NUT transmits standard query QNAME=A.example.org, QTYPE=A to DNS Server4 (TN: NS4.example.org) (Judgment *10)
- Packet Description
- 1st packet.
Standard query from DNS Client1 (TN) to Server1 (NUT)
|
IP Header |
Source Address |
CL1_NETZ |
Destination Address |
NUT_NETZ |
UDP Header |
Src Port |
2000 |
Dst Port |
53 |
DNS Header |
ID |
0x1000 |
QR |
0 |
OPCODE |
0 |
AA |
0 |
TC |
0 |
RD |
1 |
RA |
0 |
Z |
0 |
RCODE |
0 |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
0 |
DNS Question section |
QNAME |
A.example.org |
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- 2nd packet.
Standard query from DNS Server1 (NUT) to Server2 (TN)
|
IP Header |
Source Address |
NUT_NETZ |
Destination Address |
SV2_NETY |
UDP Header |
Src Port |
ANY |
Dst Port |
53 |
DNS Header |
ID |
ANY |
QR |
0 |
OPCODE |
0 |
AA |
ANY |
TC |
0 |
RD |
0 |
RA |
ANY |
Z |
ANY |
RCODE |
ANY |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
ANY |
DNS Question section |
QNAME |
A.example.org |
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- 3rd packet.
Standard query response from DNS Server2 (TN) to Server1 (NUT)
|
IP Header |
Source Address |
SV2_NETY |
Destination Address |
NUT_NETZ |
UDP Header |
Src Port |
53 |
Dst Port |
Value that NUT uses |
DNS Header |
ID |
Value that NUT uses |
QR |
1 |
OPCODE |
0 |
AA |
0 |
TC |
0 |
RD |
0 |
RA |
0 |
Z |
0 |
RCODE |
0 |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
1 |
ARCOUNT |
1 |
DNS Question section |
QNAME |
A.example.org
|
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
DNS Authority section |
NAME |
org (Pointer 0xC016) |
TYPE |
NS (0x0002) |
CLASS |
IN (0x0001) |
TTL |
1 day (86400) |
RDLENGTH |
6 |
NSDNAME |
NS3.example.org (NS3 + Pointer 0xC00E) |
DNS Additional section |
NAME |
NS3.example.org (Pointer 0xC02B) |
TYPE
|
A (0x0001) |
CLASS |
IN (0x0001) |
TTL |
1 day (86400) |
RDLENGTH |
4 |
ADDRESS |
192.168.1.30 |
- 4th packet.
Standard query from DNS Server1 (NUT) to Server3 (TN)
|
IP Header |
Source Address |
NUT_NETZ |
Destination Address |
SV3_NETY |
UDP Header |
Src Port |
ANY |
Dst Port |
53 |
DNS Header |
ID |
ANY |
QR |
0 |
OPCODE |
0 |
AA |
ANY |
TC |
0 |
RD |
0 |
RA |
ANY |
Z |
ANY |
RCODE |
ANY |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
ANY |
DNS Question section |
QNAME |
A.example.org |
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- 5th packet.
Standard query response from DNS Server3 (TN) to Server1 (NUT)
|
IP Header |
Source Address |
SV3_NETY |
Destination Address |
NUT_NETZ |
UDP Header |
Src Port |
Value that NUT uses |
Dst Port |
53 |
DNS Header |
ID |
Value that NUT uses |
QR |
1 |
OPCODE |
0 |
AA |
0 |
TC |
0 |
RD |
0 |
RA |
0 |
Z |
0 |
RCODE |
0 |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
1 |
ARCOUNT |
1 |
DNS Question section |
QNAME |
A.example.org
|
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
DNS Authority section |
NAME |
example.org (Pointer 0xC00E) |
TYPE |
NS (0x0002) |
CLASS |
IN (0x0001) |
TTL |
1 day (86400) |
RDLENGTH |
6 |
NSDNAME |
NS4.example.org (NS4 + Pointer 0xC00E) |
DNS Additional section |
NAME |
NS4.example.org (Pointer 0xC02B) |
TYPE
|
A (0x0001) |
CLASS |
IN (0x0001) |
TTL |
1 day (86400) |
RDLENGTH |
4 |
ADDRESS |
192.168.1.40 |
- 6th packet.
Standard query from DNS Server1 (NUT) to Server4 (TN)
|
IP Header |
Source Address |
NUT_NETZ |
Destination Address |
SV4_NETY |
UDP Header |
Src Port |
ANY |
Dst Port |
53 |
DNS Header |
ID |
ANY |
QR |
0 |
OPCODE |
0 |
AA |
ANY |
TC |
0 |
RD |
0 |
RA |
ANY |
Z |
ANY |
RCODE |
ANY |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
ANY |
DNS Question section |
QNAME |
A.example.org |
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- 8th packet.
Standard query response from DNS Server1 (NUT) to Client1 (TN)
|
IP Header |
Source Address |
NUT_NETZ |
Destination Address |
CL1_NETZ |
UDP Header |
Src Port |
53 |
Dst Port |
2000 |
DNS Header |
ID |
0x1000 |
QR |
1 |
OPCODE |
0 |
AA |
0 |
TC |
0 |
RD |
1 |
RA |
1 |
Z |
0 |
RCODE |
2 |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
0 |
DNS Question section |
QNAME |
A.example.org
|
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- 9th packet.
Standard query from DNS Client1 (TN) to Server1 (NUT)
|
IP Header |
Source Address |
CL1_NETZ |
Destination Address |
NUT_NETZ |
UDP Header |
Src Port |
2000 |
Dst Port |
53 |
DNS Header |
ID |
0x1001 |
QR |
0 |
OPCODE |
0 |
AA |
0 |
TC |
0 |
RD |
1 |
RA |
0 |
Z |
0 |
RCODE |
0 |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
0 |
DNS Question section |
QNAME |
A.example.org |
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- 10th packet.
Standard query from DNS Server1 (NUT) to Server4 (TN)
|
IP Header |
Source Address |
NUT_NETZ |
Destination Address |
SV4_NETY |
UDP Header |
Src Port |
ANY |
Dst Port |
53 |
DNS Header |
ID |
ANY |
QR |
0 |
OPCODE |
0 |
AA |
ANY |
TC |
0 |
RD |
0 |
RA |
ANY |
Z |
ANY |
RCODE |
ANY |
QDCOUNT |
1 |
ANCOUNT |
0 |
NSCOUNT |
0 |
ARCOUNT |
ANY |
DNS Question section |
QNAME |
A.example.org |
QTYPE |
A (0x0001) |
QCLASS |
IN (0x0001) |
- Exp.
NUT_NETZ |
DNS Server1's (NUT) Net-z address |
CL1_NETZ |
DNS Client1's (TN) Net-z address |
SV2_NETY |
DNS Server2's (TN) Net-y address |
SV3_NETY |
DNS Server3's (TN) Net-y address |
SV4_NETY |
DNS Server4's (TN) Net-y address |
2. Received standard query including QNAME=A.example.org, QTYPE=A.
4. Received standard query including QNAME=A.example.org, QTYPE=A.
6. Received standard query including QNAME=A.example.org, QTYPE=A.
8. Received standard query response(Server failure).
10. Received standard query including QNAME=A.example.org, QTYPE=A.
None
RFC2308 Negative Caching of DNS Queries (DNS NCACHE)
7.2 Dead / Unreachable Server (OPTIONAL)