diff --git a/ns-3/.vscode/settings.json b/ns-3/.vscode/settings.json index 1652aae..dfb198e 100644 --- a/ns-3/.vscode/settings.json +++ b/ns-3/.vscode/settings.json @@ -2,6 +2,7 @@ "files.associations": { "*.txt": "cpp", "fstream": "cpp", - "limits": "cpp" + "limits": "cpp", + "ostream": "cpp" } } \ No newline at end of file diff --git a/ns-3/src/ndnSIM/apps/mircc-consumer.cpp b/ns-3/src/ndnSIM/apps/mircc-consumer.cpp index e090d76..5d4a121 100644 --- a/ns-3/src/ndnSIM/apps/mircc-consumer.cpp +++ b/ns-3/src/ndnSIM/apps/mircc-consumer.cpp @@ -230,6 +230,7 @@ ConsumerMIRCC::SendPacket(uint64_t pathId,uint64_t classId) seq = *m_retxSeqs.begin(); //从重传队列删除 m_retxSeqs.erase(m_retxSeqs.begin()); + std::cout << "retrans: " << seq << std::endl; break; } @@ -561,6 +562,7 @@ ConsumerMIRCC::OnTimeout(uint32_t sequenceNumber) { NS_LOG_FUNCTION(sequenceNumber); // std::cout << Simulator::Now () << ", TO: " << sequenceNumber << ", current RTO: " << // m_rtt->RetransmitTimeout ().ToDouble (Time::S) << "s\n"; + std::cout << "Timeout: " << sequenceNumber << std::endl; m_rtt->IncreaseMultiplier(); // Double the next RTO m_rtt->SentSeq(SequenceNumber32(sequenceNumber), diff --git a/scenario/extensions/mircc-strategy.hpp b/scenario/extensions/mircc-strategy.hpp index 9173402..88756cf 100644 --- a/scenario/extensions/mircc-strategy.hpp +++ b/scenario/extensions/mircc-strategy.hpp @@ -53,7 +53,7 @@ namespace nfd { friend ProcessNackTraits; private: - static const uint64_t MAX_FACE = 10;//单一节点最多支持10个外部端口,涉及到hash的计算 + static const uint64_t MAX_FACE = 12;//单一节点最多支持10个外部端口,涉及到hash的计算 const uint64_t DATA_SIZE = 8696;//固定数据包大小 const uint64_t MAX_QUEUE = 10;//固定队列大小 diff --git a/scenario/scenarios/dsccp4-2-multi.cpp b/scenario/scenarios/dsccp4-2-multi.cpp index 6270075..75099ce 100644 --- a/scenario/scenarios/dsccp4-2-multi.cpp +++ b/scenario/scenarios/dsccp4-2-multi.cpp @@ -260,9 +260,9 @@ namespace ns3 Simulator::Stop(Seconds(60.0)); - ndn::L3RateTracer::InstallAll("dsccp4-2-mircc_throughput.txt", Seconds(0.1)); - ndn::AppDelayTracer::InstallAll("dsccp4-2-mircc_delay.txt"); - L2RateTracer::InstallAll("dsccp4-2-mircc_drop.txt", Seconds(0.1)); + ndn::L3RateTracer::InstallAll("dsccp4-2-mircc-no-pit-merge-throughput.txt", Seconds(0.1)); + ndn::AppDelayTracer::InstallAll("dsccp4-2-mircc-no-pit-merge-delay.txt"); + L2RateTracer::InstallAll("dsccp4-2-mircc-no-pit-merge-drop.txt", Seconds(0.1)); Simulator::Run(); Simulator::Destroy(); diff --git a/scenario/scenarios/dsccp5.cpp b/scenario/scenarios/dsccp5.cpp new file mode 100644 index 0000000..804feca --- /dev/null +++ b/scenario/scenarios/dsccp5.cpp @@ -0,0 +1,982 @@ +#include "ns3/core-module.h" +#include "ns3/network-module.h" +#include "ns3/ndnSIM-module.h" +#include "../extensions/mircc-strategy.hpp" + +namespace ns3 +{ + + int + main(int argc, char *argv[]) + { + CommandLine cmd; + cmd.Parse(argc, argv); + + AnnotatedTopologyReader topologyReader("", 25); + topologyReader.SetFileName("topologies/dsccp5.txt"); + topologyReader.Read(); + + // Install NDN stack on all nodes + ndn::StackHelper ndnHelper; + ndnHelper.setPolicy("nfd::cs::lru"); + // ndnHelper.setCsSize(10000); + ndnHelper.setCsSize(0); + ndnHelper.InstallAll(); + + // Choosing forwarding strategy + ndn::StrategyChoiceHelper::InstallAll("/"); + + // Installing global routing interface on all nodes + ndn::GlobalRoutingHelper ndnGlobalRoutingHelper; + ndnGlobalRoutingHelper.InstallAll(); + + + ndn::AppHelper consumerHelper("ns3::ndn::ConsumerMIRCC"); + consumerHelper.SetAttribute("MaxSeq", StringValue("5000")); // 100 interests a second + consumerHelper.SetAttribute("logtms",StringValue("0")); + consumerHelper.SetAttribute("start_ms",StringValue("0")); + consumerHelper.SetAttribute("end_ms",StringValue("120000")); + // consumerHelper.SetAttribute("NumberOfContents", UintegerValue(100000)); + + + // // /C1 + // consumerHelper.SetPrefix("/C1"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C2 + // consumerHelper.SetPrefix("/C2"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C3 + // consumerHelper.SetPrefix("/C3"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C4 + // consumerHelper.SetPrefix("/C4"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C5 + // consumerHelper.SetPrefix("/C5"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C6 + // consumerHelper.SetPrefix("/C6"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C7 + // consumerHelper.SetPrefix("/C7"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // // /C8 + // consumerHelper.SetPrefix("/C8"); + // consumerHelper.Install("n18"); + // consumerHelper.Install("n4"); + // consumerHelper.Install("n3"); + // consumerHelper.Install("n25"); + // consumerHelper.Install("n40"); + // consumerHelper.Install("n45"); + // consumerHelper.Install("n41"); + // consumerHelper.Install("n37"); + + // /C1 + consumerHelper.SetPrefix("/C1/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C1/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C1/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C1/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C1/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C1/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C1/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C1/8"); + consumerHelper.Install("n37"); + + // /C2 + consumerHelper.SetPrefix("/C2/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C2/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C2/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C2/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C2/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C2/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C2/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C2/8"); + consumerHelper.Install("n37"); + + // /C3 + consumerHelper.SetPrefix("/C3/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C3/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C3/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C3/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C3/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C3/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C3/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C3/8"); + consumerHelper.Install("n37"); + + // /C4 + consumerHelper.SetPrefix("/C4/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C4/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C4/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C4/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C4/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C4/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C4/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C4/8"); + consumerHelper.Install("n37"); + + // /C5 + consumerHelper.SetPrefix("/C5/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C5/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C5/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C5/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C5/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C5/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C5/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C5/8"); + consumerHelper.Install("n37"); + + // /C6 + consumerHelper.SetPrefix("/C6/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C6/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C6/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C6/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C6/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C6/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C6/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C6/8"); + consumerHelper.Install("n37"); + + // /C7 + consumerHelper.SetPrefix("/C7/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C7/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C7/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C7/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C7/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C7/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C7/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C7/8"); + consumerHelper.Install("n37"); + + // /C8 + consumerHelper.SetPrefix("/C8/1"); + consumerHelper.Install("n18"); + consumerHelper.SetPrefix("/C8/2"); + consumerHelper.Install("n4"); + consumerHelper.SetPrefix("/C8/3"); + consumerHelper.Install("n3"); + consumerHelper.SetPrefix("/C8/4"); + consumerHelper.Install("n25"); + consumerHelper.SetPrefix("/C8/5"); + consumerHelper.Install("n40"); + consumerHelper.SetPrefix("/C8/6"); + consumerHelper.Install("n45"); + consumerHelper.SetPrefix("/C8/7"); + consumerHelper.Install("n41"); + consumerHelper.SetPrefix("/C8/8"); + consumerHelper.Install("n37"); + + ndn::AppHelper producerHelper("ns3::ndn::Producer"); + producerHelper.SetAttribute("PayloadSize", StringValue("1024")); + + // Register /dst1 prefix with global routing controller and + // install producer that will satisfy Interests in /dst1 namespace + + producerHelper.SetPrefix("/C1"); + producerHelper.Install("n44"); + + producerHelper.SetPrefix("/C2"); + producerHelper.Install("n27"); + + producerHelper.SetPrefix("/C3"); + producerHelper.Install("n8"); + + producerHelper.SetPrefix("/C4"); + producerHelper.Install("n7"); + + producerHelper.SetPrefix("/C5"); + producerHelper.Install("n1"); + + producerHelper.SetPrefix("/C6"); + producerHelper.Install("n0"); + + producerHelper.SetPrefix("/C7"); + producerHelper.Install("n19"); + + producerHelper.SetPrefix("/C8"); + producerHelper.Install("n38"); + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 8 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C8", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C8", "n14", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C8", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C8", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C8", "n15", 0); + ndn::FibHelper::AddRoute("n16", "/C8", "n20", 0); + + // n20 + ndn::FibHelper::AddRoute("n20", "/C8", "n28", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C8", "n21", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C8", "n21", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C8", "n24", 0); + + // n21 + ndn::FibHelper::AddRoute("n21", "/C8", "n28", 0); + ndn::FibHelper::AddRoute("n21", "/C8", "n30", 0); + + // n22 + ndn::FibHelper::AddRoute("n22", "/C8", "n14", 0); + + // n23 + ndn::FibHelper::AddRoute("n23", "/C8", "n22", 0); + + // n24 + ndn::FibHelper::AddRoute("n24", "/C8", "n23", 0); + + // n28 + ndn::FibHelper::AddRoute("n28", "/C8", "n38", 0); + ndn::FibHelper::AddRoute("n28", "/C8", "n32", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C8", "n33", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C8", "n22", 0); + + // n32 + ndn::FibHelper::AddRoute("n32", "/C8", "n33", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C8", "n38", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C8", "n37", 0); + + // n34 + ndn::FibHelper::AddRoute("n34", "/C8", "n33", 0); + + // n35 + ndn::FibHelper::AddRoute("n35", "/C8", "n36", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C8", "n31", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C8", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C8", "n34", 0); + ndn::FibHelper::AddRoute("n39", "/C8", "n35", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C8", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C8", "n39", 0); + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 7 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C7", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C7", "n14", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C7", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C7", "n19", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C7", "n17", 0); + ndn::FibHelper::AddRoute("n16", "/C7", "n20", 0); + + // n20 + ndn::FibHelper::AddRoute("n20", "/C7", "n19", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C7", "n16", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C7", "n15", 0); + + // n13 + ndn::FibHelper::AddRoute("n13", "/C7", "n14", 0); + + // n12 + ndn::FibHelper::AddRoute("n12", "/C7", "n13", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C7", "n24", 0); + + // n21 + ndn::FibHelper::AddRoute("n21", "/C7", "n15", 0); + + // n24 + ndn::FibHelper::AddRoute("n24", "/C7", "n12", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C7", "n21", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C7", "n30", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C7", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C7", "n30", 0); + + // n34 + ndn::FibHelper::AddRoute("n34", "/C7", "n33", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C7", "n31", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C7", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C7", "n34", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C7", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C7", "n39", 0); + + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 6 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C6", "n3", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C6", "n14", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C6", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C6", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C6", "n15", 0); + ndn::FibHelper::AddRoute("n16", "/C6", "n20", 0); + + // n20 + ndn::FibHelper::AddRoute("n20", "/C6", "n28", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C6", "n0", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C6", "n0", 0); + ndn::FibHelper::AddRoute("n14", "/C6", "n15", 0); + + // n13 + ndn::FibHelper::AddRoute("n13", "/C6", "n14", 0); + + // n12 + ndn::FibHelper::AddRoute("n12", "/C6", "n13", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C6", "n24", 0); + + // n21 + ndn::FibHelper::AddRoute("n21", "/C6", "n14", 0); + + // n24 + ndn::FibHelper::AddRoute("n24", "/C6", "n12", 0); + + // n28 + ndn::FibHelper::AddRoute("n28", "/C6", "n21", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C6", "n21", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C6", "n30", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C6", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C6", "n30", 0); + + // n34 + ndn::FibHelper::AddRoute("n34", "/C6", "n33", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C6", "n31", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C6", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C6", "n34", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C6", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C6", "n39", 0); + + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 5 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C5", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C5", "n4", 0); + + // n5 + ndn::FibHelper::AddRoute("n5", "/C5", "n3", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C5", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C5", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C5", "n15", 0); + + // n9 + ndn::FibHelper::AddRoute("n9", "/C5", "n5", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C5", "n1", 0); + ndn::FibHelper::AddRoute("n15", "/C5", "n14", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C5", "n1", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C5", "n9", 0); + + // n21 + ndn::FibHelper::AddRoute("n21", "/C5", "n15", 0); + + // n28 + ndn::FibHelper::AddRoute("n28", "/C5", "n21", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C5", "n21", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C5", "n30", 0); + + // n32 + ndn::FibHelper::AddRoute("n32", "/C5", "n28", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C5", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C5", "n32", 0); + + // n34 + ndn::FibHelper::AddRoute("n34", "/C5", "n33", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C5", "n31", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C5", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C5", "n34", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C5", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C5", "n39", 0); + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 4 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C4", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C4", "n5", 0); + + // n5 + ndn::FibHelper::AddRoute("n5", "/C4", "n7", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C4", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C4", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C4", "n15", 0); + + // n11 + ndn::FibHelper::AddRoute("n11", "/C4", "n9", 0); + + // n9 + ndn::FibHelper::AddRoute("n9", "/C4", "n7", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C4", "n14", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C4", "n13", 0); + ndn::FibHelper::AddRoute("n14", "/C4", "n3", 0); + + // n13 + ndn::FibHelper::AddRoute("n13", "/C4", "n12", 0); + + // n12 + ndn::FibHelper::AddRoute("n12", "/C4", "n11", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C4", "n24", 0); + + // n22 + ndn::FibHelper::AddRoute("n22", "/C4", "n14", 0); + + // n23 + ndn::FibHelper::AddRoute("n23", "/C4", "n22", 0); + + // n24 + ndn::FibHelper::AddRoute("n24", "/C4", "n23", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C4", "n31", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C4", "n22", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C4", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C4", "n30", 0); + + // n35 + ndn::FibHelper::AddRoute("n35", "/C4", "n36", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C4", "n31", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C4", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C4", "n35", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C4", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C4", "n39", 0); + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 3 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C3", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C3", "n5", 0); + + // n5 + ndn::FibHelper::AddRoute("n5", "/C3", "n8", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C3", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C3", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C3", "n15", 0); + + // n11 + ndn::FibHelper::AddRoute("n11", "/C3", "n9", 0); + + // n9 + ndn::FibHelper::AddRoute("n9", "/C3", "n8", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C3", "n14", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C3", "n13", 0); + ndn::FibHelper::AddRoute("n14", "/C3", "n3", 0); + + // n13 + ndn::FibHelper::AddRoute("n13", "/C3", "n12", 0); + + // n12 + ndn::FibHelper::AddRoute("n12", "/C3", "n11", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C3", "n24", 0); + + // n22 + ndn::FibHelper::AddRoute("n22", "/C3", "n14", 0); + + // n23 + ndn::FibHelper::AddRoute("n23", "/C3", "n22", 0); + + // n24 + ndn::FibHelper::AddRoute("n24", "/C3", "n23", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C3", "n31", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C3", "n22", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C3", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C3", "n30", 0); + + // n35 + ndn::FibHelper::AddRoute("n35", "/C3", "n36", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C3", "n31", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C3", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C3", "n35", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C3", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C3", "n39", 0); + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 2 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C2", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C2", "n14", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C2", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C2", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C2", "n15", 0); + + // n11 + ndn::FibHelper::AddRoute("n11", "/C2", "n9", 0); + + // n9 + ndn::FibHelper::AddRoute("n9", "/C2", "n25", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C2", "n14", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C2", "n13", 0); + ndn::FibHelper::AddRoute("n14", "/C2", "n22", 0); + + // n13 + ndn::FibHelper::AddRoute("n13", "/C2", "n12", 0); + + // n12 + ndn::FibHelper::AddRoute("n12", "/C2", "n11", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C2", "n26", 0); + + // n21 + ndn::FibHelper::AddRoute("n21", "/C2", "n14", 0); + + // n22 + ndn::FibHelper::AddRoute("n22", "/C2", "n31", 0); + + // n26 + ndn::FibHelper::AddRoute("n26", "/C2", "n27", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C2", "n21", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C2", "n36", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C2", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C2", "n30", 0); + + // n34 + ndn::FibHelper::AddRoute("n34", "/C2", "n33", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C2", "n27", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C2", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C2", "n34", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C2", "n36", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C2", "n39", 0); + + //////////////////////////////////////////////////////////////////////////////////////////////// + /// Producer 1 路由配置 + //////////////////////////////////////////////////////////////////////////////////////////////// + // n4 + ndn::FibHelper::AddRoute("n4", "/C1", "n15", 0); + + // n3 + ndn::FibHelper::AddRoute("n3", "/C1", "n14", 0); + + // n18 + ndn::FibHelper::AddRoute("n18", "/C1", "n17", 0); + + // n17 + ndn::FibHelper::AddRoute("n17", "/C1", "n16", 0); + + // n16 + ndn::FibHelper::AddRoute("n16", "/C1", "n20", 0); + + // n11 + ndn::FibHelper::AddRoute("n11", "/C1", "n12", 0); + + // n9 + ndn::FibHelper::AddRoute("n9", "/C1", "n11", 0); + + // n20 + ndn::FibHelper::AddRoute("n20", "/C1", "n28", 0); + + // n15 + ndn::FibHelper::AddRoute("n15", "/C1", "n21", 0); + + // n14 + ndn::FibHelper::AddRoute("n14", "/C1", "n21", 0); + + // n13 + ndn::FibHelper::AddRoute("n13", "/C1", "n14", 0); + + // n12 + ndn::FibHelper::AddRoute("n12", "/C1", "n13", 0); + + // n25 + ndn::FibHelper::AddRoute("n25", "/C1", "n9", 0); + + // n21 + ndn::FibHelper::AddRoute("n21", "/C1", "n30", 0); + + // n28 + ndn::FibHelper::AddRoute("n28", "/C1", "n21", 0); + + // n30 + ndn::FibHelper::AddRoute("n30", "/C1", "n31", 0); + ndn::FibHelper::AddRoute("n30", "/C1", "n33", 0); + + // n31 + ndn::FibHelper::AddRoute("n31", "/C1", "n36", 0); + + // n37 + ndn::FibHelper::AddRoute("n37", "/C1", "n33", 0); + + // n33 + ndn::FibHelper::AddRoute("n33", "/C1", "n34", 0); + + // n34 + ndn::FibHelper::AddRoute("n34", "/C1", "n35", 0); + ndn::FibHelper::AddRoute("n34", "/C1", "n39", 0); + + // n35 + ndn::FibHelper::AddRoute("n35", "/C1", "n36", 0); + + // n36 + ndn::FibHelper::AddRoute("n36", "/C1", "n40", 0); + + // n41 + ndn::FibHelper::AddRoute("n41", "/C1", "n39", 0); + + // n39 + ndn::FibHelper::AddRoute("n39", "/C1", "n35", 0); + ndn::FibHelper::AddRoute("n39", "/C1", "n44", 0); + ndn::FibHelper::AddRoute("n39", "/C1", "n45", 0); + + // n40 + ndn::FibHelper::AddRoute("n40", "/C1", "n42", 0); + + // n42 + ndn::FibHelper::AddRoute("n42", "/C1", "n43", 0); + + // n43 + ndn::FibHelper::AddRoute("n43", "/C1", "n44", 0); + + // n45 + ndn::FibHelper::AddRoute("n45", "/C1", "n46", 0); + + // n46 + ndn::FibHelper::AddRoute("n46", "/C1", "n44", 0); + + + // ndnGlobalRoutingHelper.AddOrigin("/C1", "n44"); + // ndnGlobalRoutingHelper.AddOrigin("/C2", "n27"); + // ndnGlobalRoutingHelper.AddOrigin("/C3", "n8"); + // ndnGlobalRoutingHelper.AddOrigin("/C4", "n7"); + // ndnGlobalRoutingHelper.AddOrigin("/C5", "n1"); + // ndnGlobalRoutingHelper.AddOrigin("/C6", "n0"); + // ndnGlobalRoutingHelper.AddOrigin("/C7", "n19"); + // ndnGlobalRoutingHelper.AddOrigin("/C8", "n38"); + + + // // Calculate all possible routes and install FIBs + // ndn::GlobalRoutingHelper::CalculateRoutes(); + // ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes(); + + Simulator::Stop(Seconds(120.0)); + + ndn::L3RateTracer::InstallAll("dsccp5_throughput-0.1.txt", Seconds(0.1)); + ndn::AppDelayTracer::InstallAll("dsccp5_delay-0.1.txt"); + L2RateTracer::InstallAll("dsccp5_drop-0.1.txt", Seconds(0.1)); + Simulator::Run(); + Simulator::Destroy(); + + return 0; + } + +} // namespace ns3 + +int main(int argc, char *argv[]) +{ + return ns3::main(argc, argv); +} diff --git a/scenario/scenarios/disabled/ndn-test.cpp b/scenario/scenarios/ndn-test.cpp similarity index 93% rename from scenario/scenarios/disabled/ndn-test.cpp rename to scenario/scenarios/ndn-test.cpp index 657fc76..b42f894 100644 --- a/scenario/scenarios/disabled/ndn-test.cpp +++ b/scenario/scenarios/ndn-test.cpp @@ -76,6 +76,8 @@ main(int argc, char* argv[]) //ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr"); consumerHelper.SetAttribute("MaxSeq", StringValue("10000000")); // 100 interests a second consumerHelper.SetAttribute("start_ms", StringValue("1000")); // 100 interests a second + consumerHelper.SetAttribute("greedy_ms",StringValue("2000")); + consumerHelper.SetAttribute("greedy_rate",StringValue("6000000")); // on the first consumer node install a Consumer application @@ -95,11 +97,11 @@ main(int argc, char* argv[]) // Calculate and install FIBs ndn::GlobalRoutingHelper::CalculateRoutes(); - Simulator::Stop(Seconds(3.0)); + Simulator::Stop(Seconds(20.0)); - ndn::L3RateTracer::InstallAll("out1.txt",Seconds(0.5)); + ndn::L3RateTracer::InstallAll("out1.txt",Seconds(0.1)); ndn::AppDelayTracer::InstallAll("out2.txt"); - L2RateTracer::InstallAll("out3",Seconds(1)); + L2RateTracer::InstallAll("out3",Seconds(0.1)); Simulator::Run(); diff --git a/scenario/topologies/dsccp5.txt b/scenario/topologies/dsccp5.txt new file mode 100644 index 0000000..077eb28 --- /dev/null +++ b/scenario/topologies/dsccp5.txt @@ -0,0 +1,119 @@ +router + +# node comment yPos xPos +n5 NA 4 8 +n3 NA 2 6 +n6 NA 4 6 +n4 NA 2 4 +n7 NA 6 7 +n8 NA 6 9 +n9 NA 8 8 +n10 NA 6 6 +n11 NA 8 6 +n12 NA 10 5 +n13 NA 10 3 +n14 NA 9 1 +n15 NA 9 -1 +n0 NA 3 -1 +n1 NA 2 1 +n16 NA 7 -3 +n17 NA 7 -5 +n18 NA 5 -5 +n19 NA 9 -5 +n20 NA 9 -3 +n21 NA 12 0 +n22 NA 12 2 +n23 NA 12 4 +n24 NA 12 6 +n25 NA 10 9 +n26 NA 12 10 +n27 NA 14 11 +n28 NA 14 -2 +n29 NA 16 -1 +n30 NA 16 1 +n31 NA 16 3 +n32 NA 17 -3 +n33 NA 18 -1 +n34 NA 18 1 +n35 NA 18 3 +n36 NA 18 5 +n37 NA 18 -4 +n38 NA 15 -5 +n39 NA 20 1 +n40 NA 20 7 +n41 NA 20 -2 +n42 NA 21 5 +n43 NA 22 7 +n44 NA 24 7 +n45 NA 24 1 +n46 NA 24 3 + +link + +# srcNode dstNode bandwidth metric delay queue +n3 n5 200Mbps 1 10ms 20 +n5 n6 200Mbps 1 10ms 20 +n3 n4 200Mbps 1 10ms 20 +n5 n9 200Mbps 1 10ms 20 +n6 n10 200Mbps 1 10ms 20 +n11 n10 200Mbps 1 10ms 20 +n11 n9 200Mbps 1 10ms 20 +n11 n12 200Mbps 1 10ms 20 +n12 n13 200Mbps 1 10ms 20 +n14 n13 200Mbps 1 10ms 20 +n14 n15 200Mbps 1 10ms 20 +n3 n14 200Mbps 1 10ms 20 +n4 n15 200Mbps 1 10ms 20 +n15 n16 200Mbps 1 10ms 20 +n17 n16 200Mbps 1 10ms 20 +n17 n18 200Mbps 1 10ms 20 +n20 n16 200Mbps 1 10ms 20 +n21 n15 200Mbps 1 10ms 20 +n21 n14 200Mbps 1 10ms 20 +n22 n14 200Mbps 1 10ms 20 +n22 n23 200Mbps 1 10ms 20 +n25 n9 200Mbps 1 10ms 20 +n25 n26 200Mbps 1 10ms 20 +n20 n28 200Mbps 1 10ms 20 +n21 n28 200Mbps 1 10ms 20 +n29 n30 200Mbps 1 10ms 20 +n31 n30 200Mbps 1 10ms 20 +n30 n21 200Mbps 1 10ms 20 +n22 n31 200Mbps 1 10ms 20 +n29 n32 200Mbps 1 10ms 20 +n28 n32 200Mbps 1 10ms 20 +n33 n32 200Mbps 1 10ms 20 +n33 n34 200Mbps 1 10ms 20 +n35 n34 200Mbps 1 10ms 20 +n35 n36 200Mbps 1 10ms 20 +n30 n33 200Mbps 1 10ms 20 +n31 n36 200Mbps 1 10ms 20 +n33 n37 200Mbps 1 10ms 20 +n34 n39 200Mbps 1 10ms 20 +n35 n39 200Mbps 1 10ms 20 +n36 n40 200Mbps 1 10ms 20 +n39 n41 200Mbps 1 10ms 20 +n39 n45 200Mbps 1 10ms 20 +n46 n45 200Mbps 1 10ms 20 +n40 n42 200Mbps 1 10ms 20 +n43 n42 200Mbps 1 10ms 20 +n0 n15 5Mbps 1 10ms 20 +n0 n14 5Mbps 1 10ms 20 +n1 n15 5Mbps 1 10ms 20 +n1 n14 5Mbps 1 10ms 20 +n17 n19 5Mbps 1 10ms 20 +n20 n19 5Mbps 1 10ms 20 +n38 n28 5Mbps 1 10ms 20 +n38 n37 5Mbps 1 10ms 20 +n46 n44 3Mbps 1 10ms 20 +n39 n44 4Mbps 1 10ms 20 +n43 n44 3Mbps 1 10ms 20 +n27 n36 5Mbps 1 10ms 20 +n27 n26 5Mbps 1 10ms 20 +n7 n9 5Mbps 1 10ms 20 +n5 n7 5Mbps 1 10ms 20 +n8 n9 5Mbps 1 10ms 20 +n5 n8 5Mbps 1 10ms 20 +n24 n23 200Mbps 1 10ms 20 +n24 n12 200Mbps 1 10ms 20 +n24 n25 200Mbps 1 10ms 20 diff --git a/scenario/topologies/topo-4-node.txt b/scenario/topologies/topo-4-node.txt index 910f9f2..6e02764 100644 --- a/scenario/topologies/topo-4-node.txt +++ b/scenario/topologies/topo-4-node.txt @@ -19,6 +19,6 @@ Dst1 NA 1 9 link # srcNode dstNode bandwidth metric delay queue -Src1 Rtr1 1Mbps 1 10ms 20 +Src1 Rtr1 10Mbps 1 10ms 20 Rtr1 Rtr2 1Mbps 1 10ms 20 -Dst1 Rtr2 1Mbps 1 10ms 20 +Dst1 Rtr2 10Mbps 1 10ms 20