Самоорганизация в северных лесах: из компьютерной игры в реальность

от автора

Итак, друзья… Прошло порядочно времени со дня первой публикации о MANET, но как говорил Остап Ибрагимович: «пройдет немного времени и каждый третий, нет, каждый второй житель…» приобритет собственный опыт работы с этими сетями, а в идеале может даже поменяется способ общения людей. Но это скорее очень далекая перспектива, хоть и красивая…

Вообщем, много всего перепробовали, но в итоге пришли к тому, что было наиболее интересно большинству пользователей в опросах и, как говорят там у них на западе, «too challenging» — к персональной цифровой пакетной радиостанции с Linux и MANET.

В этой статье речь пойдет о вот такой штуке:

Вы играли когда-нибудь в Starcraft? Помните, как там юниты открывают карту и разведывают местность? А вам не хотелось когда-либо иметь что-то подобное под рукой, будь вы на природе, охоте, горах или даже у себя на даче? Постоянно иметь связь со своими друзьями независимо от инфраструктуры и мобильного покрытия, видеть их расположение на карте местности, обмениваться сообщениями в чатах, расшаривать файлы и, вообще, иметь свою собственную мобильную сеть!

Ровно такую задачу мы поставили перед собой. Мы — это небольшой коллектив в технопарке при одном из Скандинавских университетов. До обеда — лекции, студенты и диссертации, а после свободный полет девелопера в лаборатории и офисе через дорогу. Typical startup… )

Концепт

Зачастую, когда говорят о самоорганизующихся радиосетях с динамической топологией, то люди плохо себе представляют, что это такое. И валят в одну кучу все подряд — Mesh, IoT, MANET… Короче, кто что знает, то и имеет ввиду. Но как вы понимаете — это совершенно неправильно. Не буду повторяться, ведь в первой статье было дано точное определение и место каждой из этих технологий в соответствие с ее назначением и use case’ом. Теперь пришло время поговорить о реальных параметрах и производительности девайса и сети в целом. Сети MANET, конечно же…)))

Сразу же хочется сделать отступление и сказать любителям WiFi, раций Zello и прочей шары — на коленке за пару недель такое сделать не получится. И дело тут не в том, что нету грамотных инженеров и талантливых программеров, они как раз есть, а в том, что настоящая мобильность абонентов — это прежде всего научная задача, которая требует совершенно других подходов к организации радиосвязи и другого железа. Другого почти во всем! Это в полной мере относится и к классическим радиолюбительским штучкам на UHF / VHF диапазонах и DMR.

Итак, что нужно для того чтобы была надежная, качественная радиосвязь, с динамической топологией абонентов, большой площадью покрытия, передачей данных, возможностью выхода в Интернет и, желательно, бесплатно?

Правильно, радио должно быть цифровым и пакетным!

Причем, именно на основе TCP/IP, чтоб иметь обратную совместимость с Интернетом и кучей проверенных временем сервисов, включая передачу голоса, а не выдумывать свой собственный велосипед. А что может быть более проверено временем, чем Linux с его открытым исходным кодом?

Таким образом, мы заложили в основу нашей радиостанции этот концепт с самого начала. Теперь можно смело сказать — мы не ошиблись!

Девайс

Но кроме цифры и пакета в радиоканале нужны еще и серьезные вычислительные мощности. Поэтому, основные параметры нашего девайса такие.

Железо:

  • Cortex-A8 ARM процессор (до 1 GHz)
  • DDR3L RAM (512Mb)
  • NAND flash eMMC (4Gb)
  • Bluetooth 2.1 EDR
  • BLE 4.0
  • WiFi (802.11 b/g/n)
  • GPS (NMEA + Sirf)
  • USB 2.0 (mini)
  • OLED дисплей (2.8» full color)
  • Клавиатура (20 кнопок)

Радио:

  • Частота: 902-928 МГц
  • Модуляция: GFSK, FSK, MSK, OOK
  • Скорость: до 1 Мбит/с
  • Максимальная выходная мощность: 1 Вт
  • Дальность: до 3х км точка-точка (free space)
  • 25 широкополосных каналов
  • 120 узкополосных каналов
  • AGC

Софт:

  • Linux на базе дистрибутива yocto
  • VoIP (RTP, SIP) — в группах, точка-точка и бродкаст
  • IM (private, public talkchat)
  • Filesharing (torrents, FTP)
  • GPS positioning (coordinates sharing, track recording)
  • IPv6 enabled

