Package: inet.protocolelement.shaper
EligibilityTimeQueue
simple moduleThis module is a packet queue that keeps the packets in ascending order based on the eligibility time in the attached EligibilityTimeTag of the packets.
This module is part of the asynchronous shaper infrastructure.
See also: EligibilityTimeGate, EligibilityTimeFilter, EligibilityTimeMeter, EligibilityTimeTag
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
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 | -1 |
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 | "" |
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 | "inet::PacketEligibilityTimeComparator" |
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 |
---|---|---|
Ieee8021qAsynchronousShaper | inet::EligibilityTimeGate::handleCanPullPacketChanged | handleCanPullPacketChanged |
PcpTrafficClassClassifier | inet::PcpTrafficClassClassifier::handleCanPushPacketChanged | handleCanPushPacketChanged |
EligibilityTimeFilter | inet::EligibilityTimeFilter::handleCanPushPacketChanged | handleCanPushPacketChanged |
EligibilityTimeGate | inet::EligibilityTimeGate::handleCanPullPacketChanged | handleCanPullPacketChanged |
Called methods (observed)
function | info | call from |
---|---|---|
inet::queueing::PacketQueue::pullPacket | pullPacket | Ieee8021qAsynchronousShaper, EligibilityTimeGate |
inet::queueing::PacketQueue::pushPacket | pushPacket | PcpTrafficClassClassifier, EligibilityTimeFilter |
Pulled out messages (observed)
Pushed in messages (observed)
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
EligibilityTimeTag | getTag |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
FlowTag | mapAllTags |
PacketEventTag | mapAllTagsForUpdate |
QueueingTimeTag | mapAllTagsForUpdate |
Source code
// // This module is a packet queue that keeps the packets in ascending order based // on the eligibility time in the attached ~EligibilityTimeTag of the packets. // // This module is part of the asynchronous shaper infrastructure. // // @see ~EligibilityTimeGate, ~EligibilityTimeFilter, ~EligibilityTimeMeter, ~EligibilityTimeTag // simple EligibilityTimeQueue extends PacketQueue { parameters: comparatorClass = default("inet::PacketEligibilityTimeComparator"); // specifies the class that compares the eligibility time in the ~EligibilityTimeTag of two packets }File: src/inet/protocolelement/shaper/EligibilityTimeQueue.ned