Conceptos básicos de NS2 y script Otcl/tcl

La simulación es el proceso de aprender haciendo . Cada vez que hay algo nuevo en el mundo, primero tratamos de analizarlo examinándolo y en el proceso aprendemos muchas cosas. Todo este curso se llama Simulación
En correlación con este proceso, para comprender todas las complejidades que se necesitan para modelar todo el juego de roles en forma de simulación por computadora, es necesario construir objetos artificiales y asignarles roles dinámicamente. 
La simulación por computadora es el diseño de un sistema físico teórico en una computadora digital con énfasis en el diseño, ejecución y análisis de modelos. Después de la creación del modelo matemático, el paso más importante es crear un programa de computadora para actualizar las variables de estado y evento a través del tiempo (por división de tiempo o programación de eventos). Si esta simulación se realiza sucesivamente en ordenadores paralelos, se denomina simulación Paralela o Distribuida .
Simulación de red(NS) es uno de los tipos de simulación, que se utiliza para simular las redes, como en MANET, VANET, etc. Proporciona simulación para protocolos de enrutamiento y multidifusión para redes cableadas e inalámbricas. NS tiene licencia para su uso bajo la versión 2 de GNU (General Public License) y se conoce popularmente como NS2 . Es un simulador controlado por eventos discretos, orientado a objetos, escrito en C++ y Otcl/Tcl. 
NS-2 se puede utilizar para implementar protocolos de red como TCP y UPD, comportamiento de fuente de tráfico como FTP, Telnet, Web, CBR y VBR, mecanismo de gestión de colas de enrutador como Drop Tail, RED y CBQ, algoritmos de enrutamiento y mucho mas. En ns2, C++ se usa para la implementación detallada del protocolo y Otcl se usa para la configuración. Los objetos C++ compilados se ponen a disposición del intérprete Otcl y, de esta forma, los objetos C++ listos para usar se pueden controlar desde el nivel OTcl. 
  
Instale NS-2 usando este comando: 

sudo apt-get install ns2

Nam también es necesario para instalar. Nam ( Network Animator ) es una herramienta de animación para representar gráficamente la red y los rastros de paquetes. Utilice este comando:

sudo apt-get install nam

 Algunas sintaxis básicas del script Otcl: 

Comando básico: 

Python

set a 8
set b [expr $a/8]

Explicación: En la primera línea, a la variable a se le asigna el valor 8. En la segunda línea, el resultado del comando [expr $a/8], que es igual a 1, se usa como argumento para otro comando, que en turn asigna un valor a la variable b . El signo “$” se usa para obtener un valor contenido en una variable y los corchetes son una indicación de sustitución de comando.

Defina nuevos procedimientos con el comando proc : 
 

Python

proc factorial fact {
  
    if {$fact <= 1} {
  
        return 1
    }
expr $fact * [factorial [expr $fact-1]]
  
}

Para abrir un archivo para lectura:
 

Python

set testfile [open hello.data r]

De manera similar, el comando put se usa para escribir datos en el archivo
 

Python

set testfile [open hello.data w]
  
puts $testfile “hello1”

Para llamar a subprocesos dentro de otro proceso, se usa exec , que crea un subproceso y espera a que se complete.
 

Python

exec rm $testfile

  
Para poder ejecutar un escenario de simulación, primero se debe crear una topología de red. En ns2, la topología consta de una colección de Nodes y enlaces.
 

Python

set ns [new Simulator]

El objeto simulador tiene funciones miembro que permiten la creación de los Nodes y definen los vínculos entre ellos. El simulador de clases contiene todas las funciones básicas. Dado que ns se definió para manejar el objeto Simulator, el comando $ns se usa para usar las funciones que pertenecen a la clase del simulador.
En la topología de la red, los Nodes se pueden agregar de la siguiente manera:
 

Python

set n0 [$ns node]
  
set n1 [$ns node]

Los agentes de tráfico (TCP, UDP, etc.) y las fuentes de tráfico (FTP, CBR, etc.) deben configurarse si el Node no es un enrutador. Permite crear una fuente de tráfico CBR utilizando UDP como protocolo de transporte o una fuente de tráfico FTP utilizando TCP como protocolo de transporte.
 

Fuente de tráfico CBR usando UDP:

Python

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

  
Fuente de tráfico FTP usando TCP:
 

Python

set tcp0 [new Agent/TCP]
$ns attach-agent $n0 $tcp0
set ftp0 [new Application/FTP]
$ftp0 attach-agent $tcp0
$tcp0 set packet_size_ 512

A continuación se muestra la implementación de la creación de enlaces entre el origen y el destino utilizando FTP y TCP: 
 

Python

# 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 10ms DropTail
$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

Producción : 
 

Características de NS2:

  • Es un simulador de eventos discretos de investigación de redes.
  • Tiene muchas características para simular protocolos que incluyen TCP, FTP, UDP, HTTPS y DSR.
  • Es capaz de simular redes cableadas e inalámbricas.
  • Se basa principalmente en Unix.
  • Su lenguaje de programación es TCL.
  • Tclcl es un lenguaje de enlace C++ y otcl.
  •  Programador de eventos discretos.

Publicación traducida automáticamente

Artículo escrito por Chinmoy Kalita y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *