When giving up PIT entry, remove all outgoing interests. Otherwise,
everything can stuck (was happening...)
Modified experiment with synthetic topology
diff --git a/examples/synthetic-topology.cc b/examples/synthetic-topology.cc
index b19b375..f03c22e 100644
--- a/examples/synthetic-topology.cc
+++ b/examples/synthetic-topology.cc
@@ -44,7 +44,7 @@
Simulator::Schedule (Seconds (10.0), PrintTime);
}
-int
+int
main (int argc, char *argv[])
{
string input ("./src/NDNabstraction/examples/synthetic-topology.txt");
@@ -64,18 +64,18 @@
// --------------------------------------------
AnnotatedTopologyReader reader ("/synthetic");
- reader.SetMobilityModel ("ns3::SpringMobilityModel");
+ // reader.SetMobilityModel ("ns3::SpringMobilityModel");
reader.SetFileName (input);
NodeContainer nodes = reader.Read ();
- SpringMobilityHelper::InstallSprings (reader.LinksBegin (), reader.LinksEnd ());
+ // SpringMobilityHelper::InstallSprings (reader.LinksBegin (), reader.LinksEnd ());
InternetStackHelper stack;
Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
stack.SetRoutingHelper (ipv4RoutingHelper);
stack.Install (nodes);
- /*
- reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
- */
+
+ reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+
NS_LOG_INFO("Nodes = " << nodes.GetN());
NS_LOG_INFO("Links = " << reader.LinksSize ());
@@ -84,31 +84,50 @@
CcnxStackHelper ccnxHelper;
ccnxHelper.SetForwardingStrategy (strategy);
ccnxHelper.EnableLimits (true, Seconds(0.1));
- ccnxHelper.SetDefaultRoutes (true);
+ ccnxHelper.SetDefaultRoutes (false);
ccnxHelper.InstallAll ();
NS_LOG_INFO ("Installing Applications");
- CcnxConsumerHelper consumerHelper ("/1");
- ApplicationContainer consumers = consumerHelper.Install (Names::Find<Node> ("/synthetic", "NODE1"));
-
- CcnxConsumerHelper consumerHelper2("/2");
- ApplicationContainer consumers2 = consumerHelper2.Install(Names::Find<Node> ("/synthetic", "NODE2"));
-
- CcnxProducerHelper producerHelper ("/1",1024);
- ApplicationContainer producers = producerHelper.Install (Names::Find<Node> ("/synthetic", "NODE6"));
-
- CcnxProducerHelper producerHelper2 ("/2",1024);
- ApplicationContainer producers2 = producerHelper2.Install (Names::Find<Node> ("/synthetic", "NODE7"));
+ CcnxConsumerHelper consumerHelper ("/6");
+ ApplicationContainer consumers = consumerHelper.Install (Names::Find<Node> ("/synthetic", "c1"));
+ consumerHelper.SetPrefix ("/7");
+ ApplicationContainer consumers2 = consumerHelper.Install(Names::Find<Node> ("/synthetic", "c2"));
+
+ consumerHelper.SetPrefix ("/8");
+ ApplicationContainer consumers3 = consumerHelper.Install(Names::Find<Node> ("/synthetic", "c3"));
+
+ consumerHelper.SetPrefix ("/10");
+ ApplicationContainer consumers4 = consumerHelper.Install(Names::Find<Node> ("/synthetic", "c4"));
+
+ consumers.Start (Seconds (2.121212123));
+ consumers2.Start (Seconds (0.166666));
+ consumers3.Start (Seconds (4.1235432));
+ consumers4.Start (Seconds (3.00005421));
+
+ CcnxProducerHelper producerHelper ("/6",1024);
+ ApplicationContainer producers = producerHelper.Install (Names::Find<Node> ("/synthetic", "p1"));
+
+ CcnxProducerHelper producerHelper2 ("/7",1024);
+ ApplicationContainer producers2 = producerHelper2.Install (Names::Find<Node> ("/synthetic", "p2"));
+
+ CcnxProducerHelper producerHelper3 ("/8",1024);
+ ApplicationContainer producers3 = producerHelper3.Install (Names::Find<Node> ("/synthetic", "p3"));
+
+ CcnxProducerHelper producerHelper4 ("/10",1024);
+ ApplicationContainer producers4 = producerHelper4.Install (Names::Find<Node> ("/synthetic", "p4"));
+
Simulator::Schedule (Seconds (10.0), PrintTime);
// Populate FIB based on IPv4 global routing controller
- //ccnxHelper.InstallFakeGlobalRoutes ();
- //ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "NODE1"));
- //ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "NODE7"));
-
+ ccnxHelper.InstallFakeGlobalRoutes ();
+ ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p1"));
+ ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p2"));
+ ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p3"));
+ ccnxHelper.InstallRouteTo (Names::Find<Node> ("/synthetic", "p4"));
+
Simulator::Stop (finishTime);
-
+
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();
Simulator::Destroy ();
diff --git a/examples/synthetic-topology.txt b/examples/synthetic-topology.txt
index 2c080d9..0d175b0 100644
--- a/examples/synthetic-topology.txt
+++ b/examples/synthetic-topology.txt
@@ -1,20 +1,29 @@
router
#name city latitude longitude
-NODE1 NODE1 60 20
-NODE2 NODE2 20 20
-NODE3 NODE3 40 40
-NODE4 NODE4 20 60
-NODE5 NODE5 40 80
-NODE6 NODE6 60 100
-NODE7 NODE7 20 100
+c1 NODE1 50 30
+c2 NODE2 30 30
+c3 x 10 30
+n1 NODE3 40 40
+n12 NODE4 30 60
+n2 NODE5 40 80
+p1 NODE6 50 90
+p2 NODE7 30 90
+p3 x 10 90
+c4 x 10 40
+p4 x 10 80
link
#capacity on 4/10/2003 (see page 20 of http://www.internet2.edu/presentations/spring03/20030410-Abilene-Corbato.pdf)
#OSPF weight on 04/10/2003 (see http://www.abilene.iu.edu/images/Ab-IGP-topo.jpg)
-#x y capacity(kbps) OSPF Delay QueueSize1 QueueSize2
-NODE1 NODE3 10Mbps 1 1 150 150
-NODE2 NODE3 10Mbps 1 1 150 150
-NODE3 NODE4 1Mbps 1176 1 15 15
-NODE3 NODE5 1Mbps 587 1 15 15
-NODE4 NODE5 1Mbps 846 1 15 15
-NODE5 NODE6 10Mbps 260 1 150 150
-NODE5 NODE7 10Mbps 700 50 150 150
+#x y capacity(kbps) OSPF Delay MaxPackets
+c1 n1 10Mbps 1 1ms 200
+c2 n1 10Mbps 1 1ms 200
+c3 n1 10Mbps 1 1ms 200
+n1 n2 1Mbps 1176 1ms 20
+n1 n12 1Mbps 587 1ms 20
+n12 n2 1Mbps 846 1ms 20
+n2 p1 10Mbps 260 50ms 200
+n2 p2 10Mbps 700 1ms 200
+n2 p3 10Mbps 1 1ms 200
+c4 n1 10Mbps 1 1ms 200
+n2 p4 10Mbps 1 1ms 200
+