From cb10ad2490706fc87f19ef556f36aee679887ad6 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Fri, 12 Apr 2019 14:48:47 +0200 Subject: Refactoring --- ns3-simulator/main.cc | 24 +++++++++++------------ ns3-simulator/modules/energy.cc | 2 +- ns3-simulator/modules/modules.hpp | 39 +++++++++++++++++++++++++++----------- ns3-simulator/modules/platform.cc | 30 ++++++++++++++--------------- ns3-simulator/simulator | Bin 267088 -> 271232 bytes 5 files changed, 56 insertions(+), 39 deletions(-) diff --git a/ns3-simulator/main.cc b/ns3-simulator/main.cc index 0c5c405..0e21632 100644 --- a/ns3-simulator/main.cc +++ b/ns3-simulator/main.cc @@ -3,6 +3,9 @@ NS_LOG_COMPONENT_DEFINE ("WIFISensorsSimulator"); +/** + * To get more details about functions please have a look at modules/modules.hpp + */ int main(int argc, char* argv[]){ uint32_t sensorsFrequency=1; @@ -20,22 +23,19 @@ int main(int argc, char* argv[]){ //LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); //LogComponentEnable("PacketSink", LOG_LEVEL_INFO); - // Setup Simulations - CloudInfos cloud=buildEdgeAndCloud(nbHop); - Cell c=createCell(sensorsNumber,cloud.first.Get(0)); - applyScenarios(c,sensorsPktSize,sensorsFrequency,cloud); // Send data from Sensors to Cloud - // setupEnergy(c); - Ipv4GlobalRoutingHelper::PopulateRoutingTables (); - - + // ---------- Setup Simulations ---------- + CloudInfos cloud=createCloud(nbHop,5,2); // Create cloud P2P node chain o--o--o--o--o + Cell cell=createCell(sensorsNumber,cloud.first.Get(0)); // Use first cloud node as Access Point + setupScenario(cell,cloud,sensorsPktSize,sensorsFrequency); // Send data from Sensors to Cloud + setupCellEnergy(cell); + // Don't forget the following + Ipv4GlobalRoutingHelper::PopulateRoutingTables (); - // Run simulators + // Run Simulations Simulator::Stop (Seconds (20)); Simulator::Run (); - Simulator::Destroy (); // Destroy - + Simulator::Destroy (); - return(0); } diff --git a/ns3-simulator/modules/energy.cc b/ns3-simulator/modules/energy.cc index b07c835..9c91bf4 100644 --- a/ns3-simulator/modules/energy.cc +++ b/ns3-simulator/modules/energy.cc @@ -1,7 +1,7 @@ #include "modules.hpp" -void setupEnergy(Cell cell){ +void setupCellEnergy(Cell cell){ NodeContainer nodes(cell.first.first,cell.first.second); NetDeviceContainer nodesNetDev(cell.second.first,cell.second.second); diff --git a/ns3-simulator/modules/modules.hpp b/ns3-simulator/modules/modules.hpp index fa6a255..9423866 100644 --- a/ns3-simulator/modules/modules.hpp +++ b/ns3-simulator/modules/modules.hpp @@ -26,31 +26,48 @@ #include "ns3/point-to-point-helper.h" // C++ library -#include -#include // To use std::pair -#include +#include // Why not ? +#include // To use std::pair +#include // To use std::setw using namespace ns3; -// Data types +// ---------- Data types ---------- typedef std::pair CellNodes; // Format (APNode, SensorsNodes) typedef std::pair CellNetDevices; // Format (APNetDev, SensorsNetDev) typedef std::pair Cell; typedef std::pair EndPoint; // Format (IP,Port) typedef std::pair CloudInfos; // Format (CloudHops,CloudEndPoint), here data sent to CloudEndPoint - // via CloudHops.Get(0) will flow throw all hops until the reaching the cloud + // via CloudHops.Get(0) will flow throw all hops until the reaching the cloud -// Platform functions +// ---------- platform.cc ---------- +/** + * Create a WIFI cell paltform composed of nbSensors sensors and ap as an access point + */ Cell createCell(uint32_t nbSensors, Ptr ap); -CloudInfos buildEdgeAndCloud(int nbOp); -void applyScenarios(Cell cell,int sensorsPktSize, int sensorsSendInterval, CloudInfos cloudInfos); +/** + * Build P2P network composed of nbHop hops (to simulate edge->cloud communications) + * Note: Cloud Servers are not considered here and completely ignored ! + */ +CloudInfos createCloud(int nbHop, uint32_t bandwidth, uint32_t latency); +/** + * Setup simulation scenario on the platforms. Sensors in cell will send packets of sensorsPktSize size every + * sensorsSensInterval second to the cloud using cloudInfos. + */ +void setupScenario(Cell cell, CloudInfos cloudInfos, int sensorsPktSize, int sensorsSendInterval); -// Energy functions -void setupEnergy(Cell cell); +// ---------- energy.cc ---------- +/* + * Configure WIFI energy module for cell + */ +void setupCellEnergy(Cell cell); -// Callbacks + +// ---------- callbacks.cc ---------- void PktReceived(std::string nodeName,Ptr< const Packet > packet, const Address &address); void EnergyUpdated(std::string nodeName,double oldValue, double newValue); + + #endif diff --git a/ns3-simulator/modules/platform.cc b/ns3-simulator/modules/platform.cc index 81d53cb..82c293d 100644 --- a/ns3-simulator/modules/platform.cc +++ b/ns3-simulator/modules/platform.cc @@ -58,7 +58,7 @@ Cell createCell(uint32_t nbSensors, Ptr ap){ /** * Install network stack and applications */ -void applyScenarios(Cell cell,int sensorsPktSize, int sensorsSendInterval, CloudInfos cloudInfos){ +void setupScenario(Cell cell, CloudInfos cloudInfos, int sensorsPktSize, int sensorsSendInterval){ NodeContainer ap=cell.first.first; NodeContainer sensors=cell.first.second; NetDeviceContainer apNetDev= cell.second.first; @@ -69,7 +69,7 @@ void applyScenarios(Cell cell,int sensorsPktSize, int sensorsSendInterval, Cloud // internet.Install (ap); internet.Install (sensors); Ipv4AddressHelper ipv4; - ipv4.SetBase ("10.0.0.0", "255.255.255.0"); + ipv4.SetBase ("10.0.0.0", "255.255.0.0"); Ipv4InterfaceContainer apInt,sensorsInt; apInt=ipv4.Assign(apNetDev); sensorsInt=ipv4.Assign(sensorsNetDev); @@ -85,22 +85,22 @@ void applyScenarios(Cell cell,int sensorsPktSize, int sensorsSendInterval, Cloud echoClientHelper.Install (sensors); } -CloudInfos buildEdgeAndCloud(int nbOp){ - - NodeContainer OpNodes; - OpNodes.Create(nbOp); +CloudInfos createCloud(int nbHop, uint32_t bandwidth, uint32_t latency){ + + NodeContainer HopNodes; + HopNodes.Create(nbHop); InternetStackHelper stack; - stack.Install(OpNodes); + stack.Install(HopNodes); - Ipv4Address cloudIP; - int cloudPort=99; - for(int i=0;i