IPacketScheduler

Package: inet.queueing.contract

IPacketScheduler

module interface

This module interface is implemented by packet scheduler modules. A packet scheduler is a passive module which has multiple active inputs and one passive output. Packets popped from the passive output are provided by one of the inputs without any delay and reordering.

IPacketScheduler

Inheritance diagram

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

Implemented by

Name Type Description
ContentBasedScheduler simple module

This module connects one packet collector to multiple packet providers. It can be popped for packets by the connected packet collector. When this happens, the scheduler pops a packet from one of its packet providers based on the configured packet filters. The first matching expression determines the index of the input gate.

LabelScheduler simple module

This module schedules packets based on the attached labels in a LabelsTag.

MarkovScheduler simple module

This module implements a packet scheduler using a Markov process that has as many states as input gates the scheduler has. The input gate for the next packet is determined by the current state of the Markov process.

PacketScheduler simple module

This module connects one packet collector to multiple packet providers. It can be popped for packets by the connected packet collector. When this happens, the scheduler pops a packet from one of its packet providers based on the configured scheduler function. The packet scheduler function takes a list of packet providers and returns an integer which in turn is used for determining the input gate.

PriorityScheduler simple module

This classifier pops packets from the first non-empty among its connected packet providers.

WrrScheduler simple module

This module implements weighted round-robin scheduling.

Used in compound modules

Name Type Description
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.

EtherQosRedQueue compound module

Queue module that gives the PAUSE frames a higher priority, and using Random Early Detection algorithm on data frames, and can be parametrized with an IPacketQueue for serving the data frames.

PriorityQueue compound module

This module implements a priority queue with multiple inner queues and an optional shared memory buffer.

TelnetClientApp compound module

This client application contains a configurable pre-composed telnet traffic source and traffic sink.

Extends

Name Type Description
IPassivePacketSource module interface

This module interface must be implemented by passive packet source modules. A passive packet source, also called a provider, has one output that must be connected to an active packet sink module. The connected active packet sink is expected to pop packets from the passive packet source over time.

Properties

Name Value Description
display i=block/join

Source code

//
// This module interface is implemented by packet scheduler modules. A packet
// scheduler is a passive module which has multiple active inputs and one
// passive output. Packets popped from the passive output are provided by
// one of the inputs without any delay and reordering.
//
moduleinterface IPacketScheduler extends IPassivePacketSource
{
    parameters:
        @display("i=block/join");
    gates:
        input in[] @labels(pop);
}
File: src/inet/queueing/contract/IPacketScheduler.ned