chunks: react to congestion marks

Change-Id: I96efe1bc3ec7a54080c76676892114f2c79003ed
refs: #4289
diff --git a/tools/chunks/catchunks/ndncatchunks.cpp b/tools/chunks/catchunks/ndncatchunks.cpp
index 2242a83..822194a 100644
--- a/tools/chunks/catchunks/ndncatchunks.cpp
+++ b/tools/chunks/catchunks/ndncatchunks.cpp
@@ -26,6 +26,7 @@
  * @author Davide Pesavento
  * @author Weiwei Liu
  * @author Klaus Schneider
+ * @author Chavoosh Ghasemi
  */
 
 #include "aimd-statistics-collector.hpp"
@@ -58,7 +59,7 @@
 
   // congestion control parameters, CWA refers to conservative window adaptation,
   // i.e. only reduce window size at most once per RTT
-  bool disableCwa(false), resetCwndToInit(false);
+  bool disableCwa(false), resetCwndToInit(false), ignoreCongMarks(false);
   double aiStep(1.0), mdCoef(0.5), alpha(0.125), beta(0.25),
          minRto(200.0), maxRto(4000.0);
   int initCwnd(1), initSsthresh(std::numeric_limits<int>::max()), k(4);
@@ -104,7 +105,11 @@
                        "log file for AIMD rtt statistics")
     ("aimd-disable-cwa", po::bool_switch(&disableCwa),
                          "disable Conservative Window Adaptation, "
-                         "i.e. reduce window on each timeout (instead of at most once per RTT)")
+                         "i.e. reduce window on each congestion event (timeout or congestion mark) "
+                         "instead of at most once per RTT")
+    ("aimd-ignore-cong-marks",  po::bool_switch(&ignoreCongMarks),
+                                "disable reaction to congestion marks, "
+                                "the default is to decrease the window after receiving a congestion mark")
     ("aimd-reset-cwnd-to-init", po::bool_switch(&resetCwndToInit),
                                 "reset cwnd to initial cwnd when loss event occurs, default is "
                                 "resetting to ssthresh")
@@ -253,6 +258,7 @@
       optionsPipeline.initSsthresh = static_cast<double>(initSsthresh);
       optionsPipeline.aiStep = aiStep;
       optionsPipeline.mdCoef = mdCoef;
+      optionsPipeline.ignoreCongMarks = ignoreCongMarks;
 
       auto aimdPipeline = make_unique<PipelineInterestsAimd>(face, *rttEstimator, optionsPipeline);