Publicado el 10 de Agosto del 2017
2.400 visualizaciones desde el 10 de Agosto del 2017
298,8 KB
14 paginas
Creado hace 11a (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
Comentarios de: Primeros pasos con ns-3. Ejemplos sencillos (0)
No hay comentarios