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

Мультисервисные сети2

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
9.29 Mб
Скачать

16.1. Основные сведения об NS2

431

 

 

прохождение их по сети. При этом абстракции симулятора тесно связаны с многоуровневым подходом, заложенным в основе протоколов стека TCP/IP и соответствующими ему уровнями эталонной модели ISO/OSI [2, 5].

Уровень доступа к сети (физический и канальный уровни ISO/OSI) представлен в NS2 такими факторами, как режимы работы линии связи (дуплекс, полудуплекс, симплекс), задержки пакетов в каналах, помехи в линии связи и искажения, потери пакетов в очередях коммутаторов, распространение радиоволн в беспроводных (наземных и спутниковых) сетях, алгоритмы доступа к разделяемой среде передачи в локальных сетях и пр.

Уровень межсетевого взаимодействия (сетевой уровень ISO/OSI)

определяет протоколы маршрутизации в проводных и беспроводных сетях, адресацию (уникальную и групповую) узлов сети, мультиплексирование и демультиплексирование. Абстракцией сетевого уровня в NS2 является понятие узла (англ. node).

Приложение

(СBR, FTP,

Telnet)

Агентисточник

(TCP/UDP)

Узел

Маршрутизация

Очередь

Рис.

Прикладной

уровень

Транспортный

Агент-

приёмник

уровень

(TCPSink)

 

 

Узел

Межсетевой

Маршрути-

уровень

зация

 

Уровень доступаети к

Звено

16.4. NS2 и уровни TCP/IP

Транспортный уровень (транспортный уровень ISO/OSI) решает проблему негарантированной доставки (протокол UDP) без установления соединения и гарантированной доставки с установлением соединения (разновидности протокола TCP). Для симуляции транспортного уровня в NS2 служат агенты, передатчики и приемники, ассоциированные с некоторым узлом сети.

На прикладном уровне моделируется характер трафика, порождаемого различными приложениями: Web, FTP, Telnet,

432

Глава 16. Моделирование мультисервисных сетей в NS2

 

 

RealAudio. Кроме того, имеются абстрактные модели трафика, например CBR (Constant Bit Rate – постоянная битовая скорость), а также генерируемые датчиками случайных чисел с различными законами распределения (Пуассона, Парето и т.д.).

Абстракции NS2, соответствующие уровням стека протоколов TCP/IP, приведены на рис. 16.4.

16.2. Компоненты моделей NS2

Основными компонентами моделей NS2 являются планировщик событий, сетевые объекты и события. Рассмотрим их подробно,

начиная с планировщика.

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

Как уже сказано выше, NS2 осуществляет дискретно-событийное моделирование, при котором функционирование системы представляется цепочкой событий, наступающих в хронологическом порядке (рис. 16.5). Управляет этой последовательностью событий планировщик (Event Sheduler), который извлекает их одно за другим из списка и передает обработчику событий, изменяя при этом состояние системы. С точки зрения программиста, эти действия представляют собой вызов метода-обработчика определенного объекта [1, 2, 5, 6].

Основные компоненты планировщика событий и соответствующие им переменные члены класса Scheduler:

часы (clock_) – текущее время симуляции;

останов (halted_) – инициализируется 0 при запуске симуляции и принимает значение 1, когда симуляция завершается или приостанавливается;

адрес (instance_) – ссылка на событие в списке планировщика;

ID (uid_) уникальный идентификатор события.

ВNS2 может быть два вида событий:

пакеты (Packet), которые помещаются в список сетевыми объектами;

at-события (atEvent), создаваемые пользователем.

16.2. Компоненты моделей NS2

 

 

 

 

 

 

 

 

 

 

 

 

 

433

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вставка

 

 

 

 

 

 

 

 

 

создаёт событие

 

 

 

Событие 5 события

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t = 3.75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Действие 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Событие1

 

Событие2

 

 

 

 

 

Событие3

 

 

 

Событие4

 

 

 

t = 0.75

 

 

t = 2.3

 

 

 

 

 

t = 5.0

 

 

 

t = 6.75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Действие1

 

Действие 2

 

 

 

 

 

Действие 3

 

 

 

Действие 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t, сек

1

2

 

3

4

 

5

 

6

7

 

 

 

 

 

Рис. 16.5. Пример цепочки событий дискретно-событийной симуляции

Пакет – это единственный тип «внутреннего» события в системе. В планируемое время событие обрабатывает сетевой объект, который его создает. Информационный канал между сетевыми объектами отличается от канала событий. Планировщик работает с каналом событий, а пакеты передаются от одного сетевого объекта к другому по информационному каналу. Работа планировщика показана на рис. 16.6.

