EtherQosQueue

Package: inet.linklayer.ethernet

EtherQosQueue

compound module

Queue module that gives the PAUSE frames a higher priority, and can be parametrized with an IPacketQueue for serving the data frames.

IPacketClassifier IPacketQueue IPacketQueue IPacketScheduler

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

Source code

//
// Queue module that gives the PAUSE frames a higher priority,
// and can be parametrized with an ~IPacketQueue for serving the
// data frames.
//
//# TODO: rename to CompoundEtherQueue? or CompoundEtherQosQueue?
module EtherQosQueue extends CompoundPacketQueue like IPacketQueue
{
    parameters:
        @display("i=block/queue");
    submodules:
        classifier: <default("EtherFrameClassifier")> like IPacketClassifier {
            parameters:
                @display("p=100,200");
        }
        pauseQueue: <default("DropTailQueue")> like IPacketQueue {
            parameters:
                @display("p=250,100");
        }
        dataQueue: <default("DropTailQueue")> like IPacketQueue {
            parameters:
                @display("p=250,300;q=l2queue");
        }
        scheduler: <default("PriorityScheduler")> like IPacketScheduler {
            parameters:
                @display("p=400,200");
        }
    connections:
        in --> classifier.in;
        classifier.out++ --> pauseQueue.in;
        classifier.out++ --> dataQueue.in;
        pauseQueue.out --> scheduler.in++;
        dataQueue.out --> scheduler.in++;
        scheduler.out --> out;
}

File: src/inet/linklayer/ethernet/EtherQosQueue.ned