521_Kokoreva,_e._V._Modelirovanie_v_srede_network_
.pdf2.Пример моделирования канала с выводом результата на график
Вприведённом ниже примере для мониторинга статистики принятых (потерянных) данных используется агент-приёмник 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
Объект monitor-queue имеет четыре параметра: первые два определяют звено, за которым производится слежение (узел - узел), третий параметр указывает файл, куда будет производиться запись, последний показывает, как часто снимаются показания. В приведённом примере снимаются показания на линии между узлами n2 и n3 и записываются в файл qm.out через каждые 0.01
сек.
Выходной файл содержит 11 столбцов:
1.Время;
2.Входной и выходной узлы, задающие очередь (2-3-й столбцы);
4.Размер очереди в байтах (атрибут size_ объекта monitor-queue);
5.Размер очереди в пакетах (атрибут pkts_);
6.Количество пришедших пакетов (атрибут parrivals_);
7.Количество ушедших из звена пакетов (атрибут pdepartures_);
8.Количество пакетов, выброшенных из очереди (атрибут pdrops_);
9.Количество пришедших байтов (атрибут barrivals_);
10.Количество ушедших из звена байтов (атрибут bdepartures_); 11.Количество байтов, выброшенных из очереди (атрибут bdrops_).
Объекты мониторинга могут использоваться одновременно с объектами трассировки.
3. Пример мониторинга очереди и вывода результатов
На основе примера из раздела 2.4 выполним мониторинг очереди звена n2-n3.
С целью обработки результатов мониторинга откроем три файла для записи объектов выходного файла (параметры 6-8 из раздела 2).
set f1 [open qmout1.tr w]
set f2 [open qmout2.tr w]
set f3 [open qmout3.tr w]
Опишем процедуру для записи нужной информации в выходные файлы:
proc sample { } {
global ns qmon f1 f2 f3
#текущее время
set t [$ns now]
Определим переменные для записи объектов:
#количество поступивших пакетов set arrq [$qmon set parrivals_]
#количество вышедших пакетов
set depq [$qmon set pdepartures_]
46
#количество выброшенных пакетов
set lossq [$qmon set pdrops_]
Запишем данные в соответствующие файлы (время в сек. и соответствующий параметр):
puts $f1 "$t $arrq" puts $f2 "$t $depq" puts $f3 "$t $lossq"
#запуск процедуры через 0.01 сек. $ns at [expr $t + 0.01] "sample"
}
Для запуска процедуры "sample" зададим планировщику at-событие: $ns at 0 "sample"
Чтобы вывести полученные результаты на график используем команду, которая помещается в процедуру "finish":
exec xgraph qmout1.tr qmout2.tr qmout3.tr -geometry 800x400 -lw 3 -t "Queue Monitoring" &
Результат моделирования представлен на рисунке 26.
Рисунок 26 – Результат мониторинга очереди
Задание:
Разработать в симуляторе ns2 модель TCP сети в соответствии с вариантом из лабораторной работы №2 для мониторинга очередей (агенты-источники соответствуют варианту лабораторной работы №2). Модель должна содержать мониторы всех очередей заданной топологии.
47
Вывести на графики параметры слежения (по варианту) в зависимости от времени симуляции, полученные для каждой очереди. Для каждого параметра определить файл для записи.
Примечание: Характеристики с разными единицами измерения отображать в разных координатных плоскостях (например, количество потерянных пакетов и количество потерянных байт).
Порядок выполнения:
1.Создать скрипт на языке Tcl для выполнения задания и сохранить его с расширением .tcl (например, lab4.tcl) в выбранную папку.
2.В скрипт добавить строки для формирования входных файлов программы
XGraph (содержание каждого файла время и определённый параметр слежения за конкретной очередью).
3.Добавить строки мониторинга каждой очереди (см. пример в разделе 2 данной лабораторной работы).
4.Создать процедуру для записи результатов мониторинга в файлы (раздел 3 данной лабораторной работы).
5.Добавить строки для вывода результатов на графики.
6.Запустить эмулятор Linux и Х-сервер.
7.Перейти в выбранную папку командой cd.
8.Запустить скрипт на выполнение командой: ns lab4.tcl.
9.Отредактировать полученные зависимости таким образом, чтобы все оси линии и подписи были хорошо видны.
10.Оформить отчёт по лабораторной работе.
11.Сдать и защитить работу.
12.Выйти из эмулятора командой exit.
Содержание отчёта:
1.Номер, название и цель лабораторной работы.
2.ФИО и группа студента, выполнившего лабораторную работу.
3.Номер варианта и задание к лабораторной работе.
4.Структура моделируемой сети.
5.Tcl-скрипт в соответствии с заданием.
6.Результаты выполнения лабораторной работы в графическом виде.
7.Полученные трейс-файлы.
8.Описание выполнения лабораторной работы и полученных результатов.
9.Выводы по проделанной работе.
Контрольные вопросы:
1.В чём заключается мониторинг очередей в ns2?
2.Компонентами какого сетевого объекта являются очереди?
48
3.Значения каких параметров измеряются в процессе слежения за очередью?
4.Какой командой задаётся в tcl-скрипте мониторинг очереди?
5.Какие строки необходимо добавить в tcl-скрипт для графического вывода результатов?
6.Какие at-события необходимы для мониторинга очередей?
Варианты заданий:
Таблица 4 – Исследуемый параметр канала
** |
Ушедших |
Ушедших |
Потерянных |
Потерянных |
Потерянных |
|
* |
пакетов |
байт |
пакетов |
байт |
пакетов/сек. |
|
Средняя |
|
|
|
|
|
|
длина очере- |
1 |
2 |
3 |
4 |
5 |
|
ди, пакетов |
|
|
|
|
|
|
Средняя |
|
|
|
|
|
|
длина очере- |
6 |
7 |
8 |
9 |
10 |
|
ди, байт |
|
|
|
|
|
|
Пришедших |
11 |
12 |
13 |
14 |
15 |
|
пакетов |
||||||
|
|
|
|
|
||
Пришедших |
16 |
17 |
18 |
19 |
20 |
|
байт |
||||||
|
|
|
|
|
||
Пришедших |
21 |
22 |
23 |
24 |
25 |
|
пакетов/сек. |
||||||
|
|
|
|
|
*Первая характеристика.
**Вторая характеристика.
49
Лабораторная работа №5
Моделирование канала с шумом
Цель работы: Приобрести навыки моделирования зашумлённых каналов в среде ns2. Закрепить навыки использования средств мониторинга ns2 и обработки результатов моделирования.
Краткая теория:
Впредыдущих лабораторных работах рассматривались идеальные каналы
иучитывались только потери в результате переполнения очереди. В реальности потери могут быть следствием воздействия помех на передающей линии. В особенности это относится к радиоканалам (например, спутниковой или сотовой связи). Связь может прерываться, а также пакеты могут искажаться вследствие помех или интерференции и отбрасываться на канальном уровне.
Рассмотрим простую модель ошибок (ErrorModel), в которой пакеты теряются в прямом канале с некоторой вероятностью и независимо друг от друга на примере топологии сети из раздела 2.4.
Описывается модель ошибок следующим образом:
#Модель ошибок на линии от n2 к n3. set loss_model [new ErrorModel]
#Доля потерянных пакетов $loss_model set rate_ 0.2
#Равномерное распределение потерь
$loss_model ranvar [new RandomVariable/Uniform]
#Приёмник потерянных пакетов $loss_model drop-target [new Agent/Null]
#Звено с потерями
$ns lossmodel $loss_model $n2 $n3
Для оценки качества обслуживания в канале n2-n3 можно использовать методы мониторинга, описанные в лабораторных работах №№3-4.
Мониторинг очереди звена n2-n3 даёт результат, представленный на рисунке 27 (верхняя линия показывает количество поступивших, средняя – количество переданных, а нижняя – количество потерянных пакетов за время симуляции).
Можно также посмотреть анимацию модели сети с потерями (рисунок 28). На рисунке видны потери в зашумлённом канале (тёмные (CBR-трафик) и светлые (FTP-трафик) квадраты).
50