A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::RttMeanDeviation Class Reference

The "Mean--Deviation" RTT estimator, as discussed by Van Jacobson. More...

#include "rtt-estimator.h"

+ Inheritance diagram for ns3::RttMeanDeviation:
+ Collaboration diagram for ns3::RttMeanDeviation:

Public Member Functions

 RttMeanDeviation ()
 
 RttMeanDeviation (const RttMeanDeviation &r)
 Copy constructor.
 
Ptr< RttEstimatorCopy () const override
 Copy object (including current internal state)
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object.
 
void Measurement (Time measure) override
 Add a new measurement to the estimator.
 
void Reset () override
 Resets the estimator.
 
- Public Member Functions inherited from ns3::RttEstimator
 RttEstimator ()
 
 RttEstimator (const RttEstimator &r)
 Copy constructor.
 
 ~RttEstimator () override
 
Time GetEstimate () const
 gets the RTT estimate.
 
uint32_t GetNSamples () const
 gets the number of samples used in the estimates
 
Time GetVariation () const
 Note that this is not a formal statistical variance; it has the the same units as the estimate.
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor.
 
 ~Object () override
 Destructor.
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together.
 
void Dispose ()
 Dispose of this Object.
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one.
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object.
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object.
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId.
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object.
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one.
 
bool IsInitialized () const
 Check if the object has been initialized.
 
void UnidirectionalAggregateObject (Ptr< Object > other)
 Aggregate an Object to another Object.
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator.
 
void Ref () const
 Increment the reference count.
 
void Unref () const
 Decrement the reference count.
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor.
 
void GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const
 Get the value of an attribute, raising fatal errors if unsuccessful.
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors.
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful.
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors.
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context.
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context.
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context.
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context.
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::RttEstimator
static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type.
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID.
 

Private Member Functions

uint32_t CheckForReciprocalPowerOfTwo (double val) const
 Utility function to check for possible conversion of a double value (0 < value < 1) to a reciprocal power of two.
 
void FloatingPointUpdate (Time m)
 Method to update the rtt and variation estimates using floating point arithmetic, used when the values of Alpha and Beta are not both a reciprocal power of two.
 
void IntegerUpdate (Time m, uint32_t rttShift, uint32_t variationShift)
 Method to update the rtt and variation estimates using integer arithmetic, used when the values of Alpha and Beta support the integer conversion.
 

Private Attributes

double m_alpha
 Filter gain for average.
 
double m_beta
 Filter gain for variation.
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object.
 
virtual void DoDispose ()
 Destructor implementation.
 
virtual void DoInitialize ()
 Initialize() implementation.
 
virtual void NotifyNewAggregate ()
 Notify all Objects aggregated to this one of a new Object being aggregated.
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes.
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed.
 
- Protected Attributes inherited from ns3::RttEstimator
Time m_estimatedRtt
 Current estimate.
 
Time m_estimatedVariation
 Current estimate variation.
 
uint32_t m_nSamples
 Number of samples.
 

Detailed Description

The "Mean--Deviation" RTT estimator, as discussed by Van Jacobson.

Introspection did not find any typical Config paths.

This class implements the "Mean--Deviation" RTT estimator, as discussed by Van Jacobson and Michael J. Karels, in "Congestion Avoidance and Control", SIGCOMM 88, Appendix A

The default values for the gain (alpha and beta) are set as documented in RFC 6298.


Attributes

  • Alpha: Gain used in estimating the RTT, must be 0 <= alpha <= 1
    • Set with class: ns3::DoubleValue
    • Underlying type: double 0:1
    • Initial value: 0.125
    • Flags: constructwriteread
    • Support level: SUPPORTED
  • Beta: Gain used in estimating the RTT variation, must be 0 <= beta <= 1
    • Set with class: ns3::DoubleValue
    • Underlying type: double 0:1
    • Initial value: 0.25
    • Flags: constructwriteread
    • Support level: SUPPORTED

Attributes defined in parent class ns3::RttEstimator

  • InitialEstimation: Initial RTT estimate
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +1e+09ns
    • Flags: constructwriteread
    • Support level: SUPPORTED

No TraceSources are defined for this type.
Group: Internet

Size of this type is 104 bytes (on a 64-bit architecture).

Definition at line 112 of file rtt-estimator.h.

Constructor & Destructor Documentation

◆ RttMeanDeviation() [1/2]

ns3::RttMeanDeviation::RttMeanDeviation ( )

Definition at line 139 of file rtt-estimator.cc.

References NS_LOG_FUNCTION.

◆ RttMeanDeviation() [2/2]

ns3::RttMeanDeviation::RttMeanDeviation ( const RttMeanDeviation & r)

Copy constructor.

Parameters
rthe object to copy

Definition at line 144 of file rtt-estimator.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ CheckForReciprocalPowerOfTwo()

