<div dir="ltr"><div>Dear all,</div><div><br></div><div>I'm trying to use per fib limit, limit rate and nack over ndnSIM 1.0, but I have some problems.</div><div>The level "m_bucket" for perFibLimit dose not decrease, so the leaky bucket becomes full.</div><div><br></div><div>The scenario and the topology I used are followings.  I'm very happy if someone help me.  </div><div><br></div><div>By the way, my plan is to implement the stateful fowarding.  Does anyone know there is a program code for it.  </div><div><br></div><div><br></div><div>// ndn-simple.cpp</div><div>#include "ns3/core-module.h"<br>#include "ns3/network-module.h"<br>#include "ns3/ndnSIM-module.h"</div><div>// for ndn::L3AggregateTracer<br>#include <ns3/ndnSIM/utils/tracers/ndn-l3-aggregate-tracer.h></div><div>// for ndn::L3RateTracer<br>#include <ns3/ndnSIM/utils/tracers/ndn-l3-rate-tracer.h></div><div>using namespace ns3;</div><div>int<br>main(int argc, char* argv[])<br>{</div><div>  // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize<br>  CommandLine cmd;<br>  cmd.Parse(argc, argv);</div><div>  // Read Topology from file</div><div>  AnnotatedTopologyReader reader ;<br>  reader.SetFileName("scratch/topology.txt");<br>  reader.Read ();</div><div>// Install NDN stack<br>  ndn::StackHelper ndnHelper;<br>  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");</div><div>  // Install PerFibLimit<br>  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits::PerFibLimits",<br>                                   "Limit", "ns3::ndn::Limits::Rate");<br>  ndnHelper.EnableLimits (true, Seconds(0.1), 0, 1250);<br>  ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits::PerFibLimits",<br>                                   "EnableNACKs", "true");</div><div>  ndnHelper.InstallAll ();</div><div>  // Installing global routing interface on all nodes<br>  ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;<br>  ndnGlobalRoutingHelper.InstallAll ();</div><div>  // Installing applications</div><div>  // Getting containers for consumer/producer<br>  Ptr<Node> producer1 = Names::Find<Node> ("server1");<br>  Ptr<Node> producer2 = Names::Find<Node> ("server2");<br>  Ptr<Node> consumer1 = Names::Find<Node> ("client1");<br>  Ptr<Node> consumer2 = Names::Find<Node> ("client2");<br> <br>  // Consumer window<br>  ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerWindow");</div><div>  // Consumer<br>  std::string prefix1 = "/root";<br>  consumerHelper.SetPrefix(prefix1);<br>  consumerHelper.SetAttribute ("Size", StringValue ("2.0")); <br>  consumerHelper.Install(consumer1);</div><div>  std::string prefix2 = "/prefix";<br>  consumerHelper.SetPrefix(prefix2);<br>  consumerHelper.SetAttribute ("Size", StringValue ("2.0")); <br>  consumerHelper.Install(consumer2);</div><div>  // Producer<br>  ndn::AppHelper producerHelper("ns3::ndn::Producer");<br>  producerHelper.SetPrefix(prefix1);<br>  producerHelper.SetAttribute("PayloadSize", StringValue("1250"));<br>  producerHelper.Install(producer1); // last node</div><div>  // Producer will reply to all requests starting with /prefix<br>  producerHelper.SetPrefix(prefix2);<br>  producerHelper.SetAttribute("PayloadSize", StringValue("1250"));<br>  producerHelper.Install(producer2); </div><div>  // Add prefix origins to ndn::GlobalRouter<br>  ndnGlobalRoutingHelper.AddOrigins (prefix1, producer1);<br>  ndnGlobalRoutingHelper.AddOrigins (prefix2, producer2);</div><div><br>  // Calculate and install FIBs<br>  ndn::GlobalRoutingHelper::CalculateRoutes ();</div><div>  Simulator::Stop(Seconds(10.0));</div><div>  ndn::L3RateTracer::InstallAll("test.txt", Seconds(0.5));</div><div>  Simulator::Run();<br>  Simulator::Destroy();</div><div>  return 0;<br>}</div><div><br></div><div><br></div><div>topology.txt</div><div>router<br>#name   city latitude longitude<br>client1    unknown 28.8967  135<br>client2    unknown 35.41  135<br>server1    unknown 28.8967   140<br>server2   unknown 35.41    140<br>clientProvider   unknown 30.1     137<br>serverProvider   unknown 30.1   139<br>link<br>#x y capacity(kbps) OSPF    Delay  MaxPackets<br>client1 clientProvider 10Mbps 1 50ms  200<br>client2 clientProvider 10Mbps 1 50ms  200<br>server1  serverProvider 10Mbps 2 20ms  20<br>server2  serverProvider 10Mbps 2 20ms  20<br>clientProvider serverProvider 1Mbps  1   30ms 20<br></div><div><br></div><div><br></div></div>