Особенности программной реализации протокола маршрутизации olsr в сетевом симуляторе ns-3

УДК 004.057

В.В. Диковицкий, И.О. Датьев

Институт информатики и математического моделирования технологических процессов Кольского НЦ РАН

ОСОБЕННОСТИ ПРОГРАММНОЙ РЕАЛИЗАЦИИ ПРОТОКОЛА МАРШРУТИЗАЦИИ OLSR В СЕТЕВОМ СИМУЛЯТОРЕ NS-3

Аннотация

Многошаговые беспроводные сети являются перспективным направлением информационно-коммуникационных сетей. Основной проблемой исследования характеристик, предлагаемых в этой области решений является дороговизна натурных экспериментов. Поэтому основным средством тестирования разработанных протоколов передачи данных и оборудования является имитационное моделирование. В статье приведены особенности программной реализации протокола маршрутизации OLSR в широко используемом в научных исследованиях сетевом симуляторе NS-3.

Ключевые слова:

многошаговые беспроводные сети, MANET, NS-3, протокол OLSR.

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.

Keywords:

multihop wireless networks, MANET, NS-3, OLSR routing protocol. Введение

Сети 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

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 в сетевом симуляторе №3

Рассмотрим код протокола OLSR. В рассматриваемом нами файле 8тр1е-point-to-point-o1sr.cc так же имеются краткие пояснения к исходному коду.

LogComponentEnable отвечает за вывод процесса исполнения протокола в консоль.

Листинг 1.

#if 0

LogComponentEnaЫe ("SiпIpleGlobalRoutingExample", LOG_LEVEL_INFO),• #endif

Настройка размера передаваемого пакета (Раске^ге) и скорости передачи данных (DataRate) представлена в Листинге 2. Данные параметры оказывают существенное влияние на производительность сети в целом, поэтому, как правило, используются при моделировании в качестве входных.

Листинг 2.

Config::SetDefault ("ns3::OnOffApplication::PacketSize", ^^едегУа1ие (210));

Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448кЬ^"));

Возможность ввода различных функций в терминале (--run «название протокола» --«функция»), здесь таковыми функциями являются argc и argv. (Более подробно функции рассмотрены в официальной документации [4]). Листинг 3.

CommandLine cmd; cmd.Parse (argc, argv);

Листинг 4 демонстрирует подключение NodeContainer: функции, с помощью которой создаются и связываются друг с другом узлы. Количество узлов задано в качестве параметра функции c.Create и в рассматриваемом примере равно 6. Соединения узлов задаются путем установки несимметричных каналов между конкретными двумя узлами: NodeContainer n («узел №»1»)(«узел№»2») ... (c.Get («номер начального узла»), c.Get («номер конечного узла»)); если для какого-либо из узлов не будет указано соединение, то он просто не будет участвовать в моделировании сети.

Листинг 4.

NodeContainer c;

c.Create (6);

NodeContainer n02 = NodeContainer

NodeContainer n12 = NodeContainer

NodeContainer n32 = NodeContainer

NodeContainer n34 = NodeContainer

NodeContainer n54 = NodeContainer

Подключение OLSR, Stack и Ipv4 помощников маршрутизации. Через них можно вызывать различные функции и настройки протокола, более подробно описанные в документации к NS3 [4].

Листинг 5.

OlsrHelper olsr;

Ipv4 StaticRoutingHelper staticRouting; Ipv4ListRoutingHelper list; list.Add (staticRouting, 0); list.Add (olsr, 10); InternetStackHelper internet; internet.SetRoutingHelper (list); internet.SetRoutingHelper (list); internet.Install (c);

Подключение помощника p2p (peer-to-peer, однорагновая сеть) передачи данных. Создание каналов передачи данных между узлами, задача скорости передачи данных p2p.SetDeviceAttribute ... («скорость передачи данных»)); а также задержки передачи данных p2p.SetChannelAttribute ... («задержка»));

далее назначение данной характеристики узлам - nd02 (n02) и nd12 (n12). Далее назначение другой скорости передачи данных и другой задержки для остальных узлов. Листинг 6.

PointToPointHelper p2p;

p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

p2p.SetChannelAttribute ("Delay", StringValue ("2ms")); NetDeviceContainer nd02 = p2p.Install (n02); NetDeviceContainer nd12 = p2p.Install (n12);

p2p.SetDeviceAttribute ("DataRate", StringValue ("1500kbps")); p2p.SetChannelAttribute ("Delay", StringValue ("10ms")); NetDeviceContainer nd32 = p2p.Install (n32); NetDeviceContainer nd34 = p2p.Install (n34); NetDeviceContainer nd54 = p2p.Install (n54);

Подключение Ipv4 адресного помощника, при помощи которого мы назначаем нашим узлам ip-адреса

Листинг 7.

Ipv4AddressHelper ipv4;

ipv4.SetBase ("10.1.1.0", " 255.255.255.0" );

