BC/NW 2014 №2 (25):3.1

 

ОСОБЕННОСТИ ОДНОРАНГОВЫХ СЕТЕЙ, КАК ОБЪЕКТА ИССЛЕДОВАНИЯ. (ОБЗОР)

Ципельштейн И.О.

(ФГБОУ ВПО “Национальный исследовательский университет “МЭИ”, Москва, Россия)

 

Введение

В современном мире одной из основных ценностей является информация. Правильная информация неполученная в нужное время, может стоить больших денег и нервов. В связи с этим, в последнее время все более актуальным становится вопрос доступности информации. В последнее время участились случаи компьютерного терроризма (как правило, заключающиеся в массовых DDoS-атаках на крупные Интернет-ресурсы). Так, например, во время выборов Президента РФ в 2012 году в день голосования такому терроризму подверглись Интернет-сайты некоторых крупных телеканалов и радиостанций. Кроме того, недавний т.н. ЕвроМайдан в Украине был начат с атаки на сайты МВД и Кабинета Министров Украины.

Отличительной особенностью DDoS-атак в последнее время стала их направленность на DNS-сервера, а не на сами ресурсы сети, как это делалось раньше. Таким образом, получается, что раньше, для того, чтобы вывести из строя крупный Интернет-ресурс, работающий на нескольких серверах, по очереди выводился из строя каждый сервер. Это увеличивало время осуществления DDoS-атаку и упрощало ее обнаружение. Теперь же выводится из строя один узел, отвечающий за маршрутизацию, и вся сеть становится недоступна.

Для повышения устойчивости Интернет-ресурсов, были разработаны одноранговые сети ячеистой топологии.

 

Ячеистая топология

Изначально коммутация одноранговых сетей осуществлялась по топологии «общая шина». Благодаря этому все компьютеры были соединены друг с другом, что позволяло осуществить доступ ко всем ресурсам сети. Минус такой топологии заключается в том, что в сетях с общей шиной одновременно доступ в сеть может иметь только один компьютер, в противном случае в среде передачи данных возникают коллизии и искажение информации. Для устранения этого недостатка разработаны сети ячеистой топологии.

 

Ячеистая топология — топология, в которой узлы сети соединяются с несколькими другими узлами каналом данных, при этом принимая на себя функций коммутатора для других рабочих станций [1,2]. Пример соединения узлов представлен на рис. 1.

Рис. 1. Пример mesh-сети

 

То есть прямое соединение компьютер имеет не со всеми рабочими станциями в сети, а только с несколькими соседями. Благодаря этому, такие сети являются деградирующими, то есть, при выходе из строя одного из узлов, маршруты динамически перестраиваются, благодаря чему сеть продолжает работоспособность, но с худшими характеристиками пропускного канала.

Благодаря тому, что в одноранговой сети все узлы равны, для создания такой сети нет необходимости в использовании дорогостоящих серверных решений. Именно этот положительный аспект такой сетей делает их все более и более популярными в настоящее время. В частности, на возможности одноранговых сетей ячеистой топологии обратили внимание производители мобильных телефонов и приложений для них. В последней на текущий момент версии iOS, предустановленной на iPhone  была заложена программная реализация собственного протокола mesh-сети. Этот протокол используется, например, в программе для обмена сообщениями FireChat,  разработанной компанией Open Garden Inс. Соединение узлов (в данном случае – iPhone) осуществляется с помощью Bluetooth и Wi-Fi, благодаря чему функционирование программы никак не зависит от наличия Интернет-соединения и его скорости.

 

1.1. Классификация методов построения

Все методы построения mesh-сетей можно классифицировать по следующим критериям:

а) По среде передачи данных

1) Проводные – соединение устройств друг с другом в такой сети осуществляется непосредственно проводами. Характеризуется большой стоимостью за счет избыточного использования кабеля и коммутационного оборудования;

 

2) Беспроводные – соединение между узлами осуществляется соединение узлов по беспроводной среде передачи данных. Характеризуется низкой стоимостью оборудования, большей масштабируемостью, нежели у проводных аналогов, но при этом высокой трудностью в первичной настройке:

1. Беспроводные сети, использующие Wi-Fi соединение;

2. Беспроводные сети, использующие Bluetooth-соединение;

 

3) Комбинированные – соединение между узлами может осуществляться как проводами, так и беспроводной сетью. Характеризуются большей, нежели для беспроводных сетей, дороговизной и сложностью оборудования и сложностью первичной настройки. В ряде случаев обеспечивают большую пропускную способность и масштабируемость сети;

 

 

б) По уровню построения:

1) Сети физического уровня – mesh-сети, построенные непосредственным соединением узлов между собой;

2) Сети, комбинации физического и логического уровня – mesh-сети, сегменты которых на физическом уровне представляющие собой одноранговую сеть ячеистой топологии, при том, что соединение между такими сегментами может осуществляться и по средствам неодноранговых сетей (например, через сеть Интернет). При этом, если ни один из сегментов сети не представляет собой физическую mesh-сеть, то такая сеть не будет являться одноранговой сетью ячеистой топологии, а будет P2P-сетью.

 

в) По типу узлов сети:

1) Компьютерные сети – mesh-сеть строится непосредственно между компьютерами, оснащёнными Wi-Fi-адаптерами;

2) Маршрутизаторные сети – mesh-сеть строится между маршрутизаторами, к которым подключены компьютеры;

3) Телефонные сети – mesh-сеть строится между телефонами. Как правило, в такой сети не больше нескольких десятков узлов;

4) Комбинированные – mesh-сети, узлами которых могут являться как маршрутизаторы, так и компьютеры, оснащенные Wi-Fi-адаптерами.

 

г) По возможность управления сетью:

1) Управляемые сети – в такой сети выделяются т.н. «суперузлы», хранящие информацию о структуре сети и всех узлах в сети;

2) Самоорганизующиеся сети – все узлы сети равноправны, каждый узел сам отвечает за маршрутизацию пакетов.

 

1.2. Протокол CJDNS

Протокол CJDNS – это самоорганизующийся (г.2) протокол взаимодействия компьютеров и маршрутизаторов (в.4), соединенных беспроводным или проводным соединением (а.3), работающий как на физическом, так и на логическом уровне (б.2) [4-10].

Каждый узел состоит из двух логических устройств: маршрутизатора и коммутатора.

Коммутатор ответственен за непосредственную пересылку пакетов между узлами. Коммутатор содержит следующие данные:

а) Interface (интерфейсы) – набор соединений коммутатора с другими cjdns-коммутатором. Эти соединения могут быть как физическими (проводными и беспроводными), так и логическими (через TCP, UDP и т.д.);

б) Self Interface (собственный интерфейс)  – интерфейс, связывающий коммутатор с самим узлом. Если в пакете в качестве адресата указан Self Interface, то вместо дальнейшей пересылки, коммутатор передает пакет узлу, частью которого этот коммутатор является;

в) Encoding Scheme (схема декодирования) – способ, с помощью которого коммутатор преобразует направление из поля Route Label в адрес внутреннего интерфейса и обратно.

 

Каждый пакет в коммутаторе содержит следующий заголовок:

а) Route Label (метка маршрута) – упорядоченный набор направлений, описывающий весь путь по сети. Размер этого поля – 8 байт;

б) Type (тип) – поле, хранящее информацию о типе пакета. В случае передачи адресату в поле установлена 1, в случае возвращения отправителю – 0. Длина – один байт;

