Основы NS2 и Otcl / tcl скрипта

Опубликовано: 13 Июля, 2021

Симуляция - это процесс обучения на практике . Всякий раз, когда в мире появляется что-то новое, мы пытаемся сначала проанализировать это, исследуя, и в процессе узнаем много вещей. Весь этот курс называется симуляцией .

В связи с этим процессом, чтобы понять все сложности, необходимые для моделирования всей ролевой игры в форме компьютерного моделирования, необходимо создавать искусственные объекты и динамически назначать им роли.

Компьютерное моделирование - это проектирование теоретической физической системы на цифровом компьютере с упором на моделирование, выполнение и анализ. После создания математической модели наиболее важным шагом является создание компьютерной программы для обновления переменных состояния и событий во времени (с помощью квантования времени или планирования событий). Если это моделирование выполняется последовательно на параллельных компьютерах, оно называется параллельным или распределенным моделированием .

Сетевое моделирование (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

Выход :