Vous êtes sur la page 1sur 14

Prctica 3

Simulacin de redes con NS-2


Kenia Salazar Cruz
Universidad Autnoma Metropolitana
Posgrado en Ciencias y Tecnologas de la Informacin
Email: kenix.ksc@gmail.com

1 Introduccin
En esta prctica se da a conocer el simulador NS-2, el cual nos sirve para disear y observar
el comportamiento de una red, entonces, el resultado obtenido deber parecerse a lo que se
tendra en un ambiente real. Por ser el primer acercamiento con el simulador NS-2, se
proporcionaron tres cdigos para ejecutarlos y analizarlos; los cdigos se encuentran en los
anexos A, B y C. Existen diferentes formas de instalar NS-2, la opcin utilizada para esta
prctica es la de paso a paso. Por lo tanto, deben descargarse los paquetes necesarios para
la instalacin desde la pgina de NS 1.
.

2 Antecedentes
Una simulacin es la tcnica empleada para disear el modelo de una red, en la cual se
pueden hacer pruebas, manipular los elementos y medir parmetros para aproximar el
funcionamiento que se tendra en un ambiente real. Gran cantidad de investigaciones de
redes y protocolos de comunicacin son probadas en simuladores, sin embargo, NS-2 es el
ms utilizado, debido a que se pueden simular diversos tipos de protocolos, redes con
distintas topologas, modelos de trfico, entre otras caractersticas que lo hacen tener ventaja
sobre otros simuladores de red.
En la prctica se utilizan algunos protocolos que se definen a continuacin: TCP
(Protocolo de Control de Transmisin), es uno de los protocolos ms utilizado en Internet
debido a que ofrece un servicio confiable ya que existe una conexin previa a la transmisin;
UDP (Protocolo de Datagrama de Usuario), es un protocolo que no es orientado a conexin
por lo tanto no garantiza la entrega de paquetes en el receptor ya que no proporciona
deteccin de errores; CBR (Tasa de Bits Constantes), es utilizado en aplicaciones que
necesitan trfico constante durante un tiempo de conexin; FTP (Protocolo de transferencia
de archivos), hace la transferencia de archivos dentro de una red utilizando un cliente y un
servidor, esto lo lleva a cabo gracias a TCP.
NS-2 est conformado por dos lenguajes de programacin, OTCL y C++, El primero es
ms una interfaz con el usuario ya que es fcil su uso, pero C++ es empleado como la base
de programacin del simulador. NS-2 no cuenta con una herramienta para hacer grfica la
simulacin, por ello debe instalarse NAM, ya que se puede generar un archivo '.nam' el cual
permite hacer visual la simulacin.
No slo NS-2 puede hacer simulacin de redes, existen varios simuladores que
pueden hacerlo, sin embargo no todos los simuladores cuentan con las mismas
caractersticas y no todos son gratis. Esto se puede observar en la Tabla 1.

Tabla 1. Simuladores de redes


Simulador Gratuito Lenguaje de programacin S.O, Caractersticas

Simula protocolos de la capa de enlace,


encaminamiento, transporte, unicast, multicast,
NS 2 S TCL Unix, Linux y Windows aplicacin, adems permite simular nivel de enlace de
redes 802.11

Simula protocolos unicast, multicast, OLSR y AODV.


NS 3 S C++ Unix, Linux y Windows
Desarrolla modelos de simulacin de alto desempeo,
simula redes inalmbricas como Wi-Fi, WIMAX y LTE,
Es un simulador potente que permite dibujar y
configurar, mediante un entorno grfico, topologas de
red y simular su comportamiento, permite incorporar
GNS 3 S Java script Unix, Linux y Windows hosts a travs de VirtualBox a la topologa de la red
diseada. Simula niveles de enlace. Adems el trfico
que se genera en la simulacin puede ser capturado
por WireShark. Permite simular sistemas con software
Cisco.
Simula en las capas de enlace, red y transporte, hace
simulacinl de nodos y puntos de acceso de redes
CNET Network Simulator S C Unix, Linux, Mac WLAN que utilizan CSMA/CA, puede programarse en
Tcl/Tk pero muestra algunos problemas para visualizar
la simulacin.

Simula protocolos bsicos de Internet (IP, BGP4,


SSFNET S Java Unix, Linux y Windows OSPF, TCP, UDP), sockets, y varios modelos de
cliente y servidor Se incluyen pruebas de validacin
para protocolos. No todas las herramientas que emplea
son de libre distribucin.

Contiene modelos para simular protocolos como PPP,


