Module Interface IBuffer

Package: core4inet.buffer.base
File: src/core4inet/buffer/base/IBuffer.ned

Interface representing a buffer module.

Buffers are used in CoRE4INET to hold frames between reception and transmitting. There are various types of buffers with different behavior for AS6802, AVB and background traffic.

See also: Buffer

Author: Till Steinbach

IBuffer

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Extends:

Name Type Description
IOutputQueue module interface

Prototype for output queues. Concrete queues can implement drop-tail, RED etc. policy.

Used in compound modules:

Name Type Description
CheckedBuffer compound module

Module for Buffer with Incoming Module for TT and RC traffic

Parameters:

Name Type Default value Description
destination_gates string

Comma seperated list of gates where the frames of the buffer are delivered

Properties:

Name Value Description
display i=block/buffer

Signals:

Name Type Unit
rxPk inet::EtherFrame
txPk inet::EtherFrame

Statistics:

Name Title Source Record Unit Interpolation Mode
rxLatency End-to-end latency (received) messageAge(rxPk) ?stats, histogram?, vector? s none
rxBytes Received Bytes rxPk sum(packetBytes)?, vector(packetBytes)?, histogram(packetBytes)? B none
rxPk Received Packets rxPk count packets
txBytes Transmitted Bytes txPk sum(packetBytes), vector(packetBytes), histogram(packetBytes)? B none
minPacketSize Minimum Packet Size in Interval rxPk IntervalMinVector(packetBytes)? B linear
bandwidth Bandwidth used over Interval rxPk IntervalSumVector(packetBytes)? B linear
txPk Transmitted Packets txPk count packets
txLatency End-to-end latency (transmitted) messageAge(txPk) stats?, histogram?, vector? s none
maxPacketSize Maximum Packet Size in Interval rxPk IntervalMaxVector(packetBytes)? B linear

Source code:

//
// Interface representing a buffer module.
//
// Buffers are used in CoRE4INET to hold frames between reception and transmitting. There are various types of buffers
// with different behavior for AS6802, AVB and background traffic.
//
// @see Buffer
//
// @author Till Steinbach
moduleinterface IBuffer extends IOutputQueue
{
    parameters:
        @display("i=block/buffer");

        //Signal is emitted when when frame is received. Contains the received frame.
        @signal[rxPk](type=inet::EtherFrame);
        //Signal is emitted when when frame is transmitted. Contains the transmitted frame.
        @signal[txPk](type=inet::EtherFrame);

        //Statistic of the number of packets that were received by the buffer
        @statistic[rxPk](title="Received Packets"; source=rxPk; unit=packets; record=count);
        //Statistic of the number of Bytes that were received by the buffer
        @statistic[rxBytes](title="Received Bytes"; source=rxPk; unit=B; record="sum(packetBytes)?","vector(packetBytes)?","histogram(packetBytes)?"; interpolationmode=none);
        //Statistic of the number of packets that were received by the buffer
        @statistic[txPk](title="Transmitted Packets"; source=txPk; unit=packets; record=count);
        //Statistic of the number of Bytes that were received by the buffer
        @statistic[txBytes](title="Transmitted Bytes"; source=txPk; unit=B; record="sum(packetBytes)","vector(packetBytes)","histogram(packetBytes)?"; interpolationmode=none);
        //End-to-end latency recorded when frame is received. Contains the time from frame creation until received in the Buffer
        @statistic[rxLatency](title="End-to-end latency (received)"; source="messageAge(rxPk)"; unit=s; record=?stats,histogram?,vector?; interpolationmode=none);
        //End-to-end latency recorded when frame is transmitted. Contains the time from frame creation until transmitted from the Buffer
        @statistic[txLatency](title="End-to-end latency (transmitted)"; source="messageAge(txPk)"; unit=s; record=stats?,histogram?,vector?; interpolationmode=none);
        //Maximum packet size in Interval
        @statistic[maxPacketSize](title="Maximum Packet Size in Interval"; source=rxPk; unit=B; record="IntervalMaxVector(packetBytes)?"; interpolationmode=linear);
        //Minimum packet size in Interval
        @statistic[minPacketSize](title="Minimum Packet Size in Interval"; source=rxPk; unit=B; record="IntervalMinVector(packetBytes)?"; interpolationmode=linear);
        //Utilized Bandwidth over Interval
        @statistic[bandwidth](title="Bandwidth used over Interval"; source=rxPk; unit=B; record="IntervalSumVector(packetBytes)?"; interpolationmode=linear);

        //Comma seperated list of gates where the frames of the buffer are delivered
        string destination_gates;
}