Ipv4InterfaceContainer i02 = ipv4.Assign (nd02);

ipv4.SetBase ("10.1.2.0", " 255.255.255.0" );

Ipv4InterfaceContainer i12 = ipv4.Assign (nd12);

ipv4.SetBase ("10.1.3.0", " 255.255.255.0" );

Ipv4InterfaceContainer i32 = ipv4.Assign (nd32);

ipv4.SetBase ("10.1.4.0", " 255.255.255.0" );

Ipv4InterfaceContainer i34 = ipv4.Assign (nd34);

ipv4.SetBase ("10.1.5.0", " 255.255.255.0" );

Ipv4InterfaceContainer i54 = ipv4.Assign (nd54);

Подключение 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 секунд.

Листинг 8.

uint16 t port = 9;

OnOffHelper onoff ("ns3::UdpSocketFactory",

InetSocketAddress (i34.GetAddress (1), port));

onoff.SetConstantRate (DataRate ("448kb/s"));

ApplicationContainer apps = onoff.Install (c.Get (0)) ;

apps.Start (Seconds (1.0));

apps.Stop (Seconds (10.0));

PacketSinkHelper sink ("ns3::UdpSocketFactory",

InetSocketAddress (Ipv4Address ::GetAny (),

port));

apps = sink.Install (c.Get (3));

apps.Start (Seconds (1.0));

apps.Stop (Seconds (10.0));

В Листинге 9 представлен процесс симуляции передачи данных между узлами, используя подключенные модули, представленные в Листинге 8. Листинг 9.

onoff.SetAttribute ("Remote",

AddressValue (InetSocketAddress (i12.GetAddress

(0), port)));

apps = onoff.Install (c.Get (3)); apps.Start (Seconds (1.1)); apps.Stop (Seconds (10.0)); apps = sink.Install (c.Get (1)); apps.Start (Seconds (1.1)); apps.Stop (Seconds (10.0));

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

Листинг 10.

AsciiTraceHelper ascii;

p2p.EnableAsciiAll (ascii.CreateFileStream ("simple-point-to-point-olsr.tr"));

p2p.EnablePcapAll ("simple-point-to-point-olsr");

Старт протокола.

Листинг 10.

Simulator::Run (); Simulator::Destroy ();

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

Для реализации динамической топологии сети необходимо изменить структуру связи узлов — реализовать функции поиска других узлов передачи данных, если предыдущий оказался недоступен. Кроме того, необходимо создание различного рода сценариев: отключение одного из узлов, подключение новых узлов, т.к. в текущей реализации протокола топология является статичной.

Заключение

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

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

Литература

1. Павлов, А.А., Датьев, И.О. Протоколы маршрутизации в беспроводных сетях / Павлов А.А, Датьев И.О. // Труды Кольского научного центра. Информационные технологии. -Вып. 5. -5/2014(24). -Апатиты: Изд-во КНЦ РАН, 2014. -С.64-75.

2. Optimized Link State Routing Protocol for Ad Hoc Networks // T. Clausen и др. // Project Hipercom, INRIA, BP 105, 78153 Le Chesnay Cedex, France.

- Режим доступа: http://web.stanford.edu/class/cs344e/papers/olsr.pdf

3. OLSR. Материал из Википедии - свободной энциклопедии.

- Режим доступа: https://ru.wikipedia.org/wiki/OLSR (11.04.2016).

4. A Discrete-Event Network Simulator NS3.

- Режим доступа: https://www.nsnam.org/ (15.10.2016).

5. Сафонов, А.С, Хоров, Е.М, Красилов, А.Н. Анализ эффективности протоколов OLSR в канале 5МГц / Сафонов А.С, Хоров Е.М., Красилов А.Н.

- Режим доступа: http://itas2010.iitp.ru/pdf/1569319241.pdf

6. Марандин, Д.А. Открытые проблемы по беспроводным сенсорным технологиям / Марандин Д.А. // Электросвязь. - №1, 2009. -C.1-2.

7. Optimized Link State Routing Protocol, RFC 3626. October 2003.

- Режим доступа: https : //www. ietf.org/rfc/rfc3626.txt (15.10.2016).

8. Павлов, А.А., Датьев, И.О., Шишаев, М.Г. Моделирование беспроводных многошаговых самоорганизующихся мобильных сетей / Павлов А.А., Датьев И.О., Шишаев М.Г. // Труды Кольского научного центра. Информационные технологии. -Вып. 6. -3/2015(29). -Апатиты: Изд-во КнЦ РАН, 2015. -С.137-150.

Сведения об авторах Диковицкий Вадим Витальевич - техник, е-mail: vadikovitsky@gmail.com Vadim V. Dikovitsky - technician

Датьев Игорь Олегович - к.т.н., научный сотрудник е-mail: datyev@iimm.ru

Igor O. Datyev - Ph.D. (Tech. Sci.), researcher