IPacketScheduler

Package: inet.queueing.contract

module interface IPacketScheduler

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

Inheritance diagram

Implemented by

Name

Type

Description

ContentBasedScheduler

simple module

Connects one packet collector to multiple packet providers. It can be pulled for packets by the connected packet collector. When this happens, the scheduler pulls 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

Schedules packets based on the attached labels in a LabelsTag.

MarkovScheduler

simple 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

Connects one packet collector to multiple packet providers. When the packet collector pulls a pull packet from it, the scheduler pulls 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 scheduler pulls packets from the first non-empty among its connected packet providers.

WrrScheduler

simple module

Implements weighted round-robin scheduling.

Extends

Name

Type

Description

IPassivePacketSource

module interface

Interface for 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 pull packets from the passive packet source over time.

Properties

Name

Value

Description

display

i=block/join

Source code

//
// Interface for packet scheduler modules. A packet
// scheduler is a passive module which has multiple active inputs and one
// passive output. Packets pulled 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(pull);
}

File: src/inet/queueing/contract/IPacketScheduler.ned