Repair critical bug in CcnxConsumer. Due to accidental commenting out a
line, there were not packet retransmissions...
diff --git a/apps/ccnx-consumer.cc b/apps/ccnx-consumer.cc
index b5984e7..6fc3a40 100644
--- a/apps/ccnx-consumer.cc
+++ b/apps/ccnx-consumer.cc
@@ -355,8 +355,8 @@
CcnxConsumer::OnTimeout (uint32_t sequenceNumber)
{
// std::cout << "TO: " << sequenceNumber << "\n";
- // m_retxSeqs.insert (sequenceNumber);
// std::cout << "Current RTO: " << m_rtt->RetransmitTimeout ().ToDouble (Time::S) << "s\n";
+ m_retxSeqs.insert (sequenceNumber);
ScheduleNextPacket ();
}
diff --git a/examples/base-experiment.h b/examples/base-experiment.h
index 7a9e4bf..873a956 100644
--- a/examples/base-experiment.h
+++ b/examples/base-experiment.h
@@ -63,7 +63,7 @@
reader->Commit ();
}
- void InstallCcnxStack ()
+ void InstallCcnxStack (bool installFIBs = true)
{
InternetStackHelper stack;
Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
@@ -80,9 +80,12 @@
ccnxHelper.SetDefaultRoutes (false);
ccnxHelper.InstallAll ();
- // // Populate FIB based on IPv4 global routing controller
ccnxHelper.InstallFakeGlobalRoutes ();
- ccnxHelper.InstallRoutesToAll ();
+ if (installFIBs)
+ {
+ // // Populate FIB based on IPv4 global routing controller
+ ccnxHelper.InstallRoutesToAll ();
+ }
}
void InstallIpStack ()
diff --git a/examples/blackhole-sprint.cc b/examples/blackhole-sprint.cc
index a6afb82..d826ce6 100644
--- a/examples/blackhole-sprint.cc
+++ b/examples/blackhole-sprint.cc
@@ -63,6 +63,7 @@
list<string> prefixes;
// Create Producers/Hijackers
+ uint32_t pair = 0;
for (list<tuple<uint32_t,uint32_t> >::iterator i = m_pairs.begin (); i != m_pairs.end (); i++)
{
uint32_t node1_num = i->get<0> ();
@@ -74,7 +75,8 @@
// node1 legitimate producer
// node2 "fake" producer
- string prefix = "/" + lexical_cast<string> (node1->GetId ());
+ string prefix = "/bh/" + lexical_cast<string> (pair);
+ pair ++;
CcnxAppHelper legitimateProducerHelper ("ns3::CcnxProducer");
legitimateProducerHelper.SetPrefix (prefix);
@@ -87,6 +89,7 @@
(fakeProducerHelper.Install (node2));
// one more trick. Need to install route to hijacker (aka "hijacker announces itself as a legitimate producer")
+ CcnxStackHelper::InstallRouteTo (prefix, node1);
CcnxStackHelper::InstallRouteTo (prefix, node2);
prefixes.push_back (prefix); // remember prefixes that consumers will be requesting
@@ -108,12 +111,14 @@
BOOST_FOREACH (const string &prefix, prefixes)
{
consumerHelper.SetPrefix (prefix);
- consumerHelper.SetAttribute ("MeanRate", StringValue ("8Kbps")); // this is about 1 interest a second
+ consumerHelper.SetAttribute ("MeanRate", StringValue ("1000Kbps")); // this is about 1 interest a second
consumerHelper.SetAttribute ("Size", DoubleValue(requestSize));
apps.Add
(consumerHelper.Install (*node));
}
+
+ // break;
}
return apps;
}
@@ -126,6 +131,7 @@
Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("100Mbps"));
Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("2000"));
+ Config::SetDefault ("ns3::RttEstimator::InitialEstimation", StringValue ("1s"));
Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
@@ -142,7 +148,7 @@
// config.ConfigureDefaults ();
Experiment experiment;
- for (uint32_t i = 0; i < 80; i++)
+ for (uint32_t i = startRun; i < maxRuns; i++)
{
Config::SetGlobal ("RngRun", IntegerValue (i));
cout << "seed = " << SeedManager::GetSeed () << ", run = " << SeedManager::GetRun () << endl;
@@ -151,18 +157,18 @@
experiment.GenerateRandomPairs (10);
cout << "Run " << i << endl;
- string prefix = "run-" + lexical_cast<string> (i) + "-";
+ string prefix = "blackhole-" + lexical_cast<string> (i) + "-";
experiment.ConfigureTopology ();
- experiment.InstallCcnxStack ();
+ experiment.InstallCcnxStack (false);
ApplicationContainer apps = experiment.AddApplications ();
//tracing
CcnxTraceHelper traceHelper;
// traceHelper.EnableRateL3All (prefix + "rate-trace.log");
- traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumer", prefix + "consumers-seqs.log");
+ traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerCbr", prefix + "consumers-seqs.log");
- experiment.Run (Seconds(20.0));
+ experiment.Run (Seconds(40.0));
}
cout << "Finish blackhole scenario\n";