Skip to content

Architektur ​

text
   Bedienplatz (Browser)      railit (CLI)        gRPC-Clients
            │                      │                    │
            └──────── REST/JSON · SSE · gRPC ───────────┘
                                   │
   ┌──────────────────────────── railitd ────────────────────────────┐
   │  Dienst: Anmeldung, Rollen, Audit, Metriken, Journal-Rückschau   │
   │  Engine: fester Zyklus                                           │
   │    Feld fortschreiben → Meldungen → Kerne → Befehle ans Feld     │
   │  ┌───────────────┐ ┌───────────────┐       Betriebsführung (ops) │
   │  │ Stellbereich  │ │ Stellbereich  │ …     RBC (ETCS)            │
   │  │ Kanäle+Voter  │ │ oder Knoten   │       Journal je Bereich    │
   │  │  Kern (SIL 4) │ │ (railit-node) │                             │
   │  └───────────────┘ └───────────────┘                             │
   └─────────────────────────────┬─────────────────────────────────────┘
                                 │  direkt · EULYNX/RaSTA · RaSTA/UDP
                     Simulator · Objektsteuerungen · railit-field

Grundsätze ​

  1. Der Kern ist eine reine Funktion. (Zustand, Zeit, Eingaben) → (Zustand, Befehle, Ereignisse) – ohne I/O, ohne Uhr, ohne Allokation, ohne Panikpfade. Damit ist er deterministisch, auf jedem Rechner gleich und abspielbar.
  2. Der Plan ist Daten. Fahrstraßen, Durchrutschwege, Flankenschutz und Feindlichkeiten werden offline projektiert, gegengeprüft und als signiertes Image geladen. Der Kern rechnet nichts davon zur Laufzeit aus.
  3. Restriktiv bei Unsicherheit. Fehlende oder alte Meldungen gelten als gestört, ein verletzter Invariant führt in den sicheren Zustand: alle Signale Halt.
  4. Bedienen heißt anfordern. Kein Client stellt etwas selbst – jede Bedienung ist eine Anforderung, die der Kern prüft.
  5. Alles ist nachvollziehbar. Jede Eingabe steht im Journal; das Replay kommt zum selben Zustand.

Bausteine ​

Crate / ProgrammAufgabeSicherheit
railit-typesIDs, Längen, Zeit, Bitsetsno_std, SIL 4 angestrebt
railit-topologyNetzmodell, Validierung, Navigationno_std + alloc
railit-planPlan-Image: Format, Zero-Copy-Sicht, SHA-256, Ed25519no_std, SIL 4
railit-planningFahrstraßengenerator mit unabhängiger Gegenprüfungabgesichert durch Gegenprüfung
railit-rulesRegelwerk-Schnittstelle, Lehrregelwerkno_std, SIL 4
railit-kernelSicherheitskern: Fahrwegsicherung, Hilfshandlungen, Invariantenno_std, SIL 4
railit-movementSignalbegriffe Ks und H/V, ETCS-Fahrerlaubnisno_std, SIL 4
railit-safetyKanäle, Voter, Watchdog, sicherer Zustandno_std, SIL 4
railit-embeddedRuntime des sicheren Rechners (Cortex-R)no_std, SIL 4
railit-rastaRaSTA nach EN 50159no_std, SIL 4
railit-adaptersEULYNX SCI, Objektsteuerungen, Feldrechner mit UmschalterUmschalter sicherheitsrelevant
railit-journalJournal, Siegel, Replay, Mitleser, Auditprotokoll
railit-simSimulator: Weichen, Signale, Gleisfreimeldung, Bahnübergänge, Züge
railit-opsZugnummern, Fahrplan, Zuglenkung, DispositionSIL 0 (stellt nur Anforderungen)
railit-etcsRBC-Funktion für ETCS Level 2
railit-runtimeZyklus Kerne ↔ Feld, Ausgabesperre, Übernahme, Szenarien
railit-importrail-it-TOML, railML 3
railit-layoutSpurplan aus der Topologie, SVG
railitdDienst, API, Bedienplatz, BereitschaftsrechnerSIL 0
railitKommandozeileSIL 0
railit-nodeKnoten des sicheren Rechners als Serverprogramm
railit-fieldFeldrechner mit Umschalter

Die SIL-4-Crates verbieten unsafe und schließen per Lint unwrap, Indexzugriffe ohne Prüfung und ungeprüfte Arithmetik aus. Ihre Kernfunktionen sind mit Property-Tests, Fuzzing und – wo möglich – Kani-Nachweisen belegt.

Einsatzvarianten ​

  1. Alles auf einem Server: railitd mit 1, 2 oder 3 Kanälen je Stellbereich.
  2. Verteilt: Kern und Sicherheitsschicht auf einem sicheren Rechner (railit-node, Ziel Cortex-R), angebunden über RaSTA; railitd führt einen geprüften Spiegel.
  3. Haupt- und Bereitschaftsrechner an einem Feldrechner mit Umschalter; bei Ausfall übernimmt der Bereitschaftsrechner (Übernahme).

Das ausführliche Konzept mit allen Entscheidungen steht im Konzept.

Lizenz: NCSL v1.0 · Nicht zugelassen für den realen Bahnbetrieb.