Заголовок

atсобытие-

Пользователь

Планировщик

событий

Пакет

Канал событий

Информационный канал

Пакет

 

Обработчик

Сетевой

объект

Обработчик

Сетевой

объект

Рис. 16.6. Пример работы планировщика событий

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

434

Глава 16. Моделирование мультисервисных сетей в NS2

 

 

$ns at 200 ―finish_sim‖

Здесь происходит создание at-события, которое внутри планировщика событий обрабатывается так же, как «внутреннее» событие, связанное с передачей пакета.

Выражение at time “String” является частной функцией объекта Simulator. Когда начинается моделирование и наступает время atсобытия, заданное по графику в очереди событий, оно поступает на обработчик at-событий, который создается только один раз. Он обрабатывает все at-события, а интерпретатор OTcl выполняет команду, определенную в поле ―String‖ at-события.

NS2 имеет два вида планировщиков событий: реального и модельного времени. Для планировщика модельного времени доступны три реализации: список (list), куча (heap) и календарь (calendar). Они выполняют одинаковые логические функции, но такое разделение позволяет пользователям, разрабатывающим дополнительные функции сетевых компонентов (не входящие в ядро NS2), использовать особые виды планировщика. Календарь в планировщике событий установлен по умолчанию.

Особый тип планировщика выбирается следующим образом:

#Создать новый объект класса симулятор ns set ns [new Simulator]

#Использовать в ns планировщик типа «куча» $ns use-scheduler Heap

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

16.2.2. Пакет – основное событие симуляции

В NS2 пакет состоит из набора заголовков и иногда поля данных. Формат заголовка пакета задается, когда создается объект класса

Simulator [1, 3].

Из соображений простоты все пакеты в системе имеют одинаковый формат (являются объектами одного класса), и поэтому

16.2. Компоненты моделей NS2

435

 

 

каждый пакет, независимо от того, к какому протоколу он относится, имеет в своем составе заголовки всех протоколов, используемых в модели. Типичная структура пакета в NS2 изображена на рис. 16.7. Поле данных используется лишь в случаях, когда NS2-модель входит в состав реальной сети; если модель чисто компьютерная, то достаточно иметь в заголовке поле, содержащее размер пакета.

 

 

Общий

 

 

 

 

 

заголовок

 

 

 

 

 

 

uid_

Универсальный идентификатор

 

 

ЗаголовокIP

 

 

 

 

ptype_

Тип пакета

Заголовок

 

 

 

size_

Размер пакета

 

 

 

 

ЗаголовокTCP

 

ts_

Временная метка

Данные

 

ЗаголовокRTP

 

 

 

 

 

 

 

 

 

Трейс-

 

 

 

 

 

 

 

 

 

заголовок

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

Рис 16.7. Структура пакета

Для ускорения процесса моделирования необходимо указывать явным образом, какие протоколы будут использоваться в модели, чтобы исключить заголовки неиспользуемых протоколов из заголовка пакета:

#Удалить все заголовки пакета remove-all-packet-headers;

#Добавить заголовок IP-пакета add-packet-header IP TCP;

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

На рис. 16.8 в общих чертах показана иерархия классов OTcl в NS2 [2, 3].

Класс TclObject является суперклассом всех объектов библиотек OTcl. Для сетевых объектов NS2 суперклассом является класс nsObject.

436

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 16. Моделирование мультисервисных сетей в NS2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TclObject

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nsObject

 

 

 

 

 

 

 

 

 

 

 

 

 

Другие

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

объекты

 

 

 

Соединители

 

 

 

 

 

 

 

 

Классификаторы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

очереди

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мультикастный

 

 

 

 

 

 

 

 

 

 

агенты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты

 

 

классификатор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

трассировки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RED

 

SFQ

 

CBQ

...

задержки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уникастный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

классификатор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мониторинг

 

 

 

 

TCP

 

 

UDP

 

 

 

 

 

 

 

 

 

 

 

 

 

очередей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Enq

 

Deq

 

Drop

 

 

 

 

 

 

In

 

Out

 

Drp

 

Edrp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reno

 

Newreno

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 16.8. Иерархия сетевых объектов в NS2

Сетевые объекты в NS2 могут быть простыми и составными.

Кпростым объектам относятся:

очереди;

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

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

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

агенты;

приложения.

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

узлы (Nodes);

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

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

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

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

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

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

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

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

Абстракция сетевого уровня – узел. Узлы в NS2 могут выполнять две функции – хоста (host) и маршрутизатора (router).

16.2. Компоненты моделей NS2

437

 

 

C точки зрения симулятора узел – сложный объект, состоящий из

