Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-1 Iнформаційна безпека в системi Unix / Методичка UNIX-подiбнi системы.doc
Скачиваний:
134
Добавлен:
02.02.2021
Размер:
345.6 Кб
Скачать

4.2. Методические указания по организации самостоятельной работы

4.2.1 Общие положения

В среде UNIX очень эффективно используются множество пакетов имитационного моделирования разнообразных сетей передачи данных.

Одним из наиболее распространенных пакетов моделирования является Network Simulator v2 (NS2).

Состав классов моделей пакета:

Node (узел ) - элемент соответствующий Оконечному Оборудованию Данных (ООД) т.е. компьютеру, который имеет уникальный адрес в сети.

Application ( Приложение ) - моделирует прикладной процесс, являющийся

источником инфомации, которую он генерирует в соответствии с определенным алгоритмом. Данные передаются на нижние уровни.

Agent ( Агент ) - моделирует протокол транспортного уровня ( в модели

TCP или UDP ) который служит для формирования сегментов, содержащих

заголовок проткола и данные от приложения, управляет потоком,обнаруживает

и восстанавливает поврежденные сегменты и т.д.

Queue ( Очередь ) - моделирует буфер ( накопитель ), в котором сегменты

протокола транспортного уровня ожидают передачи по каналу связи. Очередь

может иметь дисциплину обслуживания,отличную от FIFO(в модели DropTail) и максимальную емкость накопителя ( при превышении количества ожидающих сегментов макс. емкости - сегменты теряются ).

SimpleLink ( Канал передачи ) - моделирует канал передачи с задержкой, интенсивностью обслуживания ( скоростью ), источником ошибок.

4.2.2. Основные правила языка использования Tcl.

Основная часть моделей в NS2 написана на языке Tool Command Language (TCL). Все элементы модели являются объектами классов, определенными на Tcl и С++, поэтому предварительно необходимо создать объект класса ( присвоить переменной указатель на этот объект ) и затем использовать в программе данную переменную.

В ns используется объектно-ориентированное расширения языка Tcl, поэтому необходимо определить аспекты относящиеся к правилам Tcl и правилам ns.

Основные правила Tcl:

- присваивание переменной a значения zn

set a zn

- присваивание переменной а значения переменной b

set a $b

- вычисленние выражения a=b+c ( b и с переменные )

set a [ expr $b+$c ]

- создание объекта класса OT

set a [ new OT ]

- присваивание значения c переменной b класса a

$a set b c

- комментарий # < строка >

пример:

# Hello world

4.2.3 Описание лабораторной установки ( программного обеспечения )

Описание лабораторного макета.

Макет состоит из компьютера и набора ПО, в который входит:

- программа-симулятор ns ( network simulator );

- программа-аниматор nam ( network animator );

- табличный процессор Excell.

Назначение элементов ПО:

- ns моделирующая программа-интерпретатор, позволяет запустить модель ( файл описания передается в качестве параметра ) и выводить результаты моделирования в файл и стандартный вывод

- nam программа обработчик результатов моделирования, позволяет наблюдать в динамике функционирование системы ( передача сегментов по

каналам, размер очереди сегментов, параметры протоколов и др. )

- Excell используется для выводы графических зависимостей, полученных

в результате моделирования.

Элементы модели имеют следующее назначение:

Основные классы, используемые в NS.

1. Simulator - координирующий класс в модели, методы класса:

2. node : создание нового узла

set n1 [ ns node ]

3. simplex-link <узел-источник> < узел-получатель> <скорость> <задержка распространения> <тип очереди>

$ns simplex-link $n1 $n2 14.4kb 10ms DropTail

4. duplex-link <узел> < узел> <скорость> <задержка распространения> <тип очереди>

$ns duplex-link $n1 $n2 14.4kb 10ms DropTail

5. Application - класс, моделирующий элементы 5-7 уровня, производные

классы от Application:

6. FTP - протокол передачи фийлов ( File Transfer Protocol ). Методы класса:

start

7. Telnet - протокол telnet ( моделирует характеристики протокола с обменом небольшими блоками и случайным интервалом ). Данные класса:

- interval_ : если ==0 то исп. массив данных задержек

если !=0 то явл. параметром экспоненциального

распределения

Пример организации приложения FTP и запуска в момент 0.5с

set app1 [ new Application/FTP ]

$ns at 0.5 "$app1 start"

8. Application/Traffic/CBR - протокол с детерминированными задержками между передачей сегментов ( CBR - Constant Bit Rate ),данные класса:

- interval_ : задержка между соседними сегментами

- packet_size_ : размер сегмента ( в байтах )

- rate_ : скорость передачи

9. Application/Traffic/Exponential - моделирует поток с "пачками" пакетов ( состояниями передачи и пауз ) - экспоненциально распределенные, данные класса:

- packet_size_ : размер сегмента (в байтах)

- burst_time_ : среднее длительность передачи "пачки" сегментов

- idle_time_ : среднее время паузы в передаче

- rate_ : скорость передачи сегментов

Пример создания объекта класса:

set app1 [ new Application/Traffic/Exponential ]

$app1 set PacketSize_ 500

$app1 set rate_ 80k

$app1 set burst_time 100ms

$app1 set idle_time_ 2

10. Application/Traffic/Pareto - моделирует поток с "пачками" пакетов ( состояниями передачи и пауз ) - распределение Парето, данные класса:

- packet_size_ : размер сегмента (в байтах);

- burst_time_ :среднее длительность передачи "пачки" сегментов;

- idle_time_ : среднее время паузы в передаче;

- rate_ : скорость передачи сегментов;

- shape_ : параметр распределения.

11. Mon - Monitor используется на стороне получателя, для фиксирования результатов ( изменение производительности ).

Для связывания объекта класса Application с объектом класса Agent

используется метод attach-agent например

$app1 attach-agent $tcp1

12. Agent - элементы класса моделируют протоколы 4-го ( транспортного )

уровня.

Для связывания объекта класса Agent с узлом используется метод класса Simulator attach-agent например

$ns attach-agent $n1 $tcp

Производные классы от Agent:

UDP - Протокол Датаграмм Клиента ( User Datagram Protocol ),

данные класса:

- packetSize_ : размер сегмента протокола в байтах

- class_ : класс используется при обработке очереди заявок

- ttl_ : максимальное время жизни сегмента

методы класса:

- connect < udp-источник > < udp-приемник >

При использовании протокола UDP на противоположной стороне

необходимо создать объект класса Agent/Null

Пример организации соединения агентов:

set udp0 [ new Agent/UDP ]

set null0 [ new Agent/Null ]

$ns connect $udp0 $null0

TCP - Протокол Управления Передачей (Transmission Control Protocol). Класс TCP имеет множество подклассов мы будем рассматривать наиболее

часто используемые протоколы классов:

- Agent/TCP : версия TCP-Tahoe;

- Agent/TCP/Reno : версия TCP-Reno ОС BSD;

- Agent/TCP/Newreno : модификация версии TCP-Reno ОС BSD;

- Agent/TCP/Sack1 : версия протокола с избирательным подтверждением ( Selective Acknowledge );

- Agent/TCP/Vegas.

Данные класса:

- packetSize_ : размер сегмента

- window_ : максимальный размер окна передачи (количество сегментов )

- fid: Flow Id - идентификатор потока ( используется при визуализации );

- maxrto_ : максимальное значение таймаута повторной передачи, сек;

- windowInit_ : значение инициализации для окна передачи cwnd.

Методы класса :

- connect : соединение протоколов ( строго это метод класса Simulator ), пример:

$ns connect $tcp1 $tcp2

Особенностью использования агентов протокола ТСР, является необходимость использования на приемной стороне объектов класса Agent/TCPSink, при этом необходимо учитывать класс объекта на передающей стороне:

- для Agent/TCP, Agent/Reno, Agent/Newreno, Agent/Vegas это Agent/TCPSink или Agent/TCPSink/DelAck ( задержка передачи подтверждения ACK );

- для Agent/TCP/Sack1 это Agent/TCPSink/Sack1 или Agent/TCPSink/Sack1/DelAck

данные классов:

- Agent/TCPSink/* : packetSize_ - размер ACK ( подтверждение, по умолчанию 40 байт )

- Agent/TCPSink/DelAck или Agent/TCPSink/Sack1/DelAck : interval_ - интервал задержки передачи подтверждения ACK.

Пример организации соединения агентов:

set tcp0 [ new Agent/TCP/Reno ]

set tcps0 [ new Agent/TCPSink/DelAck ]

$tcp0 set packetSize_ 800

$tcps0 set interval_ 250ms

$ns connect $tcp0 $tcps0

Session/RTP - Транспортный Протокол Реального Времени ( Real-Time Transport Protocol ), используется для организации передачи трафика реального времени ( например IP телефонии, видеоконференций и др. ). Особенность организации RTP - мультиадресация ( multicasting ), т.е. пакеты передаются всеми объектами, участвующими в соединении по принципу " каждый с каждым ". Методы класса:

- attach-node <узел> : привязка объекта протокола к узлу

пример:

$s1 attach-node $n1

- session-bw <скорость обмена> : устанавливает скорость обмена в сессии пример:

# настройка протокола маршрутизации

set mproto DM

set mrthandle [$ns mrtproto $mproto {}]

# организация группы, в которую входят взаимодействующие протоколы

set group [Node allocaddr]

set s1 [ new Session/RTP ]

$s1 session-bw 150kb/s

join-group <группа>

$s1 join-group $group

transmit <блок данных>

пример:

$s1 start

$s1 transmit 50kb/s

SimpleLink элементы класса моделируют канал связи, соединяющий два узла. Организация симплексного/дуплексного канала: метод класса Simulator ( см. 2.1. ) для получения ссылки на объект класса:

$ns link <узел> <узел>

Методы класса:

- cost <вес> : устанавливает вес ветви ( используется протоколами

маршрутизации )

- up : "включение" канала

- down : "выключение" канала

- queue : возвращает указатель на элемент очереди канала

- install-error < источник ошибок >

Более полное описание элементов классов ns приведено в приложении 2.