PacketPusherBase

Package: inet.queueing.base

PacketPusherBase

simple module

C++ definition

Base module for various packet pusher modules.

Inheritance diagram

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

Known subclasses

Name Type Description
AggregatorBase compound module

Base module for packet aggregation. Collects multiple packets and combines them into a single aggregated packet based on a configurable aggregation policy. Aggregation improves network efficiency by reducing header overhead when transmitting multiple small packets. The module delegates the aggregation decision to a policy class or module that determines if a packet can be aggregated with the current set.

DeaggregatorBase simple module

Base module for packet deaggregation. Takes an aggregated packet and splits it back into its original subpackets. Deaggregation is the reverse process of aggregation, extracting individual packets that were previously combined to reduce header overhead. The module receives an aggregated packet, extracts the individual subpackets, and forwards each one separately through its output gate.

DefragmenterBase simple module

Base type for packet defragmenters that reassemble original packets from fragments. Collects and stores fragments until all fragments of a packet are received, then reconstructs the original packet.

DuplicateRemoval simple module

Filters out duplicate packets based on sequence numbers. Keeps track of the last processed sequence number and discards packets with the same sequence number to prevent duplicate packet processing. Note that in order for this strategy to work, packets must arrive in the correct order.

EthernetSocketPacketProcessor simple module (no description)
FragmenterBase compound module (no description)
Ieee8021qSocketPacketProcessor simple module

Processes packets related to IEEE 802.1Q VLAN sockets. Delivers packets to registered sockets based on protocol and VLAN ID matching. Duplicates packets for delivery to interested sockets and supports "stealing" packets to prevent them from being forwarded. Enables applications to communicate directly with specific VLANs and implements protocol handlers for VLAN-specific traffic. Works in conjunction with ~Ieee8021qSocketTable to provide a socket-based API for VLAN communication.

RelayInterfaceSelector simple module

Selects the outgoing interface for the packet passing through from the MAC address table (forwarding information database) based on the destination MAC address. The selected interface is attached to the packet in an ~InterfaceReq. The packet may be duplicated if multiple interfaces are found.

Reordering simple module

Reorders out-of-sequence packets based on their sequence numbers. Buffers packets until they can be delivered in the correct order, ensuring sequential processing of packets despite network reordering. Note that this module does not contain a mechanism to recover from packet losses, i.e. a lost packet will cause subsequent packets will be buffered in this module indefinitely.

Resending simple module (no description)
StreamSplitter simple 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 packets is determined by the mapping parameter. Each outgoing packet will have an attached StreamReq with the tag name taken from the mapping parameter.

Extends

Name Type Description
PacketProcessorBase simple module

Base module for various packet processing modules which maintains a few statistics.

Parameters

Name Type Default value Description
displayStringTextFormat string "processed %p pk (%l)"

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

Properties

Name Value Description
class PacketPusherBase
display i=block/star

Gates

Name Direction Size Description
in input
out output

Source code

//
// Base module for various packet pusher modules.
//
simple PacketPusherBase extends PacketProcessorBase
{
    parameters:
        @class(PacketPusherBase);
    gates:
        input in;
        output out;
}
File: src/inet/queueing/base/PacketPusherBase.ned