PDF de programación - Primeros pasos con ns-3. Ejemplos sencillos

Imágen de pdf Primeros pasos con ns-3. Ejemplos sencillos

Primeros pasos con ns-3. Ejemplos sencillosgráfica de visualizaciones

Publicado el 10 de Agosto del 2017
2.214 visualizaciones desde el 10 de Agosto del 2017
298,8 KB
14 paginas
Creado hace 10a (29/01/2014)
SIMULACIÓN DE PROTOCOLOS DE ENRUTAMIENTO

PARA REDES MÓVILES AD-HOC MEDIANTE

HERRRAMIENTA DE SIMULACIÓN NS-3

Primeros pasos con ns-3.

Ejemplos sencillos

Outline



Introducción
Primer ejemplo de ns3. Enlace punto a punto.


Segundo ejemplo de ns3. Dos nodos inalámbricos en

configuración ad hoc

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

2

¿Qué podemos simular en ns3?

Redes inalámbricas como WIFI, WIMAX, LTE, redes de sensores,

redes ad hoc

Redes fijas basadas en TCP/IP
Distintas aplicaciones y protocolos

Para definir los escenarios de simulación y las redes a

simular se usan scripts.

Se pueden desarrollar principalmente en dos lenguajes: CPP

y PYTHON

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

Simulación de redes ad hoc

Respecto a redes de ad hoc se debe profundizar en los

siguiente modelos:

o Antenna Module
o Optimized Link State Routing (OLSR)
o Ad Hoc On-Demand Distance Vector (AODV)
o DSDV Routing
o DSDV Routing
o DSR Routing
o Mobility
o Propagation models
o Wifi

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

3

4

Estructura de un programa en ns3

Ejemplo. scratch-simulator.cc
#include "ns3/core-module.h"

Cabecera típica de C

NS_LOG_COMPONENT_DEFINE
("ScratchSimulator");

using namespace ns3;

int main (int argc, char *argv[])
{

NS_LOG_UNCOND ("Scratch Simulator");

Simulator::Run ();
Simulator::Destroy ();

}

Se utiliza para habilitar/deshabilitar mensajes por
consola

Programa principal

Se muestra el mensaje

Se ejecuta hasta que no haya un
STOP o no haya eventos

Se libera memoria.

¿Cómo se ejecuta?

./waf --run scratch/scratch-simulator

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

Mensajes de “logs”

LOG functionality: macros which allow developers to send

information to the std::clog output stream.
• All logging messages are disabled by default.
• To enable selected logging messages, use the

ns3::LogComponentEnable funtion or use the NS_LOG
environment variable

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);

o This will result in the application printing out messages as packets

are sent and received during the simulation.

o $ export NS_LOG=UdpEchoClientApplication=level_all

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

5

6

Mensajes de “logs”

Existen 7 niveles de mensajes de log:

• LOG_ERROR — Log

NS_LOG_ERROR);

error messages

(associated macro:

• LOG_WARN — Log warning messages

(associated macro:

NS_LOG_WARN);

• LOG_DEBUG — Log relatively rare, ad-hoc debugging messages

(associated macro: NS_LOG_DEBUG);

• LOG_INFO — Log informational messages about program progress

(associated macro: NS_LOG_INFO);
(associated macro: NS_LOG_INFO);

• LOG_FUNCTION — Log a message describing each function called (two
associated macros: NS_LOG_FUNCTION, used for member functions,
and NS_LOG_FUNCTION_NOARGS, used for static functions);

• LOG_LOGIC – Log messages describing logical flow within a function

(associated macro: NS_LOG_LOGIC);

• LOG_ALL — Log everything mentioned above (no associated macro).
• NS_LOG_UNCOND – Log the associated message unconditionally (no

associated log level).

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

Modelo de ns3

Con ns3 se crean un dispositivos o nodos que puede tener

distintas interfaces, aplicaciones, direcciones IP, etc
• El proceso es muy parecido al que haríamos en una instalación

de una red en un laboratorio

Nivel

Clases de ns3 (ejemplos)

UdpEchoClientHelper
UdpEchoClientHelper

Ipv4AddressHelper

PointToPointHelper

Aplicación
Transporte
Red
Enlace
Físico

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

7

8

Empezamos con un enlace punto a punto (first.cc) I

Servidor
10.0.0.2
Enlace

Application
Protocol stack
NetDevice
Interfaz
Punto a punto

Interfaz punto a punto

Node
Node

Cliente
10.0.0.1
Enlace

Channel

PtP Protocol

Application
Protocol Stack
NetDevice

Interfaz
Punto a punto

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

9

Empezamos con un enlace punto a punto (first.cc) II

Objetivo: dos nodos que se comunican a través de una

aplicación Cliente-Servidor.
• El programa comienza incluyendo los módulos que se van a

utilizar:

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"

using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

• Finaliza de la manera usual:

Simulator::Run ();
Simulator::Destroy ();
Return 0;

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

10

Empezamos con un enlace punto a punto (first.cc) III

• Definición de los nodos:

NodeContainer nodes;
nodes.Create (2);

• Definición del canal punto a punto:

pointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

o Las clases Helper ayudan a crear elementos con valores por
defecto, sólo hay que cambiar estos valores con SetAttribute

• Una vez definido el enlace, se crean los interfaces y se unen a

los nodos

NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

11

Empezamos con un enlace punto a punto (first.cc) V

• Nivel de aplicación.

o Llamada a la función UdpEchoServerApplication y

UdpEchoClientApplication

o Utilización de los Helper para configurar estas funciones.

• El servidor. El servidor se encuentra en el nodo 1, estará

activo desde el primer segundo hasta el décimo de la
simulación y se usa el puerto número 9.

UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));