в) Priority (приоритет) – зарезервированное поле, используемое для деления пакетов при применение QoS.

 

 Пересылка осуществляется на основании поля Route Label пакета данных. В этом поле находится упорядоченный набор интерфейсов, описывающих весь путь пакета. В тот момент, когда пакет попадает в коммутатор, коммутатор выбирает из этого поля младшие биты, обозначающие номер интерфейса на коммутаторе. Далее пакет перенаправляется по этому интерфейсу соседнему коммутатору, закрепленному за этим интерфейсом. При этом, считанные биты удаляются, весь путь сдвигается вправо, а на освободившееся место добавляются биты, обозначающие обратный интерфейс. Это необходимо для того, чтобы, в случае невозможности доставить пакет, его можно было переправить отправителю. Попав на следующий коммутатор, операция повторяется до тех пор, пока в качестве номера интерфейса будут указан собственный интерфейс. Это означает, что пакет достиг своего места назначения.

 

Маршрутизатор отвечает за заполнения поля Route Label. В его памяти хранится таблица маршрутизации, в которой содержится информация о соседних узлах и интерфейсах, за которыми эти узлы закреплены.

В том случае, если искомого узла нет в таблице маршрутизации, маршрутизатор выбирает узел из таблицы маршрутизации, расстояние от которого до целевого узла минимально. Этому узлу отправляется запрос на поиск интерфейса к целевому узлу. Расчет расстояния до узла возможен благодаря тому, что в протоколе используется усовершенствованный протокол Kademlia. С помощью этого протокола имя каждого узла представляет собой зашифрованные географические координаты. Применяя функцию XOR к именам двух узлов можно узнать расстояние между ними.

 

Маршрутизатор выполняет три функции: поиск путей, описанный выше, ответ на запросы о поиске и пересылка пакетов. При получении поискового запроса, маршрутизатор обращается к своей таблице маршрутизации и, если искомый узел был найден, заполняет Route Label и возвращает пакет, либо перенаправляет его узлу, ближайшему к цели. При этом проверяется, чтобы маршрутизатор, которому перенаправляется пакет, был дальше от предыдущего маршрутизатора, нежели текущий. Это необходимо для того, чтобы избежать петель. Получив информацию от маршрутизатора, котором переадресовывался поисковый запрос, маршрутизатор добавляет новый путь в свою таблицу маршрутизации, добавляет к Route Label полученный адрес и возвращает пакет.

Сообщения, передаваемые между маршрутизаторами, бывают двух типов:

- Поисковые запросы;

- Ответы на запросы.

Поисковый запрос имеет следующую структуру:

{

"q":    "fn",

"tar":  "abcdefghhijklmno",

"txid": "12345"

}

Поле “q” хранит информацию о типе запроса. Самый распространенный – fn (find node) – запрос на поиск узла;

Поле tar – хранит в себе адрес искомого узла;

txid – поле, хранящее в себе идентификатор транзакции

 

Ответы на запросы имеют следующую структуру:

{

"n":"cdefghijklmnopqrstghi1234567qponmlkjihgzyxwyzab"

"txid": "12345"

},

где поле n содержит 32-битный публичный ключ и 8-битную метку коммутатора, которому будет пересылаться сообщение.

При пересылке пакетов между маршрутизаторами устанавливается сессия, защищенная по протоколу CryptoAuth.

 

1.3. Протокол B.A.T.M.A.N. advanced

Протокол B.A.T.M.A.N. – это управляемый (г.1) протокол взаимодействия компьютеров и маршрутизаторов (в.4), соединенных беспроводной или проводной сетью (а.3.), работающий на физическом уровне (б.1) [11-12].

В отличие от CJDNS, в узле нет деления на виртуальные устройства. Идентификация узлов происходит по mac-адресам адаптеров, что приводит к невозможности смены идентификатора.

Каждый узел хранит локальную и глобальную таблицу маршрутизации. В локальной таблице хранится информация об узлах, непосредственно соединенных с данным узлом. Кроме того, локальной таблице данных сопоставляется значение ttvn, обозначающий версию локальной таблицы данных. Глобальная таблица маршрутизации хранит информацию о локальных таблицах соседей.

