Package: inet.queueing.queue
DropTailQueue
simple moduleThis module is a limited packet queue which drops packets at the tail of the queue.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Used in compound modules
Name | Type | Description |
---|---|---|
DiffservQueue | compound module |
This is an example queue, that can be used in interfaces of DS core and edge nodes to support the AFxy (RFC 2597) and EF (RFC 3246) PHBs. |
Known subclasses
Name | Type | Description |
---|---|---|
EthernetQueue | compound module |
Queue module that gives the PAUSE frames a higher priority. |
PendingQueue | simple module | (no description) |
Extends
Name | Type | Description |
---|---|---|
PacketQueue | simple module |
This module implements a widely configurable packet queue, which is suitable among others, to be used in MAC protocols, traffic conditioning, and quality of services. This module can be used on its own, but it's also often supplemented by additional queueing components such as servers, classifiers, schedulers, multiplexers, etc. This kind of composition allows to form a larger module which can act as a packet queue with more complex behavior. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d" |
determines the text that is written on top of the submodule |
packetCapacity | int | 100 |
maximum number of packets in the queue, no limit by default |
dataCapacity | int | -1b |
maximum total length of packets in the queue, no limit by default |
dropperClass | string | "inet::queueing::PacketAtCollectionEndDropper" |
determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class |
comparatorClass | string | "" |
determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class |
bufferModule | string | "" |
relative module path to the IPacketBuffer module used by this queue, implicit buffer by default |
Properties
Name | Value | Description |
---|---|---|
display | i=block/queue | |
class | PacketQueue | |
defaultStatistic | queueLength:vector |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in | input | ||
out | output |
Signals
Name | Type | Unit |
---|---|---|
packetRemoved | inet::Packet | |
packetPushStarted | inet::Packet | |
packetDropped | inet::Packet | |
packetPushEnded | inet::Packet? | |
packetPulled | inet::Packet |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
queueBitLength | queue bit length | warmup(atomic(constant0(packetPushEnded) + sum(packetLength(packetPushStarted)) - sum(packetLength(packetPulled)) - sum(packetLength(packetRemoved)) - sum(packetLength(packetDropped)))) | last, max, timeavg, vector | b | sample-hold |
queueLength | queue length | warmup(atomic(constant0(packetPushEnded) + count(packetPushStarted) - count(packetPulled) - count(packetRemoved) - count(packetDropped))) | last, max, timeavg, vector | pk | sample-hold |
droppedPacketsQueueOverflow | dropped packets: queue overflow | packetDropReasonIsQueueOverflow(packetDropped) | count | pk | none |
queueingTime | queueing times | queueingTime(packetPulled) | histogram, vector | s | none |
incomingDataRate | incoming datarate | throughput(packetPushStarted) | vector | bps | linear |
flowQueueingTime | flow queueing times | queueingTime(demuxFlow(packetPulled)) | histogram, vector | s | none |
incomingPacketLengths | incoming packet lengths | packetLength(packetPushStarted) | sum, histogram, vector | b | none |
flowIncomingDataRate | flow specific incoming data rate | throughput(flowPacketLength(demuxFlow(packetPushStarted))) | vector | bps | linear |
outgoingDataRate | outgoing datarate | throughput(packetPulled) | vector | bps | linear |
outgoingPacketLengths | outgoing packet lengths | packetLength(packetPulled) | sum, histogram, vector | b | none |
droppedPacketLengthsQueueOverflow | dropped packet lengths: queue overflow | packetLength(packetDropReasonIsQueueOverflow(packetDropped)) | sum, vector | b | none |
flowOutgoingDataRate | flow specific outgoing data rate | throughput(flowPacketLength(demuxFlow(packetPulled))) | vector | bps | linear |
incomingPackets | incoming packets | packetPushStarted | count | pk | |
outgoingPackets | outgoing packets | packetPulled | count | pk |
Direct method calls (observed)
call to | function | info |
---|---|---|
inet.examples.diffserv.onedomain.DSQueue1 | inet::queueing::CompoundPacketQueueBase::receiveSignal | packetDropped |
AckingMac | inet::AckingMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
BMac | inet::BMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
CsmaCaMac | inet::CsmaCaMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
EthernetCsmaMac | inet::EthernetCsmaMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
EthernetMac | inet::EthernetMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
EthernetFrameClassifier | inet::EthernetFrameClassifier::handleCanPushPacketChanged | handleCanPushPacketChanged |
EthernetQosQueue | inet::queueing::CompoundPacketQueueBase::receiveSignal | packetDropped |
EthernetFcsChecker | inet::EthernetFcsChecker::handleCanPullPacketChanged | handleCanPullPacketChanged |
Ieee802154Mac | inet::Ieee802154Mac::handleCanPullPacketChanged | handleCanPullPacketChanged |
Ieee802154NarrowbandMac | inet::Ieee802154Mac::handleCanPullPacketChanged | handleCanPullPacketChanged |
LMac | inet::LMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
Ppp | inet::Ppp::handleCanPullPacketChanged | handleCanPullPacketChanged |
XMac | inet::XMac::handleCanPullPacketChanged | handleCanPullPacketChanged |
BehaviorAggregateClassifier | inet::BehaviorAggregateClassifier::handleCanPushPacketChanged | handleCanPushPacketChanged |
PacketStreamer | inet::PacketStreamer::handleCanPullPacketChanged | handleCanPullPacketChanged |
ContentBasedClassifier | inet::queueing::ContentBasedClassifier::handleCanPushPacketChanged | handleCanPushPacketChanged |
PacketClassifier | inet::queueing::PacketClassifier::handleCanPushPacketChanged | handleCanPushPacketChanged |
PacketMultiplexer | inet::queueing::PacketMultiplexer::handleCanPushPacketChanged | handleCanPushPacketChanged |
PeriodicGate | inet::queueing::PeriodicGate::handleCanPullPacketChanged | handleCanPullPacketChanged |
DropTailQueue | inet::queueing::PacketQueue::pushPacket | pushPacket |
PriorityQueue | inet::queueing::CompoundPacketQueueBase::receiveSignal | packetDropped |
PriorityScheduler | inet::queueing::PriorityScheduler::handleCanPullPacketChanged | handleCanPullPacketChanged |
WrrScheduler | inet::queueing::WrrScheduler::handleCanPullPacketChanged | handleCanPullPacketChanged |
InstantServer | inet::queueing::InstantServer::handleCanPullPacketChanged | handleCanPullPacketChanged |
PacketServer | inet::queueing::PacketServer::handleCanPullPacketChanged | handleCanPullPacketChanged |
TokenBasedServer | inet::queueing::TokenBasedServer::handleCanPullPacketChanged | handleCanPullPacketChanged |
ActivePacketSink | inet::queueing::ActivePacketSink::handleCanPullPacketChanged | handleCanPullPacketChanged |
ActivePacketSource | inet::queueing::ActivePacketSource::handleCanPushPacketChanged | handleCanPushPacketChanged |
Called methods (observed)
function | info | call from |
---|---|---|
inet::queueing::PacketQueue::pullPacket | pullPacket | AckingMac, BMac, CsmaCaMac, EthernetCsmaMac, EthernetMac, EthernetFcsChecker, Ieee802154Mac, Ieee802154NarrowbandMac, LMac, Ppp, XMac, PacketStreamer, PeriodicGate, PriorityScheduler, WrrScheduler, InstantServer, PacketServer, TokenBasedServer, ActivePacketSink |
inet::queueing::PacketQueue::pushPacket | pushPacket | LayeredEthernetInterface, EthernetFrameClassifier, BehaviorAggregateClassifier, DiffservQueue, ContentBasedClassifier, PacketClassifier, PacketMultiplexer, DropTailQueue, ActivePacketSource |
Incoming messages (observed)
Pulled out messages (observed)
Pushed in messages (observed)
Region Tagging operations (observed)
tagType | tagAction |
---|---|
FlowTag | mapAllTags |
PacketEventTag | mapAllTagsForUpdate |
QueueingTimeTag | mapAllTagsForUpdate |
Source code
// // This module is a limited packet queue which drops packets at the tail of the queue. // simple DropTailQueue extends PacketQueue { parameters: packetCapacity = default(100); dropperClass = default("inet::queueing::PacketAtCollectionEndDropper"); }File: src/inet/queueing/queue/DropTailQueue.ned