Материал: 521_Kokoreva,_e._V._Modelirovanie_v_srede_network_

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рисунок 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

Источник: https://studfile.net/preview/16709022/