Uruchom przekaźnik

Przekaźnik przyjmuje feedery, subskrybentów i inne przekaźniki na jednym porcie. Sprawdza podpis każdej paczki, odrzuca duplikaty i przekazuje każdą paczkę dalej raz, bez zmian. Niczego nie dekoduje i niczego nie rozstrzyga w sprawie statków powietrznych.

Uruchom własny

tally-relay keygen > /etc/tally/relay.key
tally-relay --key /etc/tally/relay.key --max-upload 8Mbit/s --listen 0.0.0.0:10900 --beast-out 127.0.0.1:30105

--beast-out udostępnia każdy odbiór jako zwykły BEAST dla lokalnego dekodera, takiego jak readsb. Nie ma uwierzytelniania, więc wystawiaj go tylko na loopbacku.

--stats-listen udostępnia jako JSON to, co przekaźnik wie o każdym odbiorniku (GET /stations oraz GET /stations/KEY z kluczem w base64url): sesje, pierwsze i ostatnie zgłoszenie, paczki, luki w numeracji, wiadomości na sekundę oraz lokalizację i oprogramowanie deklarowane przez każdy odbiornik. Ten port również wystawiaj tylko na loopbacku.

Aby przekaźnik działał jako usługa, użyj pliku tally-relay.service z wydania: uruchamia on przekaźnik jako użytkownika dynamicznego, z kluczem w /etc/tally/relay.key, argumentami w TALLY_RELAY_ARGS i limitem wysyłania w TALLY_RELAY_MAX_UPLOAD, oba w /etc/default/tally-relay.

Komu ufa

Domyślnie przekaźnik ufa w wąskim zakresie. Jako inny przekaźnik mogą się łączyć tylko klucze wskazane przez --accept-relay, a --upstream łączy go z innym przekaźnikiem. Każdy feeder jest ograniczony przez --max-feeder-bytes-per-sec, domyślnie 256 KiB/s, i dostaje tę wartość z góry, a liczba połączeń jest ograniczona łącznie i na adres.

Co udostępnia

Subskrybent wybiera swoje strumienie i może je zmienić w dowolnej chwili:

  • Surowe: podpisane paczki każdego odbiornika, według regionu, dla MLAT przekaźników i do badań. Region to miejsce, w którym według własnej deklaracji jest odbiornik, nigdy miejsce, w którym jest statek powietrzny.
  • Zdeduplikowane: jedna kopia każdej wiadomości Mode-S, podpisana przez przekaźnik jako jego własne oświadczenie. Tego strumienia chce większość klientów: około 30 Mb/s dla całego świata przy 20 000 odbiorników.
  • Pozycje: statki powietrzne zlokalizowane przez MLAT przekaźników, każda pozycja podpisana przez przekaźnik, który ją wyznaczył.

Jak przekaźniki dzielą się pracą

Feeder wysyła do dwóch najbliższych sprawnych przekaźników w różnych sieciach. Najbliższy znaczy mieszczący się w paśmie czasów odpowiedzi, a w tym paśmie każdy feeder obszaru dokonuje tego samego wyboru, ważonego wolną przepustowością deklarowaną przez każdy przekaźnik, więc feedery jednego obszaru gromadzą się na tych samych kilku przekaźnikach. Pełny przekaźnik przekierowuje nowy feeder do następnego w kolejce.

MLAT każdego obszaru wykonują dwa lub trzy przekaźniki, wybrane tą samą wspólną regułą spośród przekaźników oferujących moc obliczeniową dla MLAT. Pozostałe przekaźniki z feederami tego obszaru przekazują im jego surowe dane jednym przeskokiem, więc surowe dane nigdy nie wędrują daleko.

Dane rozchodzą się według obszarów, jak w BitTorrencie. Przekaźniki z feederami obszaru wysyłają stałe dwie lub trzy kopie, niezależnie od liczby chętnych. Każdy strumień jest dzielony na pasy, a każdy przekaźnik, który bierze obszar, przekazuje swoją część kilku innym: przekazywanie tej części to obowiązek, który przychodzi z obszarem.

Obszary tworzą stałe drzewo, od małych obszarów przez regiony, kraje i kontynenty aż po świat. Przekaźnik bierze obszary na poziomie, którego potrzebuje, i dzieli się na tym poziomie, a gdy zbierze wszystkie obszary pod większym, może zaoferować ten większy jako jedną paczkę.

Jak działa drzewo obszarów

Powolny subskrybent zostaje rozłączony, przekaźnik nigdy na niego nie czeka. Przyjmowanie danych nie kosztuje przekaźnika nic poza serwerem; to, co wysyła, jest rozliczane, dlatego każdy przekaźnik ustala limit wysyłania przez --max-upload, a jego rachunek nigdy nie przekroczy limitu razy liczby sekund w miesiącu: 10 Mbit/s to najwyżej około 3,3 TB. Limit nigdy się nie wyczerpuje. Gdy żąda się więcej, niż mieści, najpierw idzie ruch sterujący, potem pozycje i modele zegarów, potem surowe dane do innych przekaźników, a zwykli subskrybenci na końcu. Nowy feeder jest odrzucany, dopóki limit nie zmieści tego, co przekaźnik musiałby za niego przekazywać, a zwykli subskrybenci są rozłączani przed każdym przekaźnikiem, najbardziej obciążający najpierw. Ile kosztuje przekaźnik u popularnych dostawców, opisuje sekcja „What a relay costs” w README.

Zasada produkcyjna

Jeśli polegasz na danych Tally, czytaj je przez przekaźnik, który sam uruchamiasz, a nie przez cudzy. Inny operator może wtedy pogorszyć tylko te feedery, które sam obsługuje, a każdy feeder publikuje do dwóch przekaźników w różnych sieciach.