From ac6d1f392028fae1c97ec91bfd59b07631246851 Mon Sep 17 00:00:00 2001 From: F5 Date: Tue, 14 Nov 2023 20:40:40 +0800 Subject: [PATCH] mtp: Modify examples to keep them update --- examples/mtp/dynamic-global-routing-mtp.cc | 3 +- examples/mtp/queue-discs-benchmark-mtp.cc | 31 +++++++------- examples/mtp/ripng-simple-network-mtp.cc | 49 ++++++++++------------ examples/mtp/tcp-star-server-mtp.cc | 2 +- examples/mtp/tcp-validation-mtp.cc | 49 +++++++++++----------- 5 files changed, 65 insertions(+), 69 deletions(-) diff --git a/examples/mtp/dynamic-global-routing-mtp.cc b/examples/mtp/dynamic-global-routing-mtp.cc index 806aa081b..81c175c69 100644 --- a/examples/mtp/dynamic-global-routing-mtp.cc +++ b/examples/mtp/dynamic-global-routing-mtp.cc @@ -212,10 +212,9 @@ main(int argc, char* argv[]) Simulator::Schedule(Seconds(14), &Ipv4::SetUp, ipv41, ipv4ifIndex1); // Trace routing tables - Ipv4GlobalRoutingHelper g; Ptr routingStream = Create("dynamic-global-routing.routes", std::ios::out); - g.PrintRoutingTableAllAt(Seconds(12), routingStream); + Ipv4RoutingHelper::PrintRoutingTableAllAt(Seconds(12), routingStream); NS_LOG_INFO("Run Simulation."); Simulator::Run(); diff --git a/examples/mtp/queue-discs-benchmark-mtp.cc b/examples/mtp/queue-discs-benchmark-mtp.cc index 864d376f7..9c36e94f6 100644 --- a/examples/mtp/queue-discs-benchmark-mtp.cc +++ b/examples/mtp/queue-discs-benchmark-mtp.cc @@ -38,13 +38,13 @@ // // The output will consist of a number of ping Rtt such as: // -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=111 ms -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=111 ms -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=110 ms -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=111 ms -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=111 ms -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=112 ms -// /NodeList/0/ApplicationList/2/$ns3::V4Ping/Rtt=111 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=111 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=111 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=110 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=111 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=111 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=112 ms +// /NodeList/0/ApplicationList/2/$ns3::Ping/Rtt=111 ms // // The files output will consist of a trace file with bytes in queue and of a trace file for limits // (when BQL is enabled) both for bottleneck NetDevice on n2, two files with upload and download @@ -68,9 +68,9 @@ using namespace ns3; NS_LOG_COMPONENT_DEFINE("BenchmarkQueueDiscs"); /** - * Print the queue limitis. + * Print the queue limits. * - * \param stream The ouput stream. + * \param stream The output stream. * \param oldVal Old value. * \param newVal New value. */ @@ -83,7 +83,7 @@ LimitsTrace(Ptr stream, uint32_t oldVal, uint32_t newVal) /** * Print the bytes in the queue. * - * \param stream The ouput stream. + * \param stream The output stream. * \param oldVal Old value. * \param newVal New value. */ @@ -97,7 +97,7 @@ BytesInQueueTrace(Ptr stream, uint32_t oldVal, uint32_t new * Sample and print the queue goodput. * * \param app The Tx app. - * \param stream The ouput stream. + * \param stream The output stream. * \param period The sampling period. */ static void @@ -117,7 +117,7 @@ GoodputSampling(ApplicationContainer app, Ptr stream, float * \param rtt The RTT. */ static void -PingRtt(std::string context, Time rtt) +PingRtt(std::string context, uint16_t, Time rtt) { std::cout << context << "=" << rtt.GetMilliSeconds() << " ms" << std::endl; } @@ -328,10 +328,11 @@ main(int argc, char* argv[]) sourceApps.Add(onOffHelperDown.Install(n3)); // Configure and install ping - V4PingHelper ping = V4PingHelper(n3Interface.GetAddress(0)); + PingHelper ping(n3Interface.GetAddress(0)); + ping.SetAttribute("VerboseMode", EnumValue(Ping::VerboseMode::QUIET)); ping.Install(n1); - Config::Connect("/NodeList/*/ApplicationList/*/$ns3::V4Ping/Rtt", MakeCallback(&PingRtt)); + Config::Connect("/NodeList/*/ApplicationList/*/$ns3::Ping/Rtt", MakeCallback(&PingRtt)); uploadApp.Start(Seconds(0)); uploadApp.Stop(Seconds(stopTime)); @@ -361,6 +362,8 @@ main(int argc, char* argv[]) FlowMonitorHelper flowHelper; flowMonitor = flowHelper.InstallAll(); + accessLink.EnablePcapAll("queue"); + Simulator::Stop(Seconds(stopTime)); Simulator::Run(); diff --git a/examples/mtp/ripng-simple-network-mtp.cc b/examples/mtp/ripng-simple-network-mtp.cc index 7f6384cff..ac63aa64d 100644 --- a/examples/mtp/ripng-simple-network-mtp.cc +++ b/examples/mtp/ripng-simple-network-mtp.cc @@ -98,12 +98,7 @@ main(int argc, char** argv) LogComponentEnable("Ipv6Interface", LOG_LEVEL_ALL); LogComponentEnable("Icmpv6L4Protocol", LOG_LEVEL_ALL); LogComponentEnable("NdiscCache", LOG_LEVEL_ALL); - LogComponentEnable("Ping6Application", LOG_LEVEL_ALL); - } - - if (showPings) - { - LogComponentEnable("Ping6Application", LOG_LEVEL_INFO); + LogComponentEnable("Ping", LOG_LEVEL_ALL); } if (SplitHorizon == "NoSplitHorizon") @@ -225,38 +220,36 @@ main(int argc, char** argv) if (printRoutingTables) { - RipNgHelper routingHelper; - Ptr routingStream = Create(&std::cout); - routingHelper.PrintRoutingTableAt(Seconds(30.0), a, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(30.0), b, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(30.0), c, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(30.0), d, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(30.0), a, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(30.0), b, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(30.0), c, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(30.0), d, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(60.0), a, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(60.0), b, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(60.0), c, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(60.0), d, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(60.0), a, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(60.0), b, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(60.0), c, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(60.0), d, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(90.0), a, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(90.0), b, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(90.0), c, routingStream); - routingHelper.PrintRoutingTableAt(Seconds(90.0), d, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(90.0), a, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(90.0), b, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(90.0), c, routingStream); + Ipv6RoutingHelper::PrintRoutingTableAt(Seconds(90.0), d, routingStream); } NS_LOG_INFO("Create Applications."); uint32_t packetSize = 1024; - uint32_t maxPacketCount = 100; Time interPacketInterval = Seconds(1.0); - Ping6Helper ping6; + PingHelper ping(iic7.GetAddress(1, 1)); - ping6.SetLocal(iic1.GetAddress(0, 1)); - ping6.SetRemote(iic7.GetAddress(1, 1)); - ping6.SetAttribute("MaxPackets", UintegerValue(maxPacketCount)); - ping6.SetAttribute("Interval", TimeValue(interPacketInterval)); - ping6.SetAttribute("PacketSize", UintegerValue(packetSize)); - ApplicationContainer apps = ping6.Install(src); + ping.SetAttribute("Interval", TimeValue(interPacketInterval)); + ping.SetAttribute("Size", UintegerValue(packetSize)); + if (showPings) + { + ping.SetAttribute("VerboseMode", EnumValue(Ping::VerboseMode::VERBOSE)); + } + ApplicationContainer apps = ping.Install(src); apps.Start(Seconds(1.0)); apps.Stop(Seconds(110.0)); diff --git a/examples/mtp/tcp-star-server-mtp.cc b/examples/mtp/tcp-star-server-mtp.cc index 7be95fda0..9336d5635 100644 --- a/examples/mtp/tcp-star-server-mtp.cc +++ b/examples/mtp/tcp-star-server-mtp.cc @@ -36,7 +36,7 @@ // ./ns3 run "tcp-star-server --ns3::OnOffApplication::DataRate=10000" // ./ns3 run "tcp-star-server --ns3::OnOffApplication::PacketSize=500" // See the ns-3 tutorial for more info on the command line: -// http://www.nsnam.org/tutorials.html +// https://www.nsnam.org/docs/tutorial/html/index.html #include "ns3/applications-module.h" #include "ns3/core-module.h" diff --git a/examples/mtp/tcp-validation-mtp.cc b/examples/mtp/tcp-validation-mtp.cc index 6da1e1024..5bbb09df9 100644 --- a/examples/mtp/tcp-validation-mtp.cc +++ b/examples/mtp/tcp-validation-mtp.cc @@ -34,7 +34,7 @@ // This program is designed to observe long-running TCP congestion control // behavior over a configurable bottleneck link. The program is also -// instrumented to check progam data against validated results, when +// instrumented to check program data against validated results, when // the validation option is enabled. // // ---> downstream (primary data transfer from servers to clients) @@ -182,7 +182,7 @@ TraceFirstCwnd(std::ofstream* ofStream, uint32_t oldCwnd, uint32_t newCwnd) { // TCP segment size is configured below to be 1448 bytes // so that we can report cwnd in units of segments - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << static_cast(newCwnd) / 1448 << std::endl; @@ -226,7 +226,7 @@ TraceFirstCwnd(std::ofstream* ofStream, uint32_t oldCwnd, uint32_t newCwnd) void TraceFirstDctcp(std::ofstream* ofStream, uint32_t bytesMarked, uint32_t bytesAcked, double alpha) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << alpha << std::endl; } @@ -278,7 +278,7 @@ TraceFirstDctcp(std::ofstream* ofStream, uint32_t bytesMarked, uint32_t bytesAck void TraceFirstRtt(std::ofstream* ofStream, Time oldRtt, Time newRtt) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << newRtt.GetSeconds() * 1000 << std::endl; @@ -297,7 +297,7 @@ TraceSecondCwnd(std::ofstream* ofStream, uint32_t oldCwnd, uint32_t newCwnd) { // TCP segment size is configured below to be 1448 bytes // so that we can report cwnd in units of segments - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << static_cast(newCwnd) / 1448 << std::endl; @@ -314,7 +314,7 @@ TraceSecondCwnd(std::ofstream* ofStream, uint32_t oldCwnd, uint32_t newCwnd) void TraceSecondRtt(std::ofstream* ofStream, Time oldRtt, Time newRtt) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << newRtt.GetSeconds() * 1000 << std::endl; @@ -332,7 +332,7 @@ TraceSecondRtt(std::ofstream* ofStream, Time oldRtt, Time newRtt) void TraceSecondDctcp(std::ofstream* ofStream, uint32_t bytesMarked, uint32_t bytesAcked, double alpha) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << alpha << std::endl; } @@ -345,9 +345,9 @@ TraceSecondDctcp(std::ofstream* ofStream, uint32_t bytesMarked, uint32_t bytesAc * \param rtt RTT value. */ void -TracePingRtt(std::ofstream* ofStream, Time rtt) +TracePingRtt(std::ofstream* ofStream, uint16_t, Time rtt) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << rtt.GetSeconds() * 1000 << std::endl; } @@ -386,7 +386,7 @@ TraceSecondRx(Ptr packet, const Address& address) void TraceQueueDrop(std::ofstream* ofStream, Ptr item) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << std::hex << item->Hash() << std::endl; } @@ -403,7 +403,7 @@ TraceQueueDrop(std::ofstream* ofStream, Ptr item) void TraceQueueMark(std::ofstream* ofStream, Ptr item, const char* reason) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << std::hex << item->Hash() << std::endl; } @@ -422,7 +422,7 @@ void TraceQueueLength(std::ofstream* ofStream, DataRate queueLinkRate, uint32_t oldVal, uint32_t newVal) { // output in units of ms - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << std::fixed << static_cast(newVal * 8) / (queueLinkRate.GetBitRate() / 1000) @@ -439,7 +439,7 @@ TraceQueueLength(std::ofstream* ofStream, DataRate queueLinkRate, uint32_t oldVa void TraceMarksFrequency(std::ofstream* ofStream, Time marksSamplingInterval) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << g_marksObserved << std::endl; } @@ -460,7 +460,7 @@ void TraceFirstThroughput(std::ofstream* ofStream, Time throughputInterval) { double throughput = g_firstBytesReceived * 8 / throughputInterval.GetSeconds() / 1e6; - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << throughput << std::endl; } @@ -509,7 +509,7 @@ TraceFirstThroughput(std::ofstream* ofStream, Time throughputInterval) void TraceSecondThroughput(std::ofstream* ofStream, Time throughputInterval) { - if (g_validate == "") + if (g_validate.empty()) { *ofStream << Simulator::Now().GetSeconds() << " " << g_secondBytesReceived * 8 / throughputInterval.GetSeconds() / 1e6 << std::endl; @@ -683,7 +683,7 @@ main(int argc, char* argv[]) cmd.Parse(argc, argv); // If validation is selected, perform some configuration checks - if (g_validate != "") + if (!g_validate.empty()) { NS_ABORT_MSG_UNLESS(g_validate == "dctcp-10ms" || g_validate == "dctcp-80ms" || g_validate == "cubic-50ms-no-ecn" || g_validate == "cubic-50ms-ecn", @@ -691,7 +691,7 @@ main(int argc, char* argv[]) if (g_validate == "dctcp-10ms" || g_validate == "dctcp-80ms") { NS_ABORT_MSG_UNLESS(firstTcpType == "dctcp", "Incorrect TCP"); - NS_ABORT_MSG_UNLESS(secondTcpType == "", "Incorrect TCP"); + NS_ABORT_MSG_UNLESS(secondTcpType.empty(), "Incorrect TCP"); NS_ABORT_MSG_UNLESS(linkRate == DataRate("50Mbps"), "Incorrect data rate"); NS_ABORT_MSG_UNLESS(queueUseEcn == true, "Incorrect ECN configuration"); NS_ABORT_MSG_UNLESS(stopTime >= Seconds(15), "Incorrect stopTime"); @@ -707,7 +707,7 @@ main(int argc, char* argv[]) else if (g_validate == "cubic-50ms-no-ecn" || g_validate == "cubic-50ms-ecn") { NS_ABORT_MSG_UNLESS(firstTcpType == "cubic", "Incorrect TCP"); - NS_ABORT_MSG_UNLESS(secondTcpType == "", "Incorrect TCP"); + NS_ABORT_MSG_UNLESS(secondTcpType.empty(), "Incorrect TCP"); NS_ABORT_MSG_UNLESS(baseRtt == MilliSeconds(50), "Incorrect RTT"); NS_ABORT_MSG_UNLESS(linkRate == DataRate("50Mbps"), "Incorrect data rate"); NS_ABORT_MSG_UNLESS(stopTime >= Seconds(20), "Incorrect stopTime"); @@ -773,7 +773,7 @@ main(int argc, char* argv[]) enableSecondTcp = true; secondTcpTypeId = TcpDctcp::GetTypeId(); } - else if (secondTcpType == "") + else if (secondTcpType.empty()) { enableSecondTcp = false; NS_LOG_DEBUG("No second TCP selected"); @@ -843,7 +843,7 @@ main(int argc, char* argv[]) std::ofstream queueMarkOfStream; std::ofstream queueMarksFrequencyOfStream; std::ofstream queueLengthOfStream; - if (g_validate == "") + if (g_validate.empty()) { pingOfStream.open(pingTraceFile, std::ofstream::out); firstTcpRttOfStream.open(firstTcpRttTraceFile, std::ofstream::out); @@ -977,12 +977,13 @@ main(int argc, char* argv[]) //////////////////////////////////////////////////////////// // application setup // //////////////////////////////////////////////////////////// - V4PingHelper pingHelper("192.168.1.2"); + PingHelper pingHelper(Ipv4Address("192.168.1.2")); pingHelper.SetAttribute("Interval", TimeValue(pingInterval)); pingHelper.SetAttribute("Size", UintegerValue(pingSize)); + pingHelper.SetAttribute("VerboseMode", EnumValue(Ping::VerboseMode::SILENT)); ApplicationContainer pingContainer = pingHelper.Install(pingServer); - Ptr v4Ping = pingContainer.Get(0)->GetObject(); - v4Ping->TraceConnectWithoutContext("Rtt", MakeBoundCallback(&TracePingRtt, &pingOfStream)); + Ptr ping = pingContainer.Get(0)->GetObject(); + ping->TraceConnectWithoutContext("Rtt", MakeBoundCallback(&TracePingRtt, &pingOfStream)); pingContainer.Start(Seconds(1)); pingContainer.Stop(stopTime - Seconds(1)); @@ -1090,7 +1091,7 @@ main(int argc, char* argv[]) Simulator::Run(); Simulator::Destroy(); - if (g_validate == "") + if (g_validate.empty()) { pingOfStream.close(); firstTcpCwndOfStream.close();