объекта входа и классификаторов адреса и порта. Адрес и порт являются полями IP-заголовка пакета [1, 5, 6].

Узел создается командой set n0 [$ns node]

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

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

for {set i 0} {$i < 7} {incr i} { set n($i) [$ns node]

}

ВNS2 существует два вида узлов: уникастный (unicast уникальный) и мультикастный (multicast множественный).

Вуникастном узле классификатор адресов осуществляет уникастную маршрутизацию, т.е. определяет одного получателя в сети (рис. 16.9).

Приложение

Агент

Агент Приложение

Классификатор порта

Звено Вход

Звено

Классификатор

адреса

Звено

Звено

Рис. 16.9. Unicast узел

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

438

Глава 16. Моделирование мультисервисных сетей в NS2

 

 

данному узлу, передаются классификатору порта (Port Classifier), также являющемуся демультиплексором.

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

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

Приложение

Агент

Приложение Агент

Классификатор

адреса

Классификатор порта

Звено Вход

Звено

Мультикастовый

классификатор

Рис. 16.10. Структура Multicast узла

По умолчанию в NS2 определяются уникастные узлы. Для того чтобы сделать доступной мультикастную симуляцию, необходимо при создании объекта Simulator добавить опцию: -multicast on:

set ns [new Simulator -multicast on]

Звенья. Звено (link) – другой важный составной объект. Когда пользователь создает дуплексное звено, используя частную функцию duplex-link объекта Simulator, создаются два симплексных звена в двух направлениях (рис. 16.11).

16.2. Компоненты моделей NS2

 

 

 

 

439

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

node1

 

 

Duplex-link

 

 

node2

 

 

 

 

 

 

 

 

 

 

 

 

 

а)

 

 

 

 

Simplex-link

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Simplex-link

 

 

 

 

 

 

 

 

 

 

 

 

Очередь

Задержка

TTL

 

NULL

б)

 

 

 

агент

 

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

Симплексное звено также является составным объектом. Выходная очередь с узла реализована как часть симплексного звена. Пакеты после очереди поступают на объект «Задержка», который моделирует задержку в звене, а пакеты, отброшенные в очереди, посылаются на Нулевой агент, где стираются. Объект TTL (Time-To- Live) считает параметры времени жизни для каждого принятого пакета и обновляет одноименное поле в заголовке пакета.

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

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

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

Типы очередей. В основном NS2 использует следующие механизмы обслуживания очередей:

DropTail (обрубание хвоста) – аналог механизма FIFO (First In First Out – первый пришел, первый обслужился) с отбрасыванием вновь поступающих пакетов при переполнении очереди;

RED (Random Early Detection – случайное предвидение) –

случайное отбрасывание пакетов в предвидении переполнения очереди;

FQ (Fair Queueing – справедливая очередь) – равное распределение пропускной способности между всеми потоками;

SFQ (Stochastic Fair Queueing – стохастическая справедливая очередь) – равное распределение пропускной способности между ограниченным количеством очередей, на которые делится трафик, с использованием хеш-алгоритма;

440

Глава 16. Моделирование мультисервисных сетей в NS2

 

 

DRR (Deficit Round Robin – дефицитная круговая порука) – обслуживание потоков в циклическом порядке с равномерным распределением пропускной способности между всеми классами;

CBQ (Class-Based Queuing – очередь, основанная на приоритетах) – распределение пропускной способности в соответствии с классом приоритета.

Тип очереди задается при создании звена передачи данных.

16.2.4. Объекты трассировки

Если модель ориентирована на трассировку событий в сети (имеет в своем составе команды создания и записи в файл трассировки), ее звенья будут иметь в своем составе объекты трассировки

(рис. 16.12).

Для трассировки необходимо в tcl-скрипт модели добавить строки: set f [open traceFile.tr w]

$ns trace-all $f

Таким образом, открывается трейс-файл traceFile.tr для записи и производится запись событий в него.

 

 

 

 

EnqT

 

 

Очередь

 

 

 

DeqT

 

 

 

Задержка

 

 

TTL

 

 

RecvT

 

Вход

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DrpT

 

 

NULLагент

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 16.12. Звено с объектами трассировки

 

 

 

 

 

На рис. 16.12:

 

 

 

 

 

 

 

 

 

 

 

 

EnqT (Enqueue tracing)

– трассировочный

объект

постановки

в очередь;

DeqT (Dequeue tracing) – трассировочный объект выхода из очереди;

DrpT (Drop tracing) – трассировочный объект отбрасывания пакетов;

RecvT (Receive tracing) – трассировочный объект принятых узлом пакетов.

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