Package: inet.linklayer.ethernet.common
EthernetQueue
compound moduleQueue module that gives the PAUSE frames a higher priority.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
| Name | Type | Description |
|---|---|---|
| DropTailQueue | simple module |
A limited packet queue that drops packets at the tail of the queue. |
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, supports displaying pars, watches, and module-specific information |
| 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 | "inet::EthernetFrameTypeComparator" |
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 |
|---|---|---|
| class | PacketQueue | |
| display | i=block/queue | |
| defaultStatistic | queueLength:vector |
Gates
| Name | Direction | Size | Description |
|---|---|---|---|
| in | input | ||
| out | output |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| packetRemoved | inet::Packet | ||
| packetPushStarted | inet::Packet | ||
| packetDropped | inet::Packet | ||
| packetPushEnded | inet::Packet? | ||
| packetPulled | inet::Packet |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| 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 |
the statistical value is the total bit length of all packets in the queue |
| queueLength | queue length | warmup(atomic(constant0(packetPushEnded) + count(packetPushStarted) - count(packetPulled) - count(packetRemoved) - count(packetDropped))) | last, max, timeavg, vector | pk | sample-hold |
the statistical value is the number of packets in the queue |
| droppedPacketsQueueOverflow | dropped packets: queue overflow | packetDropReasonIsQueueOverflow(packetDropped) | count | pk | none |
the statistical value is the packet that is dropped due to queue overflow |
| queueingTime | queueing times | queueingTime(packetPulled) | histogram, vector | s | none |
the statistical value is the queueing time of packets |
| incomingDataRate | incoming datarate | throughput(packetPushStarted) | vector | bps | linear |
the statistical value is the data rate of the incoming packets |
| flowQueueingTime | flow queueing times | queueingTime(demuxFlow(packetPulled)) | histogram, vector | s | none |
the statistical value is the flow specific queueing time of packets |
| incomingPacketLengths | incoming packet lengths | packetLength(packetPushStarted) | sum, histogram, vector | b | none |
the statistical value is the length of the incoming packet |
| flowIncomingDataRate | flow specific incoming data rate | throughput(flowPacketLength(demuxFlow(packetPushStarted))) | vector | bps | linear |
the statistical value is the flow specific data rate of the incoming packets |
| outgoingDataRate | outgoing datarate | throughput(packetPulled) | vector | bps | linear |
the statistical value is the data rate of the outgoing packets |
| outgoingPacketLengths | outgoing packet lengths | packetLength(packetPulled) | sum, histogram, vector | b | none |
the statistical value is the length of the outgoing packet |
| droppedPacketLengthsQueueOverflow | dropped packet lengths: queue overflow | packetLength(packetDropReasonIsQueueOverflow(packetDropped)) | sum, vector | b | none |
the statistical value is the length of the packet that is dropped due to queue overflow |
| flowOutgoingDataRate | flow specific outgoing data rate | throughput(flowPacketLength(demuxFlow(packetPulled))) | vector | bps | linear |
the statistical value is the flow specific data rate of the outgoing packets |
| incomingPackets | incoming packets | packetPushStarted | count | pk |
the statistical value is the incoming packet |
|
| outgoingPackets | outgoing packets | packetPulled | count | pk |
the statistical value is the outgoing packet |
Source code
// // Queue module that gives the PAUSE frames a higher priority. // //# TODO rename to `EthernetQosQueue` or keep name as it is? module EthernetQueue extends DropTailQueue { parameters: comparatorClass = default("inet::EthernetFrameTypeComparator"); }File: src/inet/linklayer/ethernet/common/EthernetQosQueue.ned