Ethernet, IP, TCP, UDP, Mobile IPv6, 802.11., entre
otros. En comparacin con otros simuladores, su
OMNeT++ S C++ Unix, Linux, Mac y Windows arquitectura es relativamente sencilla. Todas las
simulaciones secomponen de objetos C++ que tienen
mtodos virtuales, privados y protegidos. Sus nodos
se componen de una combinacin de capas y colas,
siguiendo como gua el modelo TCP/IP

Trabaja en las capas fsica, enlace, red, transporte y


GloMoSim S C++ Unix, Linux y Windows aplicacin. Todos sus nodos siguen el modelo de
referencia TCP/IP. Los nodos mviles, poseen un
canal inalmbrico modelado con prdidas de
trayectoria y con tipo de propagacin.
Simula protocolos de la capa de aplicacin, tambin
hace enrutamiento bsico con RIP, OSPF y EIGRP.
Cisco Packet Tracer Semilibre Java Linux, Android 4.1+, Windows
Soporta los comandos de Cisco IOS. No es
recomendable para redes en produccin.
Soporta emulaciones de grandes redes a travs de
mltiples mquinas. Por lo tanto, distribuye el trabajo,
utiliza datos de la vida real para las simulaciones,
NCTuns Semilibre Java script Unix, Linux y Windows puede simular una gran variedad de protocolos como
CSMA/CD, RIP, OSPF, UDP,TCP HTTP, entre otros.
Tambin simula varias redes importante como Mesh,
GPRS, redes pticas, redes satelitales, etc

Simula una gran variedad de redes, utiliza libreras para


la simulacin de nodos con diferentes caractersticas y
la comunicacin de estos, utiliza multitecnologas en
las redes. Una de las principales caractersticas de
OPNET No Opnet (c/c++) Unix y Windows
OPNET es la movilidad de los nodos en la red. Soporta
VoIP. Es utilizado principalmente en compaas de
telecomunicaciones por sus altos costos en las
licencias.
3 Experimentacin
Para poder realizar la prctica se instal NS-2 de la forma paso a paso, primero se
descargaron los paquetes: tcl8.5.18-src.tar.gz, tk8.5.18-src.tar.gz, otcl-src-1.14.tar.gz, tclcl-
src-1.20.tar.gz, ns-src-2.35.tar.gz y nam-src-1.15.tar.gz. Despus, se compil y se instal
cada uno de los paquetes utilizando los comandos ./configure, make y make install. Una vez
instalados todos los paquetes necesarios, se escribi cada uno de los cdigos que se
proporcionaron para la prctica, en un archivo con extensin '.tcl'. Para poder ejecutar NS-2,
se abre una terminal ubicada en donde se encuentra el script y se escribe el comando 'ns
nombredelarchivo.tcl', en donde 'nombredelarchivo' es el nombre con el que se guard el
script. Despus de unos segundos, emerge una ventana de NAM. Al final se debe analizar
qu es lo que hace cada script.

4 Resultados
En la Figura 1., se observa una ventana de NAM la cual contiene la bienvenida a NAM, dice
por quien fue desarrollada la herramienta y los derechos de autor. Esta ventana emerge para
todas las simulaciones en NAM.

Figura 1. Ventana de bienvenida de NAM.


En la Figura 2, se muestra la ventana de NAM que emerge, aparte de la de
bienvenida, cuando se ejecuta el script 1 sobre NS-2.

Figura 2. Se observa la ventana de NAM vaca, pero mostrando los botones.

Por lo tanto al observar el script, se puede apreciar que lo nico que hace es generar
una ventana de NAM vaca, ya que no se especifican nodos, trfico o flujo para generar una
simulacin. Al ejecutar el script, emerge una ventana vaca de NAM en donde se muestran
los botones, es decir, este primer script slo nos muestra como crear una ventana de NAM y
como finalizar el proceso.
En la Figura 3, se muestra la ventana de NAM que emerge cuando se ejecuta el script
2 sobre NS-2. Aqu se puede observar la creacin de dos nodos y aunque no se ve, en el
script se establece que el enlace es duplex de 1Mb de ancho de banda y se genera un flujo
constante el cual comienza en el segundo 0.5 y se detiene a los 4.5 segundos, esto se
genera sobre UDP, por lo tanto no se generan ACKs (acuses de recibo), cada paquete es de
500 bytes. En la figura 4., se observa el flujo CBR que va del nodo cero al nodo uno y no se
generan ACKs.
Figura 3. Se observa la ventana de NAM generada por el script 2, en el segundo cero.

Figura 4. Se observa la ventana de NAM generada por el script 2, en el segundo 1.15.


