- •1.2 Методические указания по организации самостоятельной работы
- •1.2.1 Общие положения
- •1.2.2 Типы подключения к сети
- •1.2.3 Трансляция сетевых адресов (nat)
- •1.2.4 Сетевой мост (Bridged)
- •1.2.5. Внутренняя сеть (Internal Network)
- •2.3. Описание лабораторной установки (программного обеспечения )
- •1.3. Описание лабораторной установки (программного обеспечения )
- •1.4. Порядок выполнения работы и методические указания по ее выполнению
- •1.5 Содержание отчета
- •1.6 Контрольные вопросы и задания
- •2.1 Цель лабораторной работы
- •2.2. Методические указания по организации самостоятельной работы
- •2.2.1 Общие положения
- •2.2.2. Перенаправление потоков и программные каналы
- •2.2.3 Справочные команды
- •2.2.4. Команды работы с каталогами
- •2.2.4. Команды работы с файлами
- •2.2.5. Команды работы с текстовыми файлами
- •2.2.6. Команды работы с процессами
- •2.3. Описание лабораторной установки (программного обеспечения )
- •2.4. Порядок выполнения работы и методические указания по ее выполнению.
- •2.5. Содержание отчета
- •2.6. Контрольные вопросы и задания
- •3.2.1. Общие положения
- •3.2.3. Таблица Nat
- •3.2.4. Основы построения правил
- •3.2.5. Таблицы
- •3.2.7. Критерии выделения пакетов
- •3.2.8 Действия и переходы
- •3.2.10 Действия nat, dnat
- •3.3. Описание лабораторной установки (программного обеспечения )
- •3.5. Содержание отчета
- •3.6. Контрольные вопросы и задания
- •4.2. Методические указания по организации самостоятельной работы
- •4.2.1 Общие положения
- •4.3 Порядок выполнения работы и методические указания по ее выполнению.
- •4.4 Контрольные вопросы и задания
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.
