Антон Борисов
Знакомимся с реализацией свободной mesh-сети
Еще десять лет назад не было ярких предпосылок к развитию беспроводных технологий. Да, в 1999 году был уже создан WiFi Alliance. Да, в следующем, 2000 году был выпущен компанией Ericsson первый сотовый телефон с модулем Bluetooth. Но массовое появление устройств, использующих тот же WiFi, произошло буквально у нас на глазах пару лет назад.
Холодные факты технологии
Для обывателя беспроводные устройства приносят прежде всего эксплуатационные удобства. Не надо загромождать стол проводами, скорость доступа чуть ниже по сравнению с кабельной инфраструктурой ethernet, но зато появляются мобильность и свобода перемещения. Хотя по большому счету и в пределах определенной территории покрытия.
Присутствие точки доступа (Access Point) и модуля WiFi, например в ноутбуке, позволяет организовать беспроводную сеть в так называемом режиме Infrastructure. По большому счету этот режим можно назвать Мастер-Ведомый, когда AP играет роль главной скрипки, а WiFi подключаются непосредственно к этой самой AP. Наверняка многие из вас уже имеют опыт работы из мест употребления прохладительных напитков и приятного времяпровождения, где развернуты WiFi-сети.
Однако стоит вспомнить, что даже два WiFi-модуля можно заставить играть по другим правилам, выставив их в режим работы Ad-Hoc. В этом случае уже нет главного устройства и подчиненного, они все являются однотипными. Вот здесь-то нас и поджидают приятные сюрпризы, а именно – появляется возможность организовать mesh-сеть (у нас она называется как «ячеистая», но я думаю, что именно английский вариант приживется).
Чем хороша mesh-топология? Во-первых, сеть создается из относительно дешевых модулей, каждый из которых по радиоканалу соединен со всеми соседями в зоне видимости. Второе немаловажное свойство – сеть из этих модулей самоорганизуется и способна восстанавливаться при выходе из строя некоторых узлов. И третье – низкая стоимость поддержки сети – раз узлы могут постоянно «видеть» и «чувствовать» состояние соседей и соответственно принимать решение об изменении маршрутных таблиц, то поддержка в данном случае заключается в правильном включении в сеть бытового электропитания.
Сетевая топология mesh-сети
Но не стоит думать, что минусов нет. Конечно, они есть: это и дополнительный служебный трафик, который обязан курсировать по сети, и проблема в правильном выборе программных комонентов, а именно, протоколов обмена – когда сеть состоит из 10 узлов, проблем нет, но при наличии 100 и более узлов приходится задумываться об эффективном выборе маршрутов. Впрочем, это уже задача разработчиков, с одним из которых мы и побеседовали.
От теории к практике
Итак, давайте поближе познакомимся с реализацией свободной mesh-сети, развернутой в Вене – FunkFeuer, и одним из главных действующих лиц – Аароном Капланом (Aaron Kaplan).
Аарон, не могли бы вы представить команду FunkFeuer?
Наша команда funkfeuer.at состоит примерно из 30 человек с самым различным опытом и технической подготовкой. Насколько разношерстна наша команда, вы можете судить сами – это доктора-терапевты, выпускники медвузов, обучающиеся в ординатуре, журналисты, пожарные, радиолюбители, специалисты в области IT-безопасности, конечно же, несколько программистов и специалистов в области IT, а также выпускники – студенты-физики.
Команда FunkFeuer
Можете ли вспомнить дату основания вашей организации и почему выбрали именно FunkFeuer («радиомаяк» – рус.) в качестве названия?
Работать в команде мы начали в 2003 году, наверное, в мае. Для меня это началось в марте того же года. У меня в офисе, на столе, стоял ноутбук, и кто-то нечаянно зацепил кабель от локальной сети. Естественно, что ноутбук упал на пол, и некоторые части отвалились от материнской платы. А так как Apple G3 все-таки довольно сложная и «навороченная» техника, то припаять обратно оторванные компоненты мне так и не удалось. И тут я нашел WiFi-карточку в ноутбуке и подумал: «О, это здорово – нам нужен только WiFi-доступ по всему городу». После этого последовали эксперименты в офисе с программным обеспечением, отвечающим за маршрутизацию (OLSR), и обнаружили, что это единственное решение, подходящее нам.
В мае 2003 года мы организовали митинг, на котором высказали мнение об организации mesh-сети по всему городу.
Слово FunkFeuer – это немецкое название радиосигнала, которое используется при авианавигации. Если дословно, то оно еще и означает «беспроводной огонь». Что немножко характеризует и нашу сеть – она развивается, как огонь.
Вы еще можете заметить наш артистичный логотип «0xFF». Для нашей организации его придумал мой друг. И также у него есть второе значение – в шестнадцатеричном формате это значение 255.
Какие цели вы поставили для себя, когда встретились?
Может быть, мировое доминирование. Но если серьезно, то мы бы хотели построить сети, сравнимые по масштабу с GSM-сетями. Когда думаешь об этом, то в далекой перспективе все возможно. По крайней мере за все время нашего существования мы продвинулись достаточно далеко вперед. Но мир настолько велик, что человек не может объять всё.
А как вы пришли к выбору алгоритма маршрутизации, какие были предпосылки?
Когда мы начинали, то по большому счету был всего лишь один рабочий алгоритм маршрутизации в mesh-сетях – OLSR (Optimized Link State Routing Protocol). Большая часть из тех, что существуют сейчас, на тот момент либо не были еще разработаны, либо работали только в определенных операционных системах. Мы также обнаружили, что в Берлине существует аналогичная нам группа – freifunk.net. На тот момент они уже внесли ряд интересных патчей в код olsrd, а так как код был открыт, то с внесенными изменениями удалось поработать на практике. Вена и Берлин, насколько я знаю, были единственными городами, где существовала большая WiFi-сеть на основе OLSR. И так как у нас у единственных была развернута сеть, а остальные всего лишь работали на эмуляторах, то мы могли авторитетно заявить, что «вот такие-то функции работают на самом деле, в вот эти нет». Как пример, в RFC3626 для olsrd прописаны несколько механизмов, которые мало соприкасаются с действительностью (т.е. для сетей с 30 и более узлами). Парни из академических кругов обычно очень «круты» в плане создания новых концепций или теорий, но зачастую у них не получается на практике опробовать свои грандиозные эксперименты. А для WiFi реализация на практике – это очень важный момент.
В течение нескольких лет мы вносили и отрабатывали изменения и на текущий момент можем с облегчением заявить, что код обладает определенной завершенностью и целостностью. Код работает постоянно на реальных объектах, тестируется и апробируется. Имея на руках портируемое решение 3-го уровня (OSI-уровень), которое используется по всему миру – от Google до бразильского государственного совета по развитию ИКТ, строить большие mesh-сети становится все более удобно и интересно. Проблемы, которые изначально существуют в WiFi-сетях, а это самонаводки радиоканала и высокая степень потери пакетов, очень просто решаются с помощью mesh-алгоритма. Программа сама решает по определенным критериям, что данный маршрут стал неудобным и автоматически составляет новую таблицу маршрутизации.
Можете ли сравнить OLSR протокол с аналогом, используемым в сети Meraki? И если да, то в чем преимущество первого?
Компания Meraki стремится продать вам свою собственную систему тарификации. Такой подход не будет работать – не будет работать вся сеть, если нет доступа к Интернету! Сети на основе OLSR будут. Сеть у Meraki построена на основе оригинального протокола, который в свою очередь вышел из проекта Roofnet/MIT. И мне кажется, что протокол в Meraki на сегодняшний момент немного устарел. Протокол же OLSR является Open Source-решением, он постоянно совершенствуется и вбирает в себя хорошие идеи с разных научных направлений. В силу его природы мы всегда получаем блестящие идеи от самых одаренных людей.
Аарон, вы также участвуете в качестве разработчика в проекте OLSR, какова ваша сфера ответственности?
Мой козырь – это видение общей концепции и архитектуры помимо тестирования. Но должен отметить, что в OLSR-проекте есть очень умные головы, с которыми сравнивать себя я даже и не берусь.
Кто на сегодняшний момент ваши клиенты и есть ли наработки, подобные вашей?
Список клиентов представлен на нашем сайте (см. [1]). В Вене у нас на сегодня 550 зарегистрированных пользователей, это примерно 460 узлов в mesh-сети с покрытием территории в среднем 40 км в диаметре. Подобные сети существуют в Граце и Вайнфиртеле (район, соседствующий с чешской границей, – там плохое DSL-покрытие), Лейпциге [2], Дрездене, Берлине, Веймаре, Ростоке, Афинах [3] (примерно 2000 узлов и с покрытием всех афинских пригородов), Белграде (bgwireless), Хорватии, и также есть несколько сетей в Чехии (czfree.cz). Кроме этого, в Барселоне [4] развернута огромная сеть, насколько я знаю, состоящяя из 5500 пользователей.
Многие их них построены с использованием OLSR. Большая часть – это mesh-сети, некоторые – нет. Все они используют свободные частоты WiFi и состоят из множества «клиентов», которые вносят вклад в развитие сети. Хотя мне кажется правильным рассматривать людей в качестве партнеров-участников и изобретателей сети, нежели как клиентов.
Эксперимент по увеличению дальности связи
Были ли проблемы с лицензированием радио-частот?
В Австрии и в основном по всей Европе частоты в 2.4 Ghz и 5.7 Ghz свободны, с учетом, конечно же, мощности передатчиков.
Я смотрю, у вас много репитеров, антенн, и даже коробки используются от tupperware. Это достаточно капиталоемкое вложение. Кто обычно платит за аппаратуру – участники сети или же есть спонсоры?
Каждый участник платит за себя сам, конечно же. Планка в среднем составляет 60 евро.
Как бы вы оценили эффективность сети FunkFeuer?
Я бы лично оценил так – в нашей сети около 460 узлов, и для каждого «клиента» доступ в интернет обходится примерно в 2-3 евро в месяц. На мой взгляд, экономически эффективно. По большому счету mesh-сеть – это дешевый доступ в Интернет для всех, а если еще и сеть правильно спланирована, то и достаточно быстрый.
Означает ли это, что каждый, кто имеет доступ в Интернет, также предоставляет его на благо остальных участников сети?
Хотелось бы разъяснить – мы не кибер-коммунисты. Но такой вид взаимодействия имеет место, если что-то предлагается взамен.
Что касается тех, кто напрямую не подключен к Интернету, то в этом случае они выступают в роли беспроводных повторителей. Так что они также очень важны. Если один канал пропадает, то информация передается через соседние рабочие узлы. Что идет на пользу всей сетевой инфраструктуре. Может быть такой вариант – выбирается провайдер в определенном районе города, где оптовый трафик дешевле, в складчину оплачивается интернет-доступ, а затем через этот сегмент раскидывается трафик по всей mesh-сети. В Вене мы так и поступили, подключились к оператору, который предоставляет нам дешевый трафик через 100 Мбитный оптический канал. Если мы не можем больше работать с определенным оператором, то мы можем найти другого – сеть большая, и мы можем себе это позволить. Главное, купить трафик в правильном месте.
Как видите, это больше из области выбора оптимального экономического решения.
А как вы ограничиваете скорость для пользователей, которые пользуются «тяжелым» трафиком, таким как FTP, или используют P2P?
Мы уведомляем пользователя, что так делать не стоит. Если это не срабатывает, то есть и другие пути для технического ограничения скорости, например traffic-shaping.
Вся инфраструктура сети 0xFF основана на открытых технологиях – fimware в роутерах и ПО для построения mesh-конфигураций, это верно?
Да, почти все верно. У нас есть WiFi-мосты (osbridge), которые используют Open Source-технологии (busybox и др.), но на самом деле они не совсем Open Source. Например, мы не можем скомпилировать новую firmware для этого прибора, что на самом деле печально, так как мы действительно могли бы улучшить прошивку.
А разве они не совместимы с OpenWRT?
Так и есть. Несмотря на то что устройства (osbridge) основаны на базе openwrt и busybox, окружение для компиляции образов никогда не было открыто. Так что не так просто «влезть» в устройство и установить нашу собственную openwrt-прошивку с нашими же пакетами и ПО. А возвращаясь к открытым технологиям, то да, вся сеть на открытых протоколах и openwrt.
Одна из моделей, так называемый osbridge
Каковы основные операционные системы, на которых работает olsrd?
Почти на всех. Конечно же, впереди всех Linux – основная платформа для разработки.
Но OLSR также работает на моем iPhone, может работать в VxWorks, на PDA и на других системах. Не совсем уверен насчет Solaris, возможно, портирование все еще не закончено.
Можете ли вы вспомнить яркие примеры использования 0xFF-сети?
О да! Был действительно интересный эпизод. Андреас, один из самых первых членов 0xFF, оказался в комичной ситуации. Одна наша местная радиостанция (общественное радио, у них меньше денег по сравнению с коммерческими аналогами, потому что они не крутят рекламные ролики) попросила нас предоставить WiFi-аплинк для организации живого эфира из парка в Вене. Да, это оказалось реализуемо, так как один из наших узлов оказался рядом с парком. Поэтому они направили свою антенну на наш узел, и получилось потоковое вещание. Потом роутинг захватил несколько узлов в mesh-сети, но аплинк все еще проходил через DSL-линию Андреаса. И вот он сидит у себя дома, слушает радиостанцию (FM-диапазон) и думает, а что произойдет, когда я разорву DSL-соединение? По идее FM-трансляция должна сразу же оборваться, не правда ли? И вот он пробует. И через 10 секунд прием сигнала от этой радиостанции прекратился.
Достаточно любопытная ситуация, когда оцифрованный звук идет по цифровым каналам, а вы с помощью ряда манипуляций «выводите» из строя многокиловаттную аналоговую радиостанцию.
Ваши взгляды на будущее 0xFF?
Создать больше мобильных узлов!
Очевидно, имеется в виду практическая реализация OLSR, подобная той, что в iPhone?
И это, кстати, тоже. Также возможна реализация на спутниковых системах, на воздушных шарах или кораблях. И сами посудите, какой бы механизм беспроводной связи и коммуникаций вы бы использовали в робототехнике будущего, такой, что экранизирована в фильме «Матрица»?
Кстати, кто из русских инженеров (а у вас достаточно сильные инженерные традиции) хочет поучаствовать с нами в проекте по построению мобильных четырехмоторных геликоптеров? Тот же самый Андреас Маркштайнер (Andreas Marksteiner) работал над ними. Хотя его работа далеко не продвинулась, так как были другие приоритетные задачи, но я надеюсь, что скоро появятся квадрокоптеры с mesh-начинкой. Может, для кого-то данное направление представляется пугающим, но мне нравится.
Внешний вид quadcopter
А какие требования предъявляются помимо чистого любопытства для участия в проекте?
Свободное время, конечно же, общий интерес, способность к программированию для embedded-сред и хорошее владение электроникой и механикой.
Аарон, спасибо за интервью.
Poshalusta!
- https://maps.wireloss.net/funkfeuer/?.
- http://leipzig.freifunk.net.
- http://wind.awmn.net/?page=nodes.
- http://guifi.net.
- http://en.wikipedia.org/wiki/Mesh_networking.