PacketPusherBase

Package: inet.queueing.base

simple module PacketPusherBase

Base module for various packet pusher modules.

inet.queueing.base.PacketPusherBasePacketPusherBasesimple

Inheritance diagram

Known subclasses

Name

Type

Description

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.

EthernetSocketPacketProcessor

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

Resending

simple module

(no 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.

FragmenterBase

compound module

(no description)

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.

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.

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 {numProcessedPackets} pk ({processedTotalLength})”

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