- La computadora de vuelo de Orion, la nave tripulada lunar, tiene una arquitectura con mucha mayor resiliencia y capacidad de control automático que los sistemas de la era Apollo, y gestiona directamente todas las funciones críticas, como soporte vital, energía y comunicaciones
- Para operar sin interrupciones incluso a 250 mil millas de distancia en órbita lunar, fue diseñada para resistir fallas de hardware y los efectos de la radiación mediante redundancia física y lógica, además de múltiples computadoras de vuelo
- Cada Flight Control Module (FCM) está compuesto por un par de procesadores con verificación mutua; en total, 8 CPU ejecutan en paralelo, y una arquitectura fail-silent junto con un algoritmo de selección de salida basado en prioridades aísla los errores
- El sistema mantiene una sincronización completa mediante Ethernet activado por tiempo y una arquitectura determinista, con red y memoria triplicadas que corrigen automáticamente incluso errores de un solo bit
- Si todos los sistemas principales fallan, un Backup Flight Software basado en hardware y sistema operativo independientes toma el control; esta estructura es vista como un futuro modelo de resiliencia always-on para sistemas autónomos
Diseño de la computadora tolerante a fallas de Artemis II de NASA
- La computadora de vuelo de Artemis II tiene una estructura con mucha mayor resiliencia y capacidad de control automático que la computadora de navegación de la era Apollo
- La computadora de Apollo usaba un procesador de 1 MHz y cerca de 4 KB de memoria, y el control principal se apoyaba en interruptores manuales o relés
- En la cápsula Orion de Artemis II, la computadora administra directamente todas las funciones críticas, como soporte vital, energía y comunicaciones
- Como una falla de misión a 250 mil millas de distancia en órbita lunar sería irrecuperable, el sistema debe seguir funcionando sin interrupciones incluso frente a radiación espacial, bit flips y fallas de hardware
- NASA preparó el sistema para fallas de hardware mediante cableado físicamente redundante, planos de red redundantes a nivel lógico y múltiples computadoras de vuelo
-
The Power of Eight
- Orion adopta una arquitectura que va más allá de la redundancia triple (triple redundancy)
- Cada una de las dos Vehicle Management Computer (VMC) incorpora dos Flight Control Module (FCM), para un total de 4 FCM
- Cada FCM consiste en un par de procesadores con self-checking, por lo que un total de 8 CPU ejecutan en paralelo el software de vuelo
- El sistema se basa en un diseño fail-silent: cuando una CPU presenta un error, no emite una salida incorrecta y pasa inmediatamente a estado silencioso
- En lugar de votación por mayoría, usa un algoritmo de selección de fuente basado en prioridades para elegir la salida de un canal sano
- NASA prevé errores transitorios durante el paso por los cinturones de radiación de Van Allen, y estima que la misión puede continuar con el último FCM incluso si pierde 3 FCM durante hasta 22 segundos
- Un FCM en estado silencioso puede reiniciarse y volver a sincronizarse con los demás módulos para reincorporarse durante el vuelo
- Orion adopta una arquitectura que va más allá de la redundancia triple (triple redundancy)
-
Mantener una operación determinista
- Para mantener varias computadoras independientes en sincronización completa (lockstep), se aplica una arquitectura determinista (deterministic architecture)
- Orion usa una red de Ethernet activado por tiempo (time-triggered Ethernet) para distribuir el tiempo en todo el sistema
- El software de vuelo se ejecuta dentro de un major frame y un minor frame administrados por el planificador ARINC653
- La partición temporal y espacial garantiza que las entradas y salidas queden perfectamente alineadas con la programación de la red
- Cada FCM recibe las mismas entradas, ejecuta el mismo código y genera las mismas salidas
- Cada segundo se mide el drift del reloj de los FCM y se recalibra según el tiempo de referencia de la red
- Cualquier aplicación que no cumpla su deadline pasa automáticamente a estado silencioso y luego se resincroniza
- El hardware usa memoria con redundancia modular triple (TMR) para corregir automáticamente errores de un solo bit, y la tarjeta de interfaz de red también compara rutas de tráfico duales para aplicar fail-silent cuando detecta errores
- La red está triplicada en tres planos independientes, y todos los switches tienen funciones de self-checking
-
Sistema de respaldo final
- NASA también se prepara para un common mode failure que pueda afectar simultáneamente a todos los canales principales
- Para ello incorpora por separado un sistema Backup Flight Software (BFS)
- El BFS está compuesto por hardware distinto, otro sistema operativo y software de vuelo simplificado desarrollado de forma independiente
- Si el sistema principal falla, el BFS toma automáticamente el control y puede completar las fases dinámicas de la misión
- Después, la tripulación puede intentar recuperar los FCM principales
- La lógica fail-silent es esencial, pero para evitar que un error permanezca sin detectarse se requieren además watchdogs y monitoreo en múltiples capas
- También fue diseñado para sobrevivir incluso a una pérdida total de energía (dead bus)
- Cuando se restablece la energía, entra automáticamente en safe mode
- Luego orienta los paneles solares hacia el Sol para recuperar energía y coloca la nave con la cola hacia el Sol para estabilización térmica
- Después intenta restablecer la comunicación con la Tierra y, si hace falta, la tripulación puede ajustar manualmente el sistema de soporte vital
-
El futuro de la confiabilidad
- El cambio de Apollo a Artemis implica un aumento drástico en la complejidad del software
- En Apollo existían respaldos mecánicos, pero en Artemis el software se encarga de todo el control
- NASA utiliza un flujo moderno de verificación que incluye simulación de entorno completo, pruebas de estrés Monte Carlo e inyección masiva de fallas (fault injection)
- Con supercomputadoras simula toda la línea temporal del vuelo y verifica si el software puede recuperarse en modo fail-silent incluso ante fallas de hardware
- La arquitectura de cero tolerancia de Orion es considerada un modelo de resiliencia always-on que también podría aplicarse en el futuro a vehículos autónomos y redes de control industrial
- El cambio de Apollo a Artemis implica un aumento drástico en la complejidad del software
1 comentarios
Comentarios en Hacker News
Trabajé en VOS y rendimiento de bases de datos en Stratus desde 1989 hasta 1995
Stratus era una empresa de sistemas tolerantes a fallos (fault-tolerant) basados en hardware, mientras que su competidor Tandem seguía un enfoque basado en software
La arquitectura de Stratus era de tipo “pair and spare”, con todas las tarjetas duplicadas y comparando la salida de cada pin en cada tick
Al pasar de Motorola 68K a Intel, el equipo de hardware tuvo serios problemas porque algunos pines no usados de ciertas instrucciones quedaban flotando
Me llamó la atención la frase de un investigador de CMU de que “Agile y DevOps debilitaron la disciplina arquitectónica”
Da la impresión de que hoy hemos olvidado cómo construir sistemas deterministas
La estricta programación de tramas de Time-triggered Ethernet se siente como un mundo completamente distinto al desarrollo de software actual
Algunas prácticas modernas de desarrollo, como pruebas unitarias y CI, también tienen un impacto positivo en estos entornos
Ahora, con el cambio hacia un mercado más comercial, la inversión ha disminuido, pero todavía hay muchos algoritmos interesantes
Vale la pena revisar trabajos de Frank Mueller o Johann Blieberger
En entornos con entradas y salidas limitadas, como una aeronave, el diseño determinista encaja perfectamente
En la práctica, se parece más a un bus de hardware dedicado que a Ethernet
Al ver el reto de ‘radiation hardening’ en Code Golf, me pregunté
si este tipo de enfoque realmente tendría utilidad práctica
En el mundo real sería difícil porque hay demasiados niveles de problemas entrelazados, pero aun así me parece una idea interesante
El diseño “fail-silent” explicado en el artículo me pareció interesante
Pero me pregunto cómo detectarían el caso en que dos CPU hagan al mismo tiempo un cálculo incorrecto y además el resultado coincida
La probabilidad de que ambas produzcan el mismo error simultáneamente es mucho menor que el FIT de una sola CPU
Aun así, en el espacio aplica la ley de Murphy, así que no se puede asegurar nada
un “25% de mayoría” podría terminar eligiendo el resultado incorrecto
Me gustaría conocer detalles concretos sobre la CPU, RAM, SO y lenguaje de este sistema
También quisiera saber con qué frecuencia el FCM entró en estado “fail-silent”
Normalmente corre sobre FreeRTOS o RTEMS
Personalmente, la estructura del proyecto me pareció demasiado compleja y difícil de manejar
La mayor parte del código central de NASA no es público, pero cFS es un buen material para aprender diseño clásico de software de vuelo
El artículo omite detalles sobre el RTOS y la arquitectura reales
El control principal de vuelo de Orion es una estructura cuádruple redundante basada en Green Hills INTEGRITY RTOS y procesadores BAE RAD750
El BFS corre sobre hardware completamente distinto, LEON3 + VxWorks, y usa el framework cFS de NASA
Esta es una arquitectura modular reutilizable que también se ha usado en el telescopio James Webb y en el Mars Rover
Esta estructura no es simplemente “sistema principal + respaldo”, sino un concepto de redundancia disímil (dissimilar redundancy)
Se puede ver más detalle en documento técnico de NASA 1, documento 2
La fabricación real estuvo a cargo de Lockheed Martin y sus subcontratistas
Que la prensa lo presente como si NASA lo hubiera construido directamente lleva a confusión
Cuando trabajaba como desarrollador web hace 25 años, le pregunté a un amigo ex NASA “¿cómo manejaban los bugs?”
y él se rió y respondió: “no había bugs”
Los desarrolladores de hoy están acostumbrados a entornos donde, aunque algo falle, no hay vidas en juego
En un servicio web puede significar pérdida de ingresos, pero en una nave espacial están en juego vidas humanas
Antes desarrollé una computadora resistente a la radiación,
y además de la simple redundancia usamos técnicas no redundantes de detección de errores
Me da pena no ver ese tipo de enfoque en este sistema
y también aplicaban endurecimiento físico para dispersar la sección eficaz de colisión de la radiación
Aunque todas estas estructuras redundantes son excelentes, me pregunto si todavía es posible un control manual (Manual Override)
Quisiera saber si aún se puede controlar directamente cuando hace falta, como en Apollo 11 y 13
Como los astronautas siguen siendo pilotos de pruebas de formación, supongo que sí debe ser posible