int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); NodeContainer c; c.Create (10000); MobilityHelper mobility; mobility.SetPositionAllocator ("ns3::RandomDiscPositionAllocator", "X", StringValue ("100.0"), "Y", StringValue ("100.0"), "Rho", StringValue ("ns3::UniformRandomVariable[Min=0|Max=30]")); mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (c); Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange", MakeCallback (&CourseChange)); Simulator::Stop (Seconds (100.0)); Simulator::Run (); Simulator::Destroy (); return 0; }
static void PrintSizeVsRange (int argc, char *argv[]) { double targetPsr = 0.05; struct PsrExperiment::Input input; CommandLine cmd; cmd.AddValue ("TxPowerLevel", "The power level index to use to send each packet", input.txPowerLevel); cmd.AddValue ("TxMode", "The mode to use to send each packet", input.txMode); cmd.AddValue ("NPackets", "The number of packets to send", input.nPackets); cmd.AddValue ("TargetPsr", "The psr needed to assume that we are within range", targetPsr); cmd.Parse (argc, argv); for (input.packetSize = 10; input.packetSize < 3000; input.packetSize += 40) { double precision = 0.1; double low = 1.0; double high = 200.0; while (high - low > precision) { double middle = low + (high - low) / 2; struct PsrExperiment::Output output; PsrExperiment experiment; input.distance = middle; output = experiment.Run (input); double psr = CalcPsr (output, input); if (psr >= targetPsr) { low = middle; } else { high = middle; } } std::cout << input.packetSize << " " << input.distance << std::endl; } }
int main(int argc, char* argv[]) { // Setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::QueueBase::MaxPackets", UintegerValue(10)); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating 3x3 topology PointToPointHelper p2p; PointToPointGridHelper grid(3, 3, p2p); grid.BoundingBox(100, 100, 200, 200); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.InstallAll(); // Set BestRoute strategy ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route"); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); // Getting containers for the consumer/producer Ptr<Node> producer = grid.GetNode(2, 2); NodeContainer consumerNodes; consumerNodes.Add(grid.GetNode(0, 0)); // Install NDN applications std::string prefix = "/prefix"; ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); consumerHelper.SetPrefix(prefix); consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second consumerHelper.Install(consumerNodes); ndn::AppHelper producerHelper("ns3::ndn::Producer"); producerHelper.SetPrefix(prefix); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.Install(producer); // Add /prefix origins to ndn::GlobalRouter ndnGlobalRoutingHelper.AddOrigins(prefix, producer); // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main(int argc, char* argv[]) { CommandLine cmd; cmd.Parse(argc, argv); AnnotatedTopologyReader topologyReader("", 1); topologyReader.SetFileName("src/ndnSIM/examples/topologies/topo-tree.txt"); topologyReader.Read(); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.SetOldContentStore("ns3::ndn::cs::Lru", "MaxSize", "100"); // default ContentStore parameters ndnHelper.InstallAll(); // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/best-route"); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); // Getting containers for the consumer/producer Ptr<Node> consumers[4] = {Names::Find<Node>("leaf-1"), Names::Find<Node>("leaf-2"), Names::Find<Node>("leaf-3"), Names::Find<Node>("leaf-4")}; Ptr<Node> producer = Names::Find<Node>("root"); for (int i = 0; i < 4; i++) { ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); consumerHelper.SetAttribute("Frequency", StringValue("10")); // 100 interests a second // Each consumer will express the same data /root/<seq-no> consumerHelper.SetPrefix("/root"); ApplicationContainer app = consumerHelper.Install(consumers[i]); app.Start(Seconds(0.01 * i)); } ndn::AppHelper producerHelper("ns3::ndn::Producer"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); // Register /root prefix with global routing controller and // install producer that will satisfy Interests in /root namespace ndnGlobalRoutingHelper.AddOrigins("/root", producer); producerHelper.SetPrefix("/root"); producerHelper.Install(producer); // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(20.0)); ndn::CsTracer::InstallAll("cs-trace.txt", Seconds(1)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); // // We are interacting with the outside, real, world. This means we have to // interact in real-time and therefore means we have to use the real-time // simulator and take the time to calculate checksums. // GlobalValue::Bind ("SimulatorImplementationType", StringValue ("ns3::RealtimeSimulatorImpl")); GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true)); // // Create two ghost nodes. The first will represent the virtual machine host // on the left side of the network; and the second will represent the VM on // the right side. // NodeContainer nodes; nodes.Create (2); // // Use a CsmaHelper to get a CSMA channel created, and the needed net // devices installed on both of the nodes. The data rate and delay for the // channel can be set through the command-line parser. For example, // // ./waf --run "tap=csma-virtual-machine --ns3::CsmaChannel::DataRate=10000000" // CsmaHelper csma; NetDeviceContainer devices = csma.Install (nodes); // // Use the TapBridgeHelper to connect to the pre-configured tap devices for // the left side. We go with "UseBridge" mode since the CSMA devices support // promiscuous mode and can therefore make it appear that the bridge is // extended into ns-3. The install method essentially bridges the specified // tap to the specified CSMA device. // TapBridgeHelper tapBridge; tapBridge.SetAttribute ("Mode", StringValue ("UseBridge")); tapBridge.SetAttribute ("DeviceName", StringValue ("tap-left")); tapBridge.Install (nodes.Get (0), devices.Get (0)); // // Connect the right side tap to the right side CSMA device on the right-side // ghost node. // tapBridge.SetAttribute ("DeviceName", StringValue ("tap-right")); tapBridge.Install (nodes.Get (1), devices.Get (1)); // // Run the simulation for ten minutes to give the user time to play around // Simulator::Stop (Seconds (600.)); Simulator::Run (); Simulator::Destroy (); }
int main(int argc, char* argv[]) { CommandLine cmd; cmd.Parse(argc, argv); AnnotatedTopologyReader topologyReader("", 1); topologyReader.SetFileName("src/ndnSIM/examples/topologies/topo-tree.txt"); topologyReader.Read(); // Install CCNx stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.InstallAll(); // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/best-route"); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); // Getting containers for the consumer/producer Ptr<Node> consumers[4] = {Names::Find<Node>("leaf-1"), Names::Find<Node>("leaf-2"), Names::Find<Node>("leaf-3"), Names::Find<Node>("leaf-4")}; Ptr<Node> producer = Names::Find<Node>("root"); ndn::AppHelper consumerHelper("ns3::ndn::ConsumerBatches"); consumerHelper.SetPrefix("/root"); consumerHelper.SetAttribute("Batches", StringValue("1s 1 10s 1")); consumerHelper.Install(consumers[0]); consumerHelper.SetAttribute("Batches", StringValue("11s 1")); consumerHelper.Install(consumers[1]); consumerHelper.SetAttribute("Batches", StringValue("11s 1")); consumerHelper.Install(consumers[2]); ndn::AppHelper producerHelper("ns3::ndn::Producer"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); // Register /root prefix with global routing controller and // install producer that will satisfy Interests in /root namespace ndnGlobalRoutingHelper.AddOrigins("/root", producer); producerHelper.SetPrefix("/root"); producerHelper.Install(producer).Start(Seconds(9)); // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(20.0)); ndn::AppDelayTracer::InstallAll("app-delays-trace.txt"); Simulator::Run(); Simulator::Destroy(); return 0; }
int main(int argc, char* argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20")); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(3); // Connecting nodes using two links PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.SetDefaultRoutes(true); ndnHelper.SetOldContentStore( "ns3::ndn::cs::Freshness::Lru"); // don't set up max size here, will use default value = 100 ndnHelper.InstallAll(); // set up max sizes, after NDN stack is installed Config::Set("/NodeList/0/$ns3::ndn::ContentStore/MaxSize", UintegerValue( 1)); // number after nodeList is global ID of the node (= node->GetId ()) Config::Set("/NodeList/1/$ns3::ndn::ContentStore/MaxSize", UintegerValue(2)); Config::Set("/NodeList/2/$ns3::ndn::ContentStore/MaxSize", UintegerValue(200)); // Installing applications // Consumer ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); // Consumer will request /prefix/0, /prefix/1, ... consumerHelper.SetPrefix("/prefix"); consumerHelper.SetAttribute("Frequency", StringValue("10")); // 10 interests a second consumerHelper.Install(nodes.Get(0)); // first node // Producer ndn::AppHelper producerHelper("ns3::ndn::Producer"); // Producer will reply to all requests starting with /prefix producerHelper.SetPrefix("/prefix"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.Install(nodes.Get(2)); // last node Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); // // This Emitter has a trace source object that will emit values at // random times. // Ptr<Emitter> emitter = CreateObject<Emitter> (); Names::Add ("/Names/Emitter", emitter); // // This Probe will be hooked to the Emitter's trace source object by // accessing it by path name in the Config database. // Ptr<DoubleProbe> probe = CreateObject<DoubleProbe> (); probe->SetName ("PathProbe"); Names::Add ("/Names/Probe", probe); // Note, no return value is checked here. probe->ConnectByPath ("/Names/Emitter/Counter"); // // This file helper will be used to put data values into a file. // // Create the file helper. FileHelper fileHelper; // Configure the file to be written. fileHelper.ConfigureFile ("file-helper-example", FileAggregator::FORMATTED); // Set the labels for this formatted output file. fileHelper.Set2dFormat ("Time (Seconds) = %.3e\tCount = %.0f"); // Write the values generated by the probe. The path that we // provide helps to disambiguate the source of the trace. fileHelper.WriteProbe ("ns3::DoubleProbe", "/Names/Probe/Output", "Output"); // The Emitter object is not associated with an ns-3 node, so // it won't get started automatically, so we need to do this ourselves Simulator::Schedule (Seconds (0.0), &Emitter::Initialize, emitter); Simulator::Stop (Seconds (100.0)); Simulator::Run (); Simulator::Destroy (); return 0; }
int main(int argc, char *argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20")); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(3); // Connecting nodes using two links PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes StackHelper ndnHelper; ndnHelper.InstallAll(); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); // Installing applications // Consumer ndn::AppHelper consumerHelper("PingClientApp"); consumerHelper.SetAttribute("Prefix", StringValue("/ping")); consumerHelper.SetAttribute("nPings", StringValue("3")); consumerHelper.Install(nodes.Get(0)).Start(Seconds(2)); // Producer ndn::AppHelper producerHelper("PingServerApp"); producerHelper.SetAttribute("Prefix", StringValue("/ping")); producerHelper.SetAttribute("nMaxPings", StringValue("3")); producerHelper.Install(nodes.Get(2)).Start(Seconds(0.1)); ndnGlobalRoutingHelper.AddOrigins("/ping", nodes.Get(2)); // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main(int argc, char* argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::QueueBase::MaxPackets", UintegerValue(20)); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(3); // Connecting nodes using two links PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.SetDefaultRoutes(true); ndnHelper.InstallAll(); // Installing applications // Consumer ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); // Consumer will request /prefix/0, /prefix/1, ... consumerHelper.SetPrefix("/prefix"); consumerHelper.SetAttribute("Frequency", StringValue("10")); // 10 interests a second consumerHelper.Install(nodes.Get(0)); // first node // Producer ndn::AppHelper producerHelper("ns3::ndn::Producer"); // Producer will reply to all requests starting with /prefix producerHelper.SetPrefix("/prefix"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.SetAttribute("Signature", UintegerValue(100)); producerHelper.SetAttribute("KeyLocator", StringValue("/unique/key/locator")); producerHelper.Install(nodes.Get(2)); // last node PcapWriter trace("ndn-simple-trace.pcap"); Config::ConnectWithoutContext("/NodeList/*/DeviceList/*/$ns3::PointToPointNetDevice/MacTx", MakeCallback(&PcapWriter::TracePacket, &trace)); Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); // SeedManager::SetRun (3); Ptr<UniformRandomVariable> uv = CreateObject<UniformRandomVariable> (); std::cout << uv->GetValue () << std::endl; }
int main(int argc, char* argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20")); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(3); // Connecting nodes using two links PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.SetDefaultRoutes(true); ndnHelper.InstallAll(); // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/multicast"); // Installing applications // Consumer ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); // Consumer will request /prefix/0, /prefix/1, ... consumerHelper.SetPrefix("/prefix"); consumerHelper.SetAttribute("Frequency", StringValue("1")); // 10 interests a second consumerHelper.SetAttribute("MaxSeq",IntegerValue(5)); consumerHelper.Install(nodes.Get(0)); // first node // Producer ndn::AppHelper producerHelper("ns3::ndn::Producer"); // Producer will reply to all requests starting with /prefix producerHelper.SetPrefix("/prefix"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.Install(nodes.Get(2)); // last node Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main(int argc, char* argv[]) { CommandLine cmd; cmd.Parse(argc, argv); AnnotatedTopologyReader topologyReader("", 25); topologyReader.SetFileName("src/ndnSIM/examples/topologies/topo-grid-3x3-red-queues.txt"); topologyReader.Read(); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.InstallAll(); ndn::StrategyChoiceHelper::InstallAll("/", "ndn:/localhost/nfd/strategy/best-route"); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); // Getting containers for the consumer/producer Ptr<Node> producer = Names::Find<Node>("Node8"); NodeContainer consumerNodes; consumerNodes.Add(Names::Find<Node>("Node0")); // Install NDN applications std::string prefix = "/prefix"; ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); consumerHelper.SetPrefix(prefix); consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second consumerHelper.Install(consumerNodes); ndn::AppHelper producerHelper("ns3::ndn::Producer"); producerHelper.SetPrefix(prefix); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.Install(producer); // Add /prefix origins to ndn::GlobalRouter ndnGlobalRoutingHelper.AddOrigins(prefix, producer); // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
static void PrintPsrVsDistance (int argc, char *argv[]) { struct PsrExperiment::Input input; CommandLine cmd; cmd.AddValue ("TxPowerLevel", "The power level index to use to send each packet", input.txPowerLevel); cmd.AddValue ("TxMode", "The mode to use to send each packet", input.txMode); cmd.AddValue ("NPackets", "The number of packets to send", input.nPackets); cmd.AddValue ("PacketSize", "The size of each packet sent", input.packetSize); cmd.Parse (argc, argv); for (input.distance = 1.0; input.distance < 165; input.distance += 2.0) { std::cout << input.distance; PsrExperiment experiment; struct PsrExperiment::Output output; input.txMode = "OfdmRate6Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate9Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate12Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate18Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate24Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate36Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate48Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); input.txMode = "OfdmRate54Mbps"; output = experiment.Run (input); std::cout << " " << CalcPsr (output, input); std::cout << std::endl; } }
bool AodvExample::Configure (int argc, char **argv) { // Enable AODV logs by default. Comment this if too noisy // LogComponentEnable("AodvRoutingProtocol", LOG_LEVEL_ALL); SeedManager::SetSeed (12345); CommandLine cmd; cmd.AddValue ("pcap", "Write PCAP traces.", pcap); cmd.AddValue ("printRoutes", "Print routing table dumps.", printRoutes); cmd.AddValue ("size", "Number of nodes.", size); cmd.AddValue ("time", "Simulation time, s.", totalTime); cmd.AddValue ("step", "Grid step, m", step); cmd.Parse (argc, argv); return true; }
int main(int argc, char *argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20")); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(3); // Connecting nodes using two links PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes StackHelper ndnHelper; ndnHelper.SetDefaultRoutes(true); ndnHelper.InstallAll(); // Installing applications // Consumer auto consumer = CreateObject<ApiApp<PingClient>>(); nodes.Get(0)->AddApplication(consumer); // consumer->SetStopTime(Seconds(15.0)); auto producer = CreateObject<ApiApp<PingServer>>(); nodes.Get(2)->AddApplication(producer); // producer->SetStartTime(Seconds(0.5)); Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main (int argc, char *argv[]) { std::cout << std::endl; std::cout << "Hasher" << std::endl; bool timing = false; DictFiles files; CommandLine cmd; cmd.Usage ("Find hash collisions in the dictionary."); cmd.AddValue ("dict", "Dictionary file to hash", MakeCallback(&DictFiles::Add, &files)); cmd.AddValue ("time", "Run timing test", timing); cmd.Parse (argc, argv); Dictionary dict; dict.Add ( Collider ("FNV1a", Hasher ( Create<Hash::Function::Fnv1a> () ), Collider::Bits32)); dict.Add ( Collider ("FNV1a", Hasher ( Create<Hash::Function::Fnv1a> () ), Collider::Bits64)); dict.Add ( Collider ("Murmur3", Hasher ( Create<Hash::Function::Murmur3> () ), Collider::Bits32)); dict.Add ( Collider ("Murmur3", Hasher ( Create<Hash::Function::Murmur3> () ), Collider::Bits64)); files.ReadInto (dict); dict.Report (); if (timing) { dict.Time (); } // if (timing) } // main
static void PrintPsr (int argc, char *argv[]) { PsrExperiment experiment; struct PsrExperiment::Input input; CommandLine cmd; cmd.AddValue ("Distance", "The distance between two phys", input.distance); cmd.AddValue ("PacketSize", "The size of each packet sent", input.packetSize); cmd.AddValue ("TxMode", "The mode to use to send each packet", input.txMode); cmd.AddValue ("NPackets", "The number of packets to send", input.nPackets); cmd.AddValue ("TxPowerLevel", "The power level index to use to send each packet", input.txPowerLevel); cmd.Parse (argc, argv); struct PsrExperiment::Output output; output = experiment.Run (input); double psr = output.received; psr /= input.nPackets; std::cout << psr << std::endl; }
int main(int argc, char* argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("10Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20")); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(3); // 3 nodes, connected: 0 <---> 1 <---> 2 // Connecting nodes using two links PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.SetDefaultRoutes(true); ndnHelper.setCsSize(0); ndnHelper.SetOldContentStore("ns3::ndn::cs::Lru", "MaxSize", "100"); ndnHelper.InstallAll(); // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/myprefix", "/localhost/nfd/strategy/best-route"); ns3::ndn::AppHelper consumerHelper("ns3::ndn::FileConsumerCbr::MultimediaConsumer"); consumerHelper.SetAttribute("AllowUpscale", BooleanValue(true)); consumerHelper.SetAttribute("AllowDownscale", BooleanValue(false)); consumerHelper.SetAttribute("ScreenWidth", UintegerValue(1920)); consumerHelper.SetAttribute("ScreenHeight", UintegerValue(1080)); consumerHelper.SetAttribute("StartRepresentationId", StringValue("auto")); consumerHelper.SetAttribute("MaxBufferedSeconds", UintegerValue(30)); consumerHelper.SetAttribute("StartUpDelay", StringValue("0.1")); consumerHelper.SetAttribute("AdaptationLogic", StringValue("dash::player::RateAndBufferBasedAdaptationLogic")); consumerHelper.SetAttribute("MpdFileToRequest", StringValue(std::string("/myprefix/AVC/BBB-2s.mpd" ))); //consumerHelper.SetPrefix (std::string("/Server_" + boost::lexical_cast<std::string>(i%server.size ()) + "/layer0")); ApplicationContainer app1 = consumerHelper.Install (nodes.Get(2)); // Producer responsible for hosting the MPD file ndn::AppHelper mpdProducerHelper("ns3::ndn::FileServer"); // Producer will reply to all requests starting with /myprefix/AVC/ and hosts the mpd file there mpdProducerHelper.SetPrefix("/myprefix"); mpdProducerHelper.SetAttribute("ContentDirectory", StringValue("/home/someuser/multimediaData")); mpdProducerHelper.Install(nodes.Get(0)); // install to some node from nodelist // Producer responsible for hosting the virtual segments ndn::AppHelper fakeSegmentProducerHelper("ns3::ndn::FakeFileServer"); // Producer will reply to all requests starting with /myprefix/AVC/BBB/ and hosts the virtual segment files there fakeSegmentProducerHelper.SetPrefix("/myprefix/AVC/BBB"); fakeSegmentProducerHelper.SetAttribute("MetaDataFile", StringValue("dash_dataset_avc_bbb.csv")); fakeSegmentProducerHelper.Install(nodes.Get(0)); // install to some node from nodelist ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); ndnGlobalRoutingHelper.AddOrigins("/myprefix", nodes.Get(0)); ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(1000.0)); Simulator::Run(); Simulator::Destroy(); NS_LOG_UNCOND("Simulation Finished."); return 0; }
int main (int argc, char *argv[]) { // // Users may find it convenient to turn on explicit debugging // for selected modules; the below lines suggest how to do this // #if 0 LogComponentEnable ("UdpEchoExample", LOG_LEVEL_INFO); LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_ALL); LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_ALL); #endif // // Allow the user to override any of the defaults and the above Bind() at // run-time, via command-line arguments // bool useV6 = false; Address serverAddress; CommandLine cmd; cmd.AddValue ("useIpv6", "Use Ipv6", useV6); cmd.Parse (argc, argv); // // Explicitly create the nodes required by the topology (shown above). // NS_LOG_INFO ("Create nodes."); NodeContainer n; n.Create (4); InternetStackHelper internet; internet.Install (n); NS_LOG_INFO ("Create channels."); // // Explicitly create the channels required by the topology (shown above). // CsmaHelper csma; csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate (5000000))); csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2))); csma.SetDeviceAttribute ("Mtu", UintegerValue (1400)); NetDeviceContainer d = csma.Install (n); // // We've got the "hardware" in place. Now we need to add IP addresses. // NS_LOG_INFO ("Assign IP Addresses."); if (useV6 == false) { Ipv4AddressHelper ipv4; ipv4.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer i = ipv4.Assign (d); serverAddress = Address(i.GetAddress (1)); } else { Ipv6AddressHelper ipv6; ipv6.SetBase ("2001:0000:f00d:cafe::", Ipv6Prefix (64)); Ipv6InterfaceContainer i6 = ipv6.Assign (d); serverAddress = Address(i6.GetAddress (1,1)); } NS_LOG_INFO ("Create Applications."); // // Create a UdpEchoServer application on node one. // uint16_t port = 9; // well-known echo port number UdpEchoServerHelper server (port); ApplicationContainer apps = server.Install (n.Get (1)); apps.Start (Seconds (1.0)); apps.Stop (Seconds (10.0)); // // Create a UdpEchoClient application to send UDP datagrams from node zero to // node one. // uint32_t packetSize = 1024; uint32_t maxPacketCount = 1; Time interPacketInterval = Seconds (1.); UdpEchoClientHelper client (serverAddress, port); client.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount)); client.SetAttribute ("Interval", TimeValue (interPacketInterval)); client.SetAttribute ("PacketSize", UintegerValue (packetSize)); apps = client.Install (n.Get (0)); apps.Start (Seconds (2.0)); apps.Stop (Seconds (10.0)); #if 0 // // Users may find it convenient to initialize echo packets with actual data; // the below lines suggest how to do this // client.SetFill (apps.Get (0), "Hello World"); client.SetFill (apps.Get (0), 0xa5, 1024); uint8_t fill[] = { 0, 1, 2, 3, 4, 5, 6}; client.SetFill (apps.Get (0), fill, sizeof(fill), 1024); #endif AsciiTraceHelper ascii; csma.EnableAsciiAll (ascii.CreateFileStream ("udp-echo.tr")); csma.EnablePcapAll ("udp-echo", false); // // Now, do the actual simulation. // NS_LOG_INFO ("Run Simulation."); Simulator::Run (); Simulator::Destroy (); NS_LOG_INFO ("Done."); }
int run(int argc, char* argv[]) { delayFile.open(DELAY_OUTPUT_FILE_NAME); // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1000Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("4294967295")); // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); // Creating nodes NodeContainer nodes; nodes.Create(NUM_OF_CONSUMERS + NUM_OF_ROUTERS + NUM_OF_PRODUCER); // Connecting nodes using two links // Connecting nodes using two links PointToPointHelper p2p; // Connecting consumers to edge routers int g = 0; for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (0 + NUM_OF_CONSUMERS)); // C0 <--> R0 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (1 + NUM_OF_CONSUMERS)); // C1 <--> R1 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (3 + NUM_OF_CONSUMERS)); // C2 <--> R3 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (5 + NUM_OF_CONSUMERS)); // C3 <--> R5 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (6 + NUM_OF_CONSUMERS)); // C4 <--> R6 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (10 + NUM_OF_CONSUMERS)); // C5 <--> R10 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (8 + NUM_OF_CONSUMERS)); // C6 <--> R8 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (11 + NUM_OF_CONSUMERS)); // C7 <--> R11 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (12 + NUM_OF_CONSUMERS)); // C8 <--> R12 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (18 + NUM_OF_CONSUMERS)); // C9 <--> R18 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (17 + NUM_OF_CONSUMERS)); // C10 <--> R17 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (20 + NUM_OF_CONSUMERS)); // C11 <--> R20 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (24 + NUM_OF_CONSUMERS)); // C12 <--> R24 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (29 + NUM_OF_CONSUMERS)); // C13 <--> R2 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (28 + NUM_OF_CONSUMERS)); // C14 <--> R28 for (int i = 0; i < GROUP_SIZE; i++, g++) p2p.Install (nodes.Get (g), nodes.Get (21 + NUM_OF_CONSUMERS)); // C15 <--> R21 // Connect routers p2p.Install (nodes.Get (0 + NUM_OF_CONSUMERS), nodes.Get (9 + NUM_OF_CONSUMERS)); // R0 <--> R9 p2p.Install (nodes.Get (1 + NUM_OF_CONSUMERS), nodes.Get (15 + NUM_OF_CONSUMERS)); // R1 <--> R15 p2p.Install (nodes.Get (2 + NUM_OF_CONSUMERS), nodes.Get (9 + NUM_OF_CONSUMERS)); // R2 <--> R9 p2p.Install (nodes.Get (3 + NUM_OF_CONSUMERS), nodes.Get (4 + NUM_OF_CONSUMERS)); // R3 <--> R4 p2p.Install (nodes.Get (4 + NUM_OF_CONSUMERS), nodes.Get (7 + NUM_OF_CONSUMERS)); // R4 <--> R7 p2p.Install (nodes.Get (4 + NUM_OF_CONSUMERS), nodes.Get (14 + NUM_OF_CONSUMERS)); // R4 <--> R14 p2p.Install (nodes.Get (4 + NUM_OF_CONSUMERS), nodes.Get (9 + NUM_OF_CONSUMERS)); // R4 <--> R9 p2p.Install (nodes.Get (4 + NUM_OF_CONSUMERS), nodes.Get (16 + NUM_OF_CONSUMERS)); // R4 <--> R16 p2p.Install (nodes.Get (4 + NUM_OF_CONSUMERS), nodes.Get (25 + NUM_OF_CONSUMERS)); // R4 <--> R25 p2p.Install (nodes.Get (5 + NUM_OF_CONSUMERS), nodes.Get (13 + NUM_OF_CONSUMERS)); // R5 <--> R13 p2p.Install (nodes.Get (6 + NUM_OF_CONSUMERS), nodes.Get (7 + NUM_OF_CONSUMERS)); // R6 <--> R7 p2p.Install (nodes.Get (7 + NUM_OF_CONSUMERS), nodes.Get (9 + NUM_OF_CONSUMERS)); // R7 <--> R9 p2p.Install (nodes.Get (7 + NUM_OF_CONSUMERS), nodes.Get (14 + NUM_OF_CONSUMERS)); // R7 <--> R14 p2p.Install (nodes.Get (7 + NUM_OF_CONSUMERS), nodes.Get (22 + NUM_OF_CONSUMERS)); // R7 <--> R22 p2p.Install (nodes.Get (7 + NUM_OF_CONSUMERS), nodes.Get (23 + NUM_OF_CONSUMERS)); // R7 <--> R23 p2p.Install (nodes.Get (8 + NUM_OF_CONSUMERS), nodes.Get (9 + NUM_OF_CONSUMERS)); // R8 <--> R9 p2p.Install (nodes.Get (9 + NUM_OF_CONSUMERS), nodes.Get (13 + NUM_OF_CONSUMERS)); // R9 <--> R13 p2p.Install (nodes.Get (9 + NUM_OF_CONSUMERS), nodes.Get (14 + NUM_OF_CONSUMERS)); // R9 <--> R14 p2p.Install (nodes.Get (9 + NUM_OF_CONSUMERS), nodes.Get (22 + NUM_OF_CONSUMERS)); // R9 <--> R22 p2p.Install (nodes.Get (9 + NUM_OF_CONSUMERS), nodes.Get (25 + NUM_OF_CONSUMERS)); // R9 <--> R25 p2p.Install (nodes.Get (9 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R9 <--> R27 p2p.Install (nodes.Get (10 + NUM_OF_CONSUMERS), nodes.Get (14 + NUM_OF_CONSUMERS)); // R10 <--> R14 p2p.Install (nodes.Get (11 + NUM_OF_CONSUMERS), nodes.Get (13 + NUM_OF_CONSUMERS)); // R11 <--> R13 p2p.Install (nodes.Get (12 + NUM_OF_CONSUMERS), nodes.Get (13 + NUM_OF_CONSUMERS)); // R12 <--> R13 p2p.Install (nodes.Get (13 + NUM_OF_CONSUMERS), nodes.Get (14 + NUM_OF_CONSUMERS)); // R13 <--> R14 p2p.Install (nodes.Get (13 + NUM_OF_CONSUMERS), nodes.Get (22 + NUM_OF_CONSUMERS)); // R13 <--> R22 p2p.Install (nodes.Get (13 + NUM_OF_CONSUMERS), nodes.Get (25 + NUM_OF_CONSUMERS)); // R13 <--> R25 p2p.Install (nodes.Get (13 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R13 <--> R27 p2p.Install (nodes.Get (14 + NUM_OF_CONSUMERS), nodes.Get (15 + NUM_OF_CONSUMERS)); // R14 <--> R15 p2p.Install (nodes.Get (14 + NUM_OF_CONSUMERS), nodes.Get (18 + NUM_OF_CONSUMERS)); // R14 <--> R18 p2p.Install (nodes.Get (14 + NUM_OF_CONSUMERS), nodes.Get (19 + NUM_OF_CONSUMERS)); // R14 <--> R19 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (16 + NUM_OF_CONSUMERS)); // R15 <--> R16 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (19 + NUM_OF_CONSUMERS)); // R15 <--> R19 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (21 + NUM_OF_CONSUMERS)); // R15 <--> R21 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (22 + NUM_OF_CONSUMERS)); // R15 <--> R22 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (23 + NUM_OF_CONSUMERS)); // R15 <--> R23 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (25 + NUM_OF_CONSUMERS)); // R15 <--> R25 p2p.Install (nodes.Get (15 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R15 <--> R27 p2p.Install (nodes.Get (16 + NUM_OF_CONSUMERS), nodes.Get (23 + NUM_OF_CONSUMERS)); // R16 <--> R23 p2p.Install (nodes.Get (16 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R16 <--> R27 p2p.Install (nodes.Get (17 + NUM_OF_CONSUMERS), nodes.Get (23 + NUM_OF_CONSUMERS)); // R17 <--> R23 // 18 done p2p.Install (nodes.Get (19 + NUM_OF_CONSUMERS), nodes.Get (22 + NUM_OF_CONSUMERS)); // R19 <--> R22 p2p.Install (nodes.Get (20 + NUM_OF_CONSUMERS), nodes.Get (25 + NUM_OF_CONSUMERS)); // R20 <--> R25 p2p.Install (nodes.Get (21 + NUM_OF_CONSUMERS), nodes.Get (22 + NUM_OF_CONSUMERS)); // R21 <--> R22 p2p.Install (nodes.Get (21 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R21 <--> R27 p2p.Install (nodes.Get (22 + NUM_OF_CONSUMERS), nodes.Get (23 + NUM_OF_CONSUMERS)); // R22 <--> R23 p2p.Install (nodes.Get (22 + NUM_OF_CONSUMERS), nodes.Get (28 + NUM_OF_CONSUMERS)); // R22 <--> R28 p2p.Install (nodes.Get (22 + NUM_OF_CONSUMERS), nodes.Get (29 + NUM_OF_CONSUMERS)); // R22 <--> R29 p2p.Install (nodes.Get (23 + NUM_OF_CONSUMERS), nodes.Get (24 + NUM_OF_CONSUMERS)); // R23 <--> R24 p2p.Install (nodes.Get (23 + NUM_OF_CONSUMERS), nodes.Get (25 + NUM_OF_CONSUMERS)); // R23 <--> R25 p2p.Install (nodes.Get (23 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R23 <--> R27 // 24 done // 25 done p2p.Install (nodes.Get (26 + NUM_OF_CONSUMERS), nodes.Get (27 + NUM_OF_CONSUMERS)); // R26 <--> R27 // 27 done // 28 done // 29 done // Connecting producer(s) int producerId = 0 + NUM_OF_CONSUMERS + NUM_OF_ROUTERS; p2p.Install (nodes.Get (producerId), nodes.Get (0 + NUM_OF_CONSUMERS)); // P0 <--> R0 // Install NDN stack without cache ndn::StackHelper ndnHelperNoCache; // ndnHelperNoCache.SetDefaultRoutes(true); ndnHelperNoCache.SetOldContentStore("ns3::ndn::cs::Nocache"); // no cache // Install on consumers for (int i = 0; i < NUM_OF_CONSUMERS; i++) { ndnHelperNoCache.Install(nodes.Get(i)); } // Install on producer(s) ndnHelperNoCache.Install(nodes.Get(0 + NUM_OF_CONSUMERS + NUM_OF_ROUTERS)); // Install NDN stack with cache ndn::StackHelper ndnHelperWithCache; // ndnHelperWithCache.SetDefaultRoutes(true); ndnHelperWithCache.SetOldContentStore("ns3::ndn::cs::Freshness::Lru", "MaxSize", "0"); // Install on routers for (int i = NUM_OF_CONSUMERS; i < NUM_OF_CONSUMERS + NUM_OF_ROUTERS; i++) { ndnHelperWithCache.InstallWithCallback(nodes.Get(i), (size_t)&ForwardingDelay, i, USE_PINT); } // Consumers ndn::AppHelper consumerHelperHonest("ns3::ndn::AccountingEncrConsumer"); // Consumer will request /prefix/A/0, /prefix/A/1, ... consumerHelperHonest.SetAttribute("Frequency", StringValue("1")); // 10 interests a second consumerHelperHonest.SetAttribute("Randomize", StringValue("uniform")); consumerHelperHonest.SetAttribute("StartSeq", IntegerValue(0)); for(int i=0; i < NUM_OF_CONSUMERS; i++) { consumerHelperHonest.SetPrefix("/prefix/A/" + std::to_string(i)); ApplicationContainer consumer = consumerHelperHonest.Install(nodes.Get(i)); consumer.Start(Seconds(0)); std::ostringstream node_id; node_id << i; Config::ConnectWithoutContext("/NodeList/" + node_id.str() + "/ApplicationList/0/ReceivedMeaningfulContent", MakeCallback(ReceivedMeaningfulContent)); } // Producer ndn::AppHelper producerHelper("ns3::ndn::AccountingEncrProducer"); // Producer will reply to all requests starting with /prefix/A. For /prefix/B we expect NACK producerHelper.SetPrefix("/prefix/A"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.Install(nodes.Get(producerId)); ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.Install(nodes); std::string prefix = "/prefix/A"; ndnGlobalRoutingHelper.AddOrigins(prefix, nodes.Get(producerId)); ndn::GlobalRoutingHelper::CalculateRoutes(); // Traces ndn::L3RateTracer::InstallAll(RATE_OUTPUT_FILE_NAME, Seconds(1.0)); Simulator::Stop(Seconds(SIMULATION_DURATION)); Simulator::Run(); Simulator::Destroy(); delayFile.close(); return 0; }
int main (int argc, char *argv[]) { std::string phyMode ("DsssRate1Mbps"); double rss = -80; // -dBm uint32_t packetSize = 1000; // bytes uint32_t numPackets = 1; double interval = 1.0; // seconds bool verbose = false; CommandLine cmd; cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode); cmd.AddValue ("rss", "received signal strength", rss); cmd.AddValue ("packetSize", "size of application packet sent", packetSize); cmd.AddValue ("numPackets", "number of packets generated", numPackets); cmd.AddValue ("interval", "interval (seconds) between packets", interval); cmd.AddValue ("verbose", "turn on all WifiNetDevice log components", verbose); cmd.Parse (argc, argv); // Convert to time object Time interPacketInterval = Seconds (interval); // disable fragmentation for frames below 2200 bytes Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200")); // turn off RTS/CTS for frames below 2200 bytes Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200")); // Fix non-unicast data rate to be the same as that of unicast Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode", StringValue (phyMode)); NodeContainer c; c.Create (2); // The below set of helpers will help us to put together the wifi NICs we want WifiHelper wifi; if (verbose) { wifi.EnableLogComponents (); // Turn on all Wifi logging } wifi.SetStandard (WIFI_PHY_STANDARD_80211b); YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default (); // This is one parameter that matters when using FixedRssLossModel // set it to zero; otherwise, gain will be added wifiPhy.Set ("RxGain", DoubleValue (0) ); // ns-3 supports RadioTap and Prism tracing extensions for 802.11b wifiPhy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO); YansWifiChannelHelper wifiChannel; wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel"); // The below FixedRssLossModel will cause the rss to be fixed regardless // of the distance between the two stations, and the transmit power wifiChannel.AddPropagationLoss ("ns3::FixedRssLossModel","Rss",DoubleValue (rss)); wifiPhy.SetChannel (wifiChannel.Create ()); // Add a non-QoS upper mac, and disable rate control NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default (); wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",StringValue (phyMode), "ControlMode",StringValue (phyMode)); // Set it to adhoc mode wifiMac.SetType ("ns3::AdhocWifiMac"); NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, c); // Note that with FixedRssLossModel, the positions below are not // used for received signal strength. MobilityHelper mobility; 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); mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (c); InternetStackHelper internet; internet.Install (c); Ipv4AddressHelper ipv4; NS_LOG_INFO ("Assign IP Addresses."); ipv4.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer i = ipv4.Assign (devices); TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory"); Ptr<Socket> recvSink = Socket::CreateSocket (c.Get (0), tid); InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80); recvSink->Bind (local); recvSink->SetRecvCallback (MakeCallback (&ReceivePacket)); Ptr<Socket> source = Socket::CreateSocket (c.Get (1), tid); InetSocketAddress remote = InetSocketAddress (Ipv4Address ("255.255.255.255"), 80); source->SetAllowBroadcast (true); source->Connect (remote); // Tracing wifiPhy.EnablePcap ("wifi-simple-adhoc", devices); // Output what we are doing NS_LOG_UNCOND ("Testing " << numPackets << " packets sent with receiver rss " << rss ); Simulator::ScheduleWithContext (source->GetNode ()->GetId (), Seconds (1.0), &GenerateTraffic, source, packetSize, numPackets, interPacketInterval); Simulator::Run (); Simulator::Destroy (); return 0; }
int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); // to save a template default attribute file run it like this: // ./waf --command-template="%s --ns3::ConfigStore::Filename=input-defaults.txt --ns3::ConfigStore::Mode=Save --ns3::ConfigStore::FileFormat=RawText" --run src/lte/examples/lena-first-sim // // to load a previously created default attribute file // ./waf --command-template="%s --ns3::ConfigStore::Filename=input-defaults.txt --ns3::ConfigStore::Mode=Load --ns3::ConfigStore::FileFormat=RawText" --run src/lte/examples/lena-first-sim ConfigStore inputConfig; inputConfig.ConfigureDefaults (); // Parse again so you can override default values from the command line cmd.Parse (argc, argv); Ptr<LteHelper> lteHelper = CreateObject<LteHelper> (); // Uncomment to enable logging //lteHelper->EnableLogComponents (); // Create Nodes: eNodeB and UE NodeContainer enbNodes; NodeContainer ueNodes; enbNodes.Create (1); ueNodes.Create (1); // Install Mobility Model MobilityHelper mobility; mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (enbNodes); BuildingsHelper::Install (enbNodes); mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (ueNodes); BuildingsHelper::Install (ueNodes); // Create Devices and install them in the Nodes (eNB and UE) NetDeviceContainer enbDevs; NetDeviceContainer ueDevs; // Default scheduler is PF, uncomment to use RR //lteHelper->SetSchedulerType ("ns3::RrFfMacScheduler"); enbDevs = lteHelper->InstallEnbDevice (enbNodes); ueDevs = lteHelper->InstallUeDevice (ueNodes); // Attach a UE to a eNB lteHelper->Attach (ueDevs, enbDevs.Get (0)); // Activate an EPS bearer enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; EpsBearer bearer (q); lteHelper->ActivateDataRadioBearer (ueDevs, bearer); // Configure Radio Environment Map (REM) output // for LTE-only simulations always use /ChannelList/0 which is the downlink channel Ptr<RadioEnvironmentMapHelper> remHelper = CreateObject<RadioEnvironmentMapHelper> (); remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/0")); remHelper->SetAttribute ("OutputFile", StringValue ("rem.out")); remHelper->SetAttribute ("XMin", DoubleValue (-400.0)); remHelper->SetAttribute ("XMax", DoubleValue (400.0)); remHelper->SetAttribute ("YMin", DoubleValue (-300.0)); remHelper->SetAttribute ("YMax", DoubleValue (300.0)); remHelper->SetAttribute ("Z", DoubleValue (0.0)); remHelper->Install (); // here's a minimal gnuplot script that will plot the above: // // set view map; // set term x11; // set xlabel "X" // set ylabel "Y" // set cblabel "SINR (dB)" // plot "rem.out" using ($1):($2):(10*log10($4)) with image BuildingsHelper::MakeMobilityModelConsistent (); Simulator::Run (); //GtkConfigStore config; //config.ConfigureAttributes (); Simulator::Destroy (); return 0; }
int main(int argc, char* argv[]) { int i; double msec; double decTime; double encTime; Ipp8u* buf; IM_TYPE fmtIn; IM_TYPE fmtOut; ExcStatus res; CIppImage image; CommandLine cmdline; CFormatDetector detector; BaseStream::TSize cnt; BaseStream::TSize size; bool help_flag; bool is_raw = false; CStdFileInput fi; CStdFileOutput fo; CMemBuffInput mi; CMemBuffOutput mo; CmdOptions cmdOptions; cmdOptions.loops = 1; ippStaticInit(); copyright_(); // Common params cmdline.AddKey("i","input file name", cmdOptions.src, 1, (StringA)"uic_test_image.jpg", IT_UNKNOWN); cmdline.AddKey("o","output file name (out.jp2 - default)", cmdOptions.dst, 1, (StringA)"out.jp2", IT_UNKNOWN); cmdline.AddKey("r","treat input image as raw (0 - default)", is_raw, 0, 0, IT_UNKNOWN); cmdline.AddKey("t","advanced timing, 0 - disable (default); 1 - enable", cmdOptions.timing, 1, 0, IT_UNKNOWN); cmdline.AddKey("m","number of loops for advanced timing (1 - default)", cmdOptions.loops, 1, 1, IT_UNKNOWN); cmdline.AddKey("d", "print problem diagnostics messages", cmdOptions.verbose_mode, 0, 0, IT_UNKNOWN); cmdline.AddKey("n","number of threads", cmdOptions.nthreads, 1, 0, IT_UNKNOWN); cmdline.AddKey("h","help key", help_flag, 0, 0, IT_UNKNOWN); cmdline.AddKey("W","width resolution", cmdOptions.res_width, 1, 0, IT_RAW); cmdline.AddKey("H","height resolution", cmdOptions.res_height, 1, 0, IT_RAW); cmdline.AddKey("D","data offset", cmdOptions.data_offset, 1, 0, IT_RAW); cmdline.AddKey("C","color format: gray, rgb (default), rgba, cmyk", cmdOptions.color_format, 1, (StringA)"rgb", IT_RAW); cmdline.AddKey("P","pixel format: 8u (default), 16u, 16s, 32u, 32s, 32f", cmdOptions.pixel_format, 1, (StringA)"8u", IT_RAW); cmdline.AddKey("q","quality [1...100]", cmdOptions.jpg_quality, 1, 100, IT_JPEG); cmdline.AddKey("s","sampling, 0 - 444 (default); 1 - 422; 2 - 411", cmdOptions.sampling, 1, 0, IT_JPEG); cmdline.AddKey("j","jpeg encoder mode: b - BASELINE (8-bit lossy); e - EXTENDED (12-bit lossy); p - PROGRESSIVE (8-bit progressive); l - LOSSLESS (2-16 bit lossless)", cmdOptions.jmode, 1, (StringA)"b", IT_JPEG); cmdline.AddKey("q","quality [1...100]", cmdOptions.jpg_quality, 1, 100, IT_JPEG2000); cmdline.AddKey("l","encoding mode, 0 - lossy encode (default); 1 - lossless encoding", cmdOptions.lossless, 1, 0, IT_JPEG2000); cmdline.AddKey("f","activate all filters", cmdOptions.png_filter[4], 0, 0, IT_PNG); cmdline.AddKey("fs","add sub filter", cmdOptions.png_filter[0], 0, 0, IT_PNG); cmdline.AddKey("fu","add up filter", cmdOptions.png_filter[1], 0, 0, IT_PNG); cmdline.AddKey("fa","add average filter", cmdOptions.png_filter[2], 0, 0, IT_PNG); cmdline.AddKey("fp","add Paeth filter", cmdOptions.png_filter[3], 0, 0, IT_PNG); cmdline.AddKey("q","quality [1...255] (1 - lossless, default; less is better)", cmdOptions.jxr_quality, 1, 1, IT_JPEGXR); cmdline.AddKey("Q","planar alpha quality [1...255] (1 - lossless, default; less is better)", cmdOptions.jxr_aquality, 1, 1, IT_JPEGXR); // cmdline.AddKey("s","sampling, 0 - 444 (default); 1 - 422; 2 - 420", cmdOptions.sampling, 1, 0, IT_JPEGXR); // cmdline.AddKey("f","bitstream order, 0 - spatial (default); 1 - frequency", cmdOptions.bitstream, 1, 0, IT_JPEGXR); cmdline.AddKey("l","overlap mode, 0 - no overlap (default); 1 - overlap one; 2 - overlap two", cmdOptions.overlap, 1, 0, IT_JPEGXR); cmdline.AddKey("a","alpha mode, 0 - interleaved alpha (default); 1 - planar alpha", cmdOptions.alpha_mode, 1, 0, IT_JPEGXR); cmdline.AddKey("F","trim flexbits [0...15] (0 - all flexbits, default; 15 - no flexbits)", cmdOptions.trim, 1, 0, IT_JPEGXR); cmdline.AddKey("b","bands mode, 0 - all bands (default); 1 - no flexbits; 2 - no highpass; 3 - dc only", cmdOptions.bands, 1, 0, IT_JPEGXR); cmdline.AddKey("c","encode CMYK images directly, without color conversion", cmdOptions.cmyk_direct, 0, 0, IT_JPEGXR); cmdline.AddKey("v","color conversion bits shift value for 16-bit and 32-bit images [0...32]", cmdOptions.bits_shift, 1, -1, IT_JPEGXR); cmdline.AddKey("U","amount of tiles per rows and columns (1 1 - default)", cmdOptions.tiles_amount[0], 2, 1, IT_JPEGXR); cmdline.AddKey("X","maximum tiles size in macroblocks (0 0 - default; 1 = 16px; override U argument)", cmdOptions.tiles_sizes[0], 2, 0, IT_JPEGXR); #ifdef USE_TBB cmdline.AddKey("u","multithread mode, 0 - pipeline threading (threads limited to 3); 1 - tile threading (threads limited to number of tiles); 2 - mixed threading (default; threads limited to number of tiles + 3)", cmdOptions.jxr_thread_mode, 1, 2, IT_JPEGXR); #endif if(argc == 1) { cmdline.HelpMessage(format_str); return -1; } if(!cmdline.Parse(argv, argc, IT_UNKNOWN, IT_UNKNOWN)) { cmdline.HelpMessage(format_str); printf("Invalid argument!\n"); return -1; } if(help_flag) cmdline.HelpMessage(format_str); fmtOut = ImageFormatFromExtension((const char*)cmdOptions.dst); if(IT_UNKNOWN == fmtOut || IT_DICOM == fmtOut) { printf("Unsupported output image format!\n"); return -1; } if(!BaseStream::IsOk(fi.Open(cmdOptions.src))) { printf("Can not open input file!\n"); return 1; } if(!BaseStream::IsOk(fo.Open(cmdOptions.dst))) { printf("Can not open output file!\n"); return 1; } if(is_raw) fmtIn = IT_RAW; else fmtIn = detector.ImageFormat(fi); if(IT_UNKNOWN == fmtIn) { printf("Unsupported input image format!\n"); return -1; } if(!cmdline.Parse(argv, argc, fmtIn, fmtOut)) { if(!help_flag) cmdline.HelpMessage(format_str); printf("Invalid argument!\n"); return -1; } CheckParam(cmdOptions.timing, 0, 1); CheckParam(cmdOptions.loops, 1, IPP_MAX_16U); if(!cmdOptions.timing) { res = DecodeImage(fi, image, cmdOptions, fmtIn, NULL); if(!IsOk(res)) { printf("Error in DecodeImage finction!\n"); return 1; } } else { msec = 0.0; fi.Size(size); buf = (Ipp8u*)ippMalloc((int)size); if(0 == buf) return 1; res = fi.Read(buf, size, cnt); if(!IsOk(res)) return 1; #if !defined(__WIN32) printf("WARNING: initialization of CTimer may take long!\n"); #endif for(i = 0; i < cmdOptions.loops; i++) { mi.Open(buf, (int)size); res = DecodeImage(mi, image, cmdOptions, fmtIn, &decTime); if(!IsOk(res)) return 1; msec += decTime; mi.Close(); } ippFree(buf); decTime = msec / cmdOptions.loops; } printf("image: %s, %dx%dx%d, %d-bits %s, color: %s, sampling: %s\n", (const char*)cmdOptions.src, image.Width(), image.Height(), image.NChannels(), image.Precision(), pxformat_str[image.Format()], color_str[image.Color()], sampling_str[image.Sampling()]); if(cmdOptions.timing) printf("decode time: %.2f msec\n", decTime); if(!cmdOptions.timing) { res = EncodeImage(image, fo, cmdOptions, fmtOut, NULL); if(!IsOk(res)) { printf("Error in EncodeImage finction!\n"); return 1; } } else { BaseStream::TPosition pos = 0; msec = 0.0; size = image.Step()*image.Height()*2; buf = (Ipp8u*)ippMalloc((int)size); if(0 == buf) return 1; for(i = 0; i < cmdOptions.loops; i++) { mo.Open(buf, (int)size); res = EncodeImage(image, mo, cmdOptions, fmtOut, &encTime); if(!IsOk(res)) return 1; msec += encTime; mo.Position(pos); mo.Close(); } fo.Write(buf, pos, cnt); ippFree(buf); encTime = msec / cmdOptions.loops; } if(cmdOptions.timing) printf("encode time: %.2f msec\n", encTime); return 0; } // main()
int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); // to save a template default attribute file run it like this: // ./waf --command-template="%s --ns3::ConfigStore::Filename=input-defaults.txt --ns3::ConfigStore::Mode=Save --ns3::ConfigStore::FileFormat=RawText" --run src/lte/examples/lena-first-sim // // to load a previously created default attribute file // ./waf --command-template="%s --ns3::ConfigStore::Filename=input-defaults.txt --ns3::ConfigStore::Mode=Load --ns3::ConfigStore::FileFormat=RawText" --run src/lte/examples/lena-first-sim ConfigStore inputConfig; inputConfig.ConfigureDefaults (); // parse again so you can override default values from the command line cmd.Parse (argc, argv); Ptr<LteHelper> lteHelper = CreateObject<LteHelper> (); lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel")); // Uncomment to enable logging //lteHelper->EnableLogComponents (); // Create Nodes: eNodeB and UE NodeContainer enbNodes; NodeContainer ueNodes; enbNodes.Create (1); ueNodes.Create (1); // Install Mobility Model MobilityHelper mobility; mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (enbNodes); BuildingsHelper::Install (enbNodes); mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (ueNodes); BuildingsHelper::Install (ueNodes); // Create Devices and install them in the Nodes (eNB and UE) NetDeviceContainer enbDevs; NetDeviceContainer ueDevs; // lteHelper->SetSchedulerType ("ns3::RrFfMacScheduler"); lteHelper->SetSchedulerType ("ns3::PfFfMacScheduler"); lteHelper->SetSchedulerAttribute ("CqiTimerThreshold", UintegerValue (3)); enbDevs = lteHelper->InstallEnbDevice (enbNodes); ueDevs = lteHelper->InstallUeDevice (ueNodes); lteHelper->EnableRlcTraces(); lteHelper->EnableMacTraces(); // Attach a UE to a eNB lteHelper->Attach (ueDevs, enbDevs.Get (0)); Simulator::Schedule (Seconds (0.010), &ChangePosition, ueNodes.Get (0)); Simulator::Schedule (Seconds (0.020), &ChangePosition, ueNodes.Get (0)); // Activate a data radio bearer enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE; EpsBearer bearer (q); lteHelper->ActivateDataRadioBearer (ueDevs, bearer); Simulator::Stop (Seconds (0.030)); Simulator::Run (); //GtkConfigStore config; //config.ConfigureAttributes (); Simulator::Destroy (); return 0; }
int main (int argc, char *argv[]) { // Users may find it convenient to turn on explicit debugging // for selected modules; the below lines suggest how to do this #if 0 LogComponentEnable ("SimpleGlobalRoutingExample", LOG_LEVEL_INFO); #endif // Set up some default values for the simulation. Use the Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210)); Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448kb/s")); //DefaultValue::Bind ("DropTailQueue::m_maxPackets", 30); // Allow the user to override any of the defaults and the above // DefaultValue::Bind ()s at run-time, via command-line arguments CommandLine cmd; cmd.Parse (argc, argv); // Here, we will explicitly create four nodes. In more sophisticated // topologies, we could configure a node factory. NS_LOG_INFO ("Create nodes."); NodeContainer c; c.Create (5); NodeContainer n02 = NodeContainer (c.Get (0), c.Get (2)); NodeContainer n12 = NodeContainer (c.Get (1), c.Get (2)); NodeContainer n32 = NodeContainer (c.Get (3), c.Get (2)); NodeContainer n34 = NodeContainer (c.Get (3), c.Get (4)); // Enable OLSR NS_LOG_INFO ("Enabling OLSR Routing."); OlsrHelper olsr; Ipv4StaticRoutingHelper staticRouting; Ipv4ListRoutingHelper list; list.Add (staticRouting, 0); list.Add (olsr, 10); InternetStackHelper internet; internet.SetRoutingHelper (list); // has effect on the next Install () internet.Install (c); // We create the channels first without any IP addressing information NS_LOG_INFO ("Create channels."); PointToPointHelper p2p; p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); p2p.SetChannelAttribute ("Delay", StringValue ("2ms")); NetDeviceContainer nd02 = p2p.Install (n02); NetDeviceContainer nd12 = p2p.Install (n12); p2p.SetDeviceAttribute ("DataRate", StringValue ("1500kbps")); p2p.SetChannelAttribute ("Delay", StringValue ("10ms")); NetDeviceContainer nd32 = p2p.Install (n32); NetDeviceContainer nd34 = p2p.Install (n34); // Later, we add IP addresses. NS_LOG_INFO ("Assign IP Addresses."); Ipv4AddressHelper ipv4; ipv4.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer i02 = ipv4.Assign (nd02); ipv4.SetBase ("10.1.2.0", "255.255.255.0"); Ipv4InterfaceContainer i12 = ipv4.Assign (nd12); ipv4.SetBase ("10.1.3.0", "255.255.255.0"); Ipv4InterfaceContainer i32 = ipv4.Assign (nd32); ipv4.SetBase ("10.1.4.0", "255.255.255.0"); Ipv4InterfaceContainer i34 = ipv4.Assign (nd34); // Create the OnOff application to send UDP datagrams of size // 210 bytes at a rate of 448 Kb/s from n0 to n4 NS_LOG_INFO ("Create Applications."); uint16_t port = 9; // Discard port (RFC 863) OnOffHelper onoff ("ns3::UdpSocketFactory", InetSocketAddress (i34.GetAddress (1), port)); onoff.SetConstantRate (DataRate ("448kb/s")); ApplicationContainer apps = onoff.Install (c.Get (0)); apps.Start (Seconds (1.0)); apps.Stop (Seconds (10.0)); // Create a packet sink to receive these packets PacketSinkHelper sink ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), port)); apps = sink.Install (c.Get (3)); apps.Start (Seconds (1.0)); apps.Stop (Seconds (10.0)); // Create a similar flow from n3 to n1, starting at time 1.1 seconds onoff.SetAttribute ("Remote", AddressValue (InetSocketAddress (i12.GetAddress (0), port))); apps = onoff.Install (c.Get (3)); apps.Start (Seconds (1.1)); apps.Stop (Seconds (10.0)); // Create a packet sink to receive these packets apps = sink.Install (c.Get (1)); apps.Start (Seconds (1.1)); apps.Stop (Seconds (10.0)); AsciiTraceHelper ascii; p2p.EnableAsciiAll (ascii.CreateFileStream ("simple-point-to-point-olsr.tr")); p2p.EnablePcapAll ("simple-point-to-point-olsr"); Simulator::Stop (Seconds (30)); NS_LOG_INFO ("Run Simulation."); Simulator::Run (); Simulator::Destroy (); NS_LOG_INFO ("Done."); return 0; }
int main (int argc, char *argv[]) { CommandLine cmd; cmd.Parse (argc, argv); bool connected; Ptr<Emitter> emitter = CreateObject<Emitter> (); Names::Add ("/Names/Emitter", emitter); // // The below shows typical functionality without a probe // (connect a sink function to a trace source) // connected = emitter->TraceConnect ("Counter", "sample context", MakeCallback (&NotifyViaTraceSource)); NS_ASSERT_MSG (connected, "Trace source not connected"); // // Next, we'll show several use cases of using a Probe to access and // filter the values of the underlying trace source // // // Probe1 will be hooked directly to the Emitter trace source object // // probe1 will be hooked to the Emitter trace source Ptr<DoubleProbe> probe1 = CreateObject<DoubleProbe> (); // the probe's name can serve as its context in the tracing probe1->SetName ("ObjectProbe"); // Connect the probe to the emitter's Counter connected = probe1->ConnectByObject ("Counter", emitter); NS_ASSERT_MSG (connected, "Trace source not connected to probe1"); // The probe itself should generate output. The context that we provide // to this probe (in this case, the probe name) will help to disambiguate // the source of the trace connected = probe1->TraceConnect ("Output", probe1->GetName (), MakeCallback (&NotifyViaProbe)); NS_ASSERT_MSG (connected, "Trace source not connected to probe1 Output"); // // Probe2 will be hooked to the Emitter trace source object by // accessing it by path name in the Config database // // Create another similar probe; this will hook up via a Config path Ptr<DoubleProbe> probe2 = CreateObject<DoubleProbe> (); probe2->SetName ("PathProbe"); // Note, no return value is checked here probe2->ConnectByPath ("/Names/Emitter/Counter"); // The probe itself should generate output. The context that we provide // to this probe (in this case, the probe name) will help to disambiguate // the source of the trace connected = probe2->TraceConnect ("Output", "/Names/Probes/PathProbe/Output", MakeCallback (&NotifyViaProbe)); NS_ASSERT_MSG (connected, "Trace source not connected to probe2 Output"); // // Probe3 will be called by the emitter directly through the // static method SetValueByPath(). // Ptr<DoubleProbe> probe3 = CreateObject<DoubleProbe> (); probe3->SetName ("StaticallyAccessedProbe"); // We must add it to the config database Names::Add ("/Names/Probes", probe3->GetName (), probe3); // The probe itself should generate output. The context that we provide // to this probe (in this case, the probe name) will help to disambiguate // the source of the trace connected = probe3->TraceConnect ("Output", "/Names/Probes/StaticallyAccessedProbe/Output", MakeCallback (&NotifyViaProbe)); NS_ASSERT_MSG (connected, "Trace source not connected to probe3 Output"); // The Emitter object is not associated with an ns-3 node, so // it won't get started automatically, so we need to do this ourselves Simulator::Schedule (Seconds (0.0), &Emitter::Initialize, emitter); Simulator::Stop (Seconds (100.0)); Simulator::Run (); Simulator::Destroy (); return 0; }
int main(int argc, char* argv[]) { std::string fof = "fof.txt"; std::string dropFileName = "drops.txt"; std::string topologyFile = "src/ndnSIM/examples/topologies/topo-tree.txt"; std::string appDelayFile = "app-delays-trace.txt"; std::string rateTraceFile = "rate-trace.txt"; std::string percentage = "1.0"; std::string frequency = "1"; int simulationTime = 1000; CommandLine cmd; cmd.AddValue("fof", "forwarder overhead file", fof); cmd.AddValue("time", "simulation time argument", simulationTime); cmd.AddValue("top", "topology file", topologyFile); cmd.AddValue("drop", "bead drop file", dropFileName); cmd.AddValue("appd", "app delay file", appDelayFile); cmd.AddValue("rate", "rate trace file", rateTraceFile); cmd.AddValue("percentage", "bead percentage", percentage); cmd.AddValue("freq", "bead frequency", frequency); cmd.Parse(argc, argv); delayFile.open(fof); dropFile.open(dropFileName); AnnotatedTopologyReader topologyReader("", 1); topologyReader.SetFileName(topologyFile); topologyReader.Read(); ndn::StackHelper ndnHelper; ndnHelper.InstallAll(); // Getting containers for the consumer/producer Ptr<Node> consumers[4] = {Names::Find<Node>("leaf-1"), Names::Find<Node>("leaf-2"), Names::Find<Node>("leaf-3"), Names::Find<Node>("leaf-4")}; Ptr<Node> routers[2] = {Names::Find<Node>("rtr-1"), Names::Find<Node>("rtr-2")}; // Ptr<Node> producers[2] = {Names::Find<Node>("root-1"), Names::Find<Node>("root-2")}; Ptr<Node> producer = Names::Find<Node>("root-1"); // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/root", "/localhost/nfd/strategy/best-route"); // Installing global routing interface on all nodes ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; ndnGlobalRoutingHelper.InstallAll(); // Install NDN on routers ndn::StackHelper ndnHelperWithCache; ndnHelperWithCache.SetDefaultRoutes(true); ndnHelperWithCache.SetOldContentStore("ns3::ndn::cs::Freshness::Lru", "MaxSize", "0"); ndnHelperWithCache.InstallCallback(routers[0], (size_t)&ForwardingDelay, 0); ndnHelperWithCache.InstallBeadDropCallback(routers[0], (size_t)&BeadDropCallback, 0); ndnHelperWithCache.SetUseHistory(routers[0], 100); ndnHelperWithCache.InstallCallback(routers[1], (size_t)&ForwardingDelay, 1); ndnHelperWithCache.InstallBeadDropCallback(routers[1], (size_t)&BeadDropCallback, 1); ndnHelperWithCache.SetUseHistory(routers[0], 100); ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); // Consumer will request /prefix/0, /prefix/1, ... consumerHelper.SetPrefix("/root"); consumerHelper.SetAttribute("Frequency", StringValue("10")); // 10 interests a second consumerHelper.Install(consumers[0]); consumerHelper.Install(consumers[1]); consumerHelper.Install(consumers[2]); ndn::AppHelper producerHelper("ns3::ndn::Producer"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); producerHelper.SetAttribute("Frequency", StringValue(frequency)); // 1 BEAD every second producerHelper.SetAttribute("Percentage", StringValue(percentage)); // Register /root prefix with global routing controller and // install producer that will satisfy Interests in /root namespace ndnGlobalRoutingHelper.AddOrigins("/root", producer); producerHelper.SetPrefix("/root"); producerHelper.Install(producer).Start(Seconds(0)); producerHelper.Install(producer).Start(Seconds(0)); ndnHelperWithCache.InstallCallback(producer, (size_t)&ForwardingDelay, 2); // ndnGlobalRoutingHelper.AddOrigins("/root/nonbead", producers[1]); // producerHelper.SetPrefix("/root/nonbead"); // producerHelper.Install(producers[1]).Start(Seconds(9)); // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); Simulator::Stop(Seconds(simulationTime)); ndn::AppDelayTracer::InstallAll(appDelayFile); ndn::L3RateTracer::InstallAll(rateTraceFile, Seconds(0.5)); Simulator::Run(); Simulator::Destroy(); delayFile.flush(); delayFile.close(); dropFile.flush(); dropFile.close(); return 0; }
int main(int argc, char* argv[]) { // setting default parameters for PointToPoint links and channels Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("10Mbps")); Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("1ms")); Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("100")); uint64_t catalogCardinality = 0; // Estimated Content Catalog Cardinality. double cacheToCatalogRatio = 0.01; // Cache to Catalog Ratio per each node. uint32_t lambda = 1; // Request rate per each client. double alpha = 1; // Zipf's Exponent double plateau = 0; // q parameter for the ZipfMandelbrot distribution std::string simType = ""; // Simulation Type Description uint32_t simDuration = 100; uint32_t numReqTot = 10000; // Total number of requests inside the simulation. // Read optional command-line parameters CommandLine cmd; cmd.AddValue ("catalogCardinality", "Estimated Content Catalog Cardinality.", catalogCardinality); cmd.AddValue ("cacheToCatalogRatio", "Cache to Catalog Ratio per each node.", cacheToCatalogRatio); cmd.AddValue ("lambda", "Request rate per each client.", lambda); cmd.AddValue ("alpha", "Zipf's Exponent", alpha); cmd.AddValue ("plateau", "q parameter for the ZipfMandelbrot distribution", plateau); cmd.AddValue ("simType", "Simulation Type Description", simType); cmd.AddValue ("simDuration", "Length of the simulation, in seconds.", simDuration); cmd.AddValue ("numReqTot", "Total number of requests during the simulation", numReqTot); cmd.Parse (argc, argv); std::string catalogCardinalityStr, lambdaStr, alphaStr, plateauStr,reqStr; std::stringstream ss; ss << catalogCardinality; catalogCardinalityStr = ss.str(); ss.str(""); ss << lambda; lambdaStr = ss.str(); ss.str(""); ss << alpha; alphaStr = ss.str(); ss.str(""); ss << plateau; plateauStr = ss.str(); ss.str(""); ss << numReqTot; reqStr = ss.str(); ss.str(""); // ********** Getting the simulation run ********** uint64_t simRun = SeedManager::GetRun(); uint64_t simRunOut = simRun - 1; std::string simRunStr; ss << simRun; simRunStr = ss.str(); ss.str(""); //NS_LOG_UNCOND("M=" << catalogCardinality << "\nC=" << cacheToCatalogRatio << "\nL=" << lambda // << "\nT=" << simType << "\nA=" << alpha << "\nR=" << simRun); // ********** Calculate the Cache Size per each cache *********** uint32_t cacheSize = round((double)catalogCardinality * cacheToCatalogRatio); ss << cacheSize; std::string cacheSizeStr = ss.str(); ss.str(""); // Creating nodes NodeContainer nodes; //nodes.Create(3); nodes.Create(1); // Connecting nodes using two links //PointToPointHelper p2p; //p2p.Install(nodes.Get(0), nodes.Get(1)); //p2p.Install(nodes.Get(1), nodes.Get(2)); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.SetDefaultRoutes(true); //ndnHelper.InstallAll(); //ndnHelper.SetOldContentStore("ns3::ndn::cs::Nocache"); //ndnHelper.Install(nodes.Get(0)); // Consumer //ndnHelper.Install(nodes.Get(2)); // Producer ndnHelper.SetOldContentStore("ns3::ndn::cs::Lru", "MaxSize", cacheSizeStr); //ndnHelper.Install(nodes.Get(1)); // Router ndnHelper.Install(nodes.Get(0)); // Router // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/broadcast"); // Installing applications // Consumer ndn::AppHelper consumerHelper("ns3::ndn::ConsumerZipfMandelbrot"); // Consumer will request /prefix/0, /prefix/1, ... consumerHelper.SetPrefix("/prefix"); consumerHelper.SetAttribute ("Frequency", StringValue(lambdaStr)); // lambda Interest per second consumerHelper.SetAttribute ("NumberOfContents", StringValue (catalogCardinalityStr)); consumerHelper.SetAttribute ("Randomize", StringValue ("exponential")); consumerHelper.SetAttribute ("q", StringValue (plateauStr)); // q paremeter consumerHelper.SetAttribute ("s", StringValue (alphaStr)); // Zipf's exponent consumerHelper.Install(nodes.Get(0)); // first node // Producer ndn::AppHelper producerHelper("ns3::ndn::Producer"); // Producer will reply to all requests starting with /prefix producerHelper.SetPrefix("/prefix"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); //producerHelper.Install(nodes.Get(2)); // last node producerHelper.Install(nodes.Get(0)); // last node Simulator::Stop (Seconds (simDuration)); Simulator::Run(); Simulator::Destroy(); return 0; }
int main(int argc, char* argv[]) { // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize CommandLine cmd; cmd.Parse(argc, argv); AnnotatedTopologyReader topologyReader("", 1); topologyReader.SetFileName("src/ndnSIM/examples/topologies/Geant2012.txt"); topologyReader.Read(); // topologyReader.ApplySettings(); topologyReader.SaveGraphviz("src/ndnSIM/examples/topologies/GeantGraph.dot"); // Install NDN stack on all nodes ndn::StackHelper ndnHelper; ndnHelper.disableRibManager(); //ndnHelper.disableFaceManager(); ndnHelper.InstallAll(); // Choosing forwarding strategy ndn::StrategyChoiceHelper::InstallAll("/cs-www.bu.edu/", "/localhost/nfd/strategy/multicast"); // Choosing forwarding strategy for content adverts ndn::StrategyChoiceHelper::InstallAll("/ContentAdVert/", "/localhost/nfd/strategy/multicast"); // Installing applications // Consumer ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); std:: string path= "/home/ali/GitHub/Datasets/test/firstDir/URLs/"; ifstream inFile(path + "URLs.con2.cs18.800051214"); string line; if (inFile.is_open()) { //NS_LOG_UNCOND ("salam!"); while(getline (inFile,line)) { consumerHelper.SetPrefix(line); //NS_LOG_UNCOND ("file line = "<<line); consumerHelper.SetAttribute("Frequency", StringValue("1")); // 1 interests a second //i put first only greece as a consumer consumerHelper.Install(Names::Find<Node>("id15")).Start (Seconds(0.005)); } } inFile.close(); // Producer ndn::AppHelper producerHelper("ns3::ndn::Producer"); // Producer will reply to all requests starting with /videos/myvideos/video1 producerHelper.SetPrefix("/cs-www.bu.edu/"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); //I put first NO as the only producer producerHelper.Install(Names::Find<Node>("id35")).Start (Seconds(0.0)); //install advertiser app on the server consumerHelper.SetPrefix ("/ContentAdVert/cs-www.bu.edu/"); consumerHelper.SetAttribute("Frequency", StringValue("0.2")); // 1 advert per 5 second consumerHelper.Install(Names::Find<Node>("id35")).Start (Seconds(0.0)); // Getting containers for the consumer/producer /* Ptr<Node> consumers[4] = {Names::Find<Node>("id0"), Names::Find<Node>("id1"), Names::Find<Node>("id2"), Names::Find<Node>("id3")}; Ptr<Node> producers[4] = {Names::Find<Node>("id36"), Names::Find<Node>("id37"), Names::Find<Node>("id38"), Names::Find<Node>("id39")}; if (consumers[0] == 0 || consumers[1] == 0 || consumers[2] == 0 || consumers[3] == 0 || producers[0] == 0 || producers[1] == 0 || producers[2] == 0 || producers[3] == 0) { NS_FATAL_ERROR("Error in topology: one nodes c1, c2, c3, c4, p1, p2, p3, or p4 is missing"); } for (int i = 0; i < 4; i++) { std::string prefix = "/data/" + Names::FindName(producers[i]); ///////////////////////////////////////////////////////////////////////////////// // install consumer app on consumer node c_i to request data from producer p_i // ///////////////////////////////////////////////////////////////////////////////// ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); consumerHelper.SetAttribute("Frequency", StringValue("10")); // 100 interests a second consumerHelper.SetPrefix(prefix); ApplicationContainer consumer = consumerHelper.Install(consumers[i]); consumer.Start(Seconds(i)); // start consumers at 0s, 1s, 2s, 3s consumer.Stop(Seconds(19 - i)); // stop consumers at 19s, 18s, 17s, 16s /////////////////////////////////////////////// // install producer app on producer node p_i // /////////////////////////////////////////////// ndn::AppHelper producerHelper("ns3::ndn::Producer"); producerHelper.SetAttribute("PayloadSize", StringValue("1024")); // install producer that will satisfy Interests in /dst1 namespace producerHelper.SetPrefix(prefix); ApplicationContainer producer = producerHelper.Install(producers[i]); // when Start/Stop time is not specified, the application is running throughout the simulation } // Manually configure FIB routes ndn::FibHelper::AddRoute("id0", "/data", "n1", 1); // link to n1 ndn::FibHelper::AddRoute("id1", "/data", "n1", 1); // link to n1 ndn::FibHelper::AddRoute("id2", "/data", "n1", 1); // link to n1 ndn::FibHelper::AddRoute("id3", "/data", "n1", 1); // link to n1 ndn::FibHelper::AddRoute("n1", "/data", "n2", 1); // link to n2 ndn::FibHelper::AddRoute("n1", "/data", "n12", 2); // link to n12 ndn::FibHelper::AddRoute("n12", "/data", "n2", 1); // link to n2 ndn::FibHelper::AddRoute("n2", "/data/p1", "id36", 1); // link to p1 ndn::FibHelper::AddRoute("n2", "/data/p2", "id37", 1); // link to p2 ndn::FibHelper::AddRoute("n2", "/data/p3", "id38", 1); // link to p3 ndn::FibHelper::AddRoute("n2", "/data/p4", "id39", 1); // link to p4 */ // Schedule simulation time and run the simulation Simulator::Stop(Seconds(20.0)); Simulator::Run(); Simulator::Destroy(); return 0; }