Для начала работы потребуется создать 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