IPacketClassifier

Package: inet.queueing.contract

IPacketClassifier

module interface

Interface for packet classifier modules. A packet classifier is a passive module which has one passive input and multiple active outputs. Packets pushed into the passive input are passed through to one of the active outputs without any delay or reordering.

Inheritance diagram

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

Implemented by

Name Type Description
ContentBasedClassifier simple module

Connects one packet producer to multiple packet consumers. It can be populated with packets from the connected packet producer. When this occurs, the classifier pushes the packet to one of its connected packet consumers based on the configured packet filters. The first matching expression determines the index of the output gate.

DualRateThreeColorClassifier simple module

This packet classifier module classifies packets using two token buckets. Each packet is classified depending on which token bucket is the first one that contains the required number of tokens for the packet.

DynamicClassifier simple module (no description)
EthernetFrameClassifier simple module

Classifier that forwards Ethernet PAUSE frames to the pauseOut gate, and other frames to the defaultOut gate.

LabelClassifier simple module

Classifies packets based on the attached labels in a ~LabelsTag.

MarkovClassifier simple module

Implements a packet classifier using a Markov process that has as many states as output gates the classifier has. The output gate for a given packet is determined by the current state of the Markov process.

MultiTokenBucketClassifier simple module

Classifies packets into the first bucket that contains the required number of tokens. The packet is forwarded to the output gate that corresponds to the selected bucket.

PacketClassifier simple module

Connects one packet producer to multiple packet consumers. It can be pushed with packets from the connected packet producer. When this happens, the classifier pushes the packet to one of its connected packet consumers based on the configured packet classifier function. The packet classifier function takes a packet and returns an integer which in turn is used for determining the output gate.

PcpClassifier simple module

Classifies packets based on the attached PCP value [0, 7]. The PCP is determined by a PcpReq or a PcpInd or both. The output gate index is the ith value in the pcpToGateIndex parameter.

PcpTrafficClassClassifier compound module

Classifies packets based on the attached PCP value [0, 7]. The PCP is determined by a PcpReq or a PcpInd or both. The output gate index is the value found in the mapping matrix using the PCP value as the row index and the number of connected consumers (traffic categories) as the column index.

PriorityClassifier simple module

This classifier pushes packets into the first non-full among its connected packet consumers.

SingleRateThreeColorClassifier simple module

This packet classifier module classifies packets using two token buckets. Each packet is classified depending on which token bucket is the first one that contains the required number of tokens for the packet.

SingleRateTwoColorClassifier simple module

This packet classifier module classifies packets using one token bucket. Each packet is classified depending on whether the token bucket contains the required number of tokens for the packet.

StreamClassifier simple module

Classifies packets based on the stream they are part of. The stream is determined by a StreamReq or a StreamInd or both.

TokenBucketClassifier simple module

Classifies packets to the first output gate if the bucket contains enough number of tokens for the packet passing through, otherwise the second output gate is used. The amount of required tokens is equal to the packet length in bits and is subtracted from the number of stored tokens. New tokens are generated with the provided constant rate and they may also be added by other modules.

UserPriorityClassifier simple module

Classifies packets based on the attached ~UserPriority tag.

WrrClassifier simple module

Implements a weighted round-robin classifier.

Used in compound modules

Name Type Description
DualIeee8021qFilter compound module

Combines two meters and their corresponding filters per path. This is primarily useful for combining a token bucket based metering with an asynchronous packet shaper. Note that the asynchronous packet shaper also has parts in the network interface queue module.

EthernetPreemptingMacLayer compound module (no 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.

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.

Ieee8021qFilter compound module

Implements the IEEE 802.1Q per-stream filtering and policing. The relationship between streams, gates, and meters is not one-to-one. The number of streams, gates, and meters can be different, and the module will take care of the connections between the submodules based on the streamFilterTable parameter.

Ieee8021qTimeAwareShaper compound module

Implements the IEEE 802.1Q time aware shaper.

Ieee8022LlcLayer compound module (no description)
MultiPacketPolicing compound module

Combines multiple packet policing modules into one.

PriorityQueue compound module

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

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.

RequestConsumer compound module

Processes incoming packets one by one in the order they arrive. First, it classifies a packet according to the configured classifier function, then it generates tokens for the selected category in the configured response producer.

SimpleIeee8021qFilter compound module

Implements a simplified version of the IEEE 802.1Q per-stream filtering and policing. Each filtered stream has its own path where metering and filtering happens independently of any other stream.

TelnetServerConnection compound module

Contains a configurable pre-composed telnet traffic source and traffic sink as part of a telnet server application.

TelnetServerTraffic compound module (no description)

Extends

Name Type Description
IPassivePacketSink module interface

Interface for passive packet sink modules. A passive packet sink, also called a consumer, has one input that must be connected to an active packet source module. The connected active packet source is expected to push packets into the passive packet sink over time.

Properties

Name Value Description
display i=block/sink

Source code

//
// Interface for packet classifier modules. A packet
// classifier is a passive module which has one passive input and multiple
// active outputs. Packets pushed into the passive input are passed through to
// one of the active outputs without any delay or reordering.
//
moduleinterface IPacketClassifier extends IPassivePacketSink
{
    parameters:
        @display("i=block/classifier");
    gates:
        output out[] @labels(push);
}
File: src/inet/queueing/contract/IPacketClassifier.ned