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-- |
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 |