feat(core): modems run — the pair in the project, and a modem of another project hands its frames on (K0–K2)
Measured first: tools/java-oracle's ModemRun joins two networks by a pair of Java modems over TCP on localhost. The modem has no card and adds no delay of its own — a frame takes the cables on both sides, nothing more. The core pairs the two enabled modems on a port (Swift's inProject, with its conditions and cycle suppression) on Java's timing: no 20 ms. The modem example of FILIUS now pings through instead of failing the core. A modem of another project (relay) gives its frames to whoever runs the engine and puts on its cable what comes back, with this engine's frame and packet numbers; a frame dies after MAXIMUM_RELAY_HOPS trips. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -345,6 +345,35 @@ seit F2.4b-2: ein Senden kehrt sofort zurück wie in Java (Swifts Senden wartete
|
||||
alle Frames angekommen waren), und je Knoten und Protokoll sendet ein Transport-Thread
|
||||
ein Segment nach dem anderen.
|
||||
|
||||
## Modems zur Laufzeit
|
||||
|
||||
`ModemRun` verbindet auf dem Netz von `modem-lan` zwei Netze über ein
|
||||
Modem-Paar: ein Server und ein Client auf `localhost`, Javas
|
||||
`ModemFirmware` über einen echten TCP-Socket. `ScenarioNetwork` baut dazu
|
||||
`Modem`s und stellt sie nach `modems` ein (Modus, Port).
|
||||
`connectModems()` drückt den Knopf des Einstellungsfelds: erst lauschen die
|
||||
Server, dann verbinden sich die Clients. 10.0.0.1 und 10.0.0.3 hängen an
|
||||
einem Switch mit dem Server-Modem, 10.0.0.2 direkt am Client-Modem. Das
|
||||
Werkzeug schreibt nach `modem-java-<ablauf>.java.json`. Abläufe: `ping`
|
||||
(die Modems verbunden, zwei Pings von 10.0.0.1 an 10.0.0.2) und
|
||||
`unconnected` (nicht verbunden, ein Ping).
|
||||
|
||||
Gemessen (11.10.2026):
|
||||
|
||||
* Das Modem hat **keine Karte**: Es erscheint in keinem Mitschnitt.
|
||||
* Das Paar fügt **keine eigene Verzögerung** hinzu. Die ARP-Anfrage
|
||||
braucht zu 10.0.0.3 zwei Kabel (124 ms), zu 10.0.0.2 drei (181 ms). Die
|
||||
TCP-Strecke zwischen den Modems ist dagegen nicht messbar. Swifts 20 ms
|
||||
je Richtung übernimmt der Kern deshalb nicht.
|
||||
* Ohne Verbindung fragt ARP zweimal und bekommt keine Antwort, der Ping
|
||||
endet nach 5,5 s mit „Host unreachable“ vom eigenen Rechner. Auf der
|
||||
anderen Seite kommt nichts an.
|
||||
|
||||
Der Kern spielt beide Abläufe wie Java (`packages/core/test/modemJava.test.ts`).
|
||||
Er paart die beiden Modems an einem Port, und das Modem ohne Partner
|
||||
verwirft. Dass die Verzögerung genau null ist, prüft ein eigener Test: Die
|
||||
Toleranz des Vergleichs (120 ms) sähe 20 ms nicht.
|
||||
|
||||
## RIP zur Laufzeit
|
||||
|
||||
`RipRun` startet das Netz von `rip-chain` (PC 10.0.1.2 – R1 – R2 – R3 – PC
|
||||
|
||||
Reference in New Issue
Block a user