Page 61 - 2577
P. 61
•$ns namtrace-all $nf – цей рядок оповіщає об’єкт-симулятор, що вся інформація, яка
є результатом компіляції-трасування буде записана в створений файл.
Кінцева процедура, яка закриває файл після запису і запускає NAM визначається так:
proc finish {} {
global ns nf
$ns flush-trace
close $nf – закриття файлу
exec nam lab1 & – запуск NAM
exit 0
}
$ns at 4.0 "finish" - це рядок, який запускає процедуру finish після здійснення
симуляції впродовж 5 секунд,
$ns run – запуск симуляції
set n0 [$ns node] – створення вузла, наприклад n0,
$ns duplex-link $n0 $n1 1Mb 10ms DropTail – створення дуплексного режиму
зв’язку, наприклад між вузлами n0 та n1 на швидкості 1 Мбіт з затримкою 10мс.
Як відправний пункт для даних в NS2 виступає UDP-агент або TCP-агент. Різниця
між ними полягає в тому, що UDP-агент використовується при відправлені даних або
пакетів з постійною швидкістю, а TCP-агент – із зміною швидкістю.
Ініціалізуються ці агенти так:
UDP-агент:
set udp1 [new Agent/UDP]
$ns attach-agent $n1 $udp1 – тут n1 – вузол, до якого прикріплюється агент, udp1 –
назва агента.
TCP-агент:
set tcp1 [new Agent/TCP]
$ns attach-agent $n0 $tcp1 – тут n0 –вузол, до якого прикріплюється агент, tcp1 –
назва агента.
Як приймач, можна використовувати TCPSink-агента, або Null-агента. Різниця між
ними полягає в тому, що Null -агент, просто отримує пакети повідомлення, а TCPSink-агент
крім того відправляє назад до джерела ACK-повідомлення, про прийняття TCPSink-агентом
відправленого пакету. Null-агент використовується як приймач пакетів від UDP-агенту, а
TCPSink-агент – як приймач пакетів від TCP-агента. Ініціалізовуються ці агенти так:
Null-агент:
set null1 [new Agent/Null]
$ns attach-agent $n3 $null1 - тут n3 – вузол, до якого прикріплюється агент, null1 –
назва агента.
$ns connect $udp1 $null1 – цей рядок потрібен для встановлення зв’язку між UDP-
агентом та Null-агентом.
TCPSink-агент:
set TCPSink1 [new Agent/TCPSink]
$ns attach-agent $n4 $TCPSink1 – тут n4 – вузол, до якого прикріплюється агент,
TCPSink1 – назва агента.
$ns connect $tcp1 $TCPSink1 – цей рядок потрібен для встановлення зв’язку між
TCP-агентом та TCPSink-агентом.
Для відтворення потоку даних, необхідно створити джерело, яке генерує
пакети даних. Це можуть бути генератори трафіка CBR або FTP. CBR-генератор (Constant
Bitrate) створює потік пакетів із постійним розміром і постійною швидкістю. FTP-генератор
формує потік даних випадковим чином і з певним обмеженням розміру пакетів, за
замовчанням розмір пакетів – 1 Кбайт. Ініціалізовуються ці джерел так:
CBR-генератор:
set cbr0 [new Application/Traffic/CBR]
58