По сути смартфон, только без GSM и с пингвином на борту. Но основная фича, как вы понимаете, это возможность создавать и работать в самоорганизующейся сети типа MANET.

Сеть

Как оно все работает? Как абоненты находят друг друга? Как они звонят и пишут смс? Как они знают кто есть где? Обо всем этом по порядку…

Поскольку у нас всё пакетное и на TCP/IP (см. выше почему), то первым делом в сеть надо зайти (кстати, мы используем только IPv6 — никакого DHCP или NATa). Все знают что такое skype и как им пользоваться? Примерно так же и у нас. С той лишь разницей, что нам не нужно соединяться ни с Интернетом ни с какими-либо серверами. В остальном очень похоже. Т.е. процесс логина — это не столько пароль при старте девайса (его можно и убрать), сколько изучение окружения. Иными словами, появившийся абонент, словно, говорит окружающим: «Привет! Я появился в сети». После того, как вы загрузили девайс можете зайти в список контактов и посмотреть, кто есть в округе (они ведь тоже залогинились).

Вот тут и начинается самое интересное… Если вы хотите позвонить или написать человеку, а его нет рядом с вами, то девайс начнет его поиск по всей радиосети. Не буду вдаваться в технические детали протоколов маршрутизации, скажу лишь, что они обладают всеми необходимыми инструментами для исключения зацикливаний, дубликатов сообщений, больших объемов служебного трафика и основаны на метриках, которые специально разработаны для динамичной топологии, когда маршруты быстро устаревают и становятся уже неактуальными. Мы используем протоколы маршрутизации по запросу, которые оптимизированы под такие задачи. Такая же логика и для групп абонентов. Кому интересно, погуглите MANET reactive routing — будет много инфы, полезной и не очень. Протокол канального уровня (МАС протокол) тоже переписан под эти сети. В нем отсутствует влияние скрытого абонента, столь хорошо знакомое для WiFi.

Продолжим наш мысленный эксперимент. Представим что нужный нам абонент найден в сети. Он запомнит весь маршрут по которому к нему пришел пакет-запрос и ответит обратно: «Привет, я тут — через 2 человека от тебя». После этого абоненты уже знают точное расположение друг друга и начинают общение используя этот маршрут. Параллельно они отслеживают качество связи, процент потерь пакетов, задержку, джиттер и тд, адаптивно подстраивая параметры звукового кодека под канал связи. Как только маршрут перестанет удовлетворять хотя бы одному из критериев качества, снова отработает маршрутизация на поиск лучшего маршрута. Добавлю, что абоненты посередине (те, которые являются ретрансляторами пакетов) ничего об этом не знают, поскольку весь трафик выше сетевого уровня закрыт в туннель IPsec. Таким образом, они не могут ни прослушать, ни повлиять на контент. А это может быть и голосовая сессия RTP и данные по FTP/торренту и всё, что угодно. Идем дальше!

А как насчет позиционирования? Да всё также. Весь список контактов периодически обменивается своими GPS координатами с другими контактами, предварительно построив к ним маршруты. В результате, на карте мы видим своё местоположение и позиции наших тиммейтов. Хочу отметить, что велик соблазн широковещательно «гнать волну» для более «надежной и достоверной» доставки сообщений. Это в корне неправильно и, в реальных условиях, приводит к лавиноподобному эффекту порождения трафика, а это смерть для сети. Канал моментально забивается дубликатами пакетов данных и МАС протокол не в состоянии ничего сделать. В результате доступными остаются считанные проценты от полосы пропускания и всё ложится… Поэтому мы отказались от волновых алгоритмов, а широковещательнй трафик строго регламентирован стеком протоколов.

Ну и наконец, как же создаются/администрируются/удаляются группы абонентов? Тут мы ничего нового не изобретали, а взяли за основу тот же Zello или групповой чат в скайпе с его политиками создания/администрирования/блокировки/удаления групп. Повторюсь, максимум проверенного и того что можно переиспользовать — надо переиспользовать! Не всегда ж идти своим «особым путем»…

Результат

В результате мы получили довольно любопытное устройство и уникальный опыт. Вроде бы все знакомо, но какое-то совершенно другое чувство. Смартфон без GSM, но со своим Интернетом… А впереди еще много планов и фич, которые хотелось бы реализовать. Работаем!

P.S.
Только не задавайте вопрос — где этот девайс можно достать/потестить/купить и тд. Это будет считаться рекламой, что запрещено правилами. Но если очень хочется узнать, то зайдите на kickstarter… 😉

ссылка на оригинал статьи http://habrahabr.ru/post/264945/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *