Основни възможности
Обединяване и дедупликация
Обединява данни от няколко AIS източника, премахва повторенията и запазва най-актуалното съобщение за обработка.
Интелигентни тагове
Управлява политиката за времевия c-таг, сглобява multipart съобщения чрез g-тагове и почиства външни мета хедъри.
Препращане
Разпределя чистия обединен поток към няколко UDP/TCP цели с отделни настройки за потребители и станции.
Реализиран защитен транспорт
ECDSA автентикация, AES‑GCM криптирани данни, ping/pong проверка на връзката и възстановяване на сесията. Ключовете на станцията са station_private.pem и station_public.pem.
Опашки и производителност
Независими опашки за обикновени и защитени портове, ефективна обработка на потоците и настройваем TTL кеш.
IPv4 и IPv6
Двустеков UDP вход и изход за станции и сървъри в различни мрежови среди.
Наблюдаемост
Проектът предвижда метрики и крайни точки за проверка на състоянието, а тестовете включват известни набори от дублирани AIS съобщения.
Развитие на проекта
Планирани са Docker образи и облачен панел за дистанционно управление на локални станции.
Архитектура
Поток на данните
- AIS приемник или приложение изпраща AIVDM/AIVDO съобщения към локален UDP вход.
- nmea_sproxy може да прехвърли потока по криптиран SEC вход към AISMixer; поддържат се и директни обикновени UDP входове.
- AISMixer обработва c/g тагове, сглобява multipart съобщения и премахва дубликати.
- След почистване и нормализиране потокът се препраща към конфигурираните цели.
Ясно разделени роли
AISMixer обединява потоци, дедупликира, управлява тагове и разпределя резултата към няколко цели.
nmea_sproxy е клиентски защитен прокси: един процес свързва един локален UDP вход с един криптиран SEC вход. Той не смесва потоци.
Работа в реални мрежи
Защитеният транспорт е предназначен за станции зад NAT, CGNAT или мобилна връзка. Автентикацията, криптираният ping/pong и възстановяването на сесията поддържат връзката надеждна без публичен адрес на станцията.
За кого е полезен AISMixer
Оператори на AIS станции
За хора и организации, които събират данни от няколко приемника и искат един чист поток без повторения към собствени или външни системи.
Морски общности и изследователи
Подходящ е за споделени приемни мрежи, тестови среди и анализ на AIS данни, където качеството и проследимостта на входа са важни.
Разработчици и интегратори
Отвореният Python код и ясното разделение между смесване и защитено препращане улесняват интеграцията с локални приложения, сървъри и специализирани морски системи.
Първи стъпки
Изтеглете проекта от GitHub и стартирайте AISMixer директно с Python. За една локална станция може да стартирате и отделен процес nmea_sproxy:
$ git clone https://github.com/iliyan85/aismixer $ cd aismixer $ python3 aismixer.py $ cd nmea_sproxy && python3 nmea_sproxy.py $ sudo systemctl start nmea_sproxy@boat
Името на systemd инстанцията, например boat, е свободно избран етикет. Нейната конфигурация описва връзката от един локален вход към един защитен изход.
Контакт и проект
AISMixer се разработва като проект с отворен код. Кодът, документацията и историята на промените са достъпни в GitHub хранилището.
Ако разполагате с AIS поток за тестване, набор от предварително означени дубликати или предложение за подобрение, отворете сигнал в GitHub.