test(java-oracle): ArpRun records ARP as Java FILIUS runs it
Sends to addresses no card has on the new arp-routed network (ping on the LAN and behind a router, two UDP datagrams, one behind a failing one): frames and calls. ScenarioNetwork builds routers and their interfaces. Measured: ARP asks twice, a round trip each, then host unreachable; the thread that waits is the ping's caller, the router's IP thread, or the node's transport thread per protocol, which blocks the next send. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -247,3 +247,29 @@ unbekannten Namen (leere Antwort), und ein Verweis steht mit NS und A des
|
||||
Nameservers im Antwortteil. Der Resolver folgt dem Verweis selbst
|
||||
(iterativ) und wartet je Anfrage 5 RTT (13750 ms bei 90 %); ohne Server
|
||||
fragt ARP zweimal im Abstand einer RTT, dann scheitert der Aufruf.
|
||||
|
||||
## ARP zur Laufzeit
|
||||
|
||||
`ArpRun` sendet auf dem Netz von `arp-routed` (10.0.0.2 über einen Switch am
|
||||
Router 10.0.0.1, 20.0.0.2 am Router 20.0.0.1; `ScenarioNetwork` baut dazu
|
||||
Router mit `setzeAnzahlAnschluesse` und den `interfaces` des Szenarios) an
|
||||
Adressen, die keine Karte hat, und schreibt nach `arp-java-<ablauf>.java.json`
|
||||
die Frames und die Aufrufe. Abläufe: `pingLan` (Ping an 10.0.0.9,
|
||||
`ICMP.sendProbe`), `pingRouted` (Ping an 20.0.0.9), `udpTwice` (zwei
|
||||
Datagramme an 10.0.0.9), `udpBehind` (eines an 10.0.0.9, dann eines an
|
||||
20.0.0.2).
|
||||
|
||||
Gemessen (30.09.2026), was der Kern (nach Swift) anders macht:
|
||||
|
||||
* ARP fragt bis zu zweimal und wartet je eine RTT (`holeARPTabellenEintrag(ziel,
|
||||
2, …)`); dann „Host unreachable" (ICMP 3/1). Einen Negativ-Cache gibt es
|
||||
nicht: das nächste Paket fragt wieder zweimal.
|
||||
* Wer wartet, ist ein Thread: beim Ping der Aufrufer (5,5 s, dann ICMP 3/1
|
||||
vom eigenen Rechner, Absender 127.0.0.1), beim Weiterleiten der IP-Thread
|
||||
des Routers, bei UDP und TCP der Transport-Thread je Protokoll und Knoten.
|
||||
`senden` kehrt sofort zurück, aber der Transport-Thread hält seine
|
||||
Warteschlange gesperrt, solange er wartet: das nächste `senden` blockiert
|
||||
bis dahin (5,5 s), und ein Datagramm an einen erreichbaren Rechner geht
|
||||
erst danach.
|
||||
* Ein Ping wartet eine RTT auf die Antwort; das „Host unreachable" des
|
||||
Routers (nach dessen 5,5 s) kommt zu spät.
|
||||
|
||||
Reference in New Issue
Block a user