Come funziona Tally
Tally è una rete aperta che raccoglie i messaggi radio trasmessi dagli aerei, ricevuti da ricevitori nelle case delle persone, e li trasforma in posizioni che chiunque può usare. Questa pagina spiega tutto il progetto senza dare nulla per scontato.
Tre parole
- Feeder: un ricevitore che invia ciò che sente. È un ricevitore radio a casa di qualcuno con un piccolo programma che marca ogni messaggio con l’istante esatto in cui è arrivato, lo firma e lo inoltra.
- Relay: il programma che raccoglie ciò che inviano i feeder, calcola le posizioni e le condivide con gli altri relay. Ogni compito della rete spetta a un relay, e chiunque può gestirne uno.
- Client: qualsiasi cosa legga i dati di Tally, come un sito, un’app o una mappa. Un client non condivide mai. Il suo accesso è o il piccolo livello gratuito o il credito del relay a cui è collegato: un’azienda che vuole il flusso completo gestisce un relay, e i suoi client leggono sul credito di quel relay. Un client legge da un relay: il proprio, se vuole il firehose (spesso la stessa azienda gestisce entrambi), oppure uno pubblico per un uso ridotto.
Le parti
I feeder inviano i loro messaggi ai relay. I relay fanno tutto il lavoro: raccolgono, calcolano le posizioni e si passano i dati. I client leggono dai relay. Non c’è nessun server speciale e nessun operatore centrale, perché ogni relay è lo stesso programma.
Dove vanno i dati
Un feeder invia i suoi dati ai due relay funzionanti più vicini, su reti diverse, così che un guasto o un relay disonesto non possa zittirlo. Il più vicino si misura da quanto tempo impiega un messaggio a tornare indietro, e questo nessuno può falsificarlo.
I messaggi grezzi restano vicino a casa: fanno al massimo un salto, verso i relay che coprono la stessa area, e quei relay calcolano le posizioni dell’area. Solo le posizioni finite viaggiano per il mondo, e così la banda di tutti resta piccola.
Aerei che non dicono dove sono
La maggior parte degli aerei trasmette la propria posizione GPS. Alcuni no, ma rispondono comunque al radar con brevi ping. Quando più feeder sentono lo stesso ping, questo arriva a ciascuno in un istante leggermente diverso, perché ognuno si trova a una distanza diversa. Ogni scarto di tempo mette l’aereo da qualche parte su una curva, e l’aereo è dove le curve si incrociano. Si chiama multilaterazione, MLAT in breve, ed è il lavoro di un relay.
Per farlo servono orologi dei feeder che concordino entro un milionesimo di secondo, e i ricevitori di casa non lo fanno. Così i relay correggono ogni orologio usando gli aerei che trasmettono il GPS: la loro posizione è nota, quindi è noto anche quando dovrebbe arrivare il loro messaggio, e la differenza è l’errore di quell’orologio.
Ogni risposta arriva con margini di errore onesti: di quanto potrebbe sbagliare, compresa l’incertezza che le correzioni degli orologi lasciano.
Gli orologi vengono corretti insieme, in gruppi fissi chiamati tessere. Il mondo è diviso in una griglia fissa di aree di quattro dimensioni, larghe circa 50, 100, 200 e 400 km, e ogni tessera comprende fino a 48 feeder vicini, scelti solo in base a dove si trovano. Ogni aereo sopra un’area usa la correzione della sua tessera, così il lavoro si fa una volta per area, non una volta per aereo. Ogni relay calcola le stesse tessere, quindi i risultati restano verificabili.
Ogni relay calcola la stessa risposta, fino all’ultimo bit, dagli stessi dati. Così le risposte di relay diversi si uniscono senza conflitti, e chiunque può dimostrare che un relay sbaglia se pubblica una risposta errata.
Veloce e definitivo
Verificare bene una posizione richiede tempo, perché un relay aspetta che arrivino i messaggi di tutti i feeder. Così ogni aereo MLAT riceve due risposte. Prima una rapida, circa 1-2 secondi dopo il ping, calcolata con l’ultima correzione degli orologi portata avanti e con margini di errore più ampi. Poi la posizione finale verificata, che la sostituisce. I client scelgono se ricevere le posizioni rapide.
In cabina di pilotaggio la risposta rapida conta: a 150 kt, circa 280 km/h, un aereo percorre mezzo miglio in 12 secondi.
Due prodotti
- Regionale: tutto per un’area, messaggi grezzi inclusi. Per ricercatori, app locali e i relay che coprono l’area.
- Mondo: una posizione per aereo al secondo, ovunque. Per i servizi di tracciamento voli e le aziende che vogliono il quadro completo.
Condivisione come BitTorrent
I dati di un’area raggiungono prima alcuni relay che li vogliono, e ognuno di questi li passa ad altri. I relay che hanno i feeder di un’area inviano un numero fisso di due o tre copie, per quanto popolare sia l’area, così un’area molto richiesta non fa mai salire la loro bolletta.
Prendere un’area è un dovere: ogni flusso è diviso in strisce, ogni relay che prende l’area inoltra la propria parte ad alcuni altri, e un relay che non inoltra viene escluso dall’area.
Le aree formano un albero
Il mondo è diviso in un albero fisso di aree su cui tutti concordano: le aree piccole stanno dentro le regioni, le regioni dentro i paesi, i paesi dentro i continenti e i continenti dentro il mondo. Nessuno lo assegna; è la stessa griglia fissa per tutti.
Un relay prende le aree che vuole, a qualsiasi livello: un sito regionale prende la sua regione, un’app nazionale il suo paese, un’azienda globale il mondo. A qualunque livello lavori, un relay condivide a quel livello, inoltrando i dati di quell’area a chi li vuole.
Un relay che ha raccolto tutte le aree sotto un’area più grande può offrire quella più grande come un unico pacchetto. Così un relay mondiale si collega a una manciata di pacchetti di continenti o paesi, non a ogni piccola area. Ogni livello è offerto da più relay, quindi se uno va offline non si perde nulla.
I dati in un pacchetto conservano la firma di ogni relay d’origine, quindi un pacchetto non chiede fiducia in più: si verifica esattamente come le sue aree.
Uso equo
L’uso ridotto è gratuito: un client può leggere le posizioni di un’area con una semplice connessione. L’uso su larga scala, cioè dati grezzi o posizioni per grandi regioni, se lo guadagna un relay che contribuisce davvero, accogliendo feeder o caricando dati freschi, e i client collegati a quel relay leggono sul suo credito. Un client non condivide mai, quindi chi vuole più dati gestisce un relay e aggiunge capacità alla rete.
Ogni relay funziona con un limite obbligatorio alla velocità di upload, così la sua bolletta non può mai superare ciò che il limite consente e nessun operatore ha brutte sorprese.
Cosa ricevono i feeder in cambio
Ogni feeder ha una pagina della stazione pubblica che mostra disponibilità, frequenza dei messaggi, aerei ricevuti, portata, la copertura che solo lui fornisce, quanto aiuta la MLAT e il suo posto nelle classifiche.
Trova una stazioneTutto è calcolato da dati pubblici e firmati, così chiunque può verificarlo.
Fiducia
- Tutto è firmato. Ogni feeder ha la sua chiave, e un relay non può alterare né inventare i messaggi di un feeder, può solo non inoltrarli.
- Le risposte sono riproducibili. Chiunque abbia gli stessi dati grezzi può ricalcolare una posizione e ottenere esattamente lo stesso risultato.
- Barare si può dimostrare. Due risposte firmate dagli stessi dati che non concordano sono la prova di un errore, e chiunque può smettere di usare quel relay.
- I feeder si guadagnano credibilità. Un feeder i cui messaggi concordano sempre con quelli degli altri acquista peso nel tempo.