IPassivePacketSource

Package: inet.queueing.contract

module interface IPassivePacketSource

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.

See also: PassivePacketSource, PacketQueue, PacketScheduler, IActivePacketSink

Inheritance diagram

Implemented by

Name

Type

Description

EthernetQosQueue

compound module

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

EthernetQosRedQueue

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.

EthernetQueue

compound module

Queue module that gives the PAUSE frames a higher priority.

EthernetGatingQueue

compound module

(no description)

EthernetPriorityQueue

compound module

(no description)

CompoundPendingQueue

compound module

Implements a prioritized queue system for IEEE 802.11 MAC frames. Uses a classifier to separate incoming packets into three queues: management frames (highest priority), multicast frames (medium priority), and unicast frames (lowest priority). A priority scheduler then selects packets from these queues in order of priority.

PendingQueue

simple module

Implements a priority queue for IEEE 802.11 MAC frames. Uses a comparator to determine the order in which frames are processed. By default, prioritizes management frames over data frames, but can be configured to use different prioritization schemes such as management over multicast over unicast frames.

Ieee8021qTimeAwareShaper

compound module

Implements the IEEE 802.1Q time aware shaper.

DiffservQueue

compound module

This is an example queue that can be used in interfaces of DS core and edge nodes to support the AFxy (RFC 2597) and EF (RFC 3246) PHBs.

EligibilityTimeQueue

simple module

A packet queue that keeps the packets in ascending order based on the eligibility time in the attached EligibilityTimeTag of the packets.

CompoundPacketQueueBase

compound module

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

DropHeadQueue

simple module

This is a limited packet queue that drops packets at the head of the queue.

DropTailQueue

simple module

A limited packet queue that drops packets at the tail of the queue.

GatingPriorityQueue

compound module

Implements a priority queue with multiple inner queues each having its own periodic gate for packet selection and an optional shared memory buffer.

GatingQueue

compound module

Implements a queue having its own periodic gate.

InProgressQueue

simple module

Specialized packet queue that only accepts packets with higher priority than those already in the queue. Unlike standard packet queues, it always returns false for canPushSomePacket() and only allows insertion of packets that compare favorably against the first packet in the queue according to the configured comparator function (see comparatorClass parameter). Useful for implementing priority-based packet processing where only higher priority packets can preempt currently queued packets.

OmittedPacketQueue

compound module

Implements the given module interface and can be used as an optional module that removes itself from the module hierarchy during initialization.

PacketQueue

simple module

Implements a configurable packet queue, which is suitable for use in MAC protocols, traffic conditioning, and quality of services, among others. This is a passive component: packets are pushed into it on its input, and pulled from it on its output. This module can be used on its own, but it’s also often supplemented by additional queueing components such as servers, classifiers, schedulers, multiplexers, etc. This kind of composition allows to form a larger module which can act as a packet queue with more complex behavior.

PriorityQueue

compound module

Implements a priority queue with multiple inner queues and an optional shared memory buffer.

RedDropperQueue

compound module

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

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.

PriorityShaper

compound module

Combines a classifier, a scheduler, and several traffic shapers into a single packet shaper. Packets are classified into one of the traffic shapers, and the scheduler prioritizes among them.

EmptyPacketSource

simple module

An active/passive empty packet source. It doesn’t push packets into the connected module, and it doesn’t allow packets to be pulled from it by the connected module. The output gate generates backpressure for pull packet operations.

PassivePacketSource

simple module

A passive packet source which can be pulled for packets from the connected packet collector.

Known subclasses

Name

Type

Description

IPacketPuller

module interface

Interface for packet pullers. A packet puller connects one input to one output. Packets can be pulled from its output and it pulls packets from its input.

IPacketQueue

module interface

Interface for packet queue modules. A packet queue is a passive module which has one passive input and one passive output. Packets pushed into the passive input are either stored or dropped. Packets pulled from the passive output are provided from the stored packets.

IPacketScheduler

module interface

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.

Properties

Name

Value

Description

display

i=block/source

Source code

//
// 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.
//
// @see ~PassivePacketSource, ~PacketQueue, ~PacketScheduler, ~IActivePacketSink
//
moduleinterface IPassivePacketSource
{
    parameters:
        @display("i=block/source");
    gates:
        output out @labels(pull);
}

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