@@ -35,21 +35,34 @@ std::vector<std::string> AQM = {
3535" CoDel" ,
3636" Pie" ,
3737" Red" ,
38- " AdaptiveRed"
38+ " AdaptiveRed" ,
39+ " FengAdaptiveRed" ,
40+ " NonLinearRed"
3941};
4042std::string queueDisc = " QueueDisc" ;
41- uint32_t nAQM = 5 ;
43+ uint32_t nAQM = 7 ;
44+ std::string AggressiveTcp = " " ;
45+ std::string QueueDiscMode = " QUEUE_DISC_MODE_PACKETS" ;
4246
4347void RunOneScenario (std::string scenarioName)
4448{
4549 mkdir ((std::string (" aqm-eval-output/" ) + scenarioName).c_str (), 0700 );
4650 mkdir ((std::string (" aqm-eval-output/" ) + scenarioName + (std::string (" /data" ))).c_str (), 0700 );
4751 mkdir ((std::string (" aqm-eval-output/" ) + scenarioName + (std::string (" /graph" ))).c_str (), 0700 );
48- std::string commandToRun = std::string (" ./waf --run " ) + scenarioName;
52+ std::string commandToRun;
53+ if (AggressiveTcp != " " && scenarioName == " AggressiveTransportSender" )
54+ {
55+ commandToRun = std::string (" ./waf --run \" " ) + scenarioName + std::string (" --TcpVariant=ns3::" ) + AggressiveTcp + std::string (" --QueueDiscMode=" ) + QueueDiscMode + std::string (" \" " );
56+ }
57+ else
58+ {
59+ commandToRun = std::string (" ./waf --run \" " ) + scenarioName + std::string (" --QueueDiscMode=" ) + QueueDiscMode + std::string (" \" " );
60+ }
4961 system (commandToRun.c_str ());
5062 std::ofstream outfile;
5163 outfile.open ((std::string (" aqm-eval-output/" ) + scenarioName + std::string (" /data/plot-shell" )).c_str (), std::ios::out | std::ios::trunc);
52- outfile << " set terminal png size 500, 350\n " ;
64+ outfile << " set terminal png size 600, 350\n " ;
65+ outfile << " set size .9, 1\n " ;
5366 outfile << " set output \" aqm-eval-output/" << scenarioName.c_str () << " /graph/qdel-goodput.png\"\n set xlabel \" Queue Delay (ms)\" font \" Verdana\"\n set ylabel \" Goodput (Mbps)\" font \" Verdana\"\n " ;
5467 outfile << " set xrange[] reverse\n set grid\n show grid\n " ;
5568 outfile.close ();
@@ -61,9 +74,11 @@ void RunOneScenario (std::string scenarioName)
6174 std::string proQdelThr = std::string (" python src/aqm-eval-suite/utils/generate-ellipseinput.py " ) + scenarioName + " " + AQM[i] + queueDisc;
6275 std::string proEllipse = std::string (" python src/aqm-eval-suite/utils/ellipsemaker " ) + scenarioName + " " + AQM[i] + queueDisc;
6376 std::string plotGoodput = std::string (" python src/aqm-eval-suite/utils/goodput_process.py " ) + scenarioName + " " + AQM[i] + queueDisc;
77+ std::string plotDelay = std::string (" python src/aqm-eval-suite/utils/delay_process.py " ) + scenarioName + " " + AQM[i] + queueDisc;
6478 system (proQdelThr.c_str ());
6579 system (proEllipse.c_str ());
6680 system (plotGoodput.c_str ());
81+ system (plotDelay.c_str ());
6782 std::string graphName = std::string (" \" aqm-eval-output/" ) + scenarioName + std::string (" /data/" ) + AQM[i] + queueDisc + std::string (" -ellipse.dat\" notitle with lines" );
6883 if (i != nAQM - 1 )
6984 {
@@ -93,8 +108,8 @@ void RunRttFairness (std::string scenarioName)
93108 mkdir ((std::string (" aqm-eval-output/" ) + scenarioName).c_str (), 0700 );
94109 mkdir ((std::string (" aqm-eval-output/" ) + scenarioName + std::string (" /data" )).c_str (), 0700 );
95110 mkdir ((std::string (" aqm-eval-output/" ) + scenarioName + std::string (" /graph" )).c_str (), 0700 );
96- }
97- std::string commandToRun = std::string (" ./waf --run RttFairness" );
111+ }
112+ std::string commandToRun = std::string (" ./waf --run \" RttFairness" ) + std::string ( " --QueueDiscMode= " ) + QueueDiscMode + std::string ( " \" " );
98113 system (commandToRun.c_str ());
99114 for (uint32_t i = 1 ; i <= 15 ; i++)
100115 {
@@ -103,7 +118,8 @@ void RunRttFairness (std::string scenarioName)
103118 scenarioName = orig + std::string (sce);
104119 std::ofstream outfile;
105120 outfile.open ((std::string (" aqm-eval-output/" ) + scenarioName + std::string (" /data/plot-shell" )).c_str (), std::ios::out | std::ios::trunc);
106- outfile << " set terminal png size 500, 350\n " ;
121+ outfile << " set terminal png size 600, 350\n " ;
122+ outfile << " set size .9, 1\n " ;
107123 outfile << " set output \" aqm-eval-output/" << scenarioName.c_str () << " /graph/qdel-goodput.png\"\n set xlabel \" Queue Delay (ms)\" font \" Verdana\"\n set ylabel \" Goodput (Mbps)\" font \" Verdana\"\n " ;
108124 outfile << " set xrange[] reverse\n set grid\n show grid\n " ;
109125 outfile.close ();
@@ -115,10 +131,12 @@ void RunRttFairness (std::string scenarioName)
115131 std::string proQdelThr = std::string (" python src/aqm-eval-suite/utils/generate-ellipseinput.py " ) + scenarioName + " " + AQM[i] + queueDisc;
116132 std::string proEllipse = std::string (" python src/aqm-eval-suite/utils/ellipsemaker " ) + scenarioName + " " + AQM[i] + queueDisc;
117133 std::string plotGoodput = std::string (" python src/aqm-eval-suite/utils/goodput_process.py " ) + scenarioName + " " + AQM[i] + queueDisc;
134+ std::string plotDelay = std::string (" python src/aqm-eval-suite/utils/delay_process.py " ) + scenarioName + " " + AQM[i] + queueDisc;
118135 std::string plotDrop = std::string (" python src/aqm-eval-suite/utils/drop_process.py " ) + scenarioName + " " + AQM[i] + queueDisc;
119136 system (proQdelThr.c_str ());
120137 system (proEllipse.c_str ());
121138 system (plotGoodput.c_str ());
139+ system (plotDelay.c_str ());
122140 system (plotDrop.c_str ());
123141 std::string graphName = std::string (" \" aqm-eval-output/" ) + scenarioName + std::string (" /data/" ) + AQM[i] + queueDisc + std::string (" -ellipse.dat\" notitle with lines" );
124142 if (i != nAQM - 1 )
@@ -164,6 +182,8 @@ int main (int argc, char *argv[])
164182 CommandLine cmd;
165183 cmd.AddValue (" number" , " Scenario number from RFC" , scenarioNumber);
166184 cmd.AddValue (" name" , " Name of the scenario (eg: TCPFriendlySameInitCwnd)" , scenarioName);
185+ cmd.AddValue (" AggressiveTcp" , " Variant of the Aggressive TCP" , AggressiveTcp);
186+ cmd.AddValue (" QueueDiscMode" , " Determines the unit for QueueLimit" , QueueDiscMode);
167187
168188 cmd.Parse (argc, argv);
169189
0 commit comments