-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Проект NetAnim позволяет использовать XML файл трассировки событий, созданный во время работы симулятора Ns3, для визуализации этих событий. Однако такой подход имеет существенный недостаток: чтобы поменять какой-то параметр модели, приходится останавливать симуляцию, менять параметр в .cpp файле, запускать симуляцию заново. Для решения этой проблемы предлагается перевести NetAnim в режим онлайн, в котором информация поступает не из XML файла, а сразу во время симуляции. В таком режиме появляется возможность приостановить симуляцию, изменить параметр, возобновить симуляцию.
С помощью сигналов и флагов можно наладить общение между симулятором и NetAnim. В Ns3 есть класс, ответственный за создание XML файла, который "слушает" симулятор и генерирует небольшие события, записывая их в файл. Идея заключается в том, чтобы не записывать эти события, а сразу перенаправлять их в NetAnim, который запускается в начале симуляции.
В модуле ns3 Animation Interface
появились функции, которые вместо записи в файл создают объект класса ParsedElement
, для которого уже написаны функции в AnimXmlParser
из NetAnim. Перегружена функция doParse
в AnimXmlParser
, которая работает с новыми функциями.
Симуляция теперь проходит поочередно с визуализацией. Таймер m_updateRateTimer
посылает сигналы в qt слот updateRateTimeoutSlot
из AnimatorMode
за равные промежутки времени, в слоте появился вызов ns3::Simulator::Run
(), уведомленный о том, что находится в online режиме. Далее, после того, как симулятор совершит один проход, он передаст события в Animation Interface
. В слоте также вызывается метод dispatchEvents ()
, который обрабатывает события дальше.
Для сборки проекта необходимо зайти в папку проекта и прописать команды cd netanim
, qmake NetAnimOnline.pro
, cd ..
, cd ns-3-dev
, ./waf
. Для того, чтобы работал online режим в сценариях нужно подключать заголовочный файл #include "ns3/netanim-module.h"
и создавать в самом конце, до Simulator::Run ()
экземпляр класса AnimationInterface
конструктором по умолчанию.
Тестовые примеры находятся в папке ../ns-3-dev/scratch/
. К примеру, grid-animation.cc
. Чтобы его запустить можно написать ./waf --run grid-animation
из папки ns-3-dev
. Откроется окно NetAnim, в котором после нажатия кнопки play начнется анимация.