RedDropperQueue

Package: inet.queueing.queue

RedDropperQueue

compound module

Combines a packet queue with random early detection (RED) dropper.

RedDropper IPacketQueue

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Extends

Name Type Description
CompoundPacketQueue compound module

This compound module serves as a base module for complex packet queues formed by combining several queueing components.

Parameters

Name Type Default value Description
displayStringTextFormat string "contains %p pk (%l) pushed %u created %c\n popped %o removed %r dropped %d"

determines display string text above 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

Properties

Name Value Description
display i=block/queue
class CompoundPacketQueue

Gates

Name Direction Size Description
in input
out output

Signals

Name Type Unit
packetRemoved inet::Packet
packetPushed inet::Packet
packetDropped inet::Packet
packetPopped inet::Packet

Statistics

Name Title Source Record Unit Interpolation Mode
packetRemoved packets removed localSignal(packetRemoved) count, sum(packetBytes), vector(packetBytes) none
queueLength queue length count(localSignal(packetPushed)) - count(localSignal(packetPopped)) - count(localSignal(packetRemoved)) - count(packetDropped) max, timeavg, vector sample-hold
queueingTime queueing times queueingTime(packetPopped) histogram, vector s none
packetPushed packets pushed localSignal(packetPushed) count, sum(packetBytes), vector(packetBytes) none
packetDropQueueOverflow packets dropped: queue overflow packetDropReasonIsQueueOverflow(packetDropped) count, sum(packetBytes), vector(packetBytes) none
packetPopped packets popped localSignal(packetPopped) count, sum(packetBytes), vector(packetBytes) none

Unassigned submodule parameters

Name Type Default value Description
red.displayStringTextFormat string "dropped %d/%p pk (%k/%l)"

determines the text that is written on top of the submodule

red.collectionModule string ""
red.wq double 0.002

weight of the current queue length in the averaged queue length

red.minth double 5

minimum threshold for avg queue length

red.maxth double 50

maximum threshold for avg queue length (=buffer capacity)

red.maxp double 0.02

maximum value for pbs

red.pkrate double 150

average packet rate for calculations when queue is empty

red.useEcn bool false

if enabled, packets are marked with ECN if applicable

red.packetCapacity int int(maxth)

packets are dropped if queue length is greater

Source code

//
// Combines a packet queue with random early detection (RED) dropper.
//
module RedDropperQueue extends CompoundPacketQueue
{
    submodules:
        red: RedDropper {
            @display("p=100,100");
        }
        fifo: <default("PacketQueue")> like IPacketQueue {
            @display("p=100,200");
        }
    connections:
        in --> { @display("m=n"); } --> red.in;
        red.out --> fifo.in;
        fifo.out --> { @display("m=s"); } --> out;
}
File: src/inet/queueing/queue/RedMarkerQueue.ned