реть по адресу
<http://www.isi.edu/nsnam/ns/tutorial/examples/example1b.tcl>.
Разработка топологии сети
В этом разделе топология сети задается четырьмя узлами, в которых один узел действует как маршрутизатор, продвигающий дальше данные, которые два узла пересылают четвертому узлу. Поясняется способ, как различить потоки данных от двух узлов от друг друга, и показано, как можно контролировать очередь, чтобы наблюдать, насколько она становится заполненной, и сколько пакетов будет отброшено.
Как всегда, первый шаг должен определить топологию. Следует создать файл 'example2.tcl',используя как шаблон программу предыдущего раздела 'example.tcl'.
Как уже указывалось, программа всегда остается похожей. Всегда следует создавать объект имитатор, моделирование всегда должно начинаться с той же самой команды, и если предполагается управлять аниматором NAM автоматически, нужно всегда открыть файл трассировки, инициализировать его, и определять процедуру, которая закрывает его и запускает NAM.
Для создания четырех узлов в программу следует вставить следующие строки
set n0 [$ns node] set n1 [$ns node] set n2 [$ns node]
set n3 [$ns node]
Следующая часть Tcl кода создает три двунаправленных связи между узлами.
$ns duplex-link $n0 $n2 1Mb 10ms DropTail $ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n3 $n2 1Mb 10ms DropTail
Теперь программу следует сохранить ('example2.tcl) и запустить сценарий на выполнение. Вероятно, можно заметить, что в окне NAM топология выглядит несколько неуклюже. Для того, чтобы схема выглядела более подходяще, возможно использование кнопки 're-layout' (перепланировка), но было бы лучше иметь немного больше контроля над формированием топологии. Для этого нужно добавить следующие три строки к Tcl сценарию, и стартовать его снова ('example2a.tcl).
16
$ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right.
Теперь, после просмотра топологии в окне NAM, вероятно понятно, что делает эта программа,.
Нужно заметить, что автоматическая планировка компонентов сети в окне NAM отменяется, так как теперь их размещение производится вручную. Выбор для ориентации связей возможен вправо, влево, вверх, вниз и в комбинации этих ориентаций. Экспериментировать с этими назначениями можно позже, а пока топологию следует оставить как получилось.
Далее создаются два UDP агента с CBR источниками трафика, которых приписывают к узлам n0 и n1. Затем создается агент с отсутствием информации (нуль-агент), приписанный к узлу n3.
#Create a UDP agent and attach it to node n0 set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
# Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0
#Create a UDP agent and attach it to node n1 set udp1 [new Agent/UDP]
$ns attach-agent $n1 $udp1
# Create a CBR traffic source and attach it to udp1 set cbr1 [new Application/Traffic/CBR]
$cbr1 set packetSize_ 500 $cbr1 set interval_ 0.005 $cbr1 attach-agent $udp1
set null0 [new Agent/Null]
$ns attach-agent $n3 $null0
Два CBR агенты должны быть связаны с нуль-агентом. $ns connect $udp0 $null0
17
$ns connect $udp1 $null0
Планирование событий и маркирование потоков
Пусть первый CBR агент, начнет посылать в момент времени 0.5 секунды и остановится в 4.5 секунды, в то время как второй CBR агент стартует в момент времени 1.0 секунда и остановится в 4.0 секунды.
$ns at 0.5 "$cbr0 start" $ns at 1.0 "$cbr1 start" $ns at 4.0 "$cbr1 stop"
$ns at 4.5 "$cbr0 stop"
Теперь когда запускается скрипт ' ns example2b.tcl ',заметно, что на линиях связях от n0 до n2 и n1 к n2 имеется большее количество трафика, чем может перенести линия связи от n2 до n3. Это подтверждает и простое вычисление: Мы посылаем 200 пачек в секунду на каждой из первых двух связей, и размер пачки - 500 байтов. Это соответствует полосе пропускания 0.8 мегабита в секунду для линий связей от n0 до n2 и от n1 до n2. Это приводит к полной полосе пропускания 1.6Mb/s, но линия связи между n2 и n3 имеет пропускную способность только 1Mb/s, поэтому очевидно, что некоторые пакеты отбрасываются. Но которые? Оба потока черны, поэтому единственный способ выяснить то, что случается с пакетами, это контролировать их в NAM, щелкая на них. В следующих разделах будет показано, как различить между разными потоками и как наблюдать то, что фактически происходит в очереди на линии связи от n2 до n3.
Добавляются следующие две строки к описаниям CBR агентов.
$udp0 set class_ 1
$udp1 set class_ 2
Параметр 'fid_'устанавливается после идентификатора пото-
ка 'flow id'.
Затем добавляется следующую часть программы к Tcl скрипту, предпочтительно вначале, после того, как был создан объект моделирования, так как она является частью набора заданных значений имитатора.
$ns color 1 Blue
$ns color 2 Red
Эта программа позволяет устанавливать различные цвета для
18
каждого имени потока id.
Теперь можно снова запускать скрипт ('example2c.tcl), и один поток должен быть синего цвета, в то время как другой красного. Наблюдая соединение от узла n2 к n3 некоторое время, можно заметить, что после некоторого времени распределение между синими и красными пакетами оказывается уже не слишком справедливым. В следующем разделе будет показано, как можно наблюдать эти связи внутри очереди, чтобы выяснить то, что происходит там.
Для того, чтобы контролировать очередь на линии связи от n2 до n3, к программе следует добавить следующую строку
$ns duplex-link-op $n2 $n3 queuePos 0.5
Затем можно снова запустить NS ('example2d.tcl), и будут видны обновленные результаты моделирования.
Теперь можно наблюдать пакеты в очереди, а через некоторое время даже можно видеть, как пакеты падают. Возможно, распределение отброшенных пакетов будет неравномерным, и действительно, нельзя ожидать достаточной справедливости от простой DropTail очереди. Поэтому следует пробовать улучшить организацию очереди, используя SFQ (стохастическая справедливая организация очереди) очередь для связи от n2 до n3. Для этого заменяют описание соединения для линии связи между узлами n2 и n3 на следующую строку ('example2e.tcl )
$ns duplex-link $n3 $n2 1Mb 10ms SFQ.
Теперь организация очереди должна быть более справедливой, и количество отброшенных синих и красных пакетов следует ожидать примерно одинаковым.
ПРЕДВАРИТЕЛЬНАЯ ПОДГОТОВКА
Ознакомиться с описанием сетевого имитатора NS2 и его основных компонентов по материалам данного практикума и рекомендуемых в нем литературных источников.
Изучить раздел «Основы работы с сетевым имитатором NS2» методических указаний по данной лабораторной работе и подготовить необходимые Tcl скрипты для работы с NS2, рассмотренные в данном разделе.
Доработать сценарий example2a.tcl таким образом, чтобы в центре сети был размещен узел, номер которого отмечен знаком
19
“+” в таблице1 (по вариантам). Там же указана ориентация остальных узлов (по направлению часовой стрелки) относительно центрального узла. Параметры линий связи (frq – полоса пропускания, del – задержка передачи) устанавливать одинаковыми для всей сети.
Таблица 1
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
n0 |
+ |
1,5 |
3 |
4,5 |
+ |
7,5 |
9 |
12 |
+ |
3 |
n1 |
12 |
+ |
6 |
9 |
6 |
+ |
12 |
3 |
1,5 |
+ |
n2 |
3 |
4,5 |
+ |
12 |
9 |
12 |
+ |
7,5 |
6 |
7,5 |
n3 |
7,5 |
9 |
10,5 |
+ |
1,5 |
3 |
4,5 |
+ |
9 |
12 |
Null |
n3 |
n0 |
n1 |
n2 |
n2 |
n3 |
n0 |
n1 |
n1 |
n2 |
Frq |
0,5 |
0,7 |
0,6 |
1,0 |
0,9 |
1,1 |
1,2 |
0,9 |
0,8 |
0,7 |
del |
20 |
15 |
18 |
10 |
12 |
9 |
8 |
16 |
15 |
16 |
Полагать в дальнейшем, что два из трех периферийных узлов работают на передачу пакетов, третий узел, обозначенный в строке «Null» таблицы работает на прием, а центральный узел только продвигает далее полученные пакеты, не добавляя нагрузки.
Результатами предварительной подготовки по данной работе являются файлы Tcl скриптов, подготовленные для моделирования сетей с помощью имитатора NS2.
КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ
1.С какой целью используется динамическое моделирование систем? Какие задачи оно решает?
2.Дать сравнительную характеристику программных продуктов, предназначенных для моделирования телекоммуникационных сетей.
3.Что представляет собой проект NS2 VINT?
4.Раскрыть архитектуру имитатора NS2.
5.С какой целью в NS2 используется два языка программирования?
6.Как в NS2 отражены реальные характеристики сетевых протоколов, порядок обслуживания очередей?
7.Какие виды ошибок могут быть смоделированы в NS2?
8.Какие средства используются для визуализации в NS2?
9.Какие основные компоненты содержит шаблон Tcl сце-
20