src/internet-stack/rtt-estimator.cc
changeset 4023 d320dea20aca
parent 3260 8c0ab08144e6
child 6434 ac8b4bf77e50
--- a/src/internet-stack/rtt-estimator.cc	Sat Dec 13 23:26:01 2008 -0500
+++ b/src/internet-stack/rtt-estimator.cc	Sat Dec 13 23:44:20 2008 -0500
@@ -51,6 +51,11 @@
                    TimeValue (Seconds (1.0)),
                    MakeTimeAccessor (&RttEstimator::est),
                    MakeTimeChecker ())
+    .AddAttribute ("MinRTO", 
+                   "Minimum retransmit timeout value",
+                   TimeValue (Seconds (0.2)),
+                   MakeTimeAccessor (&RttEstimator::minrto),
+                   MakeTimeChecker ())
     ;
   return tid;
 }
@@ -217,9 +222,17 @@
 {
   // If not enough samples, justjust return 2 times estimate   
   //if (nSamples < 2) return est * 2;
+  Time retval;
   if (variance < est / Scalar (4.0))
-    return est * Scalar (2 * multiplier);            // At least twice current est
-  return (est + Scalar (4) * variance) * Scalar (multiplier); // As suggested by Jacobson
+    {
+      retval = est * Scalar (2 * multiplier);            // At least twice current est
+    }
+  else
+    {
+      retval = (est + Scalar (4) * variance) * Scalar (multiplier); // As suggested by Jacobson
+    }
+  retval = Max (retval, minrto);
+  return retval;
 }
 
 Ptr<RttEstimator> RttMeanDeviation::Copy () const