23 #include "ns3/object.h" 24 #include "ns3/traced-value.h" 25 #include "ns3/traced-callback.h" 26 #include "ns3/net-device.h" 27 #include "ns3/queue-item.h" 28 #include "ns3/queue-size.h" 38 template <
typename Item>
class Queue;
39 class NetDeviceQueueInterface;
268 void Print (std::ostream &os)
const;
357 virtual void SetQuota (
const uint32_t quota);
363 virtual uint32_t
GetQuota (
void)
const;
uint32_t nTotalDequeuedPackets
Total dequeued packets.
Structure that keeps the queue disc statistics.
Ptr< const QueueDiscItem > Peek(void)
Get a copy of the next packet the queue discipline will extract.
Ptr< NetDevice > GetNetDevice(void) const
Get the NetDevice on which this queue discipline is installed.
TracedCallback< Time > m_sojourn
Sojourn time of the latest dequeued packet.
uint32_t GetNPackets(void) const
Get the number of packets stored by the queue disc.
uint32_t nTotalMarkedPackets
Total marked packets.
Ptr< QueueDiscItem > m_requeued
The last packet that failed to be transmitted.
std::map< std::string, uint32_t > nDroppedPacketsAfterDequeue
Packets dropped after dequeue, for each reason.
Class for representing queue sizes.
uint32_t nTotalDroppedPackets
Total dropped packets.
void AddQueueDiscClass(Ptr< QueueDiscClass > qdClass)
Add a queue disc class to the tail of the list of classes.
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...
bool Enqueue(Ptr< QueueDiscItem > item)
Pass a packet to store to the queue discipline.
virtual ~QueueDiscClass()
QueueSizeUnit
Enumeration of the operating modes of queues.
uint32_t nTotalRequeuedPackets
Total requeued packets.
bool Mark(Ptr< QueueDiscItem > item, const char *reason)
Marks the given packet and, if successful, updates the counters associated with the given reason...
QueueSize GetCurrentSize(void)
Get the current size of the queue disc in bytes, if operating in bytes mode, or packets, otherwise.
Ptr< QueueDisc > m_queueDisc
Queue disc attached to this class.
bool m_prohibitChangeMode
True if changing mode is prohibited.
Forward calls to a chain of Callback.
virtual void DoDispose(void)
Dispose of the object.
void SetQueueDisc(Ptr< QueueDisc > qd)
Set the queue disc attached to this class.
Used by queue discs with unlimited size.
ChildQueueDiscDropFunctor m_childQueueDiscDbeFunctor
Function object called when a child queue disc dropped a packet before enqueue.
uint32_t nTotalSentPackets
Total sent packets – this value is not kept up to date, call GetStats first.
virtual Ptr< QueueDiscItem > DoDequeue(void)=0
This function actually extracts a packet from the queue disc.
TracedCallback< Ptr< const QueueDiscItem >, const char *> m_traceMark
Traced callback: fired when a packet is marked.
uint32_t GetNBytes(void) const
Get the amount of bytes stored by the queue disc.
QueueSize m_maxSize
max queue size
QueueDisc is an abstract base class providing the interface and implementing the operations common to...
std::function< void(Ptr< const QueueDiscItem >, const char *)> ChildQueueDiscDropFunctor
Type for the function objects notifying that a packet has been dropped by a child queue disc...
TracedCallback< Ptr< const QueueDiscItem >, const char *> m_traceDropAfterDequeue
Traced callback: fired when a packet is dropped after dequeue.
Used by queue discs with single child queue disc.
uint64_t GetNMarkedBytes(std::string reason) const
Get the amount of bytes marked for the given reason.
uint32_t nTotalMarkedBytes
Total marked bytes.
uint32_t nTotalDroppedPacketsBeforeEnqueue
Total packets dropped before enqueue.
virtual uint32_t GetQuota(void) const
Get the maximum number of dequeue operations following a packet enqueue.
bool m_peeked
A packet was dequeued because Peek was called.
static constexpr const char * CHILD_QUEUE_DISC_DROP
Packet dropped by a child queue disc.
virtual Ptr< const QueueDiscItem > DoPeek(void)
Return a copy of the next packet the queue disc will extract.
void AddInternalQueue(Ptr< InternalQueue > queue)
Add an internal queue to the tail of the list of queues.
uint64_t nTotalEnqueuedBytes
Total enqueued bytes.
void PacketEnqueued(Ptr< const QueueDiscItem > item)
Perform the actions required when the queue disc is notified of a packet enqueue. ...
std::string m_childQueueDiscDropMsg
Reason why a packet was dropped by a child queue disc.
void DoInitialize(void)
Check whether the configuration is correct and initialize parameters.
Ptr< NetDeviceQueueInterface > m_devQueueIface
NetDevice queue interface.
InternalQueueDropFunctor m_internalQueueDbeFunctor
Function object called when an internal queue dropped a packet before enqueue.
Ptr< InternalQueue > GetInternalQueue(std::size_t i) const
Get the i-th internal queue.
TracedCallback< Ptr< const QueueDiscItem > > m_traceDequeue
Traced callback: fired when a packet is dequeued.
uint32_t GetNDroppedPackets(std::string reason) const
Get the number of packets dropped for the given reason.
Ptr< PacketFilter > GetPacketFilter(std::size_t i) const
Get the i-th packet filter.
QueueDisc & operator=(const QueueDisc &o)
Assignment operator.
uint64_t nTotalSentBytes
Total sent bytes – this value is not kept up to date, call GetStats first.
QueueDisc(QueueDiscSizePolicy policy=QueueDiscSizePolicy::SINGLE_INTERNAL_QUEUE)
Constructor.
void Run(void)
Modelled after the Linux function __qdisc_run (net/sched/sch_generic.c) Dequeues multiple packets...
virtual bool DoEnqueue(Ptr< QueueDiscItem > item)=0
This function actually enqueues a packet into the queue disc.
const Stats & GetStats(void)
Retrieve all the collected statistics.
std::map< std::string, uint64_t > nDroppedBytesAfterDequeue
Bytes dropped after dequeue, for each reason.
bool Transmit(Ptr< QueueDiscItem > item)
Modelled after the Linux function sch_direct_xmit (net/sched/sch_generic.c) Sends a packet to the dev...
uint64_t nTotalDroppedBytesBeforeEnqueue
Total bytes dropped before enqueue.
int32_t Classify(Ptr< QueueDiscItem > item)
Classify a packet by calling the packet filters, one at a time, until either a filter able to classif...
virtual void DoDispose(void)
Dispose of the object.
Ptr< QueueDiscClass > GetQueueDiscClass(std::size_t i) const
Get the i-th queue disc class.
std::map< std::string, uint32_t > nMarkedPackets
Marked packets, for each reason.
InternalQueueDropFunctor m_internalQueueDadFunctor
Function object called when an internal queue dropped a packet after dequeue.
QueueDiscClass is the base class for classes that are included in a queue disc.
static const uint32_t DEFAULT_QUOTA
Default quota (as in /proc/sys/net/core/dev_weight)
Ptr< QueueDiscItem > Dequeue(void)
Extract from the queue disc the packet that has been dequeued by calling Peek, if any...
uint64_t nTotalRequeuedBytes
Total requeued bytes.
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
uint32_t nTotalDroppedPacketsAfterDequeue
Total packets dropped after dequeue.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::size_t GetNQueueDiscClasses(void) const
Get the number of queue disc classes.
uint32_t nTotalReceivedPackets
Total received packets.
TracedCallback< Ptr< const QueueDiscItem >, const char *> m_traceDropBeforeEnqueue
Traced callback: fired when a packet is dropped before enqueue.
uint32_t m_quota
Maximum number of packets dequeued in a qdisc run.
uint32_t GetNMarkedPackets(std::string reason) const
Get the number of packets marked for the given reason.
std::vector< Ptr< InternalQueue > > m_queues
Internal queues.
bool RunBegin(void)
Modelled after the Linux function qdisc_run_begin (include/net/sch_generic.h).
TracedCallback< Ptr< const QueueDiscItem > > m_traceEnqueue
Traced callback: fired when a packet is enqueued.
bool m_running
The queue disc is performing multiple dequeue operations.
uint64_t nTotalReceivedBytes
Total received bytes.
uint64_t GetNDroppedBytes(std::string reason) const
Get the amount of bytes dropped for the given reason.
virtual bool CheckConfig(void)=0
Check whether the current configuration is correct.
TracedValue< uint32_t > m_nBytes
Number of bytes in the queue.
QueueSize GetMaxSize(void) const
Get the maximum size of the queue disc.
void Requeue(Ptr< QueueDiscItem > item)
Modelled after the Linux function dev_requeue_skb (net/sched/sch_generic.c) Requeues a packet whose t...
QueueDiscSizePolicy
Enumeration of the available policies to handle the queue disc size.
TracedValue< uint32_t > m_nPackets
Number of packets in the queue.
void PacketDequeued(Ptr< const QueueDiscItem > item)
Perform the actions required when the queue disc is notified of a packet dequeue. ...
std::vector< Ptr< PacketFilter > > m_filters
Packet filters.
Used by queue discs with single internal queue.
void Print(std::ostream &os) const
Print the statistics.
uint64_t nTotalDequeuedBytes
Total dequeued bytes.
std::map< std::string, uint64_t > nDroppedBytesBeforeEnqueue
Bytes dropped before enqueue, for each reason.
Used by queue discs with multiple internal queues/child queue discs.
uint64_t nTotalDroppedBytesAfterDequeue
Total bytes dropped after dequeue.
Introspection did not find any typical Config paths.
QueueDiscSizePolicy m_sizePolicy
The queue disc size policy.
Queue< QueueDiscItem > InternalQueue
Internal queues store QueueDiscItem objects.
Ptr< NetDevice > m_device
The NetDevice on which this queue discipline is installed.
std::size_t GetNPacketFilters(void) const
Get the number of packet filters.
virtual void SetQuota(const uint32_t quota)
Set the maximum number of dequeue operations following a packet enqueue.
ChildQueueDiscDropFunctor m_childQueueDiscDadFunctor
Function object called when a child queue disc dropped a packet after dequeue.
uint32_t nTotalEnqueuedPackets
Total enqueued packets.
void AddPacketFilter(Ptr< PacketFilter > filter)
Add a packet filter to the tail of the list of filters used to classify packets.
std::function< void(Ptr< const QueueDiscItem >)> InternalQueueDropFunctor
Type for the function objects notifying that a packet has been dropped by an internal queue...
bool SetMaxSize(QueueSize size)
Set the maximum size of the queue disc.
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...
Stats m_stats
The collected statistics.
uint64_t nTotalDroppedBytes
Total dropped bytes.
std::map< std::string, uint64_t > nMarkedBytes
Marked bytes, for each reason.
TracedCallback< Ptr< const QueueDiscItem > > m_traceDrop
Traced callback: fired when a packet is dropped.
WakeMode
Used to determine whether the queue disc itself or its children must be activated when a netdevice wa...
virtual void InitializeParams(void)=0
Initialize parameters (if any) before the first packet is enqueued.
static TypeId GetTypeId(void)
Get the type ID.
Ptr< QueueDisc > GetQueueDisc(void) const
Get the queue disc attached to this class.
A base class which provides memory management and object aggregation.
virtual WakeMode GetWakeMode(void) const
When setting up the wake callbacks on the netdevice queues, it is necessary to determine which queue ...
bool Restart(void)
Modelled after the Linux function qdisc_restart (net/sched/sch_generic.c) Dequeue a packet (by callin...
a unique identifier for an interface.
Ptr< QueueDiscItem > DequeuePacket(void)
Modelled after the Linux function dequeue_skb (net/sched/sch_generic.c)
static TypeId GetTypeId(void)
Get the type ID.
TracedCallback< Ptr< const QueueDiscItem > > m_traceRequeue
Traced callback: fired when a packet is requeued.
void SetNetDevice(Ptr< NetDevice > device)
Set the NetDevice on which this queue discipline is installed.
static constexpr const char * INTERNAL_QUEUE_DROP
Packet dropped by an internal queue.
void RunEnd(void)
Modelled after the Linux function qdisc_run_end (include/net/sch_generic.h).
std::vector< Ptr< QueueDiscClass > > m_classes
Classes.
std::size_t GetNInternalQueues(void) const
Get the number of internal queues.
std::map< std::string, uint32_t > nDroppedPacketsBeforeEnqueue
Packets dropped before enqueue, for each reason.