Practica de Laboratorio NS-3 1. Simular la siguiente topología 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 simulación del punto 1. Habilitar la traza con formato pcap para la simulación del punto 1. Construir una topología wifi adhoc. A partir del script de simulación del punto 1, agregar una topología 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 más abajo, donde se modela una topología estrella , la cual consiste en un conjunto de nodos al cual se comunican a través 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 topología 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 número 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 información del protocolo se instala //al nodo que sera el hub (nodo del centro) el protocolo de transporte // y la dirección antes asignada con su puerto, en el cual este comenzara // a generar tráfico 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 tráfico "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; }
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.