Cómo funciona Tally

Tally es una red abierta que recoge los mensajes de radio que emiten las aeronaves, captados por receptores en casas de particulares, y los convierte en posiciones que cualquiera puede usar. Esta página explica todo el diseño sin dar nada por sabido.

Tres palabras

  • Feeder: un receptor que envía lo que oye. Es un receptor de radio en casa de alguien con un pequeño programa que marca cada mensaje con el instante exacto en que llegó, lo firma y lo envía.
  • Relay: el programa que recoge lo que envían los feeders, calcula posiciones y las comparte con otros relays. Todas las tareas de la red son de un relay, y cualquiera puede montar uno.
  • Cliente: cualquier cosa que lee datos de Tally, como un sitio web, una app o un mapa. Un cliente nunca comparte. Su acceso es o bien el pequeño nivel gratuito o bien el crédito del relay al que está vinculado: una empresa que quiere el flujo completo monta un relay, y sus clientes leen con el crédito de ese relay. Un cliente lee de un relay: el suyo propio, si quiere el firehose (a menudo la misma empresa opera ambos), o uno público para un uso pequeño.

Las piezas

Los feeders envían sus mensajes a los relays. Los relays hacen todo el trabajo: recogen, calculan posiciones y se pasan los datos entre sí. Los clientes leen de los relays. No hay ningún servidor especial ni operador central, porque todos los relays son el mismo programa.

FeedersRelaysClientes
Los feeders envían sus mensajes a los relays, los relays comparten entre sí, y los clientes leen de los relays.

Adónde van los datos

Un feeder envía sus datos a los dos relays en buen estado más cercanos, en redes distintas, para que una caída o un relay deshonesto no puedan silenciarlo. El más cercano se mide por lo que tarda un mensaje en volver, algo que nadie puede falsear.

Los mensajes en bruto se quedan cerca de casa: viajan como mucho un salto, hasta los relays que cubren la misma zona, y esos relays calculan las posiciones de la zona. Solo las posiciones terminadas recorren el mundo, así el ancho de banda de todos se mantiene pequeño.

Una zonaEn brutoPosicionesFeedersRelayRelayEl mundo
Dentro de una zona, cada feeder envía mensajes en bruto a dos relays cercanos. Las posiciones que calculan salen de la zona hacia el mundo.

Aviones que no dicen dónde están

La mayoría de las aeronaves emiten su propia posición GPS. Algunas no, pero aun así responden al radar con pings cortos. Cuando varios feeders oyen el mismo ping, le llega a cada uno en un instante ligeramente distinto, porque cada uno está a una distancia diferente. Cada diferencia de tiempo sitúa el avión en algún punto de una curva, y el avión está donde se cruzan las curvas. Esto es la multilateración, MLAT para abreviar, y es trabajo de un relay.

Misma diferencia de tiempoPingFeeder
Un ping llega a cuatro feeders en instantes ligeramente distintos. Cada diferencia de tiempo entre dos feeders traza una curva, y las curvas se cruzan donde está el avión.

Para eso hacen falta relojes de feeder que coincidan hasta la millonésima de segundo, y los receptores caseros no lo hacen. Así que los relays corrigen cada reloj con los aviones que sí emiten GPS: su posición se conoce, así que también se sabe cuándo debería llegar su mensaje, y la diferencia es el error de ese reloj.

Cada respuesta llega con márgenes de error honestos: cuánto podría equivocarse, incluida la incertidumbre que dejan las correcciones de reloj.

Los relojes se corrigen juntos, en grupos fijos llamados teselas. El mundo se divide en una cuadrícula fija de zonas de cuatro tamaños, de unos 50, 100, 200 y 400 km de lado, y cada tesela reúne hasta 48 feeders cercanos, elegidos solo por dónde están. Cada avión sobre una zona usa la corrección de su tesela, así que el trabajo se hace una vez por zona, no una vez por avión. Todos los relays calculan las mismas teselas, así que los resultados siguen siendo comprobables.

TeselaAviónAvión
Los feeders se agrupan en teselas fijas que se solapan. Los dos aviones sobre la tesela resaltada usan su única corrección de reloj.

Cada relay calcula la misma respuesta, hasta el último bit, a partir de los mismos datos. Por eso las respuestas de distintos relays se combinan sin conflicto, y cualquiera puede demostrar que un relay se equivoca si publica una respuesta mala.

