Package: inet.queueing.buffer
PacketBuffer
simple moduleThis module provides packet storage for sharing and optimizing storage space between multiple packet queues. When a packet buffer becomes overloaded, the packet dropping strategy can drop any number of packets from any number of connected packet queues.
See also: IPacketQueue
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Known subclasses
Name | Type | Description |
---|---|---|
PriorityBuffer | simple module |
This buffer drops packets among the connected packet queues based on their module id. |
Extends
Name | Type | Description |
---|---|---|
PacketBufferBase | simple module |
This is a base module for various packet buffer modules which maintains a few statistics. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "contains %p pk (%l)\nadded %a removed %r dropped %d" |
determines display string text above the submodule |
packetCapacity | int | -1 |
maximum number of packets in the queue, no limit by default |
dataCapacity | int | -1b |
maximum total length of packets in the queue, no limit by default |
dropperClass | string | "" |
determines which packets are dropped when the buffer is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class |
Properties
Name | Value | Description |
---|---|---|
display | i=block/buffer | |
class | PacketBuffer |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in | input | ||
out | output |
Signals
Name | Type | Unit |
---|---|---|
packetRemoved | inet::Packet | |
packetDropped | inet::Packet | |
packetAdded | inet::Packet |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
packetRemoved | packets removed | count, sum(packetBytes), vector(packetBytes) | none | ||
packetDropQueueOverflow | packet drops: queue overflow | packetDropReasonIsQueueOverflow(packetDropped) | count, sum(packetBytes), vector(packetBytes) | none | |
packetAdded | packets added | count, sum(packetBytes), vector(packetBytes) | none |
Source code
// // This module provides packet storage for sharing and optimizing storage space // between multiple packet queues. When a packet buffer becomes overloaded, the // packet dropping strategy can drop any number of packets from any number of // connected packet queues. // // @see ~IPacketQueue // simple PacketBuffer extends PacketBufferBase like IPacketBuffer { parameters: int packetCapacity = default(-1); // maximum number of packets in the queue, no limit by default int dataCapacity @unit(b) = default(-1b); // maximum total length of packets in the queue, no limit by default string dropperClass = default(""); // determines which packets are dropped when the buffer is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class @class(PacketBuffer); @display("i=block/buffer"); @signal[packetAdded](type=inet::Packet); @signal[packetRemoved](type=inet::Packet); @signal[packetDropped](type=inet::Packet); @statistic[packetAdded](title="packets added"; record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetRemoved](title="packets removed"; record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetDropQueueOverflow](title="packet drops: queue overflow"; source=packetDropReasonIsQueueOverflow(packetDropped); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); }File: src/inet/queueing/buffer/PacketBuffer.ned