Está en la página 1de 14

SIMULACIN DE PROTOCOLOS DE ENRUTAMIENTO

PARA REDES MVILES AD-HOC MEDIANTE


HERRRAMIENTA DE SIMULACIN NS-3

Primeros pasos con ns-3.


Ejemplos sencillos

Outline

Introduccin
Primer ejemplo de ns3. Enlace punto a punto.
Segundo ejemplo de ns3. Dos nodos inalmbricos en
configuracin ad hoc

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 2
ns-3
Qu podemos simular en ns3?

Redes inalmbricas 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 simulacin y las redes a


simular se usan scripts.
Se pueden desarrollar principalmente en dos lenguajes: CPP
y PYTHON

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 3
ns-3

Simulacin 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 DSR Routing
o Mobility
o Propagation models
o Wifi

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 4
ns-3
Estructura de un programa en ns3

Ejemplo. scratch-simulator.cc
#include "ns3/core-module.h" Cabecera tpica de C

NS_LOG_COMPONENT_DEFINE
("ScratchSimulator"); Se utiliza para habilitar/deshabilitar mensajes por
consola

using namespace ns3;

int main (int argc, char *argv[]) Programa principal


{
NS_LOG_UNCOND ("Scratch Simulator"); Se muestra el mensaje
Se ejecuta hasta que no haya un
Simulator::Run (); STOP o no haya eventos
Simulator::Destroy (); Se libera memoria.
}

Cmo se ejecuta?
./waf --run scratch/scratch-simulator
Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 5
ns-3

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);

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

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 6
ns-3
Mensajes de logs

Existen 7 niveles de mensajes de log:


LOG_ERROR Log error messages (associated macro:
NS_LOG_ERROR);
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);
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).

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 7
ns-3

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 haramos en una instalacin
de una red en un laboratorio

Nivel Clases de ns3 (ejemplos)


Aplicacin
UdpEchoClientHelper
Transporte
Red Ipv4AddressHelper
Enlace
PointToPointHelper
Fsico

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 8
ns-3
Empezamos con un enlace punto a punto (first.cc) I

Interfaz punto a punto


Servidor Cliente
10.0.0.2 Node 10.0.0.1
Enlace Enlace

Application Application
Protocol stack Protocol Stack
NetDevice Channel NetDevice

Interfaz PtP Protocol Interfaz


Punto a punto Punto a punto
Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 9
ns-3

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

Objetivo: dos nodos que se comunican a travs de una


aplicacin Cliente-Servidor.
El programa comienza incluyendo los mdulos 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);

Simulator::Run ();
Finaliza de la manera usual: Simulator::Destroy ();
Return 0;
Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 10
ns-3
Empezamos con un enlace punto a punto (first.cc) III

Definicin de los nodos:


NodeContainer nodes;
nodes.Create (2);

Definicin del canal punto a punto:


pointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
o Las clases Helper ayudan a crear elementos con valores por
defecto, slo 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);

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 11
ns-3

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

Nivel de aplicacin.
o Llamada a la funcin UdpEchoServerApplication y
UdpEchoClientApplication
o Utilizacin 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 dcimo de la
simulacin y se usa el puerto nmero 9.

UdpEchoServerHelper echoServer (9); Puerto del servidor


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

La aplicacin del servidor se instala en el nodo 1

serverApps.Start (Seconds (1.0));


serverApps.Stop (Seconds (10.0));

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 12
ns-3
Empezamos con un enlace punto a punto (first.cc) VI

Nivel de aplicacin. El cliente.


o El cliente har peticiones al puerto 9 de la IP del nodo 1, slo har
una peticin con un paquete de 1024 bytes. El cliente se instalar
en el nodo 0.

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


El Helper para la configuracin del cliente requiere dos parmetros:
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 parmetros

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


Se instala sobre el nodo 0
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));
Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 13
ns-3

Cmo se ejecuta y que resultados obtenemos?

Se ejecuta con la siguiente instruccin:


./waf --run scratch/first

Resultados: Mensajes de log a nivel de aplicacin.

'build' finished successfully (55.759s)


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

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 14
ns-3
Ficheros de resultados I

Hay que aadir ms cdigo para obtener resultados que se


puedan procesar.
Para conseguir un fichero de traza similar a los de ns2 se
aade el siguiente cdigo:
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.
+ 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)

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 15
ns-3

Ficheros de resultados II

Cada lnea se corresponde con un evento.


En este caso se estn monitorizando los eventos que
ocurren en las colas de transmisin de todos los
dispositivos punto a punto.

+
2
/NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
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)

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 16
ns-3
Ficheros de resultados III. Ficheros pcap

Existen helper que pueden crear ficheros de traza en el


formato .pcap
Se crea un fichero para cada interfaz que se nombran de la
forma myfirst-0-0.pcap y myfirst-1-0.pcap
pointToPoint.EnablePcapAll (myfirst");

Se pueden leer con:


Wireshark
Desde consola con:
$ tcpdump -nn -tt -r myfirst-0-0.pcap
reading from file myfirst-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.514648 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024

$ tcpdump -nn -tt -r myfirst-1-0.pcap


reading from file myfirst-1-0.pcap, link-type PPP (PPP)
2.257324 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.257324 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 17
ns-3

Simulando redes ad hoc

Respecto al ejemplo anterior, las redes ad hoc mviles


tienen varias peculiaridades:
Los nodos se unen a un medio compartido.
Los protocolos de encaminamiento son especficos: OLSR,
AODV,..etc.
Los nodos son mviles y se mueven dentro de un espacio

La configuracin se puede dividir en cuatro pasos.


Creacin de los nodos inalmbricos ad hoc y configuracin del
canal
Movilidad
Instalacin de la pila de protocolos, asignacin de direcciones
y establecimiento del protocolo de enrutamiento.
Configuracin de las aplicaciones que generan el flujo de datos

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 18
ns-3
Dos nodos fijos inalmbricos ad hoc (wifi-quiet-adhoc.cc) I

Objetivo: dos nodos ad hoc que se comunican a travs de


una aplicacin Cliente-Servidor.
Respecto al ejemplo anterior cambiamos los nodos conectados
mediante un enlace punto a punto a nodos inalmbricos
comunicndose mediante IEEE802.11

Se aaden nuevas libreras:


#include "ns3/mobility-module.h
#include "ns3/wifi-module.h"
Activar las trazas de los dispositivos WiFi
WifiHelper wifi;
if (verbose)
{
wifi.EnableLogComponents (); // Turn on all Wifi logging
}
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 19
ns-3

Dos nodos fijos inalmbricos ad hoc (wifi-quiet-adhoc.cc) II

Creacin de los nodos y eleccin de su capa fsica y MAC


NodeContainer nodes;
nodes.Create (2);

YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();


NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode",StringValue (phyMode),
"ControlMode",StringValue (phyMode));
wifiMac.SetType ("ns3::AdhocWifiMac"); // Set it to adhoc mode

YansWifiChannelHelper wifiChannel;
wifiChannel.SetPropagationDelay
("ns3::ConstantSpeedPropagationDelayModel");
wifiChannel.AddPropagationLoss
("ns3::FixedRssLossModel","Rss",DoubleValue (rss));
wifiPhy.SetChannel (wifiChannel.Create ());
NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, nodes);

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 20
ns-3
Dos nodos fijos inalmbricos ad hoc (wifi-quiet-adhoc.cc) III

Movilidad. En este caso los nodos son fijos.

MobilityHelper mobility;

//Posicin inicial
Ptr<ListPositionAllocator> positionAlloc =
CreateObject<ListPositionAllocator> ();
positionAlloc->Add (Vector (0.0, 0.0, 0.0));
positionAlloc->Add (Vector (5.0, 0.0, 0.0));
mobility.SetPositionAllocator (positionAlloc);

