[ndnSIM] Receiving an error while using Globalrouting

Zeinab Rezaeifar zeinab.rezaiefar at gmail.com
Sat Apr 25 05:57:14 PDT 2020


Hi there,
when I use the Globalrouting instead of default route in the following scenario I will receive this error:
“ assert failed. cond="n < m_nodes.size ()", msg="Node index 4294967295 is out of range (only have 19 nodes).", file=../src/network/model/node-list.cc <http://node-list.cc/>, line=209
libc++abi.dylib: terminating
Command ['/Users/zrf/ndnSIM/ns-3/build/scratch/xc'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run <program> --command-template="gdb --args %s <args>”). “

the scenario that I run :

// ndn-simple.cpp

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/ndnSIM-module.h"
#include "ns3/ndnSIM/utils/trie/lru-policy.hpp"
#include "ns3/ndnSIM/utils/trie/multi-policy.hpp"


namespace ns3 {


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 ("20p"));
      Config::SetDefault("ns3::QueueBase::MaxSize", StringValue("10p"));


  // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize
  CommandLine cmd;
  cmd.Parse(argc, argv);

  // Creating nodes
 NodeContainer routerNodes;
  	NodeContainer producerNodes;
  	NodeContainer consumerNodes;
    NodeContainer attackerNodes;
//producerNodes.Create(3);
consumerNodes.Create(9);
routerNodes.Create(9);
attackerNodes.Create(1);


  // Connecting nodes using two links
  PointToPointHelper p2p;


			    //Router 0
			    p2p.Install(routerNodes.Get(0), routerNodes.Get(1));
			    p2p.Install(routerNodes.Get(0), routerNodes.Get(2));
			    p2p.Install(routerNodes.Get(0), routerNodes.Get(3));
			    p2p.Install(routerNodes.Get(0), routerNodes.Get(6));

			    //Router 1
			    p2p.Install(routerNodes.Get(1), routerNodes.Get(2));
			    p2p.Install(routerNodes.Get(1), routerNodes.Get(4));
			    p2p.Install(routerNodes.Get(1), routerNodes.Get(7));

			    //Router 2
			    p2p.Install(routerNodes.Get(2), routerNodes.Get(5));
			    p2p.Install(routerNodes.Get(2), routerNodes.Get(8));

			    //Router 3
			    //Router 4
			    //Router 5
			    //Router 6
			    //Router 7
			    //Router 8

			    //Producers
			    p2p.Install(routerNodes.Get(3), consumerNodes.Get(6));
			    p2p.Install(routerNodes.Get(4), consumerNodes.Get(7));
			    p2p.Install(routerNodes.Get(5), consumerNodes.Get(8));

			    //Consumers
			    p2p.Install(consumerNodes.Get(0), routerNodes.Get(6));
			    p2p.Install(consumerNodes.Get(1), routerNodes.Get(7));
			    p2p.Install(consumerNodes.Get(2), routerNodes.Get(8));
			    p2p.Install(consumerNodes.Get(3), routerNodes.Get(3));
			    p2p.Install(consumerNodes.Get(4), routerNodes.Get(4));
			    p2p.Install(consumerNodes.Get(5), routerNodes.Get(5));

  // Install NDN stack on all nodes
  ndn::StackHelper ndnHelper;
//ndnHelper.SetDefaultRoutes(true);
ndnHelper.SetOldContentStore("ns3::ndn::cs::Lru", "MaxSize", "0");
      ndnHelper.InstallAll();

///ndnHelper.Install(routerNodes);
//ndnHelper.SetOldContentStore("ns3::ndn::cs::Nocache");
///ndnHelper.Install(consumerNodes);

//  ndnHelper.InstallAll();

  // Choosing forwarding strategy
  //ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/multicast");
// ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/ncc");
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
     // Installing global routing interface on all nodes
 ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
  ndnGlobalRoutingHelper.InstallAll ();

  // Installing applications
//NodeContainer consumerNodes;
//  consumerNodes.Add (nodes.Get(0));
// consumerNodes.Add (nodes.Get(4));
  // Consumer
 std::string prefix= "/prefix";
    std::string prefix2 = "/fake";
    Ptr<Node> producer=consumerNodes.Get(1);

  ndn::AppHelper consumerHelper("ns3::ndn::ConsumerZipfMandelbrot");
  // ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
  consumerHelper.SetPrefix(prefix);
  consumerHelper.SetAttribute("Frequency", StringValue("100"));        // 100 interests a second
  consumerHelper.SetAttribute("NumberOfContents", StringValue("100")); // 10 different contents
consumerHelper.SetAttribute("s", StringValue("0.9"));
 consumerHelper.Install(consumerNodes.Get(3));
consumerHelper.Install(consumerNodes.Get(5));
consumerHelper.Install(consumerNodes.Get(7));
consumerHelper.SetAttribute("Frequency", StringValue("50"));        // 100 interests a second
consumerHelper.Install(consumerNodes.Get(0));
consumerHelper.Install(consumerNodes.Get(2));
consumerHelper.Install(consumerNodes.Get(4));
consumerHelper.Install(consumerNodes.Get(6));
consumerHelper.Install(consumerNodes.Get(8));
    //*************
    ndn::AppHelper consumerHelper2("ns3::ndn::ConsumerZipfMandelbrot");
  // ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
  consumerHelper2.SetPrefix("/fake");
  consumerHelper2.SetAttribute("Frequency", StringValue("200"));        // 100 interests a second
  consumerHelper2.SetAttribute("NumberOfContents", StringValue("100")); // 10 different contents
consumerHelper2.SetAttribute("s", StringValue("0.9"));
 //consumerHelper2.Install(attackNodes.Get(0));
     auto apps2 = consumerHelper2.Install(attackerNodes.Get(0));                        // first node
    apps2.Start(Seconds(0.1)); 



  // 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(consumerNodes.Get(1)); // last node
  // ndnGlobalRoutingHelper.AddOrigins (prefix, producer);
    
    ndn::AppHelper producerHelper2("ns3::ndn::Producer");
  // Producer will reply to all requests starting with /prefix
  producerHelper2.SetPrefix("/fake");
  producerHelper2.SetAttribute("PayloadSize", StringValue("1024"));
  producerHelper2.Install(consumerNodes.Get(1)); // last node
    ndnGlobalRoutingHelper.AddOrigins (prefix2, producer);
// Calculate and install FIBs
 ndnGlobalRoutingHelper.CalculateRoutes ();
  Simulator::Stop(Seconds(20.0));
///ndn::AppDelayTracer::InstallAll("app-delays-trace.txt");

 ///AsciiTraceHelper ascii;
  ///p2p.EnableAsciiAll (ascii.CreateFileStream ("ndn-simple.tr <http://ndn-simple.tr/>"));
 ///p2p.EnablePcapAll ("ndn-simple");
ndn::CsTracer::InstallAll("cs-trace.txt", Seconds(1));
  Simulator::Run();
  Simulator::Destroy();

  return 0;
}

} // namespace ns3

int
main(int argc, char* argv[])
{
  return ns3::main(argc, argv);

}


I do not understand what mistakes I am doing. I will appreciate your help
Kind regards
Zeinab
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20200425/6c9b473f/attachment-0001.html>


More information about the ndnSIM mailing list