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

521_Kokoreva,_e._V._Modelirovanie_v_srede_network_

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

Нажмите Далее>, чтобы запустить процесс установки.

Рисунок 8 – Выбор компонентов Cygwin

Несколько окон, не требующих вмешательства пользователя, были пропущены при описании, как правило, они требуют одного действия – нажать Да-

лее>.

После запуска процесса установки, вы увидите окно, представленное на рисунке 9.

По завершении вы увидите окно как на рисунке 10. Крыжиками отметьте, какие иконки программы вы хотите создать (на рабочем столе, в главном меню), нажмите Готово установка завершена (рисунок 11).

1.1.1.Команды Cygwin

После окончания установки необходимо запустить файл Cygwin.exe. При этом автоматически будут созданы домашняя директория и системные файлы для пользователя Windows.

Следует учесть, что строчные и прописные буквы в Cygwin различаются. Переход в графический режим (X-сервер) осуществляется командой startx

в командном режиме. Работа с ns2 происходит в графическом режиме.

11

Рисунок 9 Процесс установки Cygwin

Рисунок 10 – Окончание установки

12

Рисунок 11 – Установка завершена

Нет необходимости подробно описывать работу в Cygwin, рассмотрим основные команды:

ls – просмотреть содержимое директории;

cd – перейти в указанную директорию;

cp – скопировать файл;

mv – переместить/переименовать файл;

rm – удалить файл;

mkdir – создать директорию;

pwd – вывести текущую директорию.

1.2.Установка ns2

Прежде всего, необходимо загрузить текущую версию пакета (например, ns-allinone-2.35.tar.gz) с официального сайта. Затем распаковать (любым архиватором, поддерживающим данный формат, например, 7-zip) в какую-либо пап-

ку Cygwin.

Будем считать, что пакет ns2 находится в папке C/Cygwin/ns-allinone-2.35/. После запуска Cygwin (Cygwin.bat) нужно перейти в каталог с установочными файлами ns2 командой cd C/Cygwin/ns-allinone-2.35/ и запустить процесс установки командой ./install (точка-слеш-install).

Должно появиться окно, представленное на рисунке 12.

13

Рисунок 12 – Процесс установки пакета ns2 в эмуляторе Cygwin

При успешном завершении установки должно появиться сообщение об этом.

В конце появятся important notices (важные указания), их необходимо выполнить.

Для этого в Windows открыть папку C:/cygwin/etc и найти файл profile. Открыть его с помощью редактора, поддерживающего перенос строк Unix. В Windows можно использовать редактор Notepad++ (http://notepad-plus-plus.org/).

Поместить в данный файл следующие строки:

export NS_HOME=/ns-allinone-2.33/ export

LD_LIBRARY_PATH=$NS_HOME/otcl:$NS_HOME/lib:$LD_LIBRARY_ PATH

export TCL_LIBRARY=$NS_HOME/lib export PATH=$NS_HOME/bin:$PATH

Примечание: Если вы установили ns2 в директорию, отличную от

C:/cygwin/ns-allinone-2.33/, то путь к NS_HOME (верхняя строчка) будет отли-

чаться от приведённого.

Сохранить файл profile, закрыть Сygwin, если он запущен, и запустить его заново. Для проверки можно набрать в командной строке ns. Если установка и настройка пакета были выполнены правильно, то появится приглашение ns: знак %.

Для проверки работоспособности ns2 введите startx. Зайдите в папку

C:/cygwin/ns-allinone-2.33/ns-2.33/tcl/ex и запустите скрипт simple.tcl с помо-

14

щью команды ns simple.tcl. Появится визуализатор Nam, c помощью которого можно увидеть модель сети.

2. Компоненты модели ns2

Создание модели начинается с создания объекта ns класса Simulator командой:

set ns [new Simulator]

Основными компонентами моделирования ns2 являются:

планировщик событий;

сетевые объекты;

события (at события и пакеты).

2.1.Планировщик событий

Основой моделирования в ns2 является планировщик событий (Event Scheduler). Есть два вида планировщиков реального времени и модельного време-

ни. Первый используется для взаимодействия модели с реальной сетью. Мы в дальнейшем будем использовать планировщик событий модельного времени.

Планировщик по очереди (в хронологическом порядке) выбирает из таблицы события и извещает соответствующие сетевые объекты о наступлении этих событий, сообщая также момент времени, в который произошло это событие.

Помещать события в таблицу планировщика могут как сами сетевые объекты, так и пользователь при описании модели. В первом случае событие называется пакетом, во втором – at-событием.

Любое взаимодействие между сетевыми объектами осуществляется через посредство планировщика. Отправка пакета одним сетевым объектом другому есть не что иное, как постановка отправителем в таблицу события, адресованного получателю и помеченного тем моментом времени, когда пакет должен до этого получателя дойти (возможно, с учетом задержки при передаче). Получение пакета, соответственно, представляет собой извещение планировщиком получателя о событии и обработка этого события получателем. На рисунке 13 приведён пример работы планировщика.

Календарь в планировщике модельного времени установлен по умолчанию.

Планировщик служит также для моделирования таких событий как старт приложения, запуск и окончание моделирования, запуск процедуры и т.д.

Пример добавки at-события (запуск процедуры «procedure_primer» через 30 с.):

$ns at 30 "procedure_primer"

15

Рисунок 13 – Пример планировщика событий

2.2.Сетевые объекты

Сетевые объекты в ns-2 могут быть простыми и составными. К простым объектам относятся:

очереди;

линии задержки;

мультиплексоры/демультиплексоры;

атакже такие нетривиальные объекты, как:

агенты;

приложения.

Составные объекты формируются путем объединения простых объектов. Система ns-2 содержит большой набор готовых описаний классов составных объектов, среди которых:

узлы (Nodes);

линии связи (Links);

локальные сети:

проводные (например, IEEE 802.3 Ethernet);

беспроводные (например, IEEE 802.11 Wi-Fi);

спутниковые сети:

16

геостационарные;

низкоорбитальные.

Кроме того, система может быть расширена введением в нее новых классов сетевых объектов. Особенно удобно создавать составные объекты на основе имеющихся (как простых, так и составных). Для описания новых классов может использоваться язык C++ или OTcl.

2.2.1.Абстракция сетевого уровня узел

Узел создаётся командой:

set n0 [$ns node]

здесь ns – объект класса Simulator.

Несколько узлов можно задать в Tcl с использованием циклической конструкции:

for {set i 0} {$i < 7} {incr i} {

set n($i) [$ns node]

}

Узел может принимать пакеты и классифицировать их по адресу и порту, являющимся полями IP-заголовка. Как было отмечено выше, узел является составным объектом. Простейшая структура узла изображена на рисунке 14.

Прибывающие в узел пакеты принимаются точкой входа (Entry Point) узла и классифицируются классификатором адреса (Address Classifier), представляющим собой демультиплексор. Пакеты, адресованные другим узлам, передаются на одну из линий связи, подключенных к узлу, в соответствии с маршрутной таблицей, принадлежащей классификатору адреса. Пакеты же, адресованные данному узлу, передаются классификатору порта (Port Classifier), также являющемуся демультиплексором. В зависимости от номера порта, классификатор передает пакет одному из прикрепленных к узлу агентов (Agents), которые являются сетевыми объектами, не входящими в состав узла и отвечающими за реализацию протоколов более высокого уровня (например, транспортных протоколов UDP и различных реализаций TCP, протоколов маршрутизации и пр.).

Отметим, что узел может иметь практически любое количество связей, а также портов с прикрепленными к ним агентами.

По умолчанию ns2 создаёт unicast (уникастный) узел. Существуют также более сложные multicast-узлы, способные рассылать прибывающие пакеты нескольким адресатам, но они не рассматриваются в данных методических указаниях.

17

Рисунок 14 – Структура узла

2.2.2.Линия связи (звено)

Звено создаётся функцией duplex-link объекта Simulator, напри-

мер:

$ns duplex-link $n0 $n2 2Mb 10ms DropTail

Здесь $n0 и $n2 значения узлов, соединённых звеном, 2Mb – скорость передачи, 10ms – задержка, DropTail – тип очереди.

Дуплексные (двусторонние) линии связи в ns-2 являются составными объектами, состоящими из двух противоположно направленных симплексных (односторонних) линий связи. Симплексная линия связи также является составным объектом (рисунок 15).

Она состоит из очереди, Null-агента, куда отправляются отброшенные из очереди пакеты и где они стираются, линии задержки и объекта, проверяющего и уменьшающего на единицу поле времени жизни (Time to Live, TTL) в заголовке пакета.

Если модель ориентирована на трассировку событий, т.е. имеет в составе команду $ns trace-all $trace_file, то звено будет содержать также объекты трассировки. Когда пакет достигает одного из трассировочных объектов, соответствующее событие записывается в файл трассировки.

18

node1 Duplex-link node2

а)