Puerto del servidor

La aplicación del servidor se instala en el nodo 1

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

12

Empezamos con un enlace punto a punto (first.cc) VI

• Nivel de aplicación. El cliente.

o El cliente hará peticiones al puerto 9 de la IP del nodo 1, sólo hará
una petición con un paquete de 1024 bytes. El cliente se instalará
en el nodo 0.

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);

El Helper para la configuración del cliente requiere dos parámetros:
La interfaz destino y el puerto destino

echoClient.SetAttribute ("MaxPackets", UintegerValue (nPackets));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

Se dan valores a ciertos parámetros

ApplicationContainer clientApps = echoClient.Install(nodes.Get(0));

clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));

Se instala sobre el nodo 0

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

13

¿Cómo se ejecuta y que resultados obtenemos?

Se ejecuta con la siguiente instrucción:

./waf --run scratch/first

Resultados: Mensajes de log a nivel de aplicación.

'build' finished successfully (55.759s)
At time 2s client sent 1024 bytes to 10.1.1.2 port 9
At time 2s client sent 1024 bytes to 10.1.1.2 port 9
At time 2.25732s server received 1024 bytes from 10.1.1.1 port 49153
At time 2.25732s server sent 1024 bytes to 10.1.1.1 port 49153
At time 2.51465s client received 1024 bytes from 10.1.1.2 port 9

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

14

Ficheros de resultados I

Hay que añadir más código para obtener resultados que se

puedan procesar.

Para conseguir un fichero de traza similar a los de ns2 se

añade el siguiente código:

AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("first.tr"));

Con el helper AsciitraceHelper se pueden registrar en un

fichero de datos las trazas de los paquetes.
fichero de datos las trazas de los paquetes.

+ 2 /NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
ns3::PppHeader (Point-to-Point Protocol: IP (0x0021)) ns3::Ipv4Header (tos 0x0
DSCP Default ECN Not-ECT ttl 64 id 0 protocol 17 offset (bytes) 0 flags [none]
length: 1052 10.1.1.1 > 10.1.1.2) ns3::UdpHeader (length: 1032 49153 > 9) Payload
(size=1024)
r 2.25732 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx
ns3::Ipv4Header (tos 0x0 DSCP Default ECN Not-ECT ttl 64 id 0 protocol 17 offset
(bytes) 0 flags [none] length: 1052 10.1.1.1 > 10.1.1.2) ns3::UdpHeader (length:
1032 49153 > 9) Payload (size=1024)

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

15

Ficheros de resultados II

Cada línea se corresponde con un evento.
En este caso se están monitorizando los eventos que

ocurren en las colas de transmisión de todos los
dispositivos punto a punto.

+
2
/NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
ns3::PppHeader (
ns3::PppHeader (
Point-to-Point Protocol: IP (0x0021))
ns3::Ipv4Header (

tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
length: 1052 10.1.1.1 > 10.1.1.2)
ns3::UdpHeader ( length: 1032 49153 > 9)
Payload (size=1024)

Simulación de Protocolos de
Enrutamiento para MANET con
ns-3

Loja - 2014

16

Ficheros de resultados III. Ficheros pcap

Existen helper que pueden crear ficheros de traza en el

f
  • Links de descarga
http://lwp-l.com/pdf6408

Comentarios de: Primeros pasos con ns-3. Ejemplos sencillos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad