Мультисервисные сети2
.pdf
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) – трассировочный объект принятых узлом пакетов.
Когда пакет достигает одного из трассировочных объектов, соответствующее событие записывается в специальный трейс-файл, причем это не занимает модельного времени, а пакет отправляется на следующий объект.
