Package: inet.queueing.base
PacketFlowBase
simple moduleThis is a base module for various packet flow modules. A packet flow module passes or streams all pushed or pulled packets after processing them from its input to its output.
See also: IPacketFlow
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Known subclasses
Name | Type | Description |
---|---|---|
BackPressureBarrier | simple module |
This module prevents backpressure propagation from its output to its input and vice verse. It always allows pushing and pulling packets independently of what the connected modules would allow to do in their current state. Both pushed and pulled packets pass through unchanged, but the operations may raise a runtime error due to this module preventing backpressure propagation. |
CrcInserterBase | simple module | (no description) |
EthernetAddressInserter | simple module | (no description) |
EthernetFcsInserter | simple module | (no description) |
EthernetFragmentFcsInserter | simple module | (no description) |
EthernetFragmentPhyHeaderInserter | simple module | (no description) |
EthernetMacHeaderInserter | simple module | (no description) |
EthernetPhyHeaderInserter | simple module | (no description) |
EthernetSocketCommandProcessor | simple module | (no description) |
EthernetTypeOrLengthInserter | simple module | (no description) |
FcsInserterBase | simple module | (no description) |
FlowMeasurementRecorder | simple module |
This module is part of the flow measurement infrastructure. It can be used to record the collected statistics and also to terminate the flow measurements. |
FlowMeasurementStarter | simple module | (no description) |
FragmentNumberHeaderInserter | simple module | (no description) |
Ieee8021aeTagEpdHeaderInserter | simple module |
TODO this module is incomplete |
Ieee8021qSocketCommandProcessor | simple module | (no description) |
Ieee8021qTagEpdHeaderInserter | simple module | (no description) |
Ieee8021qTagTpidHeaderInserter | simple module | (no description) |
Ieee8021rTagEpdHeaderInserter | simple module | (no description) |
Ieee8022LlcInserter | simple module | (no description) |
Ieee8022LlcSocketCommandProcessor | simple module | (no description) |
Ieee8022LlcSocketPacketProcessor | simple module | (no description) |
Ieee8022SnapInserter | simple module | (no description) |
PacketDeserializer | simple module | (no description) |
PacketDirectionReverser | simple module |
This module is part of the layer 2 architecture. It turns an incoming packet into an outgoing packet simply by removing all attached indication tags and turning some of them into an attached request tag on the packet. |
PacketEmitter | simple module | (no description) |
PacketGateBase | simple module |
This is a base module for various packet gate modules. |
PacketMarkerBase | simple module |
This is a base module for various packet marker modules. Derived modules must implement a single markPacket() function which marks the individual packets by attaching tags. |
PacketMeterBase | simple module |
This is a base module for various packet meter modules. Derived modules must implement a single meterPacket() function which meters the flow of and attaches the required tags. |
PacketSerializer | simple module |
This module serializes packets flowing from its input to its output. |
PaddingInserter | simple module | (no description) |
RelayInterfaceLearner | simple module |
This module extracts the source MAC address of the packet passing through and stores the mapping from this MAC address to the incoming network interface in the MAC address table (forwarding information database). |
SequenceNumbering | simple module | (no description) |
StreamDecoder | simple module |
This module decodes the stream of a packet by matching various tags on the packet against the mapping. It can check for network interface, source address, destination address, VLAN id, and PCP. If a match was found then the stream is attached to the packet in a StreamInd tag. |
StreamEncoder | simple module |
This module encodes the stream name of a packet into several request tags attached to the packet. It looks up the stream in the mapping and attaches the necessary request tags to the packet based on the specified parameters. |
StreamIdentifier | simple module |
This module identifies the stream of a packet using packet filter expressions. It can check for arbitrary packet data and assign and if a match was found then the stream is attached to the packet in a StreamReq tag. |
VlanReqMapper | simple module |
This module updates the VlanReq tag on packets. |
Extends
Name | Type | Description |
---|---|---|
PacketProcessorBase | simple module |
This is a 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 |
Properties
Name | Value | Description |
---|---|---|
display | i=block/rightarrow | |
class | PacketFlowBase |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in | input | ||
out | output |
Signals
Name | Type | Unit |
---|---|---|
packetPushedIn | inet::Packet | |
packetPulledIn | inet::Packet | |
packetPushedOut | inet::Packet | |
packetPulledOut | inet::Packet |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
flowIncomingDataRate | flow specific incoming data rate | throughput(demuxFlow(merge(packetPushedIn, packetPulledIn))) | vector | bps | linear |
outgoingDataRate | outgoing data rate | throughput(merge(packetPushedOut, packetPulledOut)) | vector | bps | linear |
incomingDataRate | incoming data rate | throughput(merge(packetPushedIn, packetPulledIn)) | vector | bps | linear |
outgoingPacketLengths | outgoing packet lengths | packetLength(merge(packetPushedOut, packetPulledOut)) | sum, histogram, vector | b | none |
flowIncomingPacketLengths | flow specific incoming packet lengths | packetLength(demuxFlow(merge(packetPushedIn, packetPulledIn))) | sum, histogram, vector | b | none |
flowOutgoingDataRate | flow specific outgoing data rate | throughput(demuxFlow(merge(packetPushedOut, packetPulledOut))) | vector | bps | linear |
incomingPacketLengths | incoming packet lengths | packetLength(merge(packetPushedIn, packetPulledIn)) | sum, histogram, vector | b | none |
flowOutgoingPacketLengths | flow specific outgoing packet lengths | packetLength(demuxFlow(merge(packetPushedOut, packetPulledOut))) | sum, histogram, vector | b | none |
incomingPackets | incoming packets | merge(packetPushedIn, packetPulledIn) | count | pk | |
outgoingPackets | outgoing packets | merge(packetPushedOut, packetPulledOut) | count | pk |
Source code
// // This is a base module for various packet flow modules. A packet flow module // passes or streams all pushed or pulled packets after processing them from // its input to its output. // // @see ~IPacketFlow // simple PacketFlowBase extends PacketProcessorBase { parameters: @class(PacketFlowBase); @display("i=block/rightarrow"); @signal[packetPushedIn](type=inet::Packet); @signal[packetPushedOut](type=inet::Packet); @signal[packetPulledIn](type=inet::Packet); @signal[packetPulledOut](type=inet::Packet); // the statistical value is the incoming packet @statistic[incomingPackets](title="incoming packets"; source=merge(packetPushedIn, packetPulledIn); record=count; unit=pk); // the statistical value is the length of the incoming packet @statistic[incomingPacketLengths](title="incoming packet lengths"; source=packetLength(merge(packetPushedIn, packetPulledIn)); record=sum,histogram,vector; unit=b; interpolationmode=none); // the statistical value is the data rate of the incoming packets @statistic[incomingDataRate](title="incoming data rate"; source=throughput(merge(packetPushedIn, packetPulledIn)); record=vector; unit=bps; interpolationmode=linear); // the statistical value is the outgoing packet @statistic[outgoingPackets](title="outgoing packets"; source=merge(packetPushedOut, packetPulledOut); record=count; unit=pk); // the statistical value is the length of the outgoing packet @statistic[outgoingPacketLengths](title="outgoing packet lengths"; source=packetLength(merge(packetPushedOut, packetPulledOut)); record=sum,histogram,vector; unit=b; interpolationmode=none); // the statistical value is the data rate of the outgoing packets @statistic[outgoingDataRate](title="outgoing data rate"; source=throughput(merge(packetPushedOut, packetPulledOut)); record=vector; unit=bps; interpolationmode=linear); // the statistical value is the flow specific length of the incoming packet @statistic[flowIncomingPacketLengths](title="flow specific incoming packet lengths"; source=packetLength(demuxFlow(merge(packetPushedIn, packetPulledIn))); record=sum,histogram,vector; unit=b; interpolationmode=none); // the statistical value is the flow specific data rate of the incoming packets @statistic[flowIncomingDataRate](title="flow specific incoming data rate"; source=throughput(demuxFlow(merge(packetPushedIn, packetPulledIn))); record=vector; unit=bps; interpolationmode=linear); // the statistical value is the flow specific length of the outgoing packet @statistic[flowOutgoingPacketLengths](title="flow specific outgoing packet lengths"; source=packetLength(demuxFlow(merge(packetPushedOut, packetPulledOut))); record=sum,histogram,vector; unit=b; interpolationmode=none); // the statistical value is the flow specific data rate of the outgoing packets @statistic[flowOutgoingDataRate](title="flow specific outgoing data rate"; source=throughput(demuxFlow(merge(packetPushedOut, packetPulledOut))); record=vector; unit=bps; interpolationmode=linear); gates: input in @labels(send,push,pull,pass,stream); output out @labels(send,push,pull,pass,stream); }File: src/inet/queueing/base/PacketFlowBase.ned