feat(core): recursive DNS server after Java, measured with Java FILIUS

The resolver runs on the events now (a query, its dnsQueryTimeout, its
answer at the socket); the blocking resolveDns waits for it, and a
recursive server uses it: its own records, else the zone's name server
from its records, else its own DNS server, else a referral
(DNSServer.answerWithRemoteData).

DnsRun plays five stories on the new dns-recursive network. Measured and
not taken: a server that is its zone's name server asks itself, which asks
itself again, without end (the client times out, then every level floods
its own DNS server); Java guards only the step through its own DNS server.
The core asks itself in neither step. That story is compared up to the
client's query (JAVA_UNTIL).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 18:46:32 +00:00
co-authored by Claude Opus 5.5
parent f5c61cdce7
commit 313786e738
13 changed files with 1570 additions and 91 deletions
@@ -0,0 +1,173 @@
{
"frames": {
"00000000-0000-0000-0000-000000000101": [
{
"time": 735,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.20",
"targetIp": "192.168.0.10"
},
{
"time": 969,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"arp": 2,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.20"
},
{
"time": 972,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 17,
"sourcePort": 51431,
"destinationPort": 53,
"payload": "ID=22768 QR=0 RCODE=0 QDCOUNT=1 ANCOUNT=0 NSCOUNT=0 ARCOUNT=0 \nnix.filius.de. A IN\n"
},
{
"time": 15066,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.11"
}
],
"00000000-0000-0000-0000-000000000102": [
{
"time": 857,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.20",
"targetIp": "192.168.0.10"
},
{
"time": 858,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"arp": 2,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.20"
},
{
"time": 1085,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 17,
"sourcePort": 51431,
"destinationPort": 53,
"payload": "ID=22768 QR=0 RCODE=0 QDCOUNT=1 ANCOUNT=0 NSCOUNT=0 ARCOUNT=0 \nnix.filius.de. A IN\n"
},
{
"time": 14910,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.11"
},
{
"time": 15276,
"source": "02:00:00:00:01:13",
"destination": "02:00:00:00:01:12",
"arp": 2,
"senderIp": "192.168.0.11",
"targetIp": "192.168.0.10"
},
{
"time": 15278,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:13",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.11",
"protocol": 17,
"sourcePort": 52690,
"destinationPort": 53,
"payload": "ID=54566 QR=0 RCODE=0 QDCOUNT=1 ANCOUNT=0 NSCOUNT=0 ARCOUNT=0 \nnix.filius.de. A IN\n"
}
],
"00000000-0000-0000-0000-000000000103": [
{
"time": 856,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.20",
"targetIp": "192.168.0.10"
},
{
"time": 15066,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.11"
},
{
"time": 15073,
"source": "02:00:00:00:01:13",
"destination": "02:00:00:00:01:12",
"arp": 2,
"senderIp": "192.168.0.11",
"targetIp": "192.168.0.10"
},
{
"time": 15423,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:13",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.11",
"protocol": 17,
"sourcePort": 52690,
"destinationPort": 53,
"payload": "ID=54566 QR=0 RCODE=0 QDCOUNT=1 ANCOUNT=0 NSCOUNT=0 ARCOUNT=0 \nnix.filius.de. A IN\n"
},
{
"time": 15434,
"source": "02:00:00:00:01:13",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.11",
"destinationIp": "192.168.0.10",
"protocol": 17,
"sourcePort": 53,
"destinationPort": 52690,
"payload": "ID=54566 QR=1 RCODE=0 QDCOUNT=0 ANCOUNT=0 NSCOUNT=0 ARCOUNT=0 \n"
}
],
"00000000-0000-0000-0000-000000000104": [
{
"time": 856,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.20",
"targetIp": "192.168.0.10"
},
{
"time": 15059,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.11"
}
]
},
"events": [
[
724,
"holeIPAdresse nix.filius.de called"
],
[
14485,
"holeIPAdresse nix.filius.de failed TimeOutException"
]
]
}