Simple Module BE_InControl

Package: core4inet.linklayer.inControl.base
File: src/core4inet/linklayer/inControl/base/BE_InControl.ned

C++ definition

Module for incoming traffic from MAC layer. The traffic is checked for critical traffic ID and then forwarded either as best-effort traffic to the upper layer or when critical traffic to the CTC module (via sendDirect).

See also: ~Timed, ~IInControl, ~EtherLLC, ~IMacRelayUnit, ~IOutputQueue

Author: Till Steinbach

BE_InControl

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
Timed simple module

Base for a module that uses a scheduler to set timers

Known subclasses:

Name Type Description
CT_BE_InControl simple module

Module for incoming traffic from MAC layer. The traffic is checked for critical traffic ID and then forwarded either as best-effort traffic to the upper layer or when critical traffic to the CTC module (via sendDirect).

Parameters:

Name Type Default value Description
oscillator string "oscillator"

Oscillator of the timed module (must be set to the name of an oscillator module in the Node) when left empty: oscillator

timer string "timer"

Timer of the timed module (must be set to the name of an timer module in the Node) when left empty: timer

promiscuous bool false

if true, all packets are received, otherwise only the ones with matching destination MAC address (This does not affect CT-Frames)

Properties:

Name Value Description
class BE_InControl
display i=block/classifier

Gates:

Name Direction Size Description
in input

Input from the lower layer (MAC layer)

out output

Output for best-effort frames to the upper layer (EtherLLC or IMacRelayUnit)

Signals:

Name Type Unit
rxPk inet::EtherFrame packets

Statistics:

Name Title Source Record Unit Interpolation Mode
rxLatency End-to-end latency (received) messageAge(rxPk) stats, histogram?, vector s none
minPacketSize Minimum Packet Size in Interval rxPk IntervalMinVector(packetBytes)? B linear
bandwidth Bandwidth used over Interval rxPk IntervalSumVector(packetBytes)? B linear
bandwidthFloating Floating Bandwidth for each Interval rxPk floatingIntervalSumVector(packetBytes)? B sample-hold
maxPacketSize Maximum Packet Size in Interval rxPk IntervalMaxVector(packetBytes)? B linear

Source code:

//
// Module for incoming traffic from MAC layer. The traffic is checked for
// critical traffic ID and then forwarded either as best-effort traffic to
// the upper layer or when critical traffic to the CTC module (via sendDirect).
//
// @see ~Timed, ~IInControl, ~EtherLLC, ~IMacRelayUnit, ~IOutputQueue
//
// @author Till Steinbach
//
simple BE_InControl extends Timed like IInControl
{
    parameters:
        @display("i=block/classifier");
        @class(BE_InControl);

        //Signal is emitted when when frame is received. Contains the received frame.
        @signal[rxPk](type=inet::EtherFrame; unit=packets);
        //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);
        //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);
        //Floating utilized Bandwidth over Interval
        @statistic[bandwidthFloating](title="Floating Bandwidth for each Interval"; source=rxPk; unit=B; record="floatingIntervalSumVector(packetBytes)?"; interpolationmode=sample-hold);

        // if true, all packets are received, otherwise only the ones with matching destination MAC address (This does not affect CT-Frames)
        bool promiscuous = default(false);

    gates:
        //Input from the lower layer (MAC layer)
        input in @labels(EtherFrame);
        //Output for best-effort frames to the upper layer (EtherLLC or IMacRelayUnit)
        output out @labels(EtherFrame);

}