PendingQueue

Package: inet.linklayer.ieee80211.mac.queue

simple module PendingQueue

Implements a priority queue for IEEE 802.11 MAC frames. Uses a comparator to determine the order in which frames are processed. By default, prioritizes management frames over data frames, but can be configured to use different prioritization schemes such as management over multicast over unicast frames.

See also: CompoundPendingQueue

inet.linklayer.ieee80211.mac.queue.PendingQueuePendingQueuesimple

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

Dcaf

compound module

Implements the DCAF (Distributed Channel Access Function) for IEEE 802.11.

Edcaf

compound module

Implements EDCAF (Enhanced Distributed Channel Access Function) for IEEE 802.11. EDCAF represents one access category within EDCA.

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::ieee80211::MgmtOverDataComparator”

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

defaultStatistic

queueLength:vector

display

i=block/queue

Gates

Name

Direction

Size

Description

in

input

out

output

Signals

Name

Type

Unit

Description

packetDropped

inet::Packet

packetPulled

inet::Packet

packetPushEnded

inet::Packet?

packetPushStarted

inet::Packet

packetRemoved

inet::Packet

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

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

droppedPacketsQueueOverflow

dropped packets: queue overflow

packetDropReasonIsQueueOverflow(packetDropped)

count

pk

none

the statistical value is the packet that is dropped due to queue overflow

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

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

flowQueueingTime

flow queueing times

queueingTime(demuxFlow(packetPulled))

histogram,vector

s

none

the statistical value is the flow specific queueing time of packets

incomingDataRate

incoming datarate

throughput(packetPushStarted)

vector

bps

linear

the statistical value is the data rate of the incoming packets

incomingPacketLengths

incoming packet lengths

packetLength(packetPushStarted)

sum,histogram,vector

b

none

the statistical value is the length of the incoming packet

incomingPackets

incoming packets

packetPushStarted

count

pk

the statistical value is the incoming packet

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

outgoingPackets

outgoing packets

packetPulled

count

pk

the statistical value is the outgoing packet

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

queueingTime

queueing times

queueingTime(packetPulled)

histogram,vector

s

none

the statistical value is the queueing time of packets

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

Source code

//
// Implements a priority queue for IEEE 802.11 MAC frames. Uses a comparator to
// determine the order in which frames are processed. By default, prioritizes
// management frames over data frames, but can be configured to use different
// prioritization schemes such as management over multicast over unicast frames.
//
// @see CompoundPendingQueue
//
simple PendingQueue extends DropTailQueue
{
    parameters:
        comparatorClass = default("inet::ieee80211::MgmtOverDataComparator"); // MgmtOverDataComparator, MgmtOverMulticastOverUnicastComparator, ...
        packetCapacity = default(100);
}

File: src/inet/linklayer/ieee80211/mac/queue/PendingQueue.ned