uint32_t ns3::RttMeanDeviation::CheckForReciprocalPowerOfTwo ( double val) const
private

Utility function to check for possible conversion of a double value (0 < value < 1) to a reciprocal power of two.

Values of 1/32, 1/16, 1/8, 1/4, and 1/2 (i.e., within the possible range of experimentation for this estimator) are supported.

Parameters
valvalue to check
Returns
log base 2 (1/val) if reciprocal power of 2, or zero if not

Definition at line 159 of file rtt-estimator.cc.

References NS_LOG_FUNCTION, and ns3::TOLERANCE.

Referenced by Measurement().

+ Here is the caller graph for this function:

◆ Copy()

Ptr< RttEstimator > ns3::RttMeanDeviation::Copy ( ) const
overridevirtual

Copy object (including current internal state)

Returns
a copy of itself

Implements ns3::RttEstimator.

Definition at line 258 of file rtt-estimator.cc.

References ns3::Object::CopyObject, and NS_LOG_FUNCTION.

◆ FloatingPointUpdate()

void ns3::RttMeanDeviation::FloatingPointUpdate ( Time m)
private

Method to update the rtt and variation estimates using floating point arithmetic, used when the values of Alpha and Beta are not both a reciprocal power of two.

Parameters
mtime measurement

Definition at line 191 of file rtt-estimator.cc.

References ns3::Abs(), ns3::Time::FromDouble(), m_alpha, m_beta, ns3::RttEstimator::m_estimatedRtt, ns3::RttEstimator::m_estimatedVariation, NS_LOG_FUNCTION, ns3::Time::S, and ns3::Time::ToDouble().

Referenced by Measurement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetInstanceTypeId()

TypeId ns3::RttMeanDeviation::GetInstanceTypeId ( ) const
overridevirtual

Get the most derived TypeId for this Object.

This method is typically implemented by ns3::Object::GetInstanceTypeId but some classes which derive from ns3::ObjectBase directly have to implement it themselves.

Returns
The TypeId associated to the most-derived type of this instance.

Reimplemented from ns3::RttEstimator.

Definition at line 153 of file rtt-estimator.cc.

References GetTypeId().

+ Here is the call graph for this function:

◆ GetTypeId()

TypeId ns3::RttMeanDeviation::GetTypeId ( )
static

Get the type ID.

Returns
the object TypeId

Definition at line 119 of file rtt-estimator.cc.

References m_alpha, m_beta, ns3::MakeDoubleAccessor(), ns3::MakeDoubleChecker(), and ns3::TypeId::SetParent().

Referenced by ns3::TcpGeneralTest::CreateSocket(), GetInstanceTypeId(), and ns3::TcpL4Protocol::GetTypeId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IntegerUpdate()

void ns3::RttMeanDeviation::IntegerUpdate ( Time m,
uint32_t rttShift,
uint32_t variationShift )
private

Method to update the rtt and variation estimates using integer arithmetic, used when the values of Alpha and Beta support the integer conversion.

Parameters
mtime measurement
rttShiftvalue corresponding to log base 2 (1/alpha)
variationShiftvalue corresponding to log base 2 (1/beta)

Definition at line 209 of file rtt-estimator.cc.

References ns3::Time::From(), ns3::Time::GetInteger(), ns3::RttEstimator::m_estimatedRtt, ns3::RttEstimator::m_estimatedVariation, and NS_LOG_FUNCTION.

Referenced by Measurement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Measurement()

void ns3::RttMeanDeviation::Measurement ( Time measure)
overridevirtual

Add a new measurement to the estimator.

Parameters
measurethe new RTT measure.

Implements ns3::RttEstimator.

Definition at line 228 of file rtt-estimator.cc.

References CheckForReciprocalPowerOfTwo(), FloatingPointUpdate(), IntegerUpdate(), m_alpha, m_beta, ns3::RttEstimator::m_estimatedRtt, ns3::RttEstimator::m_estimatedVariation, ns3::RttEstimator::m_nSamples, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ Reset()

void ns3::RttMeanDeviation::Reset ( )
overridevirtual

Resets the estimator.

Reimplemented from ns3::RttEstimator.

Definition at line 265 of file rtt-estimator.cc.

References NS_LOG_FUNCTION, and ns3::RttEstimator::Reset().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_alpha

double ns3::RttMeanDeviation::m_alpha
private

Filter gain for average.

Definition at line 174 of file rtt-estimator.h.

Referenced by FloatingPointUpdate(), GetTypeId(), and Measurement().

◆ m_beta

double ns3::RttMeanDeviation::m_beta
private

Filter gain for variation.

Definition at line 175 of file rtt-estimator.h.

Referenced by FloatingPointUpdate(), GetTypeId(), and Measurement().


The documentation for this class was generated from the following files: