Пояснительная записка(21.06) новая (1214932), страница 10
Текст из файла (страница 10)
Наиболее важным параметром симуляции является модель распространения сигнала. Для нормальных условий выбрана модель «Two-Ray Ground», которую согласно [ CITATION Hos \l 1049 ], следует использовать при передаче на дальние дистанции, а учитывая мощность сигнала, дальность передачи в данном случае достигает 1 км, что является достаточно дальней дистанцией. Для моделирования неблагоприятных условий используется модель канала с сильной дисперсией (fast-fading channel). Канал с сильной дисперсией характеризуется сильными флуктуациями мощности сигнала при небольших приращениях дистанции [ CITATION Siv \l 1033 ], что наглядно продемонстрировано на рисунке 22.
Рисунок 22 – Модель канала с сильной дисперсией
Такая модель хорошо подойдёт для описания неблагоприятных условий для передачи сообщений с низкой мощностью сигнала. Согласно [ CITATION Str \l 1049 ] полу-реалистичная модель канала позволяет обеспечить использование модели распространения сигнала «Three Log Distance» с «Nakagami Fading» [ CITATION Pat16 \l 1049 ].
Далее следует определить используемую в симуляции модель коллизий. Для проведения всех симуляций используется модель коллизий «Yans Error Rate Model», которая является хорошей аналитической моделью для определения коллизий.
Для передачи данных используются UDP пакеты, которые обладают сравнительно большей скоростью доставки по сравнению с TCP за счёт отсутствия необходимости проверки получения пакета, и обладающий меньшим заголовком что позволяет снизить нагрузку на сеть.
Симуляции проводятся для размеров пакетов 64/128/256/ 512/1024 байт, а скорость движения машин установлена в 0/13,89/27,78/ 56,56 м/с, при этом для городского сценария эта скорость отражает максимальную скорость движения которую может развить автомобиль.
Для задания приемлемой нагрузки на сети частота отправки пакетов установлена в 0,25 с, количество приёмников в сети равно 10, а количество узлов, пытающихся при наличии возможности установить соединение с каждым приёмником равно 49, таким образом максимально возможное количество прямых соединений в сети равняется 490, а может достигать и больших пределов за счёт маршрутизации пакетов и установки для этого дополнительных соединений.
Таким образом, параметры симуляции, не зависящие от используемой карты представлены в таблице 4.
Таблица 4 – Общие параметры симуляции для сценария магистрали
| Параметр | Значение |
| Тип узлов | Машины |
| Тип беспроводного соединения | 802.11p |
| Тип модуляции сигнала | OfdmRate6Mbps |
| Ширина канала | BW10MHz |
| Мощность при отправке пакетов | 22,5/7,5 ДБм |
| Модель распространения сигнала | Two-Ray Ground, Three Log Distance+, |
| Модель коллизий | Yans Error Rate Model |
| Скорость узлов | 0/13,89/27,78/56,56 м/с |
| Тип пакетов | UDP |
| Размер пакетов | 64/128/256/512/1024 байт |
| Частота отправки пакетов с одного узла | 0,25 с |
| Количество приёмников | 10 |
| Максимальное количество соединений с каждым приёмником | 49 |
Теперь, когда параметры симуляции полностью определены, можно перейти к настройке параметров в сценарии.
2.2.4.2 Установка параметров симуляции
Выполняется добавление модели коллизий. Для этого достаточно из объекта, отвечающего за беспроводной канал связи, вызвать метод «setErrorRateModel()» с указанием в качестве аргумента название используемой модели коллизий. В данном случае, «YansErrorRateModel».
Затем требуется выполнить задание модели распространения сигнала. По умолчанию предлагается выбор из четырёх моделей:
– Two-Ray Ground;
– Friis;
– Log Distance;
– ItuR1411.
Для установки модели используется метод «addPropagationLossModel()» принадлежащий к классу канала связи, а в качестве аргумента метод принимает название модели. Модели, добавленные к каналу с использованием этого метода, обладают свойством коммутативности, то есть новая модель накладывается на уже существующие, и эффекты моделей применяются в порядке их добавления. Таким образом при моделировании агрессивной среды, сначала осуществляется добавление модели «Three Log Distance», после чего сверху накладывается модель «Nakagami Fading». Для нормальных параметров достаточно указать одну модель «Two-Ray Ground».
Для возможности сбора статистики транспортного уровня модели OSI, нужно дополнить код для запуска симуляции:
Simulator::Stop (Seconds(stop_time));
Simulator::Run ();
Следующим образом:
Ptr<FlowMonitor> flowMonitor;
FlowMonitorHelper flowHelper;
flowMonitor = flowHelper.InstallAll();
Simulator::Stop (Seconds(stop_time));
Simulator::Run ();
flowMonitor->SerializeToXmlFile("NameOfFile.xml", true, true);
При наличии вышеописанного кода в сценарии после завершения симуляции будет создан, файл с именем «NameOfFile.xml», который будет содержать в себе информацию о пакетах проходящих через IP уровень.
Для регулирования количества соединений в сети, сценарий имеет параметр «sinks», отвечающий за количество приёмников. Однако приёмники, созданные в необходимом количестве будут иметь лишь один узел отправитель, таким образом для значения параметра «sinks» равного 10 в сети будет 10 соединений между приёмником и отправителем.
Код отвечающий за задание узлов-получателей выглядит следующим образом:
for (uint32_t i = 0; i < m_nSinks; i++){
Ptr<Socket> sink = SetupRoutingPacketReceive (adhocTxInterfaces.GetAddress (i), c.Get (i));
AddressValue remoteAddress (InetSocketAddress (adhocTxInterfaces.GetAddress (i), m_port));
onoff1.SetAttribute ("Remote", remoteAddress);
ApplicationContainer temp = onoff1.Install (c.Get (i + m_nSinks));
temp.Start (Seconds (var->GetValue (1.0,2.0)));
temp.Stop (Seconds (m_TotalSimTime));
}
где i – индекс узла-получателя, m_nSinks – общее количество узлов-получателей.
За назначение к приёмнику определённого отправителя отвечают последние три строки кода. Согласно выбранным параметрам количество соединений с каждым узлом-приёмником должно равняться 49. Для того чтобы каждому приёмнику в качестве отправителя назначалось 49 узлов, нужно поместить код отвечающий за назначение отправителя в цикл с параметром, изменяющимся от нуля до 50, и дополнить его условием, что отправитель не назначается если индекс получателя будут совпадать с индексом отправителя. После изменения код будет выглядеть следующим образом:
for (uint32_t i = 0; i < m_nSinks; i++){
Ptr<Socket> sink = SetupRoutingPacketReceive (adhocTxInterfaces.GetAddress (i), c.Get (i));
AddressValue remoteAddress (InetSocketAddress (adhocTxInterfaces.GetAddress (i), m_port));
onoff1.SetAttribute ("Remote", remoteAddress);
for(uint32_t j=0; j < 50; j++){ if(i!=j){
ApplicationContainer temp = onoff1.Install (c.Get (j));
temp.Start (Seconds (var->GetValue (1.0,2.0)));
temp.Stop (Seconds (m_TotalSimTime));} } }
Далее осуществляется настройка параметров симуляции, связанных с картой. Всего в сценарии имеются две схемы для симуляции:
– случайное движение машин в заданной области с настраиваемыми параметрами движения;
– движение машин задаётся из файла движения, все параметры движения определяются файлом и не могут быть изменены средствами NS3.
Учитывая, что запуск будет производиться с использованием созданных файлов движения машин, менять параметры следует во второй схеме и в дальнейшем будет осуществляться запуск именно этой схемы. Количество узлов устанавливается равным 50 или 100 в зависимости от того какую симуляцию планируется проводить, также меняется файла движения, на сгенерированный ранее, соответствующий текущей симуляции файл. Время симуляции также устанавливается из того какая симуляция проводится, для города значение устанавливается в 150 с, а для магистрали в 180 с.
Затем выполняется добавление в код протоколов, выбранных для анализа. Для этого достаточно в часть кода, в которой реализуется выбор протоколов добавить помощники новых протоколов, которые обеспечат возможность дальнейшей работы с ними, после этого добавить новые ответвления условий для протоколов и в этих ответвлениях осуществить добавление новых протоколов в класс помощник, отвечающий за маршрутизацию в соответствии с добавленными в него протоколами, а также в переменную отвечающую за имя протокола добавить название устанавливаемого протокола. Протоколы выбираются, как параметры при запуске сценария, и для новых протоколов установлены следующие индексы: GPSR – 5, CLWPR – 6. Стоит отметить что у двух других протоколов для сравнения OLSR и DSDV индексы равны 1 и 3 соответственно.
Теперь нужно установить желаемый размер пакета и частоту отправки пакетов. Для этого в методе конфигурирования параметров передачи пакетов, в строке, устанавливающей размер пакетов в байтах:
Config::SetDefault ("ns3::OnOffApplication::PacketSize",”64”);
задать вместо 64, требуемый размер пакета. В целом удобнее заменить значение параметром, который будет устанавливаться при запуске симуляции. Код иллюстрирующий такую замену приведён ниже:
Config::SetDefault ("ns3::OnOffApplication::PacketSize", StringValue (m_packet));
где m_packet – параметр, определяющий размер пакета, и задающийся при старте симуляции. В этом же методе есть строка, устанавливающая скорость отправки данных в битах.
Config::SetDefault ("ns3::OnOffApplication::DataRate", "2048");
В строке сейчас установлено значение частоты равное 2048 бит в секунду. Для симуляций необходимо установить интервал отправки пакетов равным 0,25 секунды. Для такого интервала найти нужную частоту можно из соотношения
, где
– размер пакета установленный в текущей симуляции,
– скорость с которой будут передаваться данные в битах. Очевидно, что частота отправки будет зависеть от размера пакета, поэтому её следует задать при помощи параметра, как и пакет, а саму частоту вычислить для каждого размера пакета и указывать для обеспечения отправки 1 пакета каждые 0,25 секунд.
Также стоит заметить, что в сценарии по умолчанию присутствует два типа трафика: маршрутизируемые пакеты и широковещательные сообщения безопасности (BSM).
При этом частота отправки BSM установлена в 0,1 с и отправляются такие сообщения всеми узлами сети. Таким образом, если совместить частую отправку BSM с частой отправкой маршрутизируемых пакетов, сеть будет переполнена, и большая часть трафика будет теряться, что помешает сравнительному анализу. В связи с этим в каждой симуляции также будет задаваться интервал между отправкой BSM равный 1000 с, для обеспечения сравнения протоколов при работе в обычных условиях. Все остальные параметры (тип беспроводного соединения, вид модуляции сигнала и т.п.), по умолчанию установлены, либо задаются при помощи параметров сценария при запуске, как например мощность передачи. Таким образом на этом можно считать настройку симулятора завершённой и остаётся описать процесс запуска симуляций.
Команда для запуска симуляции уже рассматривалась ранее, однако её следует изменить для соответствия проводимым симуляциям. Во-первых, в команду добавится набор параметров:
– packetSize (размер пакета в байтах);
– rate (скорость отправки данных в битах);