При включении в сеть нового узла, обе таблицы маршрутизации у него пустые. Далее узел рассылает широковещательное OG-сообщение, сообщая о своем существовании соседним узлам.

Каждый узел с определенным интервалом передает широковещательные OG-сообщения, содержащий идентификатор узла,  ttvn и набор контрольных сумм. На основании этих сообщений каждый узел «узнает» своих соседей (рис. 2).

Рис. 2. Процесс нахождения соседей

 

 После получения этих пакетов, происходит измерение качества канала между узлом и каждым из соседних узлов (рис. 3). Это измерение происходит за счет измерения количества переданных/потерянных пакетов и за счет измерения уровня сигнала. В соответствии с полученными данными, заполняется локальная таблица маршрутизации.

 

Рис. 3. Процесс построения маршрутов

 

Каждое добавление/удаление узла из таблицы маршрутизации приводит к увеличению ttvn. Соответственно, при передаче следующего OG-сообщения, ttvn в нем будет изменен. Получив OG сообщение от узла, который уже есть в локальной таблице маршрутизации, узлы сравнивают версию ttvn из полученного сообщения с той, что хранится в глобальной таблице маршрутизации. При небольшом различии в версиях, узел отправляет запрос изменений, на что ему в ответ отравляется TT-сообщение. Получив это сообщение, узел вносит необходимые изменения в таблицу. В том случае, если различие в версиях существенное, узел запрашивает локальную таблицу узла. На этот запрос отвечает ближайший узел, отправляющий из своей глобальной таблицы маршрутизации всю информацию о запрошенном узле. Благодаря этому, а так же размеру OG-сообщения (не больше 52 байт), нагрузка на сеть служебной информацией крайне мала.

На узлах, содержащих несколько интерфейсов передачи данных, хранится n+1 локальных таблиц маршрутизации, где n – количество интерфейсов. Таким образом, каждому интерфейсу сопоставляется своя таблица маршрутизации, описывающая пути для конкретного интерфейса. Последняя таблица маршрутизации описывает путь по умолчанию для устройства. Благодаря этому возможны следующие варианты использования:

- Построение оптимального маршрута – на основе таблиц маршрутизации в таблицу маршрутизации по умолчанию заносится «оптимальный» по пропускной способности путь (рис. 4).

 

Рис. 4. Оптимальный маршрут между узлами A и D

 

- Разделение трафика между путями – траффик от разных устройств разбивается на разные пути для обеспечения максимальной пропускной способности (рис. 5.)

Рис. 5. Пример разбиения трафика по путям

На рисунке: узел B имеет два интерфейса, за счет чего передача от A к Е и от А к E возможна по независимым разным путям

 

1.4.   Протокол 802.11s

Протокол 802.11s – это управляемый (г.1) протокол взаимодействия маршрутизаторов и компьютеров (в.4), соединенных беспроводной Wi-Fi-сетью (а.2.1.), работающий на физическом уровне (б.1) [13-17].

В данном протоколе все узлы разделяются на следующие категории [13]:

- STA – клиентская станция, оснащенная Wi-Fi-адапретом, не поддерживающая протокола 802.11s;

- Mesh Point (MP) –  узел, соединенный с соседними MP. Является полноценным участником mesh-сети;

- Mesh AP (MAP) – узел, соединяющий в себе функционал MP и AP для STA

 - Mesh Portal (MPP) – узел, являющийся точкой выхода в сеть, отличную от mesh-сети.

Пример структуры сети, построенной по данному протоколу, приведен на рис. 6.

 

 

Рис 6. Структура mesh-сети, построенная по протоколу 802.11s

На рисунке: синие штрихпунктирные линии обозначаеют беспроводное mesh-соединение, красные – обычное беспроводное соединение

