Объект 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