src/internet-stack/rtt-estimator.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 25 Aug 2010 21:31:43 +0200
changeset 7044 f94b264549d1
parent 7040 444bb5c76bff
permissions -rw-r--r--
introduce implicit conversion operator
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     2
//
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     3
// Copyright (c) 2006 Georgia Tech Research Corporation
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     4
//
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     5
// This program is free software; you can redistribute it and/or modify
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     6
// it under the terms of the GNU General Public License version 2 as
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     7
// published by the Free Software Foundation;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     8
//
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     9
// This program is distributed in the hope that it will be useful,
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    12
// GNU General Public License for more details.
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    13
//
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    14
// You should have received a copy of the GNU General Public License
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    15
// along with this program; if not, write to the Free Software
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    16
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    17
//
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    18
// Author: Rajib Bhattacharjea<raj.b@gatech.edu>
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    19
//
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    20
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    21
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    22
// Ported from:
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    23
// Georgia Tech Network Simulator - Round Trip Time Estimation Class
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    24
// George F. Riley.  Georgia Tech, Spring 2002
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    25
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    26
// Implements several variations of round trip time estimators
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    27
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    28
#include <iostream>
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    29
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    30
#include "rtt-estimator.h"
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    31
#include "ns3/simulator.h"
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    32
#include "ns3/double.h"
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    33
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    34
namespace ns3{
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    35
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    36
NS_OBJECT_ENSURE_REGISTERED (RttEstimator);
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    37
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    38
//RttEstimator iid
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    39
TypeId 
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    40
RttEstimator::GetTypeId (void)
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    41
{
2602
d9262bff6df2 add back support for introspected doxygen.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2556
diff changeset
    42
  static TypeId tid = TypeId ("ns3::RttEstimator")
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    43
    .SetParent<Object> ()
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    44
    .AddAttribute ("MaxMultiplier", 
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    45
                   "XXX",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
    46
                   DoubleValue (64.0),
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    47
                   MakeDoubleAccessor (&RttEstimator::m_maxMultiplier),
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    48
                   MakeDoubleChecker<double> ())
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    49
    .AddAttribute ("InitialEstimation", 
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    50
                   "XXX",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
    51
                   TimeValue (Seconds (1.0)),
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    52
                   MakeTimeAccessor (&RttEstimator::SetEstimate,
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    53
                                     &RttEstimator::GetEstimate),
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    54
                   MakeTimeChecker ())
4023
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
    55
    .AddAttribute ("MinRTO", 
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
    56
                   "Minimum retransmit timeout value",
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
    57
                   TimeValue (Seconds (0.2)),
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    58
                   MakeTimeAccessor (&RttEstimator::SetMinRto,
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    59
                                     &RttEstimator::GetMinRto),
4023
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
    60
                   MakeTimeChecker ())
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
    61
    ;
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    62
  return tid;
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
    63
}
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    64
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    65
void 
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    66
RttEstimator::SetMinRto (Time minRto)
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    67
{
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
    68
  minrto = minRto;
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    69
}
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    70
Time 
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    71
RttEstimator::GetMinRto (void) const
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    72
{
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
    73
  return Time (minrto);
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    74
}
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    75
void 
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    76
RttEstimator::SetEstimate (Time estimate)
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    77
{
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
    78
  est = estimate;
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    79
}
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    80
Time 
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    81
RttEstimator::GetEstimate (void) const
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    82
{
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
    83
  return Time (est);
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    84
}
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    85
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
    86
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    87
//RttHistory methods
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
    88
RttHistory::RttHistory (SequenceNumber32 s, uint32_t c, Time t)
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    89
  : seq (s), count (c), time (t), retx (false)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    90
  {
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    91
  }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    92
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    93
RttHistory::RttHistory (const RttHistory& h)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    94
  : seq (h.seq), count (h.count), time (h.time), retx (h.retx)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    95
  {
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    96
  }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    97
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    98
// Base class methods
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    99
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   100
RttEstimator::RttEstimator () : next (1), history (),
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   101
    nSamples (0), multiplier (1.0) 
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   102
{ 
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   103
  //note next=1 everywhere since first segment will have sequence 1
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   104
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   105
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   106
RttEstimator::RttEstimator(const RttEstimator& c)
2925
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   107
  : Object (c), next(c.next), history(c.history), 
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   108
    m_maxMultiplier (c.m_maxMultiplier), est(c.est), nSamples(c.nSamples),
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   109
    multiplier(c.multiplier)
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   110
{}
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   111
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   112
RttEstimator::~RttEstimator ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   113
{
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   114
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   115
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   116
void RttEstimator::SentSeq (SequenceNumber32 s, uint32_t c)
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   117
{ // Note that a particular sequence has been sent
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   118
  if (s == next)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   119
    { // This is the next expected one, just log at end
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   120
      history.push_back (RttHistory (s, c, Simulator::Now () ));
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   121
      next = s + SequenceNumber32 (c); // Update next expected
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   122
    }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   123
  else
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   124
    { // This is a retransmit, find in list and mark as re-tx
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   125
      for (RttHistory_t::iterator i = history.begin (); i != history.end (); ++i)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   126
        {
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   127
          if ((s >= i->seq) && (s < (i->seq + SequenceNumber32 (i->count))))
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   128
            { // Found it
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   129
              i->retx = true;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   130
              // One final test..be sure this re-tx does not extend "next"
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   131
              if ((s + SequenceNumber32 (c)) > next)
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   132
                {
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   133
                  next = s + SequenceNumber32 (c);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   134
                  i->count = ((s + SequenceNumber32 (c)) - i->seq); // And update count in hist
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   135
                }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   136
              break;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   137
            }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   138
        }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   139
    }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   140
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   141
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   142
Time RttEstimator::AckSeq (SequenceNumber32 a)
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   143
{ // An ack has been received, calculate rtt and log this measurement
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   144
  // Note we use a linear search (O(n)) for this since for the common
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   145
  // case the ack'ed packet will be at the head of the list
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   146
  Time m = Seconds (0.0);
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   147
  if (history.size () == 0) return (m);    // No pending history, just exit
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   148
  RttHistory& h = history.front ();
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   149
  if (!h.retx && a >= (h.seq + SequenceNumber32 (h.count)))
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   150
    { // Ok to use this sample
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   151
      m = Simulator::Now () - h.time; // Elapsed time
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   152
      Measurement(m);                // Log the measurement
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   153
      ResetMultiplier();             // Reset multiplier on valid measurement
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   154
    }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   155
  // Now delete all ack history with seq <= ack
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   156
  while(history.size() > 0)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   157
    {
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   158
      RttHistory& h = history.front ();
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4023
diff changeset
   159
      if ((h.seq + SequenceNumber32(h.count)) > a) break;                // Done removing
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   160
      history.pop_front (); // Remove
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   161
    }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   162
  return m;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   163
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   164
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   165
void RttEstimator::ClearSent ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   166
{ // Clear all history entries
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   167
  next = 1;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   168
  history.clear ();
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   169
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   170
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   171
void RttEstimator::IncreaseMultiplier ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   172
{
2925
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   173
  double a;
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   174
  a = multiplier * 2.0;
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   175
  double b;
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   176
  b = m_maxMultiplier * 2.0;
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   177
  multiplier = std::min (multiplier * 2.0, m_maxMultiplier);
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   178
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   179
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   180
void RttEstimator::ResetMultiplier ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   181
{
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   182
  multiplier = 1.0;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   183
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   184
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   185
void RttEstimator::Reset ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   186
{ // Reset to initial state
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   187
  next = 1;
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   188
  est = 1; // XXX: we should go back to the 'initial value' here. Need to add support in Object for this.
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   189
  history.clear ();         // Remove all info from the history
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   190
  nSamples = 0;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   191
  ResetMultiplier ();
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   192
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   193
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   194
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   195
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   196
//-----------------------------------------------------------------------------
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   197
//-----------------------------------------------------------------------------
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   198
// Mean-Deviation Estimator
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   199
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   200
NS_OBJECT_ENSURE_REGISTERED (RttMeanDeviation);
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   201
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   202
TypeId 
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   203
RttMeanDeviation::GetTypeId (void)
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   204
{
2602
d9262bff6df2 add back support for introspected doxygen.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2556
diff changeset
   205
  static TypeId tid = TypeId ("ns3::RttMeanDeviation")
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   206
    .SetParent<RttEstimator> ()
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   207
    .AddConstructor<RttMeanDeviation> ()
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   208
    .AddAttribute ("Gain",
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   209
                   "XXX",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   210
                   DoubleValue (0.1),
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   211
                   MakeDoubleAccessor (&RttMeanDeviation::gain),
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   212
                   MakeDoubleChecker<double> ())
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   213
    ;
2255
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   214
  return tid;
ac534291636f merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2224
diff changeset
   215
}
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   216
2556
b13dd6239954 get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2257
diff changeset
   217
RttMeanDeviation::RttMeanDeviation() :
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   218
  variance (0) 
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   219
{ 
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   220
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   221
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   222
RttMeanDeviation::RttMeanDeviation (const RttMeanDeviation& c)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   223
  : RttEstimator (c), gain (c.gain), variance (c.variance)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   224
{
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   225
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   226
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   227
void RttMeanDeviation::Measurement (Time m)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   228
{
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   229
  if (nSamples)
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   230
    { // Not first
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
   231
      int64x64_t err = m - est;
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   232
      est = est + gain * err;         // estimated rtt
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   233
      variance = variance + gain * (Abs (err) - variance); // variance of rtt
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   234
    }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   235
  else
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   236
    { // First sample
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
   237
      est = m;                        // Set estimate to current
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   238
      //variance = sample / 2;               // And variance to current / 2
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
   239
      variance = m; // try this
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   240
    }
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   241
  nSamples++;
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   242
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   243
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   244
Time RttMeanDeviation::RetransmitTimeout ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   245
{
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   246
  // If not enough samples, justjust return 2 times estimate   
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   247
  //if (nSamples < 2) return est * 2;
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   248
  int64x64_t retval;
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   249
  if (variance < est / 4.0)
4023
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
   250
    {
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   251
      retval = est * 2 * multiplier;            // At least twice current est
4023
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
   252
    }
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
   253
  else
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
   254
    {
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   255
      retval = (est + 4 * variance) * multiplier; // As suggested by Jacobson
4023
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
   256
    }
d320dea20aca Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 3260
diff changeset
   257
  retval = Max (retval, minrto);
7044
f94b264549d1 introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7040
diff changeset
   258
  return Time (retval);
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   259
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   260
2608
408589d1dfff merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2602
diff changeset
   261
Ptr<RttEstimator> RttMeanDeviation::Copy () const
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   262
{
2925
7149e19cada4 use CopyObject and not Create to copy RttMeanDeviation. Implement the copy constructor correctly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2608
diff changeset
   263
  return CopyObject<RttMeanDeviation> (this);
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   264
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   265
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   266
void RttMeanDeviation::Reset ()
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   267
{ // Reset to initial state
7040
444bb5c76bff get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6434
diff changeset
   268
  variance = 0;
2224
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   269
  RttEstimator::Reset ();
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   270
}
6f97d21a99c2 Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   271
}//namepsace ns3