Cobalt packet queue disc. More...
#include "cobalt-queue-disc.h"
Public Member Functions | |
CobaltQueueDisc () | |
CobaltQueueDisc Constructor. More... | |
virtual | ~CobaltQueueDisc () |
Destructor. More... | |
int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
int64_t | GetDropNext (void) const |
Get the time for next packet drop while in the dropping state. More... | |
Time | GetInterval (void) const |
Get the interval. More... | |
double | GetPdrop () const |
Get the drop probability of Blue. More... | |
Time | GetTarget (void) const |
Get the target queue delay. More... | |
int64_t | Time2CoDel (Time t) const |
Return the unsigned 32-bit integer representation of the input Time object. More... | |
Public Member Functions inherited from ns3::QueueDisc | |
QueueDisc (const QueueDisc &)=delete | |
QueueDisc (QueueDiscSizePolicy policy, QueueSizeUnit unit) | |
Constructor. More... | |
QueueDisc (QueueDiscSizePolicy policy=QueueDiscSizePolicy::SINGLE_INTERNAL_QUEUE) | |
Constructor. More... | |
virtual | ~QueueDisc () |
void | AddInternalQueue (Ptr< InternalQueue > queue) |
Add an internal queue to the tail of the list of queues. More... | |
void | AddPacketFilter (Ptr< PacketFilter > filter) |
Add a packet filter to the tail of the list of filters used to classify packets. More... | |
void | AddQueueDiscClass (Ptr< QueueDiscClass > qdClass) |
Add a queue disc class to the tail of the list of classes. More... | |
int32_t | Classify (Ptr< QueueDiscItem > item) |
Classify a packet by calling the packet filters, one at a time, until either a filter able to classify the packet is found or all the filters have been processed. More... | |
Ptr< QueueDiscItem > | Dequeue (void) |
Extract from the queue disc the packet that has been dequeued by calling Peek, if any, or call the private DoDequeue method (which must be implemented by derived classes) to dequeue a packet, otherwise. More... | |
bool | Enqueue (Ptr< QueueDiscItem > item) |
Pass a packet to store to the queue discipline. More... | |
QueueSize | GetCurrentSize (void) |
Get the current size of the queue disc in bytes, if operating in bytes mode, or packets, otherwise. More... | |
Ptr< InternalQueue > | GetInternalQueue (std::size_t i) const |
Get the i-th internal queue. More... | |
QueueSize | GetMaxSize (void) const |
Get the maximum size of the queue disc. More... | |
uint32_t | GetNBytes (void) const |
Get the amount of bytes stored by the queue disc. More... | |
Ptr< NetDeviceQueueInterface > | GetNetDeviceQueueInterface (void) const |
std::size_t | GetNInternalQueues (void) const |
Get the number of internal queues. More... | |
std::size_t | GetNPacketFilters (void) const |
Get the number of packet filters. More... | |
uint32_t | GetNPackets (void) const |
Get the number of packets stored by the queue disc. More... | |
std::size_t | GetNQueueDiscClasses (void) const |
Get the number of queue disc classes. More... | |
Ptr< PacketFilter > | GetPacketFilter (std::size_t i) const |
Get the i-th packet filter. More... | |
Ptr< QueueDiscClass > | GetQueueDiscClass (std::size_t i) const |
Get the i-th queue disc class. More... | |
virtual uint32_t | GetQuota (void) const |
Get the maximum number of dequeue operations following a packet enqueue. More... | |
SendCallback | GetSendCallback (void) const |
const Stats & | GetStats (void) |
Retrieve all the collected statistics. More... | |
virtual WakeMode | GetWakeMode (void) const |
When setting up the wake callbacks on the netdevice queues, it is necessary to determine which queue disc (the root queue disc or one of its children) should be activated when the netdevice wakes one of its transmission queues. More... | |
QueueDisc & | operator= (const QueueDisc &)=delete |
Ptr< const QueueDiscItem > | Peek (void) |
Get a copy of the next packet the queue discipline will extract. More... | |
void | Run (void) |
Modelled after the Linux function __qdisc_run (net/sched/sch_generic.c) Dequeues multiple packets, until a quota is exceeded or sending a packet to the device failed. More... | |
bool | SetMaxSize (QueueSize size) |
Set the maximum size of the queue disc. More... | |
void | SetNetDeviceQueueInterface (Ptr< NetDeviceQueueInterface > ndqi) |
virtual void | SetQuota (const uint32_t quota) |
Set the maximum number of dequeue operations following a packet enqueue. More... | |
void | SetSendCallback (SendCallback func) |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Get the most derived TypeId for this Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized (void) const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= ([[maybe_unused]] const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::QueueDisc | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Attributes | |
static constexpr const char * | CE_THRESHOLD_EXCEEDED_MARK = "CE threshold exceeded mark" |
Sojourn time above CE threshold. More... | |
static constexpr const char * | FORCED_MARK = "forcedMark" |
forced marks by Codel on ECN-enabled More... | |
static constexpr const char * | OVERLIMIT_DROP = "Overlimit drop" |
Overlimit dropped packet. More... | |
static constexpr const char * | TARGET_EXCEEDED_DROP = "Target exceeded drop" |
Sojourn time above target. More... | |
Static Public Attributes inherited from ns3::QueueDisc | |
static constexpr const char * | CHILD_QUEUE_DISC_DROP = "(Dropped by child queue disc) " |
Packet dropped by a child queue disc. More... | |
static constexpr const char * | CHILD_QUEUE_DISC_MARK = "(Marked by child queue disc) " |
Packet marked by a child queue disc. More... | |
static constexpr const char * | INTERNAL_QUEUE_DROP = "Dropped by internal queue" |
Packet dropped by an internal queue. More... | |
Protected Member Functions | |
virtual void | DoDispose (void) |
Dispose of the object. More... | |
Protected Member Functions inherited from ns3::QueueDisc | |
void | DoInitialize (void) |
Check whether the configuration is correct and initialize parameters. More... | |
void | DropAfterDequeue (Ptr< const QueueDiscItem > item, const char *reason) |
Perform the actions required when the queue disc is notified of a packet dropped after dequeue. More... | |
void | DropBeforeEnqueue (Ptr< const QueueDiscItem > item, const char *reason) |
Perform the actions required when the queue disc is notified of a packet dropped before enqueue. More... | |
bool | Mark (Ptr< QueueDiscItem > item, const char *reason) |
Marks the given packet and, if successful, updates the counters associated with the given reason. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
void | CacheInit (void) |
There is a big difference in timing between the accurate values placed in the cache and the approximations given by a single Newton step for small count values, particularly when stepping from count 1 to 2 or vice versa. More... | |
virtual bool | CheckConfig (void) |
Check whether the current configuration is correct. More... | |
void | CobaltQueueEmpty (int64_t now) |
Called when the queue becomes empty to alter the drop probabilities of Blue. More... | |
void | CobaltQueueFull (int64_t now) |
Called when the queue becomes full to alter the drop probabilities of Blue. More... | |
bool | CobaltShouldDrop (Ptr< QueueDiscItem > item, int64_t now) |
Called to decide whether the current packet should be dropped based on decisions taken by Blue and Codel working parallely. More... | |
bool | CoDelTimeAfter (int64_t a, int64_t b) |
Check if CoDel time a is successive to b. More... | |
bool | CoDelTimeAfterEq (int64_t a, int64_t b) |
Check if CoDel time a is successive or equal to b. More... | |
int64_t | ControlLaw (int64_t t) |
Determine the time for next drop CoDel control law is t + m_interval/sqrt(m_count). More... | |
virtual Ptr< QueueDiscItem > | DoDequeue (void) |
This function actually extracts a packet from the queue disc. More... | |
virtual bool | DoEnqueue (Ptr< QueueDiscItem > item) |
This function actually enqueues a packet into the queue disc. More... | |
virtual Ptr< const QueueDiscItem > | DoPeek (void) |
Return a copy of the next packet the queue disc will extract. More... | |
virtual void | InitializeParams (void) |
Initialize the queue parameters. More... | |
void | InvSqrt (void) |
Updates the inverse square root. More... | |
void | NewtonStep (void) |
Calculate the reciprocal square root of m_count by using Newton's method http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Iterative_methods_for_reciprocal_square_roots m_recInvSqrt (new) = (m_recInvSqrt (old) / 2) * (3 - m_count * m_recInvSqrt^2) More... | |
Private Attributes | |
Time | m_blueThreshold |
Threshold to enable blue enhancement. More... | |
Time | m_ceThreshold |
Threshold above which to CE mark. More... | |
TracedValue< uint32_t > | m_count |
Number of packets dropped since entering drop state. More... | |
double | m_decrement |
decrement value for marking probability More... | |
TracedValue< int64_t > | m_dropNext |
Time to drop next packet. More... | |
TracedValue< bool > | m_dropping |
True if in dropping state. More... | |
double | m_increment |
increment value for marking probability More... | |
Time | m_interval |
sliding minimum time window width More... | |
uint32_t | m_lastUpdateTimeBlue |
Blue's last update time for drop probability. More... | |
double | m_pDrop |
Drop Probability. More... | |
uint32_t | m_recInvSqrt |
Reciprocal inverse square root. More... | |
uint32_t | m_recInvSqrtCache [REC_INV_SQRT_CACHE] = {0} |
Cache to maintain some initial values of InvSqrt. More... | |
Stats | m_stats |
Cobalt statistics. More... | |
Time | m_target |
target queue delay More... | |
bool | m_useEcn |
True if ECN is used (packets are marked instead of being dropped) More... | |
bool | m_useL4s |
True if L4S is used (ECT1 packets are marked at CE threshold) More... | |
Ptr< UniformRandomVariable > | m_uv |
Rng stream. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::QueueDisc | |
typedef Queue< QueueDiscItem > | InternalQueue |
Internal queues store QueueDiscItem objects. More... | |
typedef std::function< void(Ptr< QueueDiscItem >)> | SendCallback |
Callback invoked to send a packet to the receiving object when Run is called. More... | |
enum | WakeMode { WAKE_ROOT = 0x00 , WAKE_CHILD = 0x01 } |
Used to determine whether the queue disc itself or its children must be activated when a netdevice wakes a transmission queue. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Cobalt packet queue disc.
Introspection did not find any typical Config paths.
Cobalt uses CoDel and BLUE algorithms in parallel, in order to obtain the best features of each. CoDel is excellent on flows which respond to congestion signals in a TCP-like way. BLUE is far more effective on unresponsive flows.
Size of this type is 1776 bytes (on a 64-bit architecture).
Definition at line 59 of file cobalt-queue-disc.h.
ns3::CobaltQueueDisc::CobaltQueueDisc | ( | ) |
CobaltQueueDisc Constructor.
Create a Cobalt queue disc
Definition at line 144 of file cobalt-queue-disc.cc.
References InitializeParams(), m_uv, and NS_LOG_FUNCTION.
|
virtual |
Destructor.
Destructor
Definition at line 157 of file cobalt-queue-disc.cc.
References NS_LOG_FUNCTION.
int64_t ns3::CobaltQueueDisc::AssignStreams | ( | int64_t | stream | ) |
Assign a fixed random variable stream number to the random variables used by this model.
Return the number of streams (possibly zero) that have been assigned.
stream | first stream index to use |
Definition at line 163 of file cobalt-queue-disc.cc.
References m_uv, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
|
private |
There is a big difference in timing between the accurate values placed in the cache and the approximations given by a single Newton step for small count values, particularly when stepping from count 1 to 2 or vice versa.
Above 16, a single Newton step gives sufficient accuracy in either direction, given the precision stored.
The magnitude of the error when stepping up to count 2 is such as to give the value that should have been produced at count 4.
Definition at line 234 of file cobalt-queue-disc.cc.
References m_count, m_recInvSqrt, m_recInvSqrtCache, NewtonStep(), and REC_INV_SQRT_CACHE.
Referenced by InitializeParams().
|
privatevirtual |
Check whether the current configuration is correct.
Default objects (such as internal queues) might be created by this method to ensure the configuration is correct. This method is automatically called at simulation initialization time, and it is called before the InitializeParams () method. It is appropriate to promote parameter initialization to this method if it aids in checking for correct configuration.
Implements ns3::QueueDisc.
Definition at line 296 of file cobalt-queue-disc.cc.
References ns3::QueueDisc::AddInternalQueue(), ns3::CreateObjectWithAttributes(), ns3::QueueDisc::GetMaxSize(), ns3::QueueDisc::GetNInternalQueues(), ns3::QueueDisc::GetNPacketFilters(), ns3::QueueDisc::GetNQueueDiscClasses(), NS_LOG_ERROR, and NS_LOG_FUNCTION.
|
private |
Called when the queue becomes empty to alter the drop probabilities of Blue.
now | time in CoDel time units (microseconds) |
Definition at line 413 of file cobalt-queue-disc.cc.
References CoDelTimeAfter(), CoDelTimeAfterEq(), ControlLaw(), InvSqrt(), m_count, m_decrement, m_dropNext, m_dropping, m_lastUpdateTimeBlue, m_pDrop, m_target, max, NS_LOG_FUNCTION, and Time2CoDel().
Referenced by DoDequeue().
|
private |
Called when the queue becomes full to alter the drop probabilities of Blue.
now | time in CoDel time units (microseconds) |
Definition at line 394 of file cobalt-queue-disc.cc.
References CoDelTimeAfter(), m_count, m_dropNext, m_dropping, m_increment, m_lastUpdateTimeBlue, m_pDrop, m_target, min, NS_LOG_FUNCTION, NS_LOG_LOGIC, and Time2CoDel().
Referenced by DoEnqueue().
|
private |
Called to decide whether the current packet should be dropped based on decisions taken by Blue and Codel working parallely.
item | current packet |
now | time in CoDel time units (microseconds) |
Definition at line 432 of file cobalt-queue-disc.cc.
References ns3::Time::As(), CE_THRESHOLD_EXCEEDED_MARK, CoDelTimeAfter(), ControlLaw(), FORCED_MARK, ns3::Time::GetSeconds(), ns3::UniformRandomVariable::GetValue(), InvSqrt(), ns3::QueueItem::IP_DSFIELD, m_blueThreshold, m_ceThreshold, m_count, m_dropNext, m_dropping, m_increment, m_interval, m_lastUpdateTimeBlue, m_pDrop, m_target, m_useEcn, m_useL4s, m_uv, ns3::QueueDisc::Mark(), max, min, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Time::S, and Time2CoDel().
Referenced by DoDequeue().
|
private |
Check if CoDel time a is successive to b.
a | left operand |
b | right operand |
Definition at line 185 of file cobalt-queue-disc.cc.
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), and CobaltShouldDrop().
|
private |
Check if CoDel time a is successive or equal to b.
a | left operand |
b | right operand |
Definition at line 191 of file cobalt-queue-disc.cc.
Referenced by CobaltQueueEmpty().
|
private |
Determine the time for next drop CoDel control law is t + m_interval/sqrt(m_count).
Here, we use m_recInvSqrt calculated by Newton's method in NewtonStep() to avoid both sqrt() and divide operations
t | Current next drop time |
Definition at line 263 of file cobalt-queue-disc.cc.
References m_interval, m_recInvSqrt, NS_LOG_FUNCTION, ns3::ReciprocalDivide(), and Time2CoDel().
Referenced by CobaltQueueEmpty(), and CobaltShouldDrop().
|
privatevirtual |
This function actually extracts a packet from the queue disc.
Implements ns3::QueueDisc.
Definition at line 354 of file cobalt-queue-disc.cc.
References CobaltQueueEmpty(), CobaltShouldDrop(), ns3::CoDelGetTime(), ns3::QueueDisc::DropAfterDequeue(), ns3::QueueDisc::GetInternalQueue(), ns3::QueueDisc::GetNBytes(), ns3::QueueDisc::GetNPackets(), m_dropping, NS_LOG_FUNCTION, NS_LOG_LOGIC, and TARGET_EXCEEDED_DROP.
|
protectedvirtual |
Dispose of the object.
Reimplemented from ns3::QueueDisc.
Definition at line 270 of file cobalt-queue-disc.cc.
References ns3::QueueDisc::DoDispose(), m_uv, and NS_LOG_FUNCTION.
|
privatevirtual |
This function actually enqueues a packet into the queue disc.
item | item to enqueue |
Implements ns3::QueueDisc.
Definition at line 328 of file cobalt-queue-disc.cc.
References CobaltQueueFull(), ns3::CoDelGetTime(), ns3::QueueDisc::DropBeforeEnqueue(), ns3::QueueDisc::GetCurrentSize(), ns3::QueueDisc::GetInternalQueue(), ns3::QueueDisc::GetMaxSize(), ns3::QueueDisc::GetNBytes(), ns3::QueueDisc::GetNPackets(), NS_LOG_FUNCTION, NS_LOG_LOGIC, and OVERLIMIT_DROP.
|
privatevirtual |
Return a copy of the next packet the queue disc will extract.
The implementation of this method is based on the qdisc_peek_dequeued function of the Linux kernel, which dequeues a packet and retains it in the queue disc as a requeued packet. The packet is not traced as requeued, nor is the total count of requeued packets increased. The packet is still considered to be part of the queue disc and the dequeue trace is fired when Dequeue is called and the packet is actually extracted from the queue disc.
This approach is especially recommended for queue discs for which it is not obvious what is the next packet that will be dequeued (e.g., queue discs having multiple internal queues or child queue discs or queue discs that drop packets after dequeue). Subclasses can however provide their own implementation of this method that overrides the default one.
Reimplemented from ns3::QueueDisc.
Definition at line 278 of file cobalt-queue-disc.cc.
References ns3::QueueDisc::GetInternalQueue(), ns3::QueueDisc::GetNBytes(), ns3::QueueDisc::GetNPackets(), NS_LOG_FUNCTION, and NS_LOG_LOGIC.
int64_t ns3::CobaltQueueDisc::GetDropNext | ( | void | ) | const |
Get the time for next packet drop while in the dropping state.
Definition at line 215 of file cobalt-queue-disc.cc.
References m_dropNext.
Time ns3::CobaltQueueDisc::GetInterval | ( | void | ) | const |
Get the interval.
Definition at line 209 of file cobalt-queue-disc.cc.
References m_interval.
double ns3::CobaltQueueDisc::GetPdrop | ( | ) | const |
Get the drop probability of Blue.
Definition at line 152 of file cobalt-queue-disc.cc.
References m_pDrop.
Time ns3::CobaltQueueDisc::GetTarget | ( | void | ) | const |
Get the target queue delay.
Definition at line 203 of file cobalt-queue-disc.cc.
References m_target.
|
static |
Get the type ID.
Definition at line 45 of file cobalt-queue-disc.cc.
References ns3::BYTES, DEFAULT_COBALT_LIMIT, ns3::QueueDisc::GetMaxSize(), m_blueThreshold, m_ceThreshold, m_count, m_decrement, m_dropNext, m_dropping, m_increment, m_interval, m_pDrop, m_target, m_useEcn, m_useL4s, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeDoubleAccessor(), ns3::MakeQueueSizeAccessor(), ns3::MakeQueueSizeChecker(), ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::MakeTraceSourceAccessor(), ns3::Time::Max(), ns3::MilliSeconds(), ns3::QueueDisc::SetMaxSize(), and ns3::TypeId::SetParent().
|
privatevirtual |
Initialize the queue parameters.
Implements ns3::QueueDisc.
Definition at line 171 of file cobalt-queue-disc.cc.
References CacheInit(), m_count, m_dropNext, m_dropping, m_lastUpdateTimeBlue, m_recInvSqrt, m_recInvSqrtCache, and NS_LOG_FUNCTION.
Referenced by CobaltQueueDisc().
|
private |
Updates the inverse square root.
Definition at line 250 of file cobalt-queue-disc.cc.
References m_count, m_recInvSqrt, m_recInvSqrtCache, NewtonStep(), and REC_INV_SQRT_CACHE.
Referenced by CobaltQueueEmpty(), and CobaltShouldDrop().
|
private |
Calculate the reciprocal square root of m_count by using Newton's method http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Iterative_methods_for_reciprocal_square_roots m_recInvSqrt (new) = (m_recInvSqrt (old) / 2) * (3 - m_count * m_recInvSqrt^2)
Definition at line 221 of file cobalt-queue-disc.cc.
References m_count, m_recInvSqrt, and NS_LOG_FUNCTION.
Referenced by CacheInit(), and InvSqrt().
int64_t ns3::CobaltQueueDisc::Time2CoDel | ( | Time | t | ) | const |
Return the unsigned 32-bit integer representation of the input Time object.
Units are microseconds
Definition at line 197 of file cobalt-queue-disc.cc.
References ns3::Time::GetNanoSeconds().
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), and ControlLaw().
|
staticconstexpr |
Sojourn time above CE threshold.
Definition at line 106 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop().
|
staticconstexpr |
forced marks by Codel on ECN-enabled
Definition at line 105 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop().
|
private |
Threshold to enable blue enhancement.
Definition at line 241 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop(), and GetTypeId().
|
private |
Threshold above which to CE mark.
Definition at line 239 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop(), and GetTypeId().
|
private |
Number of packets dropped since entering drop state.
Definition at line 229 of file cobalt-queue-disc.h.
Referenced by CacheInit(), CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), GetTypeId(), InitializeParams(), InvSqrt(), and NewtonStep().
|
private |
decrement value for marking probability
Definition at line 250 of file cobalt-queue-disc.h.
Referenced by CobaltQueueEmpty(), and GetTypeId().
|
private |
Time to drop next packet.
Definition at line 230 of file cobalt-queue-disc.h.
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), GetDropNext(), GetTypeId(), and InitializeParams().
|
private |
True if in dropping state.
Definition at line 231 of file cobalt-queue-disc.h.
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), DoDequeue(), GetTypeId(), and InitializeParams().
|
private |
increment value for marking probability
Definition at line 249 of file cobalt-queue-disc.h.
Referenced by CobaltQueueFull(), CobaltShouldDrop(), and GetTypeId().
|
private |
sliding minimum time window width
Definition at line 236 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop(), ControlLaw(), GetInterval(), and GetTypeId().
|
private |
Blue's last update time for drop probability.
Definition at line 246 of file cobalt-queue-disc.h.
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), and InitializeParams().
|
private |
Drop Probability.
Definition at line 251 of file cobalt-queue-disc.h.
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), GetPdrop(), and GetTypeId().
|
private |
Reciprocal inverse square root.
Definition at line 232 of file cobalt-queue-disc.h.
Referenced by CacheInit(), ControlLaw(), InitializeParams(), InvSqrt(), and NewtonStep().
|
private |
Cache to maintain some initial values of InvSqrt.
Definition at line 233 of file cobalt-queue-disc.h.
Referenced by CacheInit(), InitializeParams(), and InvSqrt().
|
private |
Cobalt statistics.
Definition at line 225 of file cobalt-queue-disc.h.
|
private |
target queue delay
Definition at line 237 of file cobalt-queue-disc.h.
Referenced by CobaltQueueEmpty(), CobaltQueueFull(), CobaltShouldDrop(), GetTarget(), and GetTypeId().
|
private |
True if ECN is used (packets are marked instead of being dropped)
Definition at line 238 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop(), and GetTypeId().
|
private |
True if L4S is used (ECT1 packets are marked at CE threshold)
Definition at line 240 of file cobalt-queue-disc.h.
Referenced by CobaltShouldDrop(), and GetTypeId().
|
private |
Rng stream.
Definition at line 245 of file cobalt-queue-disc.h.
Referenced by CobaltQueueDisc(), AssignStreams(), CobaltShouldDrop(), and DoDispose().
|
staticconstexpr |
Overlimit dropped packet.
Definition at line 104 of file cobalt-queue-disc.h.
Referenced by DoEnqueue().
|
staticconstexpr |
Sojourn time above target.
Definition at line 103 of file cobalt-queue-disc.h.
Referenced by DoDequeue().