Основы NS2 и Otcl / tcl скрипта
Симуляция - это процесс обучения на практике . Всякий раз, когда в мире появляется что-то новое, мы пытаемся сначала проанализировать это, исследуя, и в процессе узнаем много вещей. Весь этот курс называется симуляцией .
В связи с этим процессом, чтобы понять все сложности, необходимые для моделирования всей ролевой игры в форме компьютерного моделирования, необходимо создавать искусственные объекты и динамически назначать им роли.
Компьютерное моделирование - это проектирование теоретической физической системы на цифровом компьютере с упором на моделирование, выполнение и анализ. После создания математической модели наиболее важным шагом является создание компьютерной программы для обновления переменных состояния и событий во времени (с помощью квантования времени или планирования событий). Если это моделирование выполняется последовательно на параллельных компьютерах, оно называется параллельным или распределенным моделированием .
Сетевое моделирование (NS) - это один из типов моделирования, который используется для моделирования сетей, таких как MANET, VANET и т. Д. Он обеспечивает моделирование для протоколов маршрутизации и многоадресной рассылки как для проводных, так и для беспроводных сетей. NS лицензирован для использования в соответствии с версией 2 GNU (General Public License) и широко известен как NS2 . Это объектно-ориентированный симулятор, управляемый дискретными событиями, написанный на C ++ и Otcl / tcl.
NS-2 может использоваться для реализации сетевых протоколов, таких как TCP и UPD, поведения источника трафика, такого как FTP, Telnet, Web, CBR и VBR, механизма управления очередью маршрутизатора, такого как Drop Tail, RED и CBQ, алгоритмов маршрутизации и многого другого. В ns2 для подробной реализации протокола используется C ++, а для настройки - Otcl. Скомпилированные объекты C ++ становятся доступными для интерпретатора Otcl, и, таким образом, готовыми объектами C ++ можно управлять с уровня OTcl.
Установите NS-2 с помощью этой команды:
sudo apt-get install ns2
Нам также нужен для установки. Nam ( Network Animator ) - это инструмент анимации для графического представления трассировки сети и пакетов. Используйте эту команду:
sudo apt-get install nam
Базовый синтаксис сценария Otcl:
- Базовая команда:
set
a
8
set
b [expr $a
/
8
]
Объяснение: В первой строке переменной a присваивается значение 8. Во второй строке результат команды [expr $ a / 8], равный 1, затем используется в качестве аргумента для другой команды, которая в Turn присваивает значение переменной b . Знак «$» используется для получения значения, содержащегося в переменной, а квадратные скобки указывают на подстановку команды.
- Определите новые процедуры с помощью команды proc
proc factorial fact {
if
{$fact <
=
1
} {
return
1
}
expr $fact
*
[factorial [expr $fact
-
1
]]
}
- Чтобы открыть файл для чтения:
set
testfile [
open
hello.dat r]
Аналогично, команда put используется для записи данных в файл.
set
testfile [
open
hello.dat w]
puts $testfile “hello1”
- Для вызова подпроцессов в другом процессе используется команда exec , которая создает подпроцесс и ожидает его завершения.
exec
rm $testfile
- Чтобы иметь возможность запустить сценарий моделирования, сначала необходимо создать топологию сети. В ns2 топология состоит из набора узлов и ссылок.
set
ns [new Simulator]
- У объекта-симулятора есть функции-члены, которые позволяют создавать узлы и определять связи между ними. Симулятор класса содержит все основные функции. Поскольку ns был определен для обработки объекта Simulator, команда $ ns используется для использования функций, принадлежащих классу simulator.
В топологии сети узлы могут быть добавлены следующим образом:
set
n0 [$ns node]
set
n1 [$ns node]
- Агенты трафика (TCP, UDP и т. Д.) И источники трафика (FTP, CBR и т. Д.) Должны быть настроены, если узел не является маршрутизатором. Это позволяет создать источник трафика CBR с использованием UDP в качестве транспортного протокола или источника трафика FTP с использованием TCP в качестве транспортного протокола.
Источник трафика CBR с использованием UDP:
set
udp0 [new Agent
/
UDP]
$ns attach
-
agent $n0 $udp0
set
cbr0 [new Application
/
Traffic
/
CBR]
$cbr0 attach
-
agent $udp0
$cbr0
set
packet_size_
512
Источник FTP-трафика с использованием TCP:set
tcp0 [new Agent
/
TCP]
$ns attach
-
agent $n0 $tcp0
set
ftp0 [new Application
/
FTP]
$ftp0 attach
-
agent $tcp0
$tcp0
set
packet_size_
512
Ниже представлена реализация создания ссылок между источником и местом назначения с использованием ftp и tcp:
# Create a simulator object set ns [new Simulator] # Define different colors # for data flows (for NAM) $ns color 1 Blue $ns color 2 Red # Open the NAM trace file set nf [ open out.nam w] $ns namtrace - all $nf # Define a 'finish' procedure proc finish {} { global ns nf $ns flush - trace # Close the NAM trace file close $nf # Execute NAM on the trace file exec nam out.nam & exit 0 } # Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] # Create links between the nodes $ns duplex - link $n0 $n2 2Mb DropTail 10ms $ns duplex - link $n1 $n2 2Mb 10ms DropTail $ns duplex - link $n2 $n3 1.7Mb 20ms DropTail # Set Queue Size of link (n2-n3) to 10 $ns queue - limit $n2 $n3 10 # Give node position (for NAM) $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 # Monitor the queue for link (n2-n3). (for NAM) $ns duplex - link - op $n2 $n3 queuePos 0.5 # Setup a TCP connection set tcp [new Agent / TCP] $tcp set class_ 2 $ns attach - agent $n0 $tcp set sink [new Agent / TCPSink] $ns attach - agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 # Setup a FTP over TCP connection set ftp [new Application / FTP] $ftp attach - agent $tcp $ftp set type_ FTP # Setup a UDP connection set udp [new Agent / UDP] $ns attach - agent $n1 $udp set null [new Agent / Null] $ns attach - agent $n3 $null $ns connect $udp $null $udp set fid_ 2 # Setup a CBR over UDP connection set cbr [new Application / Traffic / CBR] $cbr attach - agent $udp $cbr set type_ CBR $cbr set packet_size_ 1000 $cbr set rate_ 1mb $cbr set random_ false # Schedule events for the CBR and FTP agents $ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" $ns at 4.5 "$cbr stop" # Detach tcp and sink agents # (not really necessary) $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" # Call the finish procedure after # 5 seconds of simulation time $ns at 5.0 "finish" # Print CBR packet size and interval puts "CBR packet size = [$cbr set packet_size_]" puts "CBR interval = [$cbr set interval_]" # Run the simulation $ns run |
Выход :