PDF de programación - Extracción de resultados en ns-3

Imágen de pdf Extracción de resultados en ns-3

Extracción de resultados en ns-3gráfica de visualizaciones

Publicado el 10 de Agosto del 2017
630 visualizaciones desde el 10 de Agosto del 2017
441,0 KB
28 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

Extracción de resultados en ns-3

Outline

Tracing genérico

Generación de trazas pcap.

Generación de gráficas con gnuplot.

Flow Monitor
Flow Monitor

Simulación de Redes

Loja - 2014

2

Outline

Tracing genérico
Generación de trazas pcap.

• Ficheros con paquetes capturados por un dispositivo de red

en formato .pcap.

• Se pueden generar mediante el mecanismo de tracing

genérico o con trace helpers específicos.

• Pueden procesarse con software compatible como Wirsehark

o tcpdump.
o tcpdump.

Generación de gráficas con gnuplot.

• Ficheros ascii de salida de simulación con datos interpretables

por gnuplot escritos mediante el mecanismo de tracing
genérico.

• Clases específicas integradas (GnuplotHelper y Gnuplot).

Flow Monitor

• Clase específicas integradas
• Fichero de salida xml que pueden leerse con NetAnim o scripts

Simulación de Redes

Loja - 2014

3

Tracing genérico

Tracing en NS3. Trace Sources.

Señalizan eventos durante la simulación.
Proporcionan datos asociados al evento:

• Un paquete.
• Parámetros del modelo que han cambiado con el evento.
Cada objeto ns3 cuenta con una lista de trace sources

asociadas documentadas en la API.
• Ejemplo: Fragmento de la página de la clase YansWifiPhy en
Doxygen. Observar que las trace sources no son propias sino
Doxygen. Observar que las trace sources no son propias sino
heredadas (están definidas en la clase padre WifiPhy).

Simulación de Redes

Loja - 2014

Tracing en NS3. Trace Sources.

La información proporcionada por la trace source, se indica

en la lista de atributos como TracedCallback o como
TracedValue.
• Ejemplo: Fragmento de la página de la clase WifiPhy en

Doxygen. Se observan atributos tipo TracedCallback. Si se
desea utilizar la trace source PhyRxEnd, esta lista nos dice que
la información proporcionada es tipo <Ptr<const> Packet>

Simulación de Redes

Loja - 2014

5

6

Tracing en NS3. Trace Sources.

• Ejemplo: Fragmento de la página de la clase TcpNewReno en
Doxygen. Se observan atributos tipo TracedValue. Si se desea
utilizar la trace source m_Cwnd (Congestion Window), esta
lista nos dice que la información proporcionada es tipo
<uint32_t>

Simulación de Redes

Loja - 2014

Tracing en NS3. Trace Sinks.

Funciones que se ejecutan cuando se produce el
evento de la trace source a la que están conectadas.

Reciben como parámetro un objeto del tipo indicado por el

TracedCallback o TracedValue de su trace source.
• Si es TracedValue, la función debe incluir dos parámetros uno

para el valor antiguo y otro para el nuevo.

• Si es TracedCallback, sólo es necesario un parámetro.

Pueden incluir otros parámetros.
Pueden incluir otros parámetros.
No devuelven ningún valor (void).

Simulación de Redes

Loja - 2014

7

8

Tracing en NS3. Trace Sinks.

Ejemplo 1: Trace Sink para la Trace Source PhyRxEnd de

YansWifiPhy

Parámetro extra añadido por el usuario

static void
RxEndTraceSink (Ptr<PcapFileWrapper> file, Ptr<const Packet> p)
{
file->Write(Simulator::Now(), p);
}

Parámetro obligatorio para una trace
sink diseñada para conectar con la
trace source PhyRxEnd de la clase
YansWifiPhy. Indicado por el atributo
YansWifiPhy. Indicado por el atributo
TracedCallback correspondiente en
Doxygen.

Ejemplo 2: Trace Sink para la Trace Source

CongestionWindow de TcpNewReno

static void
Cwndchange(uint32_t oldCwnd, uint32_t newCwnd)
{
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd);
}

Dos parámetros (valor
antiguo, valor nuevo) puesto
que es TracedValue. Ningún
parámetro extra en este caso.

Simulación de Redes

Loja - 2014

9

Tracing en NS3. Conexión de Trace Sinks a Trace Sources.

Sin contexto:

• Realización de una llamada a la función miembro

TraceConnectWithoutContext sobre el objeto que contiene la
trace source.
• Parámetros:

o Nombre de la trace source.
o Llamada a MakeCallback con la referencia de la función trace sink.

• Ejemplo:

ns3TcpSocket->TraceConnectWithoutContext("CongestionWindow",
MakeCallback (&CwndChange));

o ns3TcpSocket es un puntero a la instancia del objeto que contiene la

trace source.

• Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (nodes.Get (0),

TcpSocketFactory::GetTypeId ());

o CongestionWindow es el nombre de la trace source.
o CwndChange es el nombre de la función trace sink que queremos

conectar a la trace source indicada.

Simulación de Redes

Loja - 2014

10

Tracing en NS3. Conexión de Trace Sinks a Trace Sources.

Con el subsistema Config:

• Todos los objetos en la simulación tienen asignado un

identificador, el Config Path. El esquema para construir el
config path de un objeto está indicado en la página Doxygen
de su clase.

• Para la conexión se utiliza la función Config::Connect. No es

necesario disponer de una variable con el objeto que contiene
la trace source, éste es directamente accesible con el config
path.

