V.V. Dikovitsky, I.O. Datyev
FEATURES SOFTWARE IMPLEMENTATION OF ROUTING PROTOCOLS OLSR
THE NETWORK SIMULATOR NS-3
Abstract
Multihop wireless networks are a promising area of information and communication networks. The high cost of full-scale experiments is the main problem of solutions evaluating offered in this area. Therefore, the main testing tool of developed communication protocols and equipment is a simulation. The article presents the features of OLSR routing protocol software implementation in NS-3 network simulator that is widely used in scientific research.
Введение
Сети MANET в последнее время пользуются большой популярностью: многошаговые самоорганизующиеся беспроводные сети с распределенным управлением, в которых возможна передача данных между двумя узлами через промежуточные узлы. Узлы сети являются не только пользовательскими терминалами, но и являются ретрансляторами-маршрутизаторами, ретранслируя пакеты других абонентов и участвуя в нахождении маршрутов к ним, следовательно, эти сети способны к самоорганизации. Такие сети отличаются следующими особенностями:
1) возможность передачи данных на большие расстояния без увеличения мощности передатчика;
2) устойчивость к изменениям в топологии сети;
3) возможность быстрой смены топологии в условиях неблагоприятной шумовой обстановки или вывода из строя одного из узлов;
4) высокая скорость развертывания.
Существующие проблемы многошаговых самоорганизующихся беспро- водных сетей:
1) проблема безопасности передаваемых данных;
2) относительно низкая скорость передачи данных;
3) низкая помехоустойчивость сети;
4) проблемы протоколов маршрутизации.
Принято делить протоколы маршрутизации на проактивные (табличные), реактивные (зондовые) и их гибриды. Проблема заключается в том, что реально разработанные протоколы маршрутизации сетей MANET либо не реализованы физически в языке С, либо ориентированы на достижение оптимального использования сетевых ресурсов при условиях работы сети, когда топология меняется медленно или вообще не меняется [1].
Протокол OLSR
Одним из проактивных протоколов является OLSR, использующий обмен сообщениями приветствия и контроля для получения информации о топологии сети. Узлы используют эту информацию для определения следующего шага (hop) в пути маршрутизируемого пакета данных. Является одним из наиболее популярных протоколов. Протокол OLSR основан на понятии многоточечной ретрансляции MPR (MultiPoint Relay). Каждый узел сети m выбирает несколько узлов из числа своих соседей (т.е. из узлов, с которыми у него установлено соединение). В итоге в сети формируется множество узлов MPR(m). Множество формируется так, чтобы все узлы были связаны со всеми узлами, отстоящими от них на расстояние в 2 шага. Информация об MPR изменяется каждый раз, когда обнаруживается изменение в узлах, отстоящих от данного на 1 или 2 шага. Каждый узел сети хранит свою таблицу маршрутизации, которую формирует на основании информации о топологии сети. Она распространяется по всей сети посредством служебных пакетов выбора маршрута Topology Control (TC). В пересылке ТС-пакетов участвуют только MPR-узлы, остальные узлы принимают и обрабатывают такие пакеты, но не пересылают их дальше. Для каждого MPR формируется список соседних узлов, выбравших его в качестве MPR, – список MPR Selectors (MPRS). Информация о MPRS передается в специальных HELLO- пакетах, которые передаются только между двумя соседними узлами. В сеть (в ТС-пакетах) передается только информация о состоянии соединений между MPR и его MPRSs. Данный механизм позволяет существенно снизить число передач служебных пакетов по сравнению с лавинной рассылкой. В протоколе OLSR служебные сообщения содержат последовательные номера (аналог DSN в HWMP), которые увеличиваются в последующих сообщениях. Таким образом, получатель контрольного сообщения может при необходимости с легкостью определить, какая информация является актуальной, даже если сообщения пришли в обратном порядке. OLSR разработан как совершенно распределенный протокол, он не зависит от каких-либо корневых узлов. Кроме того, каждый узел периодически рассылает контрольные пакеты, поэтому протокол устойчив в случае потери части этих сообщений, что довольно часто случается с широковещательными пакетами в беспроводных сетях [2, 3].
NS3 - является мощным сетевым симулятором для моделирования телекоммуникационных систем и распространяется под лицензией GNU GPLv2. Симулятор решает одну из главных проблем моделирования сетей - проблему стоимости оборудования. Сетевые симуляторы являются программными продуктами, позволяющими выполнять имитационное моделирование телекоммуникационных систем. Применение имитационного моделирования позволяет проводить эксперименты, не разворачивая реальную сеть, что является трудоемким, дорогостоящим и, как правило, протяженным во времени процессом. В NS3 разработаны модели беспроводных сетей различных типов, позволяющие проводить моделирование с движущимися объектами в трёхмерном пространстве. Кроме того, реализованы модели проводных и смешанных топологий различной сложности, в том числе, Mesh-сетей на основе стека протоколов 802.11s. Разработан FrameWork под названием FlowMonitor, предоставляющий различные, а главное гибкие методы сбора самых различных показаний с моделируемых сетевых узлов и каналов связи. Симулятор «по умолчанию» не имеет собственного графического интерфейса, однако используются такие средства как NetAnimator и PyViz, позволяющие выводить схему на экран для наблюдения за работой протокола. Таким образом, функциональность NS3 превосходит многие коммерческие симуляторы [4].
Реализация протокола маршрутизации OLSR в сетевом симуляторе NS3 Эксперименты [5] показывают, что характеристики протокола OLSR, связанные с доставкой пакетов данных ухудшаются с повышением степени мобильности узлов. В настоящее время есть различные направления решения данной проблемы: использование более надежных способов доставки широковещательных пакетов, развитие «cross-layer» взаимодействия [6] в OLSR протоколе (OLSR-CL). Для подтверждения эффективности разрабатываемых решений предлагается использовать сетевой симулятор NS3, моделирующий различные протоколы и топологии с возможностью визуализации, в котором «по умолчанию» доступно достаточно большое число протоколов, OLSR в том числе. В NS3 протокол OLSR использует IPV4, их реализация основана на RFC 3626, а не на RFC 7181 [7]. В отличие от версии NS2, NS3 для OLSR не поддерживает обратную связь МАС-уровня, как описано в RFC 3626.
В дальнейшем планируется добавление дополнительных параметров в существующую реализацию протокола OLSR в сетевом симуляторе NS3, для повышения степени реалистичности симуляции протокола [8].
Реализация и работа API (англ. application programming interface, интерфейс программирования приложений) сетевого симулятора находится в файле …examples/olsr-hna.cc. Пример готового протокола модели OLSR находится в папке src/olsr/example под заголовком point-to-point-olsr.cc На рисунке представлена схема реализации компонентов протокола, на которой указано где и какие функции, используемые протоколом OLSR (simple- point-to-point-olsr.cc), находятся.
Рассмотрим код протокола OLSR. В рассматриваемом нами файле simple- point-to-point-olsr.cc так же имеются краткие пояснения к исходному коду. LogComponentEnable отвечает за вывод процесса исполнения протокола в консоль.
Листинг 1.Настройка размера передаваемого пакета (PacketSize) и скорости пере- дачи данных (DataRate) представлена в Листинге 2. Данные параметры оказывают существенное влияние на производительность сети в целом, поэтому, как правило, используются при моделировании в качестве входных.
Листинг 2.Возможность ввода различных функций в терминале (--run «название протокола» --«функция»), здесь таковыми функциями являются argc и argv. (Более подробно функции рассмотрены в официальной документации [4]).
Листинг 3.Листинг 4 демонстрирует подключение NodeContainer: функции, с помощью которой создаются и связываются друг с другом узлы. Количество узлов задано в качестве параметра функции c.Create и в рассматриваемом примере равно 6. Соединения узлов задаются путем установки несимметричных каналов между конкретными двумя узлами: NodeContainer n («узел №1»)(«узел№2») … (c.Get («номер начального узла»), c.Get («номер конечного узла»)); если для какого-либо из узлов не будет указано соединение, то он просто не будет участвовать в моделировании сети.
Листинг 4.Подключение OLSR, Stack и Ipv4 помощников маршрутизации. Через них можно вызывать различные функции и настройки протокола, более подробно описанные в документации к NS3 [4].
Листинг 5.
Подключение помощника p2p (peer-to-peer, однорагновая сеть) передачи данных. Создание каналов передачи данных между узлами, задача скорости передачи данных p2p.SetDeviceAttribute ... («скорость передачи данных»)); а также задержки передачи данных p2p.SetChannelAttribute ... («задержка»)); далее назначение данной характеристики узлам - nd02 (n02) и nd12 (n12). Далее назначение другой скорости передачи данных и другой задержки для остальных узлов.
Подключение OnOffHelper - помощника, отвечающего непосредственно за передачу данных. Передача данных производится через UDP (англ. User Datagram Protocol - протокол пользовательских датаграмм). Здесь происходит создание приложения для отправки данных. Кроме того, здесь же осуществляется подключение PacketSinkHelper - помощника, помогающего упростить процесс создания сети, используя ApplicationContainer - это приложение для приема данных. Параметр DataRate, представленный в примере выше это скорость передачи данных (onoff.SetConstantRate (DataRate ("448kb/s")); apps.Start (Seconds («время»)) и apps.Stop (Seconds («время»)) – время между началом передачи (Start), и концом передачи данных (Stop). Если время начала – 1.1 секунда, а время остановки - 10 секунд, то время передачи будет составлять 8.9 секунд.
В Листинге 9 представлен процесс симуляции передачи данных между узлами, используя подключенные модули, представленные в Листинге 8.
Листинг 9.Подключение помощника, позволяющего создавать временные файлы, использующихся во время исполнения протокола.
Листинг 10.симулятор NS3 постоянно поддерживается как разработчиками, так и обычными пользователями: создаются программные реализации новых протоколов, совершенствуются существующие. В дальнейшем, на основе выявленных в данной работе особенностей программной реализации протокола маршрутизации OLSR, планируется создание имитационных моделей, предназначенных для тестирования предложенных авторами разработок, в частности, метрики маршрутизации.
Литература4. A Discrete-Event Network Simulator NS3. - Режим доступа: https://www.nsnam.org/ (15.10.2016).
Сведения об авторах Диковицкий Вадим Витальевич – техник, е-mail: vadikovitsky@gmail.com Vadim V. Dikovitsky – technician Датьев Игорь Олегович - к.т.н., научный сотрудник е-mail: datyev@iimm.ru Igor O. Datyev – Ph.D. (Tech. Sci.), researcher