При подключении нового узла необходимо подключить его к mesh-сети. При нахождении сети используется стандартный механизм активного и пассивного сканирования. Узлы, функционирующие внутри mesh-сети, кроме обычных маячков стандарта 802.11, отпраляют маячки и отвечают на зондирующие запросы соответствующими сообщениями. Основное отличие от кадра стандартна 802.11 заключается в том, что кадры, отправляемые в mesh-сети содержат дополнительные поля:

- Mesh ID – 32-байтное поле схожее с SSID для обычных беспроводных сетей;

- Mesh Configuration element – поле настроек mesh-сети. Содержит следующие подполя:

- Path selection protocol – идентификатор протокола выбора пути;

- Path selection metric identifier – идентификатор используемой метрики;

 - Congestion control mode identifier – идентификатор протокола контроля перегрузки сети;

- Synchronization method identifier – идентификатор метода синхронизации;

- Аuthentication protocol identifier – индетификатор потокола, используемого для аутентификации станций;

- Mesh Formation Info element – поле, хранящее информацию о количестве подключенных к станции узлов;

- Mesh capability element – поле, хранящее информацию о том, возможно ли подключение к данной станции новых узлов.

 

После обнаружения узлов, доступных для подключения, узел устанавливает с доступной станцией mesh-соединение. Соединение может быть установлено с помощью следующих протоколов:

- Authenticated Mesh Peering Exchange (AMPE) – защищенный протокол с шифрованием;

- Mesh Peering Management (MPM) – незащищенный протокол без шифрования;

Не зависимо от выбранного протокола, узел отправляет соседнему узлу запрос на подключение к узлу (mesh peering open frame), содержащий  такую информацию об узле, как:

- Пропускная способность;

- Поддерживаемые частоты работы

- Поддержка управления питанием;

- Поддерживаемые каналы;

- Информацию о передатчике;

- Служебную информацию для аутентификации (при использовании AMPE);

- Информацию о производителе узла;

- Mesh ID;

- Mesh Configuration element;

 

При подтверждении второй станицей установки соединения, она отправляет подтверждение (mesh peering confirm), который отличается от запроса на подключение тем, что содержит информацию о локальном идентификаторе соединения. В случае отказа, станция отправляет сообщение об отказе установления соединения (mesh peering close), содержащем, кроме информации из запроса, причину отказа.

Построение маршрутов передачи пакетов может осуществляться либо по протоколу HWMP, либо по протоколу RA-OLSR.

литература

1. Капустин, В.  Информационно-вычислительные сети : учебное пособие/ Капустин, В. Е. Дементьев. — Ульяновск : УлГТУ, 2011. — 141с.

2. Ячеистая топология.  http://ru.wikipedia.org/wiki/Ячеистая_топология

3. IEEE 802.11s Wi-Fi Mesh для самых маленьких. http://habrahabr.ru/post/199508/

4. Делаем Hyperboria hotspot. Пособие по ковырянию роутера. http://habrahabr.ru/company/cjdns/blog/202536/

5. Hyperboria: Как все устроено. http://habrahabr.ru/post/182652/

6. Hyperboria: Маршрутизация. http://habrahabr.ru/post/183606/

7. Hyperboria. http://cjdroute.net/

8. Cjdelise/cjdns. http://github.com/cjdelisle/cjdns

9. The global meshnet project http://projectmeshnet.org/

10. WhitePapet.md http://github.com/cjdelisle/cjdns/blob/master/rfcs/Whitepaper.md

11. Introduction to Mesh Networks.  http://airberry.com/downloads/

12. Open-mesh.  http://www.open-mesh.org/projects/open-mesh/wiki

13. IEEE 802.11s Tutorial. http://www.ieee802.org/802_tutorials/06-November/802.11s_Tutorial_r5.pdf

14. 802.11s.  http://wiki.openwrt.org/inbox/mesh.80211s?s=802&s=11s

15. RFC 3626. https://tools.ietf.org/html/rfc3626

16. Jerome H.  802.11s Mesh Networking сети. www.cwnp.com/wp-content/uploads/pdf/802.11s_mesh_networking_v1.0.pdf