Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

521_Kokoreva,_e._V._Modelirovanie_v_srede_network_

.pdf
Скачиваний:
2
Добавлен:
12.11.2022
Размер:
2.27 Mб
Скачать

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

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