• Parámetros:

o Config path de la trace source que queremos conectar.
o Llamada a MakeCallback con la referencia de la función trace sink.

Simulación de Redes

Loja - 2014

11

Tracing en NS3. Conexión de Trace Sinks a Trace Sources.

Con el subsistema Config:

• Ejemplo:

Config::Connect ("/NodeList/0/$ns3::MobilityModel/CourseChange",
MakeCallback (&CourseChange));

o

o

La llamada a Config::Connect se realiza directamente, no como método
sobre una instancia de objeto.
/NodeList/0/$ns3::MobilityModel/CourseChange es el config path de la trace
source con la que se desea conectar.

o CourseChange es el nombre de la trace sink que queremos conectar con la
o CourseChange es el nombre de la trace sink que queremos conectar con la

trace source indicada.

Simulación de Redes

Loja - 2014

12

Tracing en NS3. Ejemplo 1 (I)

TcpNewReno

• Trace Source: CongestionWindow, indica un cambio el

tamaño de la ventana TCP.

• Protected Attributes:

TracedValue< uint32_t > m_Cwnd

• Trace Sink:

static void
Cwndchange(uint32_t oldCwnd, uint32_t newCwnd)
{
{
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd);
}

• Conexión a la trace source (en el programa principal):

Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (nodes.Get (0),
TcpSocketFactory::GetTypeId ());
ns3TcpSocket->TraceConnectWithoutContext("CongestionWindow",
MakeCallback (&CwndChange));

Simulación de Redes

Loja - 2014

13

Tracing en NS3. Ejemplo 1 (II)

TcpNewReno

• Resultado: cada vez que se notifica un cambio en la ventana
de congestión TCP, la trace sink escribe en el log el momento
de la simulación en que se ha producido el cambio y el valor
de la nueva ventana. La salida por pantalla de la simulación
contendrá líneas del tipo:

9.23434 8694
9.24266 8727
9.25098 8759
9.25098 8759
9.2593
8791
9.26762 8823
9.27594 8855
9.28426 8887
9.29258 8919
9.3009
8951
9.30922 8983
9.31754 9014

Simulación de Redes

Loja - 2014

14

Tracing en NS3. Ejemplo 2 (I)

MobilityModel

• Trace Source: CourseChange, indica un cambio en el vector

de posición o en el de velocidad de un nodo móvil.

• Private Attributes:

TracedCallback< Ptr< const MobilityModel > > m_courseChangeTrace

• Trace Sink:

void
CourseChange (std::string context, Ptr< const MobilityModel >
model)
model)
{
Vector position = model->GetPosition();
NS_LOG_UNCOND (context << "x= " << position.x << ", y = " <<
position.y);
}

Simulación de Redes

Loja - 2014

15

Tracing en NS3. Ejemplo 2 (II)

MobilityModel

• Conexión a la trace source (en el programa principal):

std::ostringstream oss;
oss <<
"/NodeList/" << wifiNodes.Get (0)->GetId () <<
"/$ns3::MobilityModel/CourseChange";
Config::Connect (oss.str (), MakeCallback (&CourseChange));

• Resultado: cada vez que se notifica un cambio de curso, la

trace sink escribe en el log el path de la trace source y la
trace sink escribe en el log el path de la trace source y la
nueva posición. La salida por pantalla de la simulación
contendrá líneas del tipo:

/NodeList/7/$ns3::MobilityModel/CourseChange x = 10, y = 0
/NodeList/7/$ns3::MobilityModel/CourseChange x = 9.06541, y = -0.355733
/NodeList/7/$ns3::MobilityModel/CourseChange x = 9.19429, y = 0.635927
/NodeList/7/$ns3::MobilityModel/CourseChange x = 8.9534, y = 1.60648

Simulación de Redes

Loja - 2014

16

Generación de ficheros pcap

Generación de trazas pcap
1. Trace Sources y Trace Sinks.

Consiste en utilizar el mecanismo de tracing para generar

archivos pcap.

Las trace sources que corresponden con eventos

relacionados con paquetes proporcionan el paquete
completo como información.
• Ejemplo: la trace source PhyRxEnd de WifiPhy notifica que un

paquete ha sido recibido correctamente. Este paquete es el
parámetro que se pasa a la trace sink conectada.
parámetro que se pasa a la trace sink conectada.

La clase PcapHelper proporciona una manera cómoda de
generar un archivo .pcap para Wireshark con el contenido
de estos paquetes.

Simulación de Redes

Loja - 2014

18

Generación de trazas pcap
1. Trace Sources y Trace Sinks.

Ejemplo: PointToPointNetDevice

• Trace Source: PhyRxEnd, indica que la recepción de un

paquete se ha completado.

• Private Attributes:

TracedCallback< Ptr< const Packet > > m_phyRxEndTrace

• Trace Sink:

static void
RxEnd (Ptr<PcapFileWrapper> file, Ptr<const Packet> p)
{
{
file->Write(Simulator::Now(), p);
}

• Conexión a la trace source (en el programa principal):

PcapHelper pcapHelper;
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile (“capture.pcap”,
std::ios::out, PcapHelper::DLT_PPP);
devices.Get (1)->TraceConnectWithoutContext(“PhyRxEnd”,
MakeBoundCallback (&RxEnd, file));

• Resultado: archivo “capture.pcap” (para Wireshark) con todos
los paquetes recibidos correctam
  • Links de descarga
http://lwp-l.com/pdf6411

Comentarios de: Extracción de resultados en ns-3 (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