equal
deleted
inserted
replaced
63 } |
63 } |
64 |
64 |
65 void |
65 void |
66 RttEstimator::SetMinRto (Time minRto) |
66 RttEstimator::SetMinRto (Time minRto) |
67 { |
67 { |
68 minrto = minRto.To (); |
68 minrto = minRto; |
69 } |
69 } |
70 Time |
70 Time |
71 RttEstimator::GetMinRto (void) const |
71 RttEstimator::GetMinRto (void) const |
72 { |
72 { |
73 return minrto; |
73 return Time (minrto); |
74 } |
74 } |
75 void |
75 void |
76 RttEstimator::SetEstimate (Time estimate) |
76 RttEstimator::SetEstimate (Time estimate) |
77 { |
77 { |
78 est = estimate.To (); |
78 est = estimate; |
79 } |
79 } |
80 Time |
80 Time |
81 RttEstimator::GetEstimate (void) const |
81 RttEstimator::GetEstimate (void) const |
82 { |
82 { |
83 return est; |
83 return Time (est); |
84 } |
84 } |
85 |
85 |
86 |
86 |
87 //RttHistory methods |
87 //RttHistory methods |
88 RttHistory::RttHistory (SequenceNumber32 s, uint32_t c, Time t) |
88 RttHistory::RttHistory (SequenceNumber32 s, uint32_t c, Time t) |
224 { |
224 { |
225 } |
225 } |
226 |
226 |
227 void RttMeanDeviation::Measurement (Time m) |
227 void RttMeanDeviation::Measurement (Time m) |
228 { |
228 { |
229 int64x64_t sample = m.To (); |
|
230 if (nSamples) |
229 if (nSamples) |
231 { // Not first |
230 { // Not first |
232 int64x64_t err = sample - est; |
231 int64x64_t err = m - est; |
233 est = est + gain * err; // estimated rtt |
232 est = est + gain * err; // estimated rtt |
234 variance = variance + gain * (Abs (err) - variance); // variance of rtt |
233 variance = variance + gain * (Abs (err) - variance); // variance of rtt |
235 } |
234 } |
236 else |
235 else |
237 { // First sample |
236 { // First sample |
238 est = sample; // Set estimate to current |
237 est = m; // Set estimate to current |
239 //variance = sample / 2; // And variance to current / 2 |
238 //variance = sample / 2; // And variance to current / 2 |
240 variance = sample; // try this |
239 variance = m; // try this |
241 } |
240 } |
242 nSamples++; |
241 nSamples++; |
243 } |
242 } |
244 |
243 |
245 Time RttMeanDeviation::RetransmitTimeout () |
244 Time RttMeanDeviation::RetransmitTimeout () |
254 else |
253 else |
255 { |
254 { |
256 retval = (est + 4 * variance) * multiplier; // As suggested by Jacobson |
255 retval = (est + 4 * variance) * multiplier; // As suggested by Jacobson |
257 } |
256 } |
258 retval = Max (retval, minrto); |
257 retval = Max (retval, minrto); |
259 return retval; |
258 return Time (retval); |
260 } |
259 } |
261 |
260 |
262 Ptr<RttEstimator> RttMeanDeviation::Copy () const |
261 Ptr<RttEstimator> RttMeanDeviation::Copy () const |
263 { |
262 { |
264 return CopyObject<RttMeanDeviation> (this); |
263 return CopyObject<RttMeanDeviation> (this); |