2.Пример моделирования канала с выводом результата на график
Вприведённом ниже примере для мониторинга статистики принятых (потерянных) данных используется агент-приёмник LossMonitor.
Примечание: Данный агент нельзя использовать в качестве приёмника TCP пакетов, т.к. эти пакеты требуют подтверждения, а LossMonitor их просто уничтожает.
Объектами данного агента являются:
количество потерянных пакетов: nlost_;
количество принятых пакетов: npkts_;
количество принятых байт: bytes_;
время поступления последнего принятого пакета: lastPktTime_;
ожидаемый последовательный номер следующего пакета: expected_.
Пример:
#Открыть файлы f0 f1 для записи set f0 [open out0.tr w] set f1 [open out1.tr w]
…
#Процедура записи данных в файлы proc record {} {
#Глобальные переменные global sink0 sink1 f0 f1
#Создать экземпляр объекта симулятора set ns [Simulator instance]
#Время, через которое будет вызываться эта процедура set time 0.2
#Количество принятых байт (bytes_), каждым из
#агентов-приёмников
set bw0 [$sink0 set bytes_] set bw1 [$sink1 set bytes_]
#Текущее время
set now [$ns now]
#Записать в файл текущее время и скорость
#передачи в кбит/с.
puts $f0 "$now [expr $bw0/$time*8/1000]" puts $f1 "$now [expr $bw1/$time*8/1000]"
#Сбросить значение переменной bytes_ приёмника
41
$sink0 set bytes_ 0 $sink1 set bytes_ 0
#Перезапустить процедуру через заданное время $ns at [expr $now+$time] "record"
}
…
#Вместо традиционных агентов-приёмников создать агенты #LossMonitor, которые будут подсчитывать принятые байты
#данных
set sink0 [new Agent/LossMonitor] $ns attach-agent $n0 $sink0
set sink1 [new Agent/LossMonitor] $ns attach-agent $n1 $sink1
…
#Процедура "finish" примет вид proc finish {} {
global ns f0 f1 $ns flush-trace close $f0 close $f1
exec xgraph out0.tr out1.tr -geometry 800x400 –lw 2 & exit 0
}
Результат – динамика производительности канала (Кбит/сек.) представлен на рисунке 24.
Можно исключить строки создания, закрытия и записи в файл .nam для визуализатора, а также запуска визуализатора в процедуре "finish", т.к. в данной лабораторной работе анимация не обязательна. Все остальные строки модели останутся без изменений.
Задание:
Разработать в симуляторе ns2 модель сети в соответствии с вариантом из лабораторной работы №2 для получения графических результатов. Изменить агенты-источники TCP на UDP.
Модель должна содержать приёмники LossMonitor для всех передаваемых данных и выражения для обработки событий.
В результате необходимо построить зависимости заданного по варианту параметра от времени для всех передаваемых в сети потоков. Для каждого по-
42
тока необходимо создать выходной файл, состоящий из двух столбцов – <вре-
мя> и <параметр>.
Рисунок 24 – Вывод графического результата моделирования программой XGraph
Для вывода результатов нужно использовать программу XGraph. Чтобы графики были читабельными, необходимо отредактировать толщину и цвет осей и линий, а также заголовок и подписи осей.
Порядок выполнения:
1.На основе скрипта из лабораторной работы №2 в любом текстовом редакторе (например, Notepad++) создать скрипт на языке Tcl для выполнения задания и сохранить его с расширением .tcl (например, lab3.tcl) в выбранную папку.
2.В скрипт добавить строки для формирования входного файла(ов) программы XGraph (содержание файла скорость передачи каждого потока данных).
3.Запустить эмулятор Linux Cygwin.
4.Запустить в командной строке Linux графический X-сервер командой startx.
5.Указать путь к файлам примеров командой: cd d:/ns2/.
6.Запустить скрипт на выполнение командой: ns lab3.tcl.
7.Построить графики результатов моделирования с помощью XGraph. Зависимости скоростей передачи потоков от времени.
8.Оформить отчёт по лабораторной работе.
43
9. Сдать и защитить работу.
10.Выйти из эмулятора командой exit.
Содержание отчёта:
1.Номер, название и цель лабораторной работы.
2.ФИО и группа студента, выполнившего лабораторную работу.
3.Номер варианта и задание к лабораторной работе.
4.Структура моделируемой сети.
5.Tcl-скрипт в соответствии с заданием.
6.Результаты выполнения лабораторной работы в графическом виде.
7.Полученные трейс-файлы.
8.Описание выполнения лабораторной работы и полученных результатов.
9.Выводы по проделанной работе.
Контрольные вопросы:
1.Перечислите утилиты для обработки результатов моделирования ns2.
2.Охарактеризуйте программу XGraph, её преимущества и недостатки.
3.Как задать размер графической области XGraph?
4.Каков формат входного файла XGraph.
5.Опишите опции программы XGraph.
6.Как использовать агенты-приёмники для получения результатов моделирования?
7.Как записать результаты мониторинга в выходной файл?
Варианты заданий:
Таблица 3 – Исследуемый параметр канала
Параметр |
|
Варианты |
|
||
|
|
|
|
|
|
Средний размер принятого пакета, байт |
1 |
6 |
11 |
16 |
21 |
Производительность, бит/сек. |
2 |
7 |
12 |
17 |
22 |
Производительность, пакет/сек. |
3 |
8 |
13 |
18 |
23 |
Потери, пакет/сек. |
4 |
9 |
14 |
19 |
24 |
Входная нагрузка, Кбит/сек. |
5 |
10 |
15 |
20 |
25 |
44
Лабораторная работа №4
Мониторинг очередей
Цель работы: Изучить метод мониторинга очередей в среде ns2. Научиться использовать средства слежения и производить вывод результатов моделирования в XGraph.
Краткая теория:
Для изучения поведения телекоммуникационной системы полезно отслеживать изменения, происходящие в очередях некоторых звеньев (например, средний размер или текущий размер очереди). Данный процесс называется мо-
ниторингом очередей.
1. Объекты мониторинга и слежения
Мониторинг очереди осуществляется с помощью объектов мониторинга очереди и объектов слежения за очередью (рисунок 25).
Рисунок 25 – Звено с объектами мониторинга очереди
На рисунке 25:
SnoopQ/In – входной объект слежки за очередью;
SnoopQ/Out – выходной объект слежки за очередью;
SnoopQ/Drop – объект слежки за отбрасываемыми пакетами в очереди.
Когда прибывает пакет, объект слежки за очередью извещает диспетчера очереди об этом событии. Диспетчер осуществляет мониторинг очереди на основе полученных данных.
2. Средства мониторинга в ns2
Для добавления объектов мониторинга очереди в tcl-скрипт модели необходимо добавить строку:
set qmon [$ns monitor-queue $n2 $n3 [open qm.out w] 0.01]
45