Rápido y definitivo

Comprobar bien una posición lleva tiempo, porque un relay espera a que lleguen los mensajes de todos los feeders. Por eso cada avión de MLAT recibe dos respuestas. Primero una rápida, entre 1 y 2 segundos después del ping, calculada con la última corrección de reloj prolongada y con márgenes de error más amplios. Después la posición final comprobada, que la sustituye. Los clientes eligen si reciben las posiciones rápidas.

La respuesta rápida importa en una cabina: a 150 nudos, un avión recorre media milla en 12 segundos.

Dos productos

  • Regional: todo para una zona, mensajes en bruto incluidos. Para investigadores, apps locales y los relays que cubren la zona.
  • Mundo: una posición por avión por segundo, en todas partes. Para servicios de seguimiento de vuelos y empresas que quieren la imagen completa.

Compartir como en BitTorrent

Los datos de cada zona llegan primero a unos pocos relays que los quieren, y cada uno los pasa a unos cuantos más. Los relays que tienen los feeders de una zona envían un número fijo de dos o tres copias, por popular que sea la zona, así que una zona muy demandada nunca les sube la factura.

Origen
El origen envía tres copias, y cada relay que recibe una la pasa a otros dos.

Tomar una zona es un deber: cada flujo se divide en franjas, cada relay que toma la zona reenvía su propia parte a unos cuantos más, y un relay que no reenvía queda fuera de la zona.

Las zonas forman un árbol

El mundo se divide en un árbol fijo de zonas en el que todos están de acuerdo: las zonas pequeñas están dentro de regiones, las regiones dentro de países, los países dentro de continentes y los continentes dentro del mundo. Nadie lo reparte; es la misma cuadrícula fija para todos.

Un relay toma las zonas que quiere, en cualquier nivel: un sitio regional toma su región, una app nacional su país, una empresa global el mundo. Tome el nivel que tome, un relay comparte en ese nivel y reenvía los datos de esa zona a quien los quiera.

El mundoContinenteContinentePaísPaísPaísRegiónRegiónRegiónRelaysClientes
Las zonas están dentro de otras más grandes. En cada nivel, un relay reúne el nivel inferior en un paquete y lo pasa hacia arriba, y los clientes leen en el nivel que necesitan.

Un relay que ha reunido todas las zonas bajo una más grande puede ofrecer la grande como un único paquete. Así, un relay mundial se conecta a un puñado de paquetes de continentes o países, no a cada zona pequeña. Cada nivel lo ofrecen varios relays, así que si uno se desconecta no se pierde nada.

Los datos de un paquete conservan la firma de cada relay de origen, así que un paquete no pide confianza adicional: se comprueba exactamente igual que sus zonas.

Uso justo

El uso pequeño es gratis: un cliente puede leer las posiciones de una zona con solo una conexión. El uso a gran escala, es decir, datos en bruto o posiciones de grandes regiones, se lo gana un relay que contribuye de verdad, aceptando feeders o subiendo datos frescos, y los clientes vinculados a ese relay leen con su crédito. Un cliente nunca comparte, así que quien quiere más datos monta un relay y añade capacidad a la red.

Todo relay funciona con un límite obligatorio de velocidad de subida, para que su factura nunca supere lo que permite el límite y ningún operador se lleve una sorpresa.

Qué reciben los feeders a cambio

Cada feeder tiene una página de estación pública que muestra su disponibilidad, sus tasas de mensajes, los aviones oídos, su alcance, la cobertura que solo él aporta, cuánto ayuda a la MLAT y su puesto en las clasificaciones.

Busca una estación

Todo se calcula a partir de datos públicos y firmados, así que cualquiera puede comprobarlo.

Confianza

  • Todo va firmado. Cada feeder tiene su propia clave, y un relay no puede alterar ni inventar los mensajes de un feeder, solo dejar de reenviarlos.
  • Las respuestas son reproducibles. Cualquiera con los mismos datos en bruto puede volver a calcular una posición y obtener exactamente el mismo resultado.
  • Hacer trampa se puede demostrar. Dos respuestas firmadas a partir de los mismos datos que no coinciden son la prueba de un fallo, y cualquiera puede dejar de usar ese relay.
  • Los feeders se ganan una reputación. Un feeder cuyos mensajes coinciden una y otra vez con los de los demás gana peso con el tiempo.