- Der Flugcomputer des Mond-Raumschiffs Orion ist deutlich widerstandsfähiger und stärker zur automatischen Steuerung befähigt als Systeme aus der Apollo-Ära und verwaltet alle Kernfunktionen wie Lebenserhaltung, Stromversorgung und Kommunikation
- Damit er auch in 250.000 Meilen Entfernung im Mondorbit ohne Unterbrechung arbeitet, wurde er mit physischer und logischer Redundanz sowie mehreren Flugcomputern so ausgelegt, dass er Hardwarefehler und Strahlungseinflüsse übersteht
- Jedes Flight Control Module (FCM) besteht aus einem Paar selbstprüfender Prozessoren, sodass insgesamt 8 CPUs parallel laufen; Fail-Silent-Design und ein prioritätsbasierter Algorithmus zur Ausgabewahl isolieren Fehler
- Das System hält mit zeitgetriggertem Ethernet und einer deterministischen Architektur einen vollständig synchronisierten Zustand aufrecht und korrigiert mit dreifach redundanten Netzwerken und Speicher sogar einzelne Bitfehler automatisch
- Falls alle Hauptsysteme ausfallen, übernimmt eine Backup Flight Software auf Basis unabhängiger Hardware und eines eigenen Betriebssystems die Kontrolle; diese Struktur gilt als Modell für die Always-on-Resilienz autonomer Systeme
NASAs fehlertolerantes Computerdesign für Artemis II
- Der Flugcomputer von Artemis II ist deutlich widerstandsfähiger und stärker zur automatischen Steuerung befähigt als der Navigationscomputer der Apollo-Ära
- Apollo-Computer nutzten einen 1-MHz-Prozessor und etwa 4 KB Speicher, während wesentliche Steuerfunktionen überwiegend auf manuellen Schaltern oder Relais basierten
- In der Orion-Kapsel von Artemis II verwaltet der Computer alle Kernfunktionen wie Lebenserhaltung, Stromversorgung und Kommunikation direkt
- Da ein Missionsfehler in 250.000 Meilen Entfernung im Mondorbit nicht wieder gutzumachen wäre, muss das System auch bei Weltraumstrahlung, Bit-Flips und Hardwaredefekten ohne Unterbrechung weiterarbeiten
- NASA setzt dafür auf physisch redundante Verkabelung, logisch redundante Netzwerkebenen und mehrere Flugcomputer als Schutz vor Hardwarefehlern
-
The Power of Eight
- Orion verwendet eine Architektur, die über die klassische dreifache Redundanz (triple redundancy) hinausgeht
- Zwei Vehicle Management Computer (VMC) tragen jeweils zwei Flight Control Modules (FCM), insgesamt also 4 FCMs
- Jedes FCM besteht aus einem selbstprüfenden (self-checking) Prozessorpaar, sodass insgesamt 8 CPUs die Flugsoftware parallel ausführen
- Das System basiert auf einem Fail-Silent-Design: Tritt ein Fehler auf, sendet die betroffene CPU keine fehlerhafte Ausgabe, sondern wechselt sofort in einen stillen Zustand
- Statt Mehrheitsentscheidungen per Voting wird ein prioritätsbasierter Algorithmus zur Quellenauswahl verwendet, um die Ausgabe eines intakten Kanals zu wählen
- NASA rechnet beim Durchflug durch die Van-Allen-Strahlungsgürtel mit vorübergehenden Fehlern; selbst beim Ausfall von bis zu 3 FCMs über maximal 22 Sekunden kann die Mission mit dem letzten verbleibenden FCM fortgesetzt werden
- Ein stillgeschaltetes FCM kann nach einem Reset erneut mit den anderen Modulen synchronisiert und während des Flugs wieder eingebunden werden
- Orion verwendet eine Architektur, die über die klassische dreifache Redundanz (triple redundancy) hinausgeht
-
Aufrechterhaltung deterministischen Verhaltens
- Um mehrere unabhängige Computer in vollständiger Synchronisation (Lockstep) zu halten, kommt eine deterministische Architektur (deterministic architecture) zum Einsatz
- Orion nutzt ein zeitgetriggertes Ethernet (time-triggered Ethernet), um Zeitinformationen im gesamten System zu verteilen
- Die Flugsoftware läuft in einem Major Frame und Minor Frame, die von einem ARINC653-Scheduler verwaltet werden
- Durch Zeit- und Raumaufteilung wird sichergestellt, dass Ein- und Ausgaben perfekt mit dem Netzwerkzeitplan abgestimmt sind
- Jedes FCM erhält dieselben Eingaben, führt denselben Code aus und erzeugt dieselben Ausgaben
- Jede Sekunde wird die Taktabweichung der FCMs gemessen und auf die Referenzzeit des Netzwerks nachkalibriert
- Anwendungen, die ihre Deadline nicht einhalten, werden automatisch in einen stillen Zustand versetzt und anschließend neu synchronisiert
- Die Hardware nutzt dreifach modulare redundante Speicher (TMR), um einzelne Bitfehler automatisch zu korrigieren; auch die Netzwerkschnittstellenkarten vergleichen zwei Traffic-Pfade und wechseln bei Fehlern in den Fail-Silent-Zustand
- Das Netzwerk ist über drei unabhängige Ebenen dreifach redundant ausgelegt, und alle Switches verfügen über Selbstprüfungsfunktionen
-
Das letzte Backup-System
- NASA berücksichtigt auch Common-Mode-Failures, die alle Hauptkanäle gleichzeitig betreffen könnten
- Dafür ist zusätzlich ein separates Backup Flight Software (BFS)-System an Bord
- BFS besteht aus anderer Hardware, einem anderen Betriebssystem und unabhängig entwickelter, vereinfachter Flugsoftware
- Fällt das Hauptsystem aus, übernimmt BFS automatisch die Kontrolle und kann die dynamischen Phasen der Mission abschließen
- Anschließend kann die Crew versuchen, die primären FCMs wiederherzustellen
- Fail-Silent-Logik ist essenziell, muss jedoch durch Watchdog-Timer und mehrschichtiges Monitoring ergänzt werden, damit Fehler nicht unentdeckt bleiben
- Das System ist auch auf das vollständige Versagen der Stromversorgung ("dead bus") hin ausgelegt
- Nach Wiederherstellung der Stromversorgung wechselt es automatisch in den Safe Mode
- Dabei werden die Solarpaneele zur Sonne ausgerichtet, um die Energieversorgung wiederherzustellen; anschließend wird das Fahrzeug zur thermischen Stabilisierung mit dem Heck zur Sonne gedreht
- Danach versucht das System, die Kommunikation mit der Erde wiederherzustellen; falls nötig, kann die Crew die Lebenserhaltung manuell anpassen
-
Die Zukunft der Zuverlässigkeit
- Der Wandel von Apollo zu Artemis bedeutet einen sprunghaften Anstieg der Softwarekomplexität
- Bei Apollo gab es noch mechanische Backups, während bei Artemis die Software die gesamte Steuerung übernimmt
- NASA verwendet einen modernen Verifikations-Workflow mit Simulationen über sämtliche Umgebungen hinweg, Monte-Carlo-Stresstests und umfangreicher Fault Injection
- Mit Supercomputern wird der gesamte Flugzeitplan simuliert, um zu prüfen, ob sich die Software auch bei Hardwarefehlern per Fail-Silent-Verhalten erholen kann
- Die Zero-Tolerance-Architektur von Orion gilt als Modell für Always-on-Resilienz, die künftig auch in autonomen Fahrzeugen und industriellen Steuerungsnetzen Anwendung finden könnte
- Der Wandel von Apollo zu Artemis bedeutet einen sprunghaften Anstieg der Softwarekomplexität
1 Kommentare
Hacker-News-Kommentare
Von 1989 bis 1995 bei Stratus an VOS- und Datenbank-Performance gearbeitet
Stratus war ein Unternehmen für hardwarebasierte fehlertolerante (fault-tolerant) Systeme, während der Konkurrent Tandem einen softwarebasierten Ansatz verfolgte
Die Architektur von Stratus war „pair and spare“: Alle Boards waren doppelt vorhanden, und jeder Pin-Ausgang wurde bei jedem Takt verglichen
Beim Wechsel von Motorola 68K zu Intel hatte das Hardware-Team große Schwierigkeiten, weil bei einigen Instruktionen ungenutzte Pins flottierten
Die Formulierung eines CMU-Forschers, dass „Agile und DevOps die architektonische Disziplin geschwächt haben“, blieb hängen
Es wirkt, als hätten wir verlernt, wie man deterministische Systeme baut
Das strenge Frame-Scheduling von Time-triggered Ethernet fühlt sich wie eine völlig andere Welt an als heutige Softwareentwicklung
Einige moderne Entwicklungspraktiken wie Unit-Tests und CI haben auch in solchen Umgebungen positive Effekte
Heute hat sich der Fokus auf den kommerziellen Markt verlagert und die Investitionen sind gesunken, aber es gibt weiterhin viele interessante Algorithmen
Die Forschung von Frank Mueller oder Johann Blieberger ist sehenswert
In Umgebungen mit begrenzten Ein- und Ausgaben wie in Flugzeugen passt ein deterministisches Design perfekt
Tatsächlich ist es eher ein dedizierter Hardware-Bus als Ethernet im üblichen Sinn
Beim Lesen der „radiation hardening“-Challenge von Code Golf
fragte ich mich, ob so ein Ansatz in der Praxis wirklich nützlich wäre
Realistisch betrachtet sind zu viele Probleme auf verschiedenen Ebenen miteinander verflochten, aber die Idee ist trotzdem interessant
Das im Artikel beschriebene „fail-silent“-Design war interessant
Ich habe mich aber gefragt, wie man erkennt, wenn beide CPUs gleichzeitig falsch rechnen und dabei dasselbe Ergebnis liefern
Die Wahrscheinlichkeit, dass beide CPUs denselben Fehler gleichzeitig machen, ist deutlich geringer als der FIT-Wert einer einzelnen CPU
Im All gilt allerdings Murphys Gesetz, also sicher sein kann man nie
könnte bei einer „25%-Mehrheit“ trotzdem das falsche Ergebnis ausgewählt werden
Mich interessieren konkrete Details zu CPU, RAM, OS und Sprache dieses Systems
Ich würde auch gern wissen, wie oft das FCM tatsächlich „fail-silent“ geworden ist
Es läuft gewöhnlich auf FreeRTOS oder RTEMS
Ich persönlich fand die Projektstruktur so komplex, dass sie schwer handhabbar war
Der Großteil des NASA-Kerncodes ist nicht öffentlich, aber cFS ist gutes Material, um klassisches Flight-Software-Design zu lernen
Im Artikel fehlen Details zum eigentlichen RTOS und zur Architektur
Die primäre Flugsteuerung von Orion basiert auf einer vierfach redundanten Struktur mit Green Hills INTEGRITY RTOS und BAE RAD750-Prozessoren
BFS läuft auf völlig anderer LEON3 + VxWorks-Hardware und nutzt das cFS-Framework von NASA
Das ist eine modulare, wiederverwendbare Architektur, die auch beim James-Webb-Teleskop und beim Mars Rover eingesetzt wurde
Diese Struktur ist kein simples „Hauptsystem + Backup“, sondern das Konzept der dissimilar redundancy
Mehr dazu in NASA Technical Document 1, Dokument 2
Die tatsächliche Umsetzung lag bei Lockheed Martin und den Subunternehmern
Wenn Medien es so darstellen, als habe NASA das direkt selbst gebaut, führt das zu Missverständnissen
Als ich vor 25 Jahren als Webentwickler gearbeitet habe, fragte ich einen Freund mit NASA-Hintergrund, wie sie mit Bugs umgingen
Er lachte und sagte: „Es gab keine Bugs“
Die Entwickler von heute sind an Umgebungen gewöhnt, in denen bei einem Fehler keine Menschenleben auf dem Spiel stehen
Bei Webservices geht es um Umsatzverluste, bei Raumfahrzeugen um Menschenleben
Ich habe früher einmal an einem strahlungsharten Computer gearbeitet
Dabei nutzten wir zusätzlich zur einfachen Redundanz auch nicht-redundante Fehlererkennungsverfahren
Schade, dass man in diesem System so einen Ansatz nicht sieht
um durch physische Härtung den Strahlungs-Stoßquerschnitt zu verteilen
Die verschiedenen Redundanzstrukturen sind beeindruckend, aber ich frage mich, ob manuelle Steuerung (Manual Override) weiterhin möglich ist
Ob man also wie bei Apollo 11 und 13 bei Bedarf direkt eingreifen kann
Da weiterhin Astronauten mit Testpilotenhintergrund fliegen, scheint das wohl möglich zu sein