When giving up PIT entry, remove all outgoing interests. Otherwise,
everything can stuck (was happening...)
Modified experiment with synthetic topology
diff --git a/model/annotated-topology-reader.cc b/model/annotated-topology-reader.cc
index 8caceb1..edcff58 100644
--- a/model/annotated-topology-reader.cc
+++ b/model/annotated-topology-reader.cc
@@ -137,7 +137,7 @@
double latitude, longitude;
lineBuffer >> name >> city >> latitude >> longitude;
- Ptr<Node> node = CreateNode (name, 2*longitude, -2*latitude);
+ Ptr<Node> node = CreateNode (name, longitude, -latitude);
nodes.Add (node);
}
@@ -154,9 +154,9 @@
// NS_LOG_DEBUG ("Input: [" << line << "]");
istringstream lineBuffer (line);
- string from, to, capacity, metric, delay, queueSizeNode1, queueSizeNode2;
+ string from, to, capacity, metric, delay, maxPackets;
- lineBuffer >> from >> to >> capacity >> metric >> delay >> queueSizeNode1 >> queueSizeNode2;
+ lineBuffer >> from >> to >> capacity >> metric >> delay >> maxPackets;
if (processedLinks[to].size () != 0 &&
processedLinks[to].find (from) != processedLinks[to].end ())
@@ -177,13 +177,11 @@
if (!delay.empty ())
link.SetAttribute ("Delay", delay);
- if (!queueSizeNode1.empty ())
- link.SetAttribute ("QueueSizeNode1", queueSizeNode1);
- if (!queueSizeNode2.empty ())
- link.SetAttribute ("QueueSizeNode2", queueSizeNode2);
+ if (!maxPackets.empty ())
+ link.SetAttribute ("MaxPackets", maxPackets);
AddLink (link);
- NS_LOG_DEBUG ("New link " << from << " <==> " << to << " / " << capacity << "Kbps with " << metric << " metric");
+ NS_LOG_DEBUG ("New link " << from << " <==> " << to << " / " << capacity << " with " << metric << " metric (" << delay << ", " << maxPackets << ")");
}
NS_LOG_INFO ("Annotated topology created with " << nodes.GetN () << " nodes and " << LinksSize () << " links");
@@ -253,37 +251,33 @@
if (link.GetAttributeFailSafe ("DataRate", tmp))
{
NS_LOG_INFO ("DataRate = " + link.GetAttribute("DataRate"));
- p2p.SetDeviceAttribute ("DataRate", StringValue(link.GetAttribute("DataRate")));
+ p2p.SetDeviceAttribute ("DataRate", StringValue (link.GetAttribute ("DataRate")));
}
- if (link.GetAttributeFailSafe("Delay", tmp))
+ if (link.GetAttributeFailSafe ("Delay", tmp))
{
NS_LOG_INFO ("Delay = " + link.GetAttribute("Delay"));
- p2p.SetChannelAttribute ("Delay", StringValue(link.GetAttribute("Delay")));
+ p2p.SetChannelAttribute ("Delay", StringValue (link.GetAttribute ("Delay")));
}
-
+
NetDeviceContainer nd = p2p.Install(link.GetFromNode (), link.GetToNode ());
link.SetNetDevices (nd.Get (0), nd.Get (1));
- if (link.GetAttributeFailSafe("QueueSizeNode1", tmp))
+ if (link.GetAttributeFailSafe ("MaxPackets", tmp))
{
- PointerValue txQueueFrom;
- link.GetFromNetDevice ()->GetAttribute ("TxQueue", txQueueFrom);
- NS_ASSERT (txQueueFrom.Get<DropTailQueue> () != 0);
+ NS_LOG_INFO ("MaxPackets = " + link.GetAttribute ("MaxPackets"));
- NS_LOG_INFO ("QueueFrom: " << link.GetAttribute("QueueSizeNode1"));
- txQueueFrom.Get<DropTailQueue> ()->SetAttribute ("MaxPackets", StringValue (link.GetAttribute("QueueSizeNode1")));
+ PointerValue txQueue;
+
+ link.GetToNetDevice ()->GetAttribute ("TxQueue", txQueue);
+ NS_ASSERT (txQueue.Get<DropTailQueue> () != 0);
+ txQueue.Get<DropTailQueue> ()->SetAttribute ("MaxPackets", StringValue (link.GetAttribute ("MaxPackets")));
+
+ link.GetFromNetDevice ()->GetAttribute ("TxQueue", txQueue);
+ NS_ASSERT (txQueue.Get<DropTailQueue> () != 0);
+ txQueue.Get<DropTailQueue> ()->SetAttribute ("MaxPackets", StringValue (link.GetAttribute ("MaxPackets")));
}
-
- if (link.GetAttributeFailSafe("QueueSizeNode2", tmp))
- {
- PointerValue txQueueTo;
- link.GetToNetDevice ()->GetAttribute ("TxQueue", txQueueTo);
- NS_ASSERT (txQueueTo.Get<DropTailQueue> () != 0);
- NS_LOG_INFO ("QueueTo: " << link.GetAttribute("QueueSizeNode2"));
- txQueueTo.Get<DropTailQueue> ()->SetAttribute ("MaxPackets", StringValue (link.GetAttribute("QueueSizeNode2")));
- }
}
}