//Eleccin del modelo de movilidad


mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");

mobility.Install (c);

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 21
ns-3

Dos nodos fijos inalmbricos ad hoc (wifi-quiet-adhoc.cc) IV

Trazas.
AsciiTraceHelper ascii;
wifiPhy.EnableAsciiAll (ascii.CreateFileStream ("wifi-quiet-adhoc.tr"));
wifiPhy.EnablePcap ("wifi-quiet-adhoc", devices);

Ejecutar
./waf --run scratch/wifi-quiet-adhoc

Resultados. Mensajes de log


'build' finished successfully (14.872s)
At time 2s client sent 1024 bytes to 10.1.1.2 port 9
At time 2.0201s server received 1024 bytes from 10.1.1.1 port 49153
At time 2.0201s server sent 1024 bytes to 10.1.1.1 port 49153
At time 2.03696s client received 1024 bytes from 10.1.1.2 port 9

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 22
ns-3
Ficheros de resultados I

Fichero .tr
t 2.009 /NodeList/0/DeviceList/0/$ns3::WifiNetDevice/Phy/State/Tx
ns3::WifiMacHeader (DATA ToDS=0, FromDS=0, MoreFrag=0, Retry=0,
MoreData=0 Duration/ID=0usDA=ff:ff:ff:ff:ff:ff, SA=00:00:00:00:00:01,
BSSID=00:00:00:00:00:01, FragNumber=0, SeqNumber=0) ns3::LlcSnapHeader
(type 0x806) ns3::ArpHeader (request source mac: 00-06-00:00:00:00:00:01
source ipv4: 10.1.1.1 dest ipv4: 10.1.1.2) ns3::WifiMacTrailer ()
r 2.0097 /NodeList/1/DeviceList/0/$ns3::WifiNetDevice/Phy/State/RxOk
ns3::WifiMacHeader (DATA ToDS=0, FromDS=0, MoreFrag=0, Retry=0,
MoreData=0 Duration/ID=0usDA=ff:ff:ff:ff:ff:ff, SA=00:00:00:00:00:01,
BSSID=00:00:00:00:00:01, FragNumber=0, SeqNumber=0) ns3::LlcSnapHeader
(type 0x806) ns3::ArpHeader (request source mac: 00-06-00:00:00:00:00:01
source ipv4: 10.1.1.1 dest ipv4: 10.1.1.2) ns3::WifiMacTrailer ()

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 23
ns-3

Ficheros de resultados II

$ tcpdump -nn -tt -r wifi-quiet-adhoc-0-0.pcap


reading from file wifi-quiet-adhoc-0-0.pcap, link-type IEEE802_11_RADIO (802.11 plus
radiotap header)
2.009000 2009000us tsft 1.0 Mb/s 2412 MHz 11b ARP, Request who-has 10.1.1.2
(ff:ff:ff:ff:ff:ff) tell 10.1.1.1, length 28
2.010458 2010458us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise ARP, Reply
10.1.1.2 is-at 00:00:00:00:00:02, length 28
2.010468 2010468us tsft 1.0 Mb/s 2412 MHz 11b Acknowledgment
RA:00:00:00:00:00:02
2.011202 2011202us tsft 1.0 Mb/s 2412 MHz 11b IP 10.1.1.1.49153 > 10.1.1.2.9: UDP,
length 1024
2.020412 2020412us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise
Acknowledgment RA:00:00:00:00:00:01
2.026802 2026802us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise ARP,
Request who-has 10.1.1.1 (ff:ff:ff:ff:ff:ff) tell 10.1.1.2, length 28
2.026852 2026852us tsft 1.0 Mb/s 2412 MHz 11b ARP, Reply 10.1.1.1 is-at
00:00:00:00:00:01, length 28
2.027870 2027870us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise
Acknowledgment RA:00:00:00:00:00:01
2.036956 2036956us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise IP
10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
2.036966 2036966us tsft 1.0 Mb/s 2412 MHz 11b Acknowledgment
RA:00:00:00:00:00:02

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 24
ns-3
Ficheros de resultados III

$ tcpdump -nn -tt -r wifi-quiet-adhoc-1-0.pcap


reading from file wifi-quiet-adhoc-1-0.pcap, link-type IEEE802_11_RADIO (802.11 plus
radiotap header)
2.009704 2009704us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise ARP,
Request who-has 10.1.1.2 (ff:ff:ff:ff:ff:ff) tell 10.1.1.1, length 28
2.009754 2009754us tsft 1.0 Mb/s 2412 MHz 11b ARP, Reply 10.1.1.2 is-at
00:00:00:00:00:02, length 28
2.010772 2010772us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise
Acknowledgment RA:00:00:00:00:00:02
2.020098 2020098us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise IP
10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.020108 2020108us tsft 1.0 Mb/s 2412 MHz 11b Acknowledgment
RA:00:00:00:00:00:01
2.026098 2026098us tsft 1.0 Mb/s 2412 MHz 11b ARP, Request who-has 10.1.1.1
(ff:ff:ff:ff:ff:ff) tell 10.1.1.2, length 28
2.027556 2027556us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise ARP, Reply
10.1.1.1 is-at 00:00:00:00:00:01, length 28
2.027566 2027566us tsft 1.0 Mb/s 2412 MHz 11b Acknowledgment
RA:00:00:00:00:00:01
2.028060 2028060us tsft 1.0 Mb/s 2412 MHz 11b IP 10.1.1.2.9 > 10.1.1.1.49153: UDP,
length 1024
2.037270 2037270us tsft 1.0 Mb/s 2412 MHz 11b -79dB signal -101dB noise
Acknowledgment RA:00:00:00:00:00:02

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 25
ns-3

Mensajes de log

./waf --run scratch/wifi-quiet-adhoc verbose=1


WifiPhy:GetPayloadDurationMicroSeconds(1088, DsssRate1Mbps)
size=1088 mode=DsssRate1Mbps rate=1000000
DcfManager:NotifyTxStartNow(0x8710dc8, +8896000.0ns)
+2028060080.0ns 0x8710dc8 tx start for +8896000.0ns
DcfManager:UpdateBackoff(0x8710dc8)
DcfManager:GetBackoffStartFor(0x8710dc8, 0x872be40)
DcfManager:GetAccessGrantStart(0x8710dc8)
DcfManager:MostRecent(0x8710dc8, +2027566080.0ns, +10000.0ns, +2027880080.0ns,
+2009714016.0ns, +2037306080.0ns, +10000.0ns, +10000.0ns)
access grant start=+2037306080.0ns, rx access start=+2027566080.0ns, busy access
start=+10000.0ns, tx access start=+2027880080.0ns, nav access start=+2009714016.0ns
DcfManager:MostRecent(0x8710dc8, +2028060080.0ns, +2037346080.0ns)
DcfManager:GetBackoffStartFor(0x8710dc8, 0x86f0908)
DcfManager:GetAccessGrantStart(0x8710dc8)
DcfManager:MostRecent(0x8710dc8, +2027566080.0ns, +10000.0ns, +2027880080.0ns,
+2009714016.0ns, +2037306080.0ns, +10000.0ns, +10000.0ns)
access grant start=+2037306080.0ns, rx access start=+2027566080.0ns, busy access
start=+10000.0ns, tx access start=+2027880080.0ns, nav access start=+2009714016.0ns
DcfManager:MostRecent(0x8710dc8, +2027920080.0ns, +2037346080.0ns)
Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 26
ns-3
References

http://www.nsnam.org/docs/release/3.19/doxygen/
Ns-3 tutorial.
http://www.nsnam.org/docs/release/3.19/tutorial/singleht
ml/index.html

Simulacin de Protocolos de
Enrutamiento para MANET con Loja - 2014 27
ns-3

También podría gustarte