Для начала работы потребуется создать tcl скрипт. Tcl – это простой язык обработки текстовой информации, предназначенный для создания команд для интерактивных программ типа текстовых редакторов, отладчиков и оболочек. Создать tcl файл можно в любом текстовом редакторе.
В случае моделирования в ns2 скрипт строится вокруг шаблона, включающего в себя следующие строки:
set ns [new Simulator]
set nf [open out.nam w]
$ns namtrace-all $nf
set f [open out.tr w]
$ns trace-all $f
proc finish {} {
global ns f nf #описание глобальных переменных
$ns flush-trace #прекращение трассировки
close $f #закрытие файлов трассировки
close $nf
exec nam out.nam & #запуск nam в фоновом режиме
exit 0
}
$ns at 5.0 "finish"
$ns run
В начале создается новый объект симуляции путем установки команде ns параметра в виде команды new Simulator. В tcl команда, стоящая в квадратных скобках, выполняется до исполнения команды, аргументом которой она является.
Далее аналогично создаются два файла трассировки out.nam и out.tr. В файлы трассировки записывается информация, необходимая для статистической обработки результатов моделирования. В out.nam записываются данные трассировки для визуализатора nam. W означает, что файл открыт для записи. Команда $ns namtrace-all $nf определяет тип файла трассировки (nam) и данные для записи (all – записываются все события в сети). Знак $ используется для подстановки значений ранее использованных переменных.
Для обработки и анализа результатов моделирования используется стандартный файл трассировки out.tr. Строка файла трассировки состоит из следующих полей:
Событие |
Время |
От узла |
К узлу |
Тип пакета |
Размер пакета |
Флаг |
Идентификатор пакета |
Адрес источника |
Адрес получателя |
Порядковый номер |
Идентификатор пакета |
Процедура finish закрывает файл трассировки и запускает визуализатор nam.
Затем частной функцией at time объекта Simulator устанавливается время симуляции и начинается моделирование с помощью команды run.
Если попробовать вызвать полученный файл, то откроется визуализатор nam и больше ничего не произойдет. Результаты выполнения показаны на рисунке 1.
Рис. 1
Необходимо добавить элементы сети.
Рассмотрим простейший вариант соединения между двумя узлами по дуплексному каналу. Для этого после процедуры finish нужно вставить следующие строки:
set n0 [$ns node]
set n1 [$ns node]
$ns duplex-link $n0 $n1 2Mb 10ms DropTail
#создание агента UDP и присоединение его к узлу n0
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
# создание источника трафика CBR (constant bit rate) и присоединение его к агенту udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
set null0 [new Agent/Null]
$ns attach-agent $n1 $null0
$ns connect $udp0 $null0
$ns at 0.5 "$cbr0 start"
$ns at 4.5 "$cbr0 stop"
В ns2 все сетевые объекты входят в состав суперкласса NsObject, который делится на 2 подкласса: соединители и классификаторы. К соединителям относятся агенты, объекты трассировки, очередь, объекты слежения за очередями, задержка. Каждый сетевой объект обладает своим набором параметров, которые можно изменять в модели. В противном случае они остаются заданными по умолчанию.
В первых двух строках создаются 2 узла. Узел – это сложный сетевой объект, состоящий из объекта входа и классификаторов. Далее при помощи функции duplex-link создаются 2 симплексных звена в двух направлениях. Полностью эта строчка означает, что между узлами n1 и n0 устанавливается дуплексное звено с полосой пропускания 2 Мбит/с, задержкой 10 мс и очередью обслуживания DropTail.
Затем создается агент Udp, который присоединяется к узлу n0. Поскольку агент не может генерировать трафик, к нему присоединяется приложение CBR (источник с постоянной скоростью), который каждые 5 мс отправляет пакет длиной 500 байт. Далее аналогично создается агент приемника, так как его функция заключается только в приеме информации, он называется Null. После этого агенты соединяются.
В двух последних строчках указывается время начала и окончания работы источника.
Полная версия модели показана на рис.2.
Рис. 2
После запуска файла командой ns создаются 2 файла трассировки и запускается визуализатор nam для наглядного представления результатов моделирования. Результаты моделирования показаны на рисунках 3-5.
Рис.3. Наглядное представление результатов в визуализаторе nam
Рис.4. Содержимое стандартного файла трассировки out.tr
Рис.5. Содержимое файла трассировки out.nam
Для отладки программ используют дебаггер (отладчик), например, gdb (gnu debugger).
Информацию о созданных в симуляции объектах, например, узлах, линках, агентах, можно получить и в рамках интерпретатора Tcl. Эта информация выводится на консоль с помощью метода симулятора gen-map. Для получения информации об объектах, созданных в предыдущем скрипте до запуска симуляции, вызов метода gen-map можно вставить предпоследней строкой.
Источники:
1. Галкин А.М., Кучерявый Е.А., Молчанов Д.А. Методические указания ns2
2. isi.edu/nsnam/nstutorial/nsscript1.html
3. http://ccfit.nsu.ru/~tregub/des/notes1.htm