PacketShaper

Package: inet.queueing.shaper

PacketShaper

compound module

Combines a packet queue and a packet gate into a packet shaper module. The queue stores the packets sorted according to its ordering and the gate decides when the first packet can be pulled from the queue.

queue : like IPacketQueue

PacketQueue: Implements a configurable packet queue, which is suitable for use in MAC protocols, traffic...

IPacketQueue: Interface for packet queue modules.

Source:
queue: <default("PacketQueue")> like IPacketQueue {
    @display("p=100,150");
} gate : like IPacketGate

IPacketGate: Interface for a packet gate.

Source:
gate: <default("")> like IPacketGate {
    @display("p=300,150");
}

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.

Known subclasses

Name Type Description
AsynchronousShaper compound module

Implements an asynchronous shaper. The queue sorts packets based on the transmission eligibility time (~EligibilityTimeTag) attached to each packet. The gate prevents packets from being transmitted earlier than the attached transmission eligibility time.

CreditBasedShaper compound module

Implements a credit-based shaper using a gate submodule to manage the number of credits.

TimeAwareShaper compound module

Implements a time-aware shaper using a gate submodule that opens and closes according to a time-based schedule.

Properties

Name Value Description
display i=block/bucket

Gates

Name Direction Size Description
in input
out output

Source code

//
// Combines a packet queue and a packet gate into a packet shaper
// module. The queue stores the packets sorted according to its ordering and
// the gate decides when the first packet can be pulled from the queue.
//
module PacketShaper like IPacketShaper
{
    parameters:
        @display("i=block/bucket");
    gates:
        input in;
        output out;
    submodules:
        queue: <default("PacketQueue")> like IPacketQueue {
            @display("p=100,150");
        }
        gate: <default("")> like IPacketGate {
            @display("p=300,150");
        }
    connections:
        in --> queue.in;
        queue.out --> gate.in;
        gate.out --> out;
}
File: src/inet/queueing/shaper/PacketShaper.ned