Создадим генератор трафика CBR, подключим его к агенту UDP и зададим параметры:
#Задать передачу cbr-трафика через udp-соединение set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp $cbr set type_ CBR
$cbr set packet_size_ 1000 $cbr set rate_ 1mb
$cbr set random_ false
Зададим at-события, управляющие ходом моделирования:пуск и остановка генераторов трафика:
#Записать в планировщик события для CBR и FTP
#агентов
$ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" $ns at 4.5 "$cbr stop"
отключение агентов TCP TCPSink от соответствующих узлов (приводим для примера; в данном случае в этом нет необходимости, т.к. моделирование на этом заканчивается):
$ns at 4.5 "$ns detach-agent $n0 $tcp; $ns detach-agent $n3 $sink"
вызов определенной ранее процедуры "finish" после 5 секунд модельного времени:
#Вызов процедуры finish через 5 секунд симуляции
$ns at 5.0 "finish"
Запустим моделирование:
$ns run
Сохраняем созданный скрипт в выбранную папку под именем tcpnet.tcl и далее запускаем его на выполнение командой:
ns tcpnet.tcl
в режиме x-сервера (рисунок 19).
Результат выполнения приведённого выше tcl-скрипта в виде визуализации network animator приведён на рисунке 20.
26
Рисунок 19 – Запуск tcl-скрипта на выполнение
На рисунке видна очередь пакетов из двух разных потоков (fid_ 1 и fid_ 2) и потери в результате переполнения очереди коммутатора в узле n2.
Рисунок 20 Пример визуализации моделирования TCP сети
3. Обработка результатов моделирования
Обработка результатов моделирования является целью самого моделирования. Результаты моделирования заключены в трейс-файлах различного типа.
27
Трейс-файл представляет собой текст в формате ASCII, в котором зарегистрированы необходимые события моделирования.
Для того чтобы трейс-файл был создан, в скрипт необходимо добавить следующие строки:
set f [open out.tr w]
$ns trace-all $f
Они добавляют объекты трассировки во все звенья сети. Имя трейс-файла может быть произвольным, расширение рекомендуется использовать .tr, т.к. некоторые программы обработки результатов, написанные для платформы Windows, могут считывать файлы только с таким расширением.
3.1.Формат файла трассировки
Одна строка файла трассировки содержит следующие поля (рисунок 21):
Рисунок 21 – Формат строки трейс-файла Поле «Событие» может содержать:
r – принятие пакета узлом;
+ – постановка пакета в очередь; -– снятие с очереди;
d – отбрасывание пакета из очереди.
Поле «Время» показывает модельное время события в секундах.
Поле «От узла» означает последний узел, который обрабатывал данный пакет.
Поле «К узлу» показывает, к какому узлу этот пакет направлен.
Поле «Тип пакета» указывает на то, к какому приложению или агенту относится данный пакет. Если транспортным агентом является UDP, то указывается приложение, если TCP, то указывается "tcp" – пакет или "ack" – подтверждение.
Поле «Размер пакета» содержит размер пакета сетевого уровня с учётом IP заголовка.
Поле «Флаги» содержит шесть флагов. Четыре из них используются для явного извещения о перегрузке. Первые два заполняют биты 6 и 7 в поле ToS заголовка IP, а следующие два в заголовке TCP.
Остальные два флага обозначают приоритет и быстрый старт TCP соответственно.
Поле «Идентификатор потока» совпадает с полем fid (flow ID) в заголовке
IPv6.
Поля «Адрес источника» и «Адрес приёмника» имеют формат узел.порт (например, 1.0).
28
Поле «Порядковый номер» показывает номер пакета на транспортном уровне.
Поле «Идентификатор пакета» говорит само за себя. Ниже приведён отрывок из трейс-файла:
+0.007102 2 1 rtProtoDV 4 ------- 0 2.4 1.1 -1 2 - 0.007102 2 1 rtProtoDV 4 ------- 0 2.4 1.1 -1 2
+0.007102 2 3 rtProtoDV 4 ------- 0 2.4 3.2 -1 3 - 0.007102 2 3 rtProtoDV 4 ------- 0 2.4 3.2 -1 3 r 0.020171 0 1 rtProtoDV 4 ------- 0 0.3 1.1 -1 0
+0.020171 1 0 rtProtoDV 4 ------- 0 1.1 0.3 -1 4 - 0.020171 1 0 rtProtoDV 4 ------- 0 1.1 0.3 -1 4
+0.020171 1 2 rtProtoDV 4 ------- 0 1.1 2.4 -1 5 - 0.020171 1 2 rtProtoDV 4 ------- 0 1.1 2.4 -1 5 r 0.020186 0 3 rtProtoDV 4 ------- 0 0.3 3.2 -1 1
Файл трассировки с расширением .nam предназначен для визуализатора Nam и имеет другой формат, нежели описанный выше. Этот трейс-файл не предназначен для последующей обработки.
Отрывок из трейс-файла для визуального отображения:
V -t * -v 1.0a5 -a 0 |
|
|
|
||
A -t * -n 1 -p 0 -o |
0xffffffff -c 31 -a 1 |
|
|||
A -t * -h 1 -m 2147483647 |
-s 0 |
|
|||
c -t * -i 0 -n blue |
|
|
|
||
c -t * -i 1 -n red |
|
|
|
||
c -t * -i 2 -n brown |
|
|
|
||
c -t * -i 3 -n green |
|
|
|
||
n -t * -a 0 -s 0 -S |
UP -v |
circle -c black -i black |
|||
n -t * -a 1 -s 1 -S |
UP -v |
circle -c black -i black |
|||
n -t * -a 2 -s 2 -S |
UP -v |
circle -c black -i black |
|||
n -t * -a 3 |
-s 3 |
-S |
UP -v |
circle -c black -i black |
|
l -t * -s 0 |
-d 1 |
-S |
UP -r |
20000000 -D 0.02 -c black -o right |
|
l -t * -s 1 |
-d 2 |
-S |
UP -r |
2000000 -D 0.02 |
-c black -o down |
l -t * -s 3 |
-d 0 |
-S |
UP -r |
2000000 -D 0.02 |
-c black -o up |
l-t * -s 2 -d 3 -S UP -r 2000000 -D 0.02 -c black -o left
Существуют и другие форматы трейс-файлов [3, 4].
29
3.2.Средства обработки файлов трассировки
Файлы трассировки содержат результаты моделирования, для их анализа необходимо извлечь нужные данные и произвести над ними некоторые действия.
Для этого разработаны пакеты, описанные ниже.
3.2.1.Утилиты для вычислительных операций над данными
AWK – утилита для простых вычислительных манипуляций над данными. AWK входит в состав многих программ Unix-like для Windows, в том числе и Cygwin. Название утилиты составлено из первых букв фамилий её разработчиков (Aho-Weinberger-Kernighan).
Grep – утилита, работающая в режиме командной строки Unix. С помощью grep можно создать новый файл, который состоит только из тех строк исходного файла, которые включают в себя заданные последовательности знаков. Например, пользователю нужна только информация о TCP-пакетах, которые передаются от 1-го узла ко 2-му.
grep " 1 2 tcp " out1.tr > out2.tr
3.2.2.Программы для построения графических зависимостей
Существует большое количество программ для построения графиков, некоторые из них являются специализированными для ns2. Рассмотрим наиболее популярные из них.
Gnuplot – бесплатное программное обеспечение как для Unix, так и для Windows. Для построения графика с помощью Gnuplot в наиболее простом варианте необходимо использовать команду plot ‘datafile’, где файл datafile имеет две колонки, первая содержит координаты точек по оси абсцисс, вторая – по оси ординат.
XGraph является частью пакета ns2 «все-в-одном», но может быть установлен и отдельно. XGraph может быть вызван внутри скрипта tcl, результатом чего будет являться вывод графика на экран сразу же после завершения моделирования. В качестве входных данных программа использует один или более ASCII-файлов, каждый из которых содержит набор строк, состоящих из пары координат x-y.
Например, xgraph file1 file2 выведет на одной координатной плоскости графики файлов file1 и file2. Более подробное описание см. в теории к лабораторной работе №3.
Программа TraceGraph была специально разработана для ns2. В качестве входных данных она использует трейс-файлы ns2. TraceGraph работает как на платформе Unix/Linux, так и Windows при условии, что установлена программа Matlab или её библиотеки. Возможности TraceGraph:
построения 238 различных двумерных зависимостей;
построения 12 различных трёхмерных зависимостей;
30