En la figura 5, se muestra la ventana que emerge al ejecutar el tercer script en NS-2, y
se observan los seis nodos creados, en sus respectivos lugares sin embargo, no todos los
enlaces que se ven son duplex pues, en el script se eligi que el enlace del nodo 2 al nodo 3
y viceversa fueran simplex. Tambin se estableci que slo hay enlace del nodo cero al dos y
no del nodo dos al cero y que los colores de los flujos seran distintos; azul para TCP y rojo
para UDP. Adems, se eligi una versin TCP New Reno para el trfico CBR, es decir, se
generarn ACKs. Por otro lado, tambin se define un trfico UDP. En la Figura 6, se muestra
cada parte de la simulacin.

Figura 5. Se observa la ventana de NAM generada por el script 3, al ejecutarlo en NS-2.


Figura 6. Se observa la ventana de NAM generada por el script 3, al ejecutarlo en NS-2.

En la Figura 7, se modific el tamao del paquete en el script 2, de 500 ahora vale 1,500
bytes.

Figura 7. Se observa la ventana de NAM generada por el script 2 modificado.


5 Conclusiones
NS-2 es un simulador de redes, el cual nos facilita la comprensin de temas que
son grficos adems, de que cuenta con muchas caractersticas para simular casi
cualquier red, es gratuito y es de fcil instalacin, la programacin con la que se
hacen los scripts es sencilla debido a que TCL/Tk se maneja por secciones, i.e, si
se necesitan ms nodos en una red nicamente se debe ir a la seccin en donde
se declararon los nodos y crear uno nuevo sin necesidad de alterar todo el
programa. NAM, es una excelente herramienta grfica para poder visualizar la
simulacin.
Cabe mencionar que NS-2, genera un archivo '.tr' el cual contiene la
informacin de la simulacin y puede utilizarse para hacer grficas en las que se
observan los retardos, el throughput, entre otros. Por ello, si se desea saber el
retardo de propagacin y/o el tiempo de transmisin de un enlace, en el archivo
'tr' se tiene la informacin de cada nodo: qu envi o recibi, en qu segundo de
la simulacin lo hizo, qu tipo de flujo fue y a qu nodo se dirigi el paquete en
caso de haberlo transmitido.
En la Figura 7, se modific el tamao del paquete de 500 a 1500 bytes y se
observa que a los pocos paquetes enviados, se empiezan a perder paquetes de
una forma desmesurada, esto es porque la cola comienza a llenarse y empieza a
tirar paquetes.
7 Anexos

Anexo A.

### Prctica 3 Redes y Protocolos. Primer script


#Crea el objeto simulador
set ns [new Simulator]
#Abre un archivo '.nam'
set nf [open out.nam w]
$ns namtrace-all $nf

#Define el procedimiento para finalizar


proc finish {} {
global ns nf
$ns flush-trace
#Cierra el archivo
close $nf
#Ejecuta nam
exec nam out.nam &
exit 0
}
#Llama a la instruccin finalizar a los 5 segundos de la
simulacin

$ns at 5.0 "finish"


#Corre la simulacin
$ns run
Anexo B.
## Prctica 3 Redes y protocolos. Segundo Script

set ns [new Simulator] #Crea el objeto simulador

set nf [open out.nam w]#Crea un archivo nam

$ns namtrace-all $nf

