IActivePacketSource

Package: inet.queueing.contract

IActivePacketSource

module interface

This module interface must be implemented by active packet source modules. An active packet source, also called a producer, has one output that must be connected to a passive packet sink module. The active packet source is expected to push packets into the connected passive packet sink over time.

See also: PassivePacketSink, PacketServer, PacketClassifier, IPassivePacketSink

Inheritance diagram

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

Implemented by

Name Type Description
ActivePacketSource simple module

This module is an active packet source which pushes packets into the connected module. It pushes whole packets through the out gate at every production interval. It pushes the first packet after the initial production offset.

AsynchronousShaper compound module

This module implements an asynchronous shaper. The queue sorts packets based on the transmission eligibility time (EligibilityTimeTag) attached to each packet. The gate prevents packets to be transmitter earlier than the attached transmission eligibility time.

BurstyPacketProducer compound module

This module mixes two different packet sources to generate bursty traffic.

CreditBasedShaper compound module

This module implements a credit based shaper using a gate submodule to manage the number of credits.

EmptyPacketSource simple module

This module is 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.

EthernetCutthroughBarrier simple module (no description)
InstantServer simple module

This module repeatedly pulls packets from the connected packet provider and pushes the packet into the connected packet consumer without delay.

LeakyBucket compound module

This module implements a parameterizable leaky bucket algorithm.

MultiPacketPolicing compound module

This module combines multiple packet policing modules into one.

OmittedPacketDelayer compound module

This module implements the module given interface and can be used as an omitted optional module that removes itself from the module hierarchy during initialize.

OmittedPacketServer compound module

This module implements the module given interface and can be used as an omitted optional module that removes itself from the module hierarchy during initialize.

OmittedTrafficConditioner compound module

This module implements the module given interface and can be used as an omitted optional module that removes itself from the module hierarchy during initialize.

PacketDelayer simple module

This module connects one packet producer to one packet consumer. It can be pushed with packets from the connected packet producer. When this happens, the packet is delayed and eventually pushed to the output. Note that the order of packets may change if the delay parameter is configured to be a distribution.

PacketDuplicator simple module

This module connects one packet producer to one packet consumer. It can be pushed with packets from the connected packet producer. When this happens, one or more copy of the packet is pushed to the output gate.

PacketHistory compound module

This module connects one packet producer to one packet consumer. It can be pushed with packets from the connected packet producer. It keeps a copy of the last N packets pushed into its input. The packets are available in the runtime user interface (Qtenv) for inspection.

PacketMultiplexer simple module

This module connects multiple packet producers to one packet consumer. When a packet is pushed by one of the connected packet producers, then the multiplexer simply pushes the packet to the connected packet consumer.

PacketPolicing compound module

This module combines a packet meter and a packet filter into a packet policing module. The meter measures the packet flow that is passing through and attaches some meta information to the packets. The filter drops the packets that don't match the implemented filter criteria.

PacketSendToPush simple module (no description)
PacketServer simple module

This module repeatedly pulls packets from the connected packet provider and after a processing delay it pushes the packet into the connected packet consumer. The processing delay is processingTime + packetLength / processingBitrate.

PacketShaper compound module

This 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.

PcapFilePacketProducer simple module

This module is an active packet source which pushes packets into the connected packet consumer. All pushed packets are read from a PCAP file.

PreemptingServer simple module (no description)
PriorityShaper compound module

This 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.

QueueFiller compound module

This module produces packets in order to prevent a queue from becoming empty.

QueueingPacketDelayer compound module (no description)
ResponseProducer compound module

This module is capable of generating several different streams of packets, one after the other. For each traffic category, the packets are produced by a separate token based server. The traffic stream can be started by adding tokens the corresponding server module. The packet data, packet length, and timing distributions can be configured in the corresponding packet provider.

StreamSplitter simple module

This module duplicates incoming packets based on the stream they are part of. The stream is determined by the StreamReq tag that is attached to the packet. The number of outgoing packet is determined by the mapping parameter. Each outgoing packet will have an attached StreamReq with the tag name taken from the mapping parameter.

TimeAwareShaper compound module

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

TokenBasedServer simple module

This module repeatedly pulls packets from the connected packet provider and it pushes them into the connected packet consumer. The packets are processed in zero simulation time, and the process continues until the available number of tokens is not sufficient anymore.

TokenBucket compound module

This module implements a parameterizable token bucket algorithm.

Used in compound modules

Name Type Description
EthernetApp compound module

This module generates traffic as an Ethernet application. The traffic source and traffic sink modules can be built from queueing model elements.

Ieee8022LlcApp compound module

This module generates traffic as an IEEE 802.2 LLC application. The traffic source and traffic sink modules can be built from queueing model elements.

IpApp compound module

This module generates traffic for a IP application. The traffic source and traffic sink modules can be built from queueing model elements.

SourceApp compound module

This module implements a generic source application.

TcpClientApp compound module

This module is a generic TCP client application. The traffic source and traffic sink modules can be built from queueing model elements.

TcpServerConnection compound module

This module is a generic TCP server connection. The traffic source and traffic sink modules can be built from queueing model elements.

TelnetClientApp compound module

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

UdpApp compound module

This module generates traffic for a UDP application. The traffic source and traffic sink modules can be built from queueing model elements.

Known subclasses

Name Type Description
IPacketDelayer module interface

This module interface is implemented by packet delayers.

IPacketPolicing module interface

This module interface is implemented by packet policing modules. A packet policing connects one input to one output. It operates in passive mode on its input and in active mode on its output. These modules usually meter various traffic properties and drop packets, but they never modify, delay or reorder packets.

IPacketPusher module interface

This module interface is implemented by packet pushers. A packet pusher connects one input to one output. Packets can be pushed into its input and it pushed packets into its output.

IPacketServer module interface

This module interface is implemented by packet server modules. A packet server is an active module which has one active input and one active output. Packets are pulled from the connected input module and pushed into the connected output module with an optional delay but without reordering.

IPacketShaper module interface

This module interface is implemented by packet shaper modules. A packet shaper connects one input to one output. It operates in passive mode both on its input and its output. These modules may delay and reorder packets but they never modify or drop packets.

ITrafficConditioner module interface

This module interface is implemented by traffic conditioner modules. A traffic conditioner connects one input to one output. It operates in passive mode on its input and in active mode on its output. Packets can be pushed into its input and packets can be pulled from its output. A traffic conditioner can drop, delay and reorder packets, but it doesn't modify packets in any way.

Properties

Name Value Description
display i=block/source

Source code

//
// This module interface must be implemented by active packet source modules.
// An active packet source, also called a producer, has one output that must
// be connected to a passive packet sink module. The active packet source is
// expected to push packets into the connected passive packet sink over time.
//
// @see ~PassivePacketSink, ~PacketServer, ~PacketClassifier, ~IPassivePacketSink
//
moduleinterface IActivePacketSource
{
    parameters:
        @display("i=block/source");
    gates:
        output out @labels(push);
}
File: src/inet/queueing/contract/IActivePacketSource.ned