author | Adrian S Tam <adrian.sw.tam@gmail.com> |
Wed, 07 Dec 2011 11:22:10 -0500 | |
changeset 7619 | b4dee6307aa7 |
parent 7256 | b04ba6772f8c |
child 7776 | 19174ba45009 |
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 |
|
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
34 |
namespace ns3 { |
2224
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", |
7619
b4dee6307aa7
Nagle's algorithm in TCP (closes bug 1039)
Adrian S Tam <adrian.sw.tam@gmail.com>
parents:
7256
diff
changeset
|
57 |
TimeValue (Seconds (0.2)), // RFC2988 says min RTO=1 sec, but Linux uses 200ms. See http://www.postel.org/pipermail/end2end-interest/2004-November/004402.html |
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 ()) |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
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) |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
90 |
{ |
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
91 |
} |
2224
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) |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
95 |
{ |
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
96 |
} |
2224
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 (), |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
101 |
nSamples (0), multiplier (1.0) |
2224
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) |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
107 |
: Object (c), next (c.next), history (c.history), |
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
108 |
m_maxMultiplier (c.m_maxMultiplier), est (c.est), |
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
109 |
minrto (c.minrto), nSamples (c.nSamples), |
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
110 |
multiplier (c.multiplier) |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
111 |
{ |
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
112 |
} |
2224
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 |
RttEstimator::~RttEstimator () |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
115 |
{ |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
116 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
117 |
|
6434
ac8b4bf77e50
Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4023
diff
changeset
|
118 |
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
|
119 |
{ // 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
|
120 |
if (s == next) |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
121 |
{ // 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
|
122 |
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
|
123 |
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
|
124 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
125 |
else |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
126 |
{ // 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
|
127 |
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
|
128 |
{ |
6434
ac8b4bf77e50
Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4023
diff
changeset
|
129 |
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
|
130 |
{ // Found it |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
131 |
i->retx = true; |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
132 |
// 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
|
133 |
if ((s + SequenceNumber32 (c)) > next) |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
134 |
{ |
6434
ac8b4bf77e50
Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4023
diff
changeset
|
135 |
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
|
136 |
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
|
137 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
138 |
break; |
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 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
142 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
143 |
|
6434
ac8b4bf77e50
Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4023
diff
changeset
|
144 |
Time RttEstimator::AckSeq (SequenceNumber32 a) |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
145 |
{ // 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
|
146 |
// 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
|
147 |
// 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
|
148 |
Time m = Seconds (0.0); |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
149 |
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
|
150 |
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
|
151 |
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
|
152 |
{ // Ok to use this sample |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
153 |
m = Simulator::Now () - h.time; // Elapsed time |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
154 |
Measurement (m); // Log the measurement |
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
155 |
ResetMultiplier (); // Reset multiplier on valid measurement |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
156 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
157 |
// Now delete all ack history with seq <= ack |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
158 |
while(history.size () > 0) |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
159 |
{ |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
160 |
RttHistory& h = history.front (); |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7176
diff
changeset
|
161 |
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
|
162 |
history.pop_front (); // Remove |
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 |
return m; |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
165 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
166 |
|
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
167 |
void RttEstimator::ClearSent () |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
168 |
{ // Clear all history entries |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
169 |
next = 1; |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
170 |
history.clear (); |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
171 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
172 |
|
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
173 |
void RttEstimator::IncreaseMultiplier () |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
174 |
{ |
2556
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
175 |
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
|
176 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
177 |
|
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
178 |
void RttEstimator::ResetMultiplier () |
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 |
multiplier = 1.0; |
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 |
|
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
183 |
void RttEstimator::Reset () |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
184 |
{ // Reset to initial state |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
185 |
next = 1; |
7040
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
186 |
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
|
187 |
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
|
188 |
nSamples = 0; |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
189 |
ResetMultiplier (); |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
190 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
191 |
|
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 |
// Mean-Deviation Estimator |
2255
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
197 |
|
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
198 |
NS_OBJECT_ENSURE_REGISTERED (RttMeanDeviation); |
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 |
TypeId |
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
201 |
RttMeanDeviation::GetTypeId (void) |
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
202 |
{ |
2602
d9262bff6df2
add back support for introspected doxygen.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2556
diff
changeset
|
203 |
static TypeId tid = TypeId ("ns3::RttMeanDeviation") |
2255
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
204 |
.SetParent<RttEstimator> () |
2556
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
205 |
.AddConstructor<RttMeanDeviation> () |
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
206 |
.AddAttribute ("Gain", |
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
207 |
"XXX", |
2965
4b28e9740e3b
get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2608
diff
changeset
|
208 |
DoubleValue (0.1), |
2556
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
209 |
MakeDoubleAccessor (&RttMeanDeviation::gain), |
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
210 |
MakeDoubleChecker<double> ()) |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
211 |
; |
2255
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
212 |
return tid; |
ac534291636f
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2224
diff
changeset
|
213 |
} |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
214 |
|
2556
b13dd6239954
get rid of DefaultValue usage in internet-node
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2257
diff
changeset
|
215 |
RttMeanDeviation::RttMeanDeviation() : |
7040
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
216 |
variance (0) |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
217 |
{ |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
218 |
} |
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 |
RttMeanDeviation::RttMeanDeviation (const RttMeanDeviation& c) |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
221 |
: 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
|
222 |
{ |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
223 |
} |
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 |
void RttMeanDeviation::Measurement (Time m) |
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 |
if (nSamples) |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
228 |
{ // Not first |
7044
f94b264549d1
introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
7040
diff
changeset
|
229 |
int64x64_t err = m - est; |
7040
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
230 |
est = est + gain * err; // estimated rtt |
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
231 |
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
|
232 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
233 |
else |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
234 |
{ // First sample |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
235 |
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
|
236 |
//variance = sample / 2; // And variance to current / 2 |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
237 |
variance = m; // try this |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
238 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
239 |
nSamples++; |
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 |
|
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
242 |
Time RttMeanDeviation::RetransmitTimeout () |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
243 |
{ |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
244 |
// If not enough samples, justjust return 2 times estimate |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
245 |
//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
|
246 |
int64x64_t retval; |
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
247 |
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
|
248 |
{ |
7040
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
249 |
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
|
250 |
} |
d320dea20aca
Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
3260
diff
changeset
|
251 |
else |
d320dea20aca
Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
3260
diff
changeset
|
252 |
{ |
7040
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
253 |
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
|
254 |
} |
d320dea20aca
Add a minimum RTO (adapted from Mathieu, bug 418)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
3260
diff
changeset
|
255 |
retval = Max (retval, minrto); |
7044
f94b264549d1
introduce implicit conversion operator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
7040
diff
changeset
|
256 |
return Time (retval); |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
257 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
258 |
|
2608
408589d1dfff
merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2602
diff
changeset
|
259 |
Ptr<RttEstimator> RttMeanDeviation::Copy () const |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
260 |
{ |
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
|
261 |
return CopyObject<RttMeanDeviation> (this); |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
262 |
} |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
263 |
|
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
264 |
void RttMeanDeviation::Reset () |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
265 |
{ // Reset to initial state |
7040
444bb5c76bff
get rid of Scalar and co.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
6434
diff
changeset
|
266 |
variance = 0; |
2224
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
267 |
RttEstimator::Reset (); |
6f97d21a99c2
Added in ns-3-tcp (second try)
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff
changeset
|
268 |
} |
7176
9f2663992e99
internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
7126
diff
changeset
|
269 |
} //namepsace ns3 |