Sie sind auf Seite 1von 4

Practica de Laboratorio NS-3

1. Simular la siguiente topologa de red con el simulador


//
//
10.1.1.0
// n0 -------------- n1
n2
n3
n4
//
point-to-point |
|
|
|
//
================
//
LAN 10.1.2.0

2.
3.
4.
5.

Habilitar la traza con format ascii para la simulacin del punto 1.


Habilitar la traza con formato pcap para la simulacin del punto 1.
Construir una topologa wifi adhoc.
A partir del script de simulacin del punto 1, agregar una topologa wireless, como se
muestra en la figura siguiente.
//
//
Wifi 10.1.3.0
//
AP
// *
*
*
*
// |
|
|
|
10.1.1.0
// n5
n6
n7
n0 -------------- n1
n2
n3
n4
//
point-to-point |
|
|
|
//
================
//
LAN 10.1.2.0

6. Ejecutar en el simulador ns3 el script que se muestra ms abajo, donde se modela una
topologa estrella , la cual consiste en un conjunto de nodos al cual se comunican a travs
de un nodo para comunicar a otro nodo en el extremo.

//Librerias usadas de ns3


#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"
#include "ns3/netanim-module.h"
#include "ns3/point-to-point-layout-module.h"
using namespace ns3;
//Nombre del componente
NS_LOG_COMPONENT_DEFINE ("Topologia Estrella");
int main (int argc, char *argv[]) {
//Numero de nodos usados en la topologa
uint32_t numberOfNodes = 8;
//Primero se crea una topologia base
PointToPointHelper pointToPoint;
//Asignacion de velocidad de datos
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
//Asignacion de retraso
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
//Creamos una topologia estrella donde toma como parametros
//el numero de nodos y la topologia base pointopoint
PointToPointStarHelper star(numberOfNodes, pointToPoint);
//Se crea la configuracion de los nodos y apartir de que ip se asignaran
//a los nodos y que mascara de subred se utilizara
InternetStackHelper internet;
star.InstallStack(internet);
star.AssignIpv4Addresses( Ipv4AddressHelper("10.1.1.0","255.255.255.0"));
//Numero de puerto que utilizamos
uint16_t portNumber = 9;
//Se asigna una direccion cualquiera con un nmero de puerto
Address hub = InetSocketAddress( Ipv4Address::GetAny(), portNumber );
//Se hace la asignacion del protocolo de transporte y se pasa como
//parametro el objeto hub que contiene la direccion y puerto asignado
PacketSinkHelper packetSinkHelper( "ns3::TcpSocketFactory", hub );
//Apartir del objeto que tiene la informacin del protocolo se instala
//al nodo que sera el hub (nodo del centro) el protocolo de transporte
// y la direccin antes asignada con su puerto, en el cual este comenzara
// a generar trfico de datos al segundo 1.0 y se detiene al segundo 10

ApplicationContainer hubApp = packetSinkHelper.Install( star.GetHub() );


hubApp.Start( Seconds( 1.0 ) );
hubApp.Stop( Seconds( 10.0 ) );
//Se generara trafico con el protocolo de transporte TCP a una cierta
//direccion que mas adelante sera asignada
OnOffHelper onOffHelper( "ns3::TcpSocketFactory", Address() );
//Se les asigna el tiempo de trfico "OnTime" y tiempo de no trafico
//"OffTime"
onOffHelper.SetAttribute( "OnTime", StringValue
("ns3::ConstantRandomVariable[Constant=1]") );
onOffHelper.SetAttribute( "OffTime", StringValue
("ns3::ConstantRandomVariable[Constant=0]") );
//Se crea el objeto que contiene los nodos y simula la capa de aplicacion
ApplicationContainer nodeApps;
//Se iteran los nodos de la topologia
for (uint32_t i = 0; i < star.SpokeCount() ; i++){
//Se les asigna una direccion Ip y un puerto
AddressValue remoteAddress = AddressValue( InetSocketAddress (
star.GetHubIpv4Address(i), portNumber ) );
onOffHelper.SetAttribute( "Remote", remoteAddress );
//Se crea la capa de aplicacion que generara el trafico
nodeApps.Add( onOffHelper.Install( star.GetSpokeNode(i) ) );
}
//Se asigna el tiempo de trafico
nodeApps.Start( Seconds( 1.0 ) );
nodeApps.Stop( Seconds( 10.0 ) );
//Nos ayuda
//Ipv4GlobalRoutingHelper::PopulateRoutingTables();
//star.BoundingBox( 1, 1, 100, 100 );
//Nos crea un archivo animation.xml con la informacion de la simulacion
AnimationInterface anim("animation.xml");
//Se coloca el intervalo de tiempo de movimiento de la animacion
anim.SetMobilityPollInterval( Seconds( 1 ) );
//Se habilita la animacion de intercambio de datos
anim.EnablePacketMetadata(true);

//Se corre la simulacion


Simulator::Run();
//Se destruyen las referencias usadas
Simulator::Destroy();
return 0;
}

Das könnte Ihnen auch gefallen