Simplex-link

Simplex-link

Очередь

Задержка

TTL

 

NULL

б)

 

 

 

агент

 

Рисунок 15 – Звено: а - дуплексное; б - симплексное

2.2.3.Абстракции транспортного уровня агенты

Для создания TCP-соединения необходимо создать два агента: TCPпередатчик и TCP-приемник. Передатчик может вести себя различным образом в зависимости от порядка и моментов получения им уведомлений от адресата о получении отправленных им пакетов. Соответственно, в системе ns2 имеется несколько вариантов TCP-передатчика, моделирующих различные реализации протокола TCP (TCP, TCP/Tahoe, TCP/Reno, TCP/Vegas), использующие разные комбинации алгоритмов TCP (Slow Start, Congestion Avoidance, Fast Recovery,

Fast Retransmit). Пример создания TCP-агента и подключения его к узлу n0:

set tcp [new Agent/TCP]

$ns attach-agent $n0 $tcp

TCP-приемник лишь принимает пакеты и посылает назад уведомления о получении (ACK). Поэтому такой агент в системе один: TCPSink. Пример создания агента-приёмника и подключения его к узлу n1:

set sink [new Agent/TCPSink]

$ns attach-agent $n1 $sink

Агенты передатчик и приёмник необходимо соединить в модели, напри-

мер:

$ns connect $tcp $sink

С протоколом UDP все обстоит гораздо проще, потому что уведомления о получении там не предусмотрены. Для передачи используется UDP-агент, а

19

для приема –Null-агент, просто принимающий и уничтожающий все приходящие пакеты. Пример создания передатчика и приёмника:

set udp [new Agent/UDP]

$ns attach-agent $n1 $udp

set null [new Agent/Null]

$ns attach-agent $n3 $null

Пример соединения звеном двух узлов с агентами источником и приёмником приведён на рисунке 16.

Рисунок 16 – Пример соединения двух узлов

2.2.4.Абстракции прикладного уровня приложения

За прикладной уровень в ns2 отвечают приложения (Applications). Приложение прикрепляется к агенту и служит для создания трафика. В ns2 имеются приложения, моделирующие трафик, характерный для реальных протоколов прикладного уровня (FTP и Telnet), а также абстрактные генераторы трафика различного типа (например, CBR – простейший генератор трафика с постоянным темпом выдачи пакетов). Приложения запускаются и останавливаются пользовательскими at-событиями.

Пример создания FTP-приложения, подключения его к агенту TCP и atсобытий запуска и останова FTP-трафика:

set ftp [new Application/FTP] $ftp attach-agent $tcp

$ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop"

20