feat(core): Java's IP and ICMP threads, measured with Java FILIUS

Every packet that comes in goes through its node's IP thread (UDP, TCP) or
ICMP thread (ICMP), as Java's IPThread and ICMPThread: deliver, answer an
echo request or forward, one after the other; while one waits for ARP, the
next wait behind it. A packet a node sends to itself is delivered at once,
as Java's IP.senden does. The transport send threads and these are one
mechanism now (handToProtocolThread).

ArpRun has three stories through the router (routedUdpBehind,
routedPingBesideUdp, routedPingBehindPing); the oracle writes ICMP frames
with type, code, addresses and sequence number. All seven ArpRun stories
match Java FILIUS.

Measured and not taken: Java's ARP wakes one waiter with notify, not the
one whose answer came; the core wakes all that wait for the address.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 18:32:48 +00:00
co-authored by Claude Opus 5.5
parent 7e0348636c
commit f5c61cdce7
13 changed files with 950 additions and 97 deletions
@@ -2,7 +2,7 @@
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 720,
"time": 718,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -10,7 +10,7 @@
"targetIp": "10.0.0.1"
},
{
"time": 955,
"time": 951,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
@@ -18,21 +18,29 @@
"targetIp": "10.0.0.2"
},
{
"time": 959,
"time": 955,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"sequence": 1
},
{
"time": 6685,
"time": 6681,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 841,
"time": 838,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -40,7 +48,7 @@
"targetIp": "10.0.0.1"
},
{
"time": 843,
"time": 840,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
@@ -48,21 +56,29 @@
"targetIp": "10.0.0.2"
},
{
"time": 1072,
"time": 1068,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"sequence": 1
},
{
"time": 6574,
"time": 6569,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000303": [
{
"time": 1128,
"time": 1124,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -70,7 +86,7 @@
"targetIp": "20.0.0.9"
},
{
"time": 3878,
"time": 3874,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -81,11 +97,11 @@
},
"events": [
[
716,
713,
"sendProbe 20.0.0.9 called"
],
[
3709,
3705,
"sendProbe 20.0.0.9 returned null"
]
]
@@ -0,0 +1,192 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 718,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 952,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 955,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"sequence": 2
},
{
"time": 1012,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 1
},
{
"time": 6681,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
},
{
"time": 6904,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 1
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 838,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 840,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 1068,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"sequence": 2
},
{
"time": 1124,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 1
},
{
"time": 6570,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
},
{
"time": 6793,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 1
}
],
"00000000-0000-0000-0000-000000000303": [
{
"time": 1124,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
},
{
"time": 3874,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
},
{
"time": 6625,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.2"
},
{
"time": 6625,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"arp": 2,
"senderIp": "20.0.0.2",
"targetIp": "20.0.0.1"
},
{
"time": 6737,
"source": "02:00:00:00:03:22",
"destination": "02:00:00:00:03:13",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 1
},
{
"time": 6737,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 1
}
]
},
"events": [
[
713,
"sendeICMP 20.0.0.9 called"
],
[
955,
"sendeICMP 20.0.0.9 returned "
],
[
955,
"sendProbe 20.0.0.2 called"
],
[
3763,
"sendProbe 20.0.0.2 returned null"
]
]
}
@@ -0,0 +1,262 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 717,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 951,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 955,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 1
},
{
"time": 1402,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 1
},
{
"time": 1408,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"protocol": 17,
"sourcePort": 59998,
"destinationPort": 9,
"payload": "verloren"
},
{
"time": 1507,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 2
},
{
"time": 1842,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 2
},
{
"time": 7133,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 837,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 839,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 1068,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 1
},
{
"time": 1291,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 1
},
{
"time": 1521,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"protocol": 17,
"sourcePort": 59998,
"destinationPort": 9,
"payload": "verloren"
},
{
"time": 1618,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 2
},
{
"time": 1731,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 2
},
{
"time": 7022,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000303": [
{
"time": 1123,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.2"
},
{
"time": 1124,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"arp": 2,
"senderIp": "20.0.0.2",
"targetIp": "20.0.0.1"
},
{
"time": 1235,
"source": "02:00:00:00:03:22",
"destination": "02:00:00:00:03:13",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 1
},
{
"time": 1235,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 1
},
{
"time": 1576,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
},
{
"time": 1675,
"source": "02:00:00:00:03:22",
"destination": "02:00:00:00:03:13",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"sequence": 2
},
{
"time": 1675,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "20.0.0.2",
"destinationIp": "10.0.0.2",
"sequence": 2
},
{
"time": 4327,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
}
]
},
"events": [
[
712,
"sendProbe 20.0.0.2 called"
],
[
1404,
"sendProbe 20.0.0.2 returned ICMP 0/0 from 20.0.0.2"
],
[
1404,
"senden verloren called"
],
[
1407,
"senden verloren returned "
],
[
1507,
"sendProbe 20.0.0.2 called"
],
[
1842,
"sendProbe 20.0.0.2 returned ICMP 0/0 from 20.0.0.2"
]
]
}
@@ -0,0 +1,167 @@
{
"frames": {
"00000000-0000-0000-0000-000000000301": [
{
"time": 721,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 957,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 959,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"protocol": 17,
"sourcePort": 49345,
"destinationPort": 9,
"payload": "verloren"
},
{
"time": 1017,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"protocol": 17,
"sourcePort": 58689,
"destinationPort": 9,
"payload": "dahinter"
},
{
"time": 6689,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000302": [
{
"time": 844,
"source": "02:00:00:00:03:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "10.0.0.2",
"targetIp": "10.0.0.1"
},
{
"time": 846,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"arp": 2,
"senderIp": "10.0.0.1",
"targetIp": "10.0.0.2"
},
{
"time": 1073,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.9",
"protocol": 17,
"sourcePort": 49345,
"destinationPort": 9,
"payload": "verloren"
},
{
"time": 1129,
"source": "02:00:00:00:03:11",
"destination": "02:00:00:00:03:21",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"protocol": 17,
"sourcePort": 58689,
"destinationPort": 9,
"payload": "dahinter"
},
{
"time": 6577,
"source": "02:00:00:00:03:21",
"destination": "02:00:00:00:03:11",
"icmp": 3,
"icmpCode": 1,
"sourceIp": "10.0.0.1",
"destinationIp": "10.0.0.2",
"sequence": 0
}
],
"00000000-0000-0000-0000-000000000303": [
{
"time": 1129,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
},
{
"time": 3879,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.9"
},
{
"time": 6632,
"source": "02:00:00:00:03:22",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "20.0.0.1",
"targetIp": "20.0.0.2"
},
{
"time": 6633,
"source": "02:00:00:00:03:13",
"destination": "02:00:00:00:03:22",
"arp": 2,
"senderIp": "20.0.0.2",
"targetIp": "20.0.0.1"
},
{
"time": 6744,
"source": "02:00:00:00:03:22",
"destination": "02:00:00:00:03:13",
"sourceIp": "10.0.0.2",
"destinationIp": "20.0.0.2",
"protocol": 17,
"sourcePort": 58689,
"destinationPort": 9,
"payload": "dahinter"
}
]
},
"events": [
[
712,
"senden verloren called"
],
[
717,
"senden verloren returned "
],
[
717,
"senden dahinter called"
],
[
959,
"senden dahinter returned "
]
]
}