Package: inet.queueing.filter
StatisticalRateLimiter
simple moduleThis module limit the datarate or the packetrate of a stream of packets based on the RateTag attached to the packets.
See also: ExponentialRateMeter
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
Name | Type | Description |
---|---|---|
PacketFilterBase | simple module |
This is a base module for various packet filter modules. Derived modules must implement a single packet matcher function which determines if a packet is to be passed through or filtered out. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "dropped %d/%p pk (%k/%l)" |
determines the text that is written on top of the submodule |
backpressure | bool | false | |
maxDatarate | double | nan | |
maxPacketrate | double | nan |
Properties
Name | Value | Description |
---|---|---|
display | i=block/downarrow | |
class | StatisticalRateLimiter |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in | input | ||
out | output |
Signals
Name | Type | Unit |
---|---|---|
packetPushedIn | inet::Packet | |
packetPulledIn | inet::Packet | |
packetDropped | inet::Packet | |
packetPushedOut | inet::Packet | |
packetPulledOut | inet::Packet |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
flowDroppedPacketLengths | flow specific dropped packet lengths | packetLength(demuxFlow(packetDropped)) | sum, histogram, vector | b | none |
incomingDataRate | incoming data rate | throughput(merge(packetPushedIn, packetPulledIn)) | vector | bps | linear |
droppedPacketLengths | dropped packet lengths | packetLength(packetDropped) | sum, histogram, vector | b | none |
incomingPacketLengths | incoming packet lengths | packetLength(merge(packetPushedIn, packetPulledIn)) | sum, histogram, vector | b | none |
droppedDataRate | dropped data rate | throughput(packetDropped) | vector | bps | linear |
flowOutgoingPacketLengths | flow specific outgoing packet lengths | packetLength(demuxFlow(merge(packetPushedOut, packetPulledOut))) | sum, histogram, vector | b | none |
flowDroppedDataRate | flow specific dropped data rate | throughput(demuxFlow(packetDropped)) | vector | bps | linear |
droppedPackets | dropped packets | packetDropped | count | pk | |
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 |
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 |
incomingPackets | incoming packets | merge(packetPushedIn, packetPulledIn) | count | pk | |
outgoingPackets | outgoing packets | merge(packetPushedOut, packetPulledOut) | count | pk |
Direct method calls (observed)
call to | function | info |
---|---|---|
PacketMultiplexer | inet::queueing::PacketMultiplexer::pushPacket | pushPacket |
ExponentialRateMeter | inet::queueing::ExponentialRateMeter::handleCanPushPacketChanged | handleCanPushPacketChanged |
PassivePacketSink | inet::queueing::PassivePacketSink::pushPacket | pushPacket |
Called methods (observed)
function | info | call from |
---|---|---|
inet::queueing::StatisticalRateLimiter::handleCanPushPacketChanged | handleCanPushPacketChanged | PassivePacketSink |
inet::queueing::StatisticalRateLimiter::pushPacket | pushPacket | ExponentialRateMeter, SlidingWindowRateMeter |
Pushed in messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
in | Packet | 0 | ExponentialRateMeter | DirectionTag, PacketProtocolTag, RateTag | |
in | Packet | 0 | SlidingWindowRateMeter | DirectionTag, DispatchProtocolReq, DropEligibleInd, EncapsulationProtocolInd, InterfaceInd, MacAddressInd, PacketProtocolTag, PcpInd, RateTag, StreamInd, UserPriorityInd, VlanInd |
Push out messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
out | Packet | 0 | PacketMultiplexer | DirectionTag, DispatchProtocolReq, DropEligibleInd, EncapsulationProtocolInd, InterfaceInd, MacAddressInd, PacketProtocolTag, PcpInd, RateTag, StreamInd, UserPriorityInd, VlanInd | |
out | Packet | 0 | PassivePacketSink | DirectionTag, PacketProtocolTag, RateTag |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
RateTag | getTag |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
FlowTag | mapAllTags |
Source code
// // This module limit the datarate or the packetrate of a stream of packets based // on the ~RateTag attached to the packets. // // @see ~ExponentialRateMeter // simple StatisticalRateLimiter extends PacketFilterBase like IPacketFilter { parameters: double maxDatarate @unit(bps) = default(nan); double maxPacketrate = default(nan); @class(StatisticalRateLimiter); }File: src/inet/queueing/filter/StatisticalRateLimiter.ned