feat(core): home router NAT after Java, measured with Java FILIUS

The core translates before the IP thread, as Java's NAT threads sit
between card and Ethernet: out, the WAN address and the entry's port (ICMP
keeps its identifier); in, by remote end, port and protocol, else by the
port forwarding, which then makes a dynamic entry; a ping at the WAN
address is answered by the router, packets from outside for the LAN are
dropped, both sides pass the router's firewall, TTL 1 going out gets time
exceeded. Dynamic entries expire at Java's check each second, 300 s times
the delay factor old (55 minutes at 90 %), refreshed only by what comes in.
The home router forwards as a router does.

Measured and not taken: when a LAN endpoint sends to a second remote end,
Java gives it the entry's WAN port but no entry, and the answer stays at
the router; the core adds an entry for each new remote end on that port.

The oracle now records every card of a node (the second card of routers
was missing); the ARP and RIP runs are recorded anew and still match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 20:06:04 +00:00
co-authored by Claude Opus 5.5
parent 5505e8e8af
commit 7a77bc1b43
23 changed files with 2915 additions and 748 deletions
@@ -24,7 +24,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1"
},
{
"time": 1409,
"time": 1412,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
@@ -35,7 +35,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1\n10.0.3.0 255.255.255.0 2"
},
{
"time": 27398,
"time": 27402,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
@@ -46,7 +46,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1\n10.0.3.0 255.255.255.0 2"
},
{
"time": 58184,
"time": 58188,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
@@ -116,6 +116,17 @@
}
],
"00000000-0000-0000-0000-000000000402": [
{
"time": 1217,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0"
},
{
"time": 1297,
"source": "02:00:00:00:04:21",
@@ -128,7 +139,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1"
},
{
"time": 1353,
"time": 1356,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
@@ -139,7 +150,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1\n10.0.3.0 255.255.255.0 2"
},
{
"time": 27343,
"time": 27346,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
@@ -150,7 +161,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1\n10.0.3.0 255.255.255.0 2"
},
{
"time": 58129,
"time": 58132,
"source": "02:00:00:00:04:21",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.1.1",
@@ -183,7 +194,7 @@
"payload": "10.0.1.1\n10.0.1.1\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.23.0 255.255.255.0 1\n10.0.3.0 255.255.255.0 16"
},
{
"time": 125058,
"time": 125057,
"source": "02:00:00:00:04:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -191,7 +202,7 @@
"targetIp": "10.0.1.1"
},
{
"time": 125059,
"time": 125058,
"source": "02:00:00:00:04:21",
"destination": "02:00:00:00:04:11",
"arp": 2,
@@ -199,7 +210,7 @@
"targetIp": "10.0.1.2"
},
{
"time": 125173,
"time": 125172,
"source": "02:00:00:00:04:11",
"destination": "02:00:00:00:04:21",
"icmp": 8,
@@ -209,7 +220,7 @@
"sequence": 1
},
{
"time": 125173,
"time": 125172,
"source": "02:00:00:00:04:21",
"destination": "02:00:00:00:04:11",
"icmp": 3,
@@ -219,9 +230,20 @@
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000403": [
"00000000-0000-0000-0000-000000000402#1": [
{
"time": 1218,
"time": 1217,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 1293,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
@@ -231,6 +253,129 @@
"destinationPort": 520,
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0"
},
{
"time": 1297,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 1356,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 1"
},
{
"time": 1357,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 27346,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 29278,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 1"
},
{
"time": 58132,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 61329,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 1"
},
{
"time": 86748,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 16"
},
{
"time": 86749,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 113405,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 114396,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 16"
}
],
"00000000-0000-0000-0000-000000000403": [
{
"time": 1293,
"source": "02:00:00:00:04:22",
@@ -254,7 +399,7 @@
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 1"
},
{
"time": 1353,
"time": 1356,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
@@ -265,7 +410,7 @@
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 1409,
"time": 1412,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
@@ -276,7 +421,7 @@
"payload": "10.0.12.1\n10.0.1.1\n16\n75000\n10.0.1.0 255.255.255.0 0"
},
{
"time": 27398,
"time": 27402,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
@@ -298,7 +443,7 @@
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 1"
},
{
"time": 58184,
"time": 58188,
"source": "02:00:00:00:04:22",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.1",
@@ -320,7 +465,7 @@
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 1"
},
{
"time": 86692,
"time": 86693,
"source": "02:00:00:00:04:31",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.12.2",
@@ -364,6 +509,107 @@
"payload": "10.0.12.2\n10.0.12.2\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.3.0 255.255.255.0 16"
}
],
"00000000-0000-0000-0000-000000000403#1": [
{
"time": 1217,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0"
},
{
"time": 1293,
"source": "02:00:00:00:04:41",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.3",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.3\n10.0.23.3\n16\n75000\n10.0.3.0 255.255.255.0 0"
},
{
"time": 1298,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
},
{
"time": 1356,
"source": "02:00:00:00:04:41",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.3",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.3\n10.0.23.3\n16\n75000\n10.0.3.0 255.255.255.0 0"
},
{
"time": 1412,
"source": "02:00:00:00:04:41",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.3",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.3\n10.0.23.3\n16\n75000\n10.0.3.0 255.255.255.0 0"
},
{
"time": 29222,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
},
{
"time": 61273,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
},
{
"time": 86693,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
},
{
"time": 114340,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
}
],
"00000000-0000-0000-0000-000000000404": [
{
"time": 1293,
@@ -388,7 +634,7 @@
"payload": "10.0.23.3\n10.0.23.3\n16\n75000\n10.0.3.0 255.255.255.0 0"
},
{
"time": 1353,
"time": 1356,
"source": "02:00:00:00:04:32",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.2",
@@ -399,7 +645,7 @@
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
},
{
"time": 1354,
"time": 1356,
"source": "02:00:00:00:04:41",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.23.3",
@@ -454,6 +700,41 @@
"payload": "10.0.23.2\n10.0.12.2\n16\n75000\n10.0.12.0 255.255.255.0 0\n10.0.1.0 255.255.255.0 1"
}
],
"00000000-0000-0000-0000-000000000404#1": [
{
"time": 1217,
"source": "02:00:00:00:04:42",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.3.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.3.1\n10.0.23.3\n16\n75000\n10.0.23.0 255.255.255.0 0"
},
{
"time": 1297,
"source": "02:00:00:00:04:42",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.3.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.3.1\n10.0.23.3\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.12.0 255.255.255.0 1"
},
{
"time": 1357,
"source": "02:00:00:00:04:42",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.3.1",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 521,
"destinationPort": 520,
"payload": "10.0.3.1\n10.0.23.3\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.12.0 255.255.255.0 1\n10.0.1.0 255.255.255.0 2"
}
],
"00000000-0000-0000-0000-000000000405": [
{
"time": 1293,
@@ -467,7 +748,7 @@
"payload": "10.0.3.1\n10.0.23.3\n16\n75000\n10.0.23.0 255.255.255.0 0"
},
{
"time": 1353,
"time": 1356,
"source": "02:00:00:00:04:42",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.3.1",
@@ -478,7 +759,7 @@
"payload": "10.0.3.1\n10.0.23.3\n16\n75000\n10.0.23.0 255.255.255.0 0\n10.0.12.0 255.255.255.0 1"
},
{
"time": 1409,
"time": 1412,
"source": "02:00:00:00:04:42",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "10.0.3.1",
@@ -492,11 +773,11 @@
},
"events": [
[
216,
212,
"seeded"
],
[
10000,
10001,
"R3 silent"
],
[
@@ -504,53 +785,53 @@
"sendProbe 10.0.3.2 called"
],
[
125233,
125229,
"sendProbe 10.0.3.2 returned ICMP 3/0 from 10.0.1.1"
]
],
"tables": [
[
218,
213,
"00000000-0000-0000-0000-000000000402",
"10.0.1.0/255.255.255.0 10.0.1.1 10.0.1.1 0; 10.0.12.0/255.255.255.0 10.0.12.1 10.0.12.1 0"
],
[
218,
213,
"00000000-0000-0000-0000-000000000403",
"10.0.12.0/255.255.255.0 10.0.12.2 10.0.12.2 0; 10.0.23.0/255.255.255.0 10.0.23.2 10.0.23.2 0"
],
[
218,
213,
"00000000-0000-0000-0000-000000000404",
"10.0.23.0/255.255.255.0 10.0.23.3 10.0.23.3 0; 10.0.3.0/255.255.255.0 10.0.3.1 10.0.3.1 0"
],
[
1299,
1298,
"00000000-0000-0000-0000-000000000402",
"10.0.1.0/255.255.255.0 10.0.1.1 10.0.1.1 0; 10.0.12.0/255.255.255.0 10.0.12.1 10.0.12.1 0; 10.0.23.0/255.255.255.0 10.0.12.2 10.0.12.1 1"
],
[
1299,
1298,
"00000000-0000-0000-0000-000000000403",
"10.0.12.0/255.255.255.0 10.0.12.2 10.0.12.2 0; 10.0.23.0/255.255.255.0 10.0.23.2 10.0.23.2 0; 10.0.1.0/255.255.255.0 10.0.12.1 10.0.12.2 1; 10.0.3.0/255.255.255.0 10.0.23.3 10.0.23.2 1"
],
[
1299,
1298,
"00000000-0000-0000-0000-000000000404",
"10.0.23.0/255.255.255.0 10.0.23.3 10.0.23.3 0; 10.0.3.0/255.255.255.0 10.0.3.1 10.0.3.1 0; 10.0.12.0/255.255.255.0 10.0.23.2 10.0.23.3 1"
],
[
1354,
1358,
"00000000-0000-0000-0000-000000000402",
"10.0.1.0/255.255.255.0 10.0.1.1 10.0.1.1 0; 10.0.12.0/255.255.255.0 10.0.12.1 10.0.12.1 0; 10.0.23.0/255.255.255.0 10.0.12.2 10.0.12.1 1; 10.0.3.0/255.255.255.0 10.0.12.2 10.0.12.1 2"
],
[
1354,
1358,
"00000000-0000-0000-0000-000000000404",
"10.0.23.0/255.255.255.0 10.0.23.3 10.0.23.3 0; 10.0.3.0/255.255.255.0 10.0.3.1 10.0.3.1 0; 10.0.12.0/255.255.255.0 10.0.23.2 10.0.23.3 1; 10.0.1.0/255.255.255.0 10.0.23.2 10.0.23.3 2"
],
[
86694,
86693,
"00000000-0000-0000-0000-000000000403",
"10.0.12.0/255.255.255.0 10.0.12.2 10.0.12.2 0; 10.0.23.0/255.255.255.0 10.0.23.2 10.0.23.2 0; 10.0.1.0/255.255.255.0 10.0.12.1 10.0.12.2 1; 10.0.3.0/255.255.255.0 10.0.23.3 10.0.23.2 16"
],