So funktioniert Tally

Tally ist ein offenes Netzwerk, das die Funknachrichten von Flugzeugen sammelt, empfangen von Empfängern bei Menschen zu Hause, und daraus Positionen macht, die jeder nutzen kann. Diese Seite erklärt den ganzen Aufbau ohne Vorwissen.

Drei Begriffe

  • Feeder: ein Empfänger, der weitergibt, was er hört. Er besteht aus einem Funkempfänger bei jemandem zu Hause und einem kleinen Programm, das jede Nachricht mit dem genauen Zeitpunkt ihres Eintreffens versieht, sie signiert und weiterschickt.
  • Relay: das Programm, das sammelt, was Feeder schicken, Positionen berechnet und sie mit anderen Relays teilt. Jede Aufgabe im Netzwerk ist die eines Relays, und jeder darf eines betreiben.
  • Client: alles, was Tally-Daten liest, etwa eine Website, eine App oder eine Karte. Ein Client teilt nie. Sein Zugang ist entweder die kostenlose kleine Stufe oder das Guthaben des Relays, mit dem er verknüpft ist: Ein Unternehmen, das den großen Datenstrom will, betreibt ein Relay, und seine Clients lesen auf dessen Guthaben. Ein Client liest von einem Relay: vom eigenen, wenn er den Firehose will (oft betreibt dieselbe Firma beides), oder von einem öffentlichen für kleine Nutzung.

Die Bausteine

Feeder schicken ihre Nachrichten an Relays. Relays erledigen die ganze Arbeit: Sie sammeln, berechnen Positionen und geben Daten untereinander weiter. Clients lesen bei Relays. Es gibt keinen besonderen Server und keinen zentralen Betreiber, denn jedes Relay ist dasselbe Programm.

FeederRelaysClients
Feeder schicken ihre Nachrichten an Relays, Relays teilen untereinander, und Clients lesen bei Relays.

Wohin die Daten gehen

Ein Feeder schickt seine Daten an die zwei nächsten funktionierenden Relays in verschiedenen Netzen, damit ein Ausfall oder ein unehrliches Relay ihn nicht verstummen lassen kann. Am nächsten heißt: Eine Nachricht ist dorthin und zurück am schnellsten, und das kann niemand fälschen.

Rohdaten bleiben in der Nähe: Sie gehen höchstens einen Schritt weit, zu den Relays, die dasselbe Gebiet abdecken, und diese Relays berechnen die Positionen des Gebiets. Nur fertige Positionen gehen um die Welt, so bleibt die Bandbreite für alle klein.

Ein GebietRohPositionenFeederRelayRelayDie Welt
In einem Gebiet schickt jeder Feeder Rohdaten an zwei nahe Relays. Die Positionen, die sie berechnen, verlassen das Gebiet in die Welt.

Flugzeuge, die nicht sagen, wo sie sind

Die meisten Flugzeuge senden ihre eigene GPS-Position. Manche nicht, aber sie antworten dem Radar trotzdem mit kurzen Pings. Hören mehrere Feeder denselben Ping, kommt er bei jedem zu einem etwas anderen Zeitpunkt an, weil jeder anders weit entfernt ist. Jeder Zeitabstand legt das Flugzeug auf eine Kurve, und wo sich die Kurven kreuzen, ist das Flugzeug. Das heißt Multilateration, kurz MLAT, und es ist die Aufgabe eines Relays.

Gleicher ZeitabstandPingFeeder
Ein Ping erreicht vier Feeder zu leicht unterschiedlichen Zeitpunkten. Jeder Zeitabstand zwischen zwei Feedern ergibt eine Kurve, und die Kurven kreuzen sich dort, wo das Flugzeug ist.

Dafür müssen die Uhren der Feeder auf eine millionstel Sekunde übereinstimmen, und Empfänger zu Hause tun das nicht. Also korrigieren Relays jede Uhr mit Flugzeugen, die GPS senden: Ihre Position ist bekannt, also ist auch bekannt, wann ihre Nachricht ankommen müsste, und die Differenz ist der Fehler dieser Uhr.

Jede Antwort kommt mit ehrlichen Fehlerbalken: wie weit sie danebenliegen könnte, einschließlich dessen, was die Uhrenkorrektur unsicher lässt.

Uhren werden gemeinsam korrigiert, in festen Gruppen, den Kacheln. Die Welt ist in ein festes Raster von Gebieten in vier Größen geteilt, etwa 50, 100, 200 und 400 km breit, und jede Kachel nimmt bis zu 48 nahe Feeder auf, ausgewählt allein danach, wo die Feeder stehen. Jedes Flugzeug über einem Gebiet nutzt die Korrektur seiner Kachel, so wird die Arbeit einmal pro Gebiet erledigt, nicht einmal pro Flugzeug. Jedes Relay berechnet dieselben Kacheln, deshalb bleiben die Ergebnisse nachprüfbar.

KachelFlugzeugFlugzeug
Feeder sind in feste, sich überlappende Kacheln gruppiert. Beide Flugzeuge über der hervorgehobenen Kachel nutzen ihre eine Uhrenkorrektur.

Jedes Relay berechnet aus denselben Daten dieselbe Antwort, bis aufs letzte Bit. Deshalb lassen sich Antworten verschiedener Relays ohne Konflikt zusammenführen, und jeder kann einem Relay nachweisen, dass es falsch liegt, wenn es eine schlechte Antwort veröffentlicht.

Schnell und endgültig

Eine Position richtig zu prüfen braucht Zeit, weil ein Relay wartet, bis die Nachrichten aller Feeder eingetroffen sind. Deshalb bekommt jedes MLAT-Flugzeug zwei Antworten. Zuerst eine schnelle, etwa 1 bis 2 Sekunden nach dem Ping, berechnet mit der neuesten fortgeschriebenen Uhrenkorrektur und mit breiteren Fehlerbalken. Dann die geprüfte endgültige Position, die sie ersetzt. Clients entscheiden selbst, ob sie schnelle Positionen bekommen.

Im Cockpit zählt die schnelle Antwort: Bei 150 kt, rund 280 km/h, legt ein Flugzeug in 12 Sekunden eine halbe Meile zurück.

Zwei Produkte

  • Regional: alles für ein Gebiet, Rohdaten eingeschlossen. Für Forschung, lokale Apps und die Relays, die das Gebiet abdecken.
  • Welt: eine Position pro Flugzeug pro Sekunde, überall. Für Flugverfolgung und Unternehmen, die das ganze Bild wollen.

Teilen wie bei BitTorrent

Die Daten eines Gebiets erreichen zuerst einige Relays, die sie wollen, und jedes davon gibt sie an einige weitere weiter. Die Relays mit den Feedern eines Gebiets schicken fest zwei oder drei Kopien, egal wie gefragt das Gebiet ist, sodass ein gefragtes Gebiet ihre Rechnung nie erhöht.

Quelle
Die Quelle schickt drei Kopien, und jedes Relay, das eine erhält, gibt sie an zwei weitere weiter.

Ein Gebiet zu übernehmen ist eine Pflicht: Jeder Stream wird in Streifen geteilt, jedes Relay, das das Gebiet übernimmt, gibt seinen eigenen Teil an einige andere weiter, und ein Relay, das nicht weitergibt, wird aus dem Gebiet entfernt.

Gebiete bilden einen Baum

Die Welt ist in einen festen Baum von Gebieten geteilt, auf den sich alle einigen: Kleine Gebiete liegen in Regionen, Regionen in Ländern, Länder in Kontinenten und Kontinente in der Welt. Niemand teilt ihn zu; es ist für alle dasselbe feste Raster.

Ein Relay übernimmt die Gebiete, die es will, auf jeder Ebene: Eine regionale Website übernimmt ihre Region, eine nationale App ihr Land, ein weltweites Unternehmen die Welt. Auf welcher Ebene ein Relay auch arbeitet, es teilt auf dieser Ebene und gibt die Daten des Gebiets an andere weiter, die sie wollen.

Die WeltKontinentKontinentLandLandLandRegionRegionRegionRelaysClients
Gebiete liegen in größeren Gebieten. Ein Relay auf jeder Ebene sammelt die Ebene darunter zu einem Bündel und gibt es nach oben weiter, und Clients lesen auf der Ebene, die sie brauchen.

Ein Relay, das alle Gebiete unter einem größeren gesammelt hat, kann das größere als ein einziges Bündel anbieten. So verbindet sich ein Relay für die ganze Welt mit einer Handvoll Bündeln für Kontinente oder Länder, nicht mit jedem kleinen Gebiet. Jede Ebene wird von mehreren Relays angeboten, deshalb geht nichts verloren, wenn eines ausfällt.

Gebündelte Daten behalten die Signatur jedes ursprünglichen Relays, deshalb verlangt ein Bündel kein zusätzliches Vertrauen: Es wird genau so geprüft wie seine Gebiete.

Faire Nutzung

Kleine Nutzung ist kostenlos: Ein Client kann Positionen für ein Gebiet mit nichts als einer Verbindung lesen. Die Nutzung im großen Stil, also Rohdaten oder Positionen für große Regionen, verdient sich ein Relay, das wirklich beiträgt, indem es Feeder aufnimmt oder frische Daten hochlädt, und die mit diesem Relay verknüpften Clients lesen auf sein Guthaben. Ein Client teilt nie, wer also die meisten Daten will, betreibt ein Relay und fügt dem Netzwerk Kapazität hinzu.

Jedes Relay läuft mit einer vorgeschriebenen Obergrenze für die Upload-Geschwindigkeit, damit seine Rechnung nie höher ausfällt, als die Obergrenze zulässt, und kein Betreiber eine Überraschung erlebt.

Was Feeder zurückbekommen

Jeder Feeder hat eine öffentliche Stationsseite mit seiner Verfügbarkeit, seinen Nachrichtenraten, den empfangenen Flugzeugen, seiner Reichweite, der Abdeckung, die nur er liefert, wie sehr er MLAT hilft, und seinem Platz in den Bestenlisten.

Station finden

Alles wird aus öffentlichen, signierten Daten berechnet, sodass jeder es nachprüfen kann.

Vertrauen

  • Alles ist signiert. Jeder Feeder hat seinen eigenen Schlüssel, und ein Relay kann die Nachrichten eines Feeders weder verändern noch erfinden, nur nicht weitergeben.
  • Antworten sind reproduzierbar. Wer dieselben Rohdaten hat, kann eine Position erneut berechnen und bekommt genau dasselbe Ergebnis.
  • Betrug ist beweisbar. Zwei signierte Antworten aus denselben Eingaben, die sich widersprechen, beweisen einen Fehler, und jeder kann aufhören, dieses Relay zu nutzen.
  • Feeder erarbeiten sich Ansehen. Ein Feeder, dessen Nachrichten immer wieder mit denen aller anderen übereinstimmen, gewinnt mit der Zeit an Gewicht.