[ndnSIM] Request for information about L2RateTracer and CsTracer

Salwa Abdelwahed salwa201067 at gmail.com
Fri Dec 12 03:08:50 PST 2025


Greetings ,
I am simulating the attached scenario. I am encountering problems with
L2RateTracer ('ndn::L2RateTracer' has not been declared) and CsTracer (a
crash occurs in the TraceConnectWithoutContext method).
Do these two traces still remain active in ndnSIM?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20251212/4f1d0bb8/attachment.htm>
-------------- next part --------------
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/ndnSIM-module.h"


using namespace ns3;

int
main(int argc, char* argv[])
{
  CommandLine cmd;
  cmd.Parse(argc, argv);

  NodeContainer routers;
  routers.Create(20);

  NodeContainer consumers;
  consumers.Create(100);

  NodeContainer producers;
  producers.Create(4);

  // Créer un container "all" utile pour installer la stack si besoin
  NodeContainer allNodes;
  allNodes.Add(routers);
  allNodes.Add(consumers);
  allNodes.Add(producers);

  Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps"));
  Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms"));

  PointToPointHelper p2p;
  p2p.SetQueue("ns3::DropTailQueue<Packet>", "MaxSize", StringValue("20p"));
  p2p.SetDeviceAttribute("DataRate", StringValue("1Mbps"));
  p2p.SetChannelAttribute("Delay", StringValue("10ms"));

  for (uint32_t i = 0; i < routers.GetN() - 1; ++i) {
    p2p.Install(routers.Get(i), routers.Get(i + 1));
  }

  // Connecter les consumers aux 5 premiers routers (round robin)
  for (uint32_t i = 0; i < consumers.GetN(); ++i) {
    uint32_t routerIndex = i % 5;
    p2p.Install(consumers.Get(i), routers.Get(routerIndex));
  }

  // Connecter les producers aux 4 derniers routers (indices 16..19)
  for (uint32_t i = 0; i < producers.GetN(); ++i) {
    uint32_t routerIndex = routers.GetN() - producers.GetN() + i;   // 16..19
    p2p.Install(producers.Get(i), routers.Get(routerIndex));
  }


  ns3::ndn::StackHelper ndnHelper;

  // Choisir CS de type Stats::Lru (nécessaire pour CsTracer) et taille
  ndnHelper.setPolicy("nfd::cs::lru");
  ndnHelper.setCsSize(1000);

  
  ndnHelper.Install(allNodes);

  
  ns3::ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
  
  ns3::ndn::GlobalRoutingHelper grHelper;
  grHelper.Install(routers);
  grHelper.Install(producers);

  std::vector<std::string> prefixes = {"/prefix1", "/prefix2", "/prefix3", "/prefix4"};

  for (uint32_t i = 0; i < producers.GetN(); ++i) {
    ns3::ndn::AppHelper producerHelper("ns3::ndn::Producer");
    std::string pref = prefixes[i % prefixes.size()];
    producerHelper.SetPrefix(pref);
    producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
    producerHelper.Install(producers.Get(i));

    
    grHelper.AddOrigins(pref, producers.Get(i));
  }

  
  for (uint32_t i = 0; i < consumers.GetN(); ++i) {
    ns3::ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr");
    std::string pref = prefixes[i % prefixes.size()];
    consumerHelper.SetPrefix(pref);
    consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 Int/s
    consumerHelper.Install(consumers.Get(i));
  }

  // Calculer les routes globales (après AddOrigins)
  ns3::ndn::GlobalRoutingHelper::CalculateRoutes();

  
  Simulator::Stop(ns3::Seconds(20.0));

  // AppDelay + L3Rate : ok en InstallAll
  ns3::ndn::AppDelayTracer::InstallAll("delays.csv");
  ns3::ndn::L3RateTracer::InstallAll("rate.csv", ns3::Seconds(1.0));

  
  ns3::ndn::L2RateTracer::InstallAll ("drop-trace.csv", Seconds (0.5));

   ns3::ndn::CsTracer::InstallAll ("cs-trace.csv", Seconds (1));


  Simulator::Run();
  Simulator::Destroy();

  return 0;
}



More information about the ndnSIM mailing list