Package: inet.queueing.common
BackPressureBarrier
simple moduleThis 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.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Used in compound modules
Name | Type | Description |
---|---|---|
Ieee8021qFilter | compound module |
This 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 about the connections between the submodules based on the streamFilterTable parameter. |
SimpleIeee8021qFilter | compound module |
This 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. |
Extends
Name | Type | Description |
---|---|---|
PacketFlowBase | simple module |
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. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "passed %p pk (%l)" |
determines the text that is written on top of the submodule |
Properties
Name | Value | Description |
---|---|---|
display | i=block/segm | |
class | BackPressureBarrier |
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 |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::pushPacket | pushPacket |
PacketMultiplexer | inet::queueing::PacketMultiplexer::handleCanPushPacketChanged | handleCanPushPacketChanged |
PassivePacketSink | inet::queueing::PassivePacketSink::pushPacket | pushPacket |
Called methods (observed)
function | info | call from |
---|---|---|
inet::queueing::BackPressureBarrier::handleCanPushPacketChanged | handleCanPushPacketChanged | PassivePacketSink |
inet::queueing::BackPressureBarrier::pushPacket | pushPacket | PacketMultiplexer |
Pushed in messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
in | Packet | 0 | PacketMultiplexer | DirectionTag, PacketProtocolTag, DispatchProtocolReq?, DropEligibleInd?, EligibilityTimeTag?, EncapsulationProtocolInd?, InterfaceInd?, LabelsTag?, MacAddressInd?, PcpInd?, RateTag?, StreamInd?, StreamReq?, UserPriorityInd?, VlanInd? |
Push out messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
out | Packet | 0 | MessageDispatcher | DirectionTag, DispatchProtocolReq, DropEligibleInd, EncapsulationProtocolInd, InterfaceInd, MacAddressInd, PacketProtocolTag, PcpInd, StreamInd, UserPriorityInd, VlanInd, EligibilityTimeTag?, LabelsTag?, RateTag? | |
out | Packet | 0 | PassivePacketSink | DirectionTag, LabelsTag, PacketProtocolTag, StreamReq |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
FlowTag | mapAllTags |
Source code
// // 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. // simple BackPressureBarrier extends PacketFlowBase { parameters: displayStringTextFormat = default("passed %p pk (%l)"); @class(BackPressureBarrier); @display("i=block/segm"); }File: src/inet/queueing/common/BackPressureBarrier.ned