proc finish {} {

global ns nf

$ns flush-trace

close $nf #Cierra nf

exec nam out.nam &#Ejecuta el archivo nam

exit 0

set n0 [$ns node]#Crea 2 nodos

set n1 [$ns node]

$ns duplex-link $n0 $n1 1Mb 10ms DropTail#Crea un enlace duplex

set udp0 [new Agent/UDP]#Crea un agente UDP el cual une al nodo 0

$ns attach-agent $n0 $udp0

set cbr0 [new Application/Traffic/CBR]# Crea trafico CBR y se junta con udp

$cbr0 set packetSize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

set null0 [new Agent/Null]

$ns attach-agent $n1 $null0# Crea un agente nulo y junta al nodo 1

#Conecta el trafico de la fuente con el agente nulo

$ns connect $udp0 $null0

$ns at 0.5 "$cbr0 start"#se elige en que segundo comenzara el trafico cbr

$ns at 4.5 "$cbr0 stop"

# Se llamar la finalizacion 5 segundos despus de comenzar la simulacin

$ns at 5.0 "finish"

#Ejecuta la simulacion

$ns run
Anexo C.
Este anexo se divide en tres partes, 1, 2 y 3. Las tres forman parte de un solo script.
ANEXO C.1

Set ns [new Simulator]

$ns color 1 Blue #Define los colores para el flujo en nam

$ns color 2 Red

set file1 [open out.tr w] #crea un archivo .tr

set winfile [open WinFile w]

$ns trace-all $file1

set file2 [open out.nam w] #crea el archivo .nam

$ns namtrace-all $file2

proc finish {} { #Define el proceso para finalizar

global ns file1 file2

$ns flush-trace

close $file1

close $file2

exec nam out.nam &

exit 0}

set n0 [$ns node] #Create six nodes

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

set n4 [$ns node]

set n5 [$ns node]

#Crea los enlaces entre nodos

$ns duplex-link $n0 $n2 2Mb 10ms DropTail

$ns duplex-link $n1 $n2 2Mb 10ms DropTail

$ns simplex-link $n2 $n3 0.3Mb 100ms DropTail

$ns simplex-link $n3 $n2 0.3Mb 100ms DropTail

$ns duplex-link $n3 $n4 0.5Mb 40ms DropTail

$ns duplex-link $n3 $n5 0.5Mb 30ms DropTail


ANEXO C.2

#Da la ubicacion de los nodos sobre nam

$ns duplex-link-op $n0 $n2 orient right-down

$ns duplex-link-op $n1 $n2 orient right-up

$ns simplex-link-op $n2 $n3 orient right

$ns simplex-link-op $n3 $n2 orient left

$ns duplex-link-op $n3 $n4 orient right-up

$ns duplex-link-op $n3 $n5 orient right-down

#Fija el tamao lmite de la cola entre el nodo 2-3

$ns queue-limit $n2 $n3 20

set tcp [new Agent/TCP/Newreno]#Crea una conexion tcp/newreno

$ns attach-agent $n0 $tcp

set sink [new Agent/TCPSink/DelAck]

$ns attach-agent $n4 $sink

$ns connect $tcp $sink

$tcp set fid_ 1

$tcp set window_ 8000

$tcp set packetSize_ 552

set ftp [new Application/FTP]#Genera una conexin ftp sobre tcp

$ftp attach-agent $tcp

$ftp set type_ FTP

#crea una conexion udp

set udp [new Agent/UDP]

$ns attach-agent $n1 $udp

set null [new Agent/Null]

$ns attach-agent $n5 $null

$ns connect $udp $null

$udp set fid_ 2


ANEXO C.3

#genera cbr sobre udp

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $udp

$cbr set type_ CBR

$cbr set packet_size_ 1000

$cbr set rate_ 0.01mb

$cbr set random_ false

$ns at 0.1 "$cbr start"

$ns at 1.0 "$ftp start"

$ns at 124.0 "$ftp stop"

$ns at 124.5 "$cbr stop"

#Toma el nombre de la fuente tcp y

#el archivo de salida de nam

proc plotWindow {tcpSource file} {

global ns

set time 0.1

set now [$ns now]

set cwnd [$tcpSource set cwnd_]

set wnd [$tcpSource set window_]

puts $file "$now $cwnd"

$ns at [expr $now+$time] "plotWindow $tcpSource $file"

$ns at 0.1 "plotWindow $tcp $winfile"

$ns at 125.0 "finish"

$ns run
6 Bibliografa

[1] The Network Simulator ns-2, disponible en <http://www.isi.edu/nsnam/ns/>,


consultado el 05 de noviembre de 2015.
[2] Stallings William, "Wireless Communications and Networks", Pearson Prentice Hall,
2a. Edicin, 2002, pp.75
[3] http://www-sop.inria.fr/members/Eitan.Altman/COURS-NS/n3.pdf, pp.8,9,19-22
[4] J. Postel, J. Reynolds ,FILE TRANSFER PROTOCOL (FTP), IETF, Octubre 1985,
disponible en <https://www.ietf.org/rfc/rfc959.txt>, consultado el 06 de noviembre de
2015.
[5] Pablo Gil,Gabriel J. Garcia, et.il., Computer Networks Virtualization with GNS3, 2014
IEEE Frontiers in Education Conference, University of Alicante, San Vicente del
Raspeig (Alicante), Spain, 2014. Disponible en <https://goo.gl/OPxye7>, consultado el
06 de noviembre de 2015.
[6] NCTUns 6.0 Network Simulator and Emulator, disponible en
<http://nsl.cs.nctu.edu.tw/NSL/nctuns.html>, consultado el 06 de noviembre de 2015.
[7] Velasco Ruben, Lista de simuladores de redes para virtualizar nuestra propia red,
Redes Zone, marzo 2014, disponible en <http://goo.gl/cxSsnM>, consultado el 06 de
noviembre de 2015.
[8] Lpez E. Ana M., Garca Q. Nicols, Simulacin de trfico en redes inalmbricas
mediante NS-2, Scientia et Technica Ao XVI, No. 44, Universidad Tecnolgica de
Pereira, abril 2010, disponible en <http://goo.gl/xglUWX>

Vous aimerez peut-être aussi