Compound Module TTEAVBEtherHost

Package: core4inet.nodes.ethernet.avb_AS6802
File: src/core4inet/nodes/ethernet/avb_AS6802/TTEAVBEtherHost.ned

Module for a TTEAVBEthernet Host. Contains handler for TT, AVB, RC and BE Messages.

See also: ~TTEAVBPHYPort, ~AVBIncoming, ~AVBQueueBuffer, ~SRPEtherEncap, ~ISync, ~ITTEScheduler, ~IApplication, ~BGQueueBuffer, ~SRPTable, ~SRProtocol, ~InterfaceTable

Author: Philipp Meyer

TTEAVBPHYPort AVBIncoming AVBQueueBuffer AVBQueueBuffer SRPEtherEncap ISync ITTEScheduler IApplication BGQueueBuffer BGQueueBuffer SRPTable SRProtocol InterfaceTable

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.

Known subclasses:

Name Type Description
Node1 compound module

node1(1,2,3,4): configuration in node1(1,2,3,4).ini.

node1 compound module (no description)
node1 compound module (no description)
node1 compound module (no description)
node1 compound module (no description)
node10 compound module (no description)
Node2 compound module

node2(1,2,3,4): configuration in node2(1,2,3,4).ini.

node2 compound module (no description)
node2 compound module (no description)
node2 compound module (no description)
node2 compound module (no description)
Node3 compound module

node3(1,2,3,4): configuration in node3(1,2,3,4).ini.

node3 compound module (no description)
node3 compound module (no description)
node3 compound module (no description)
node3 compound module (no description)
node4 compound module (no description)
node5 compound module (no description)
node6 compound module (no description)
node7 compound module (no description)
node8 compound module (no description)
node9 compound module (no description)
Node_3 compound module (no description)
Node_4 compound module (no description)
Node_5 compound module (no description)
Node_6 compound module (no description)
Node_7 compound module (no description)
Node_9 compound module (no description)

Networks:

Name Type Description
large_network network (no description)

Parameters:

Name Type Default value Description
numApps int 0

Number of Applications running on the device

numBuffer int 0

Optional: Number of Buffers with Incoming Module for TT and RC traffic (When not manually declared in own deriving .ned file)

numPorts int 1

Number of Ports of the device

hardware_delay double 0us

Forwardingdelay of the device hardware

be_promiscuous bool true

Promiscuous mode for best-efford traffic handling

Properties:

Name Value Description
display bgb=894,314;i=device/device
networkNode

Gates:

Name Direction Size Description
ethg inout

Unassigned submodule parameters:

Name Type Default value Description
phy.shaper.numRCpriority int 10
phy.shaper.tt_buffers string ""

Comma seperated list of TTBuffers that send messages to this port

phy.shaper.safety_margin int 5

Safety margin for TT-Messages in ticks (musst be set according to maximum clock correction!)

phy.shaper.oscillator string "^.^.scheduler.oscillator"

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

phy.shaper.timer string "^.^.scheduler.timer"

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

phy.shaper.AVBHigherPriorityBandwidth int 0bps

Bandwidth of the TT bandwith on this port

phy.inControl.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

phy.inControl.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

phy.inControl.ct_marker int
phy.inControl.ct_mask int

Critical traffic mask of the buffer

phy.inControl.ct_incomings string ""

Comma seperated list of ctc modules the input uses

phy.mac.interfaceTableModule string

The path to the InterfaceTable module

phy.mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

phy.mac.duplexMode bool true

must be set to "true", as EtherMACFullDuplex does not support half-duplex operation (parameter is present to reduce the risk of accidental misconfiguration)

phy.mac.txQueueLimit int 1000

maximum number of frames queued up for transmission in the internal queue (only used if queueModule==""); additional frames cause a runtime error

phy.mac.mtu int 1500B
phy.mac.connectionColoring bool true

colors the connection when transmitting

avbCTC.srpTable string "^.srpTable"
avbABuffer.destination_gates string ""

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

avbABuffer.maxMessageSize int 1522B

The maximum allowed message size for this buffer. Larger Frames are dropped.

avbABuffer.enabled bool true

Switch to enable and disable the buffer

avbABuffer.oscillator string "^.scheduler.oscillator"

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

avbABuffer.timer string "^.scheduler.timer"

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

avbABuffer.size int -1

Size of the buffer negative means infinite

avbBBuffer.destination_gates string ""

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

avbBBuffer.maxMessageSize int 1522B

The maximum allowed message size for this buffer. Larger Frames are dropped.

avbBBuffer.enabled bool true

Switch to enable and disable the buffer

avbBBuffer.oscillator string "^.scheduler.oscillator"

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

avbBBuffer.timer string "^.scheduler.timer"

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

avbBBuffer.size int -1

Size of the buffer negative means infinite

encap.useSNAP bool false

create EtherFrameWithSNAP frames instead of EthernetIIFrame

app.buffers string

Comma seperated list of buffer modules the application is allowed to use

app.displayName string

Name shown above the module

bgIn.destination_gates string ""

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

bgIn.maxMessageSize int 1522B

The maximum allowed message size for this buffer. Larger Frames are dropped.

bgIn.enabled bool true

Switch to enable and disable the buffer

bgIn.size int -1

Maximum size of the buffer negative means infinite

bgIn.dropNew bool false

Dropping policy, Should the newest frame instead of the oldest frame be dropped when the buffer is full (see size parameter)

bgOut.destination_gates string ""

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

bgOut.maxMessageSize int 1522B

The maximum allowed message size for this buffer. Larger Frames are dropped.

bgOut.enabled bool true

Switch to enable and disable the buffer

bgOut.size int -1

Maximum size of the buffer negative means infinite

bgOut.dropNew bool false

Dropping policy, Should the newest frame instead of the oldest frame be dropped when the buffer is full (see size parameter)

srpTable.agingTime double 7s

Entries not updated are deleted after agingTime (0 means disabled)

srpProtocol.reservableBandwidth double 0.75

Amount of total bandwidth that is reservable (0-1) default: 0.75 representing 75%

srpProtocol.srpTable string "^.srpTable"

SRP Table module, default name is srpTable

interfaceTable.displayAddresses bool true

whether to display IP addresses on links

Source code:

//
// Module for a TTEAVBEthernet Host.
// Contains handler for TT, AVB, RC and BE Messages.
//
// @see ~TTEAVBPHYPort, ~AVBIncoming, ~AVBQueueBuffer, ~SRPEtherEncap, ~ISync, ~ITTEScheduler, ~IApplication, ~BGQueueBuffer, ~SRPTable, ~SRProtocol, ~InterfaceTable
//
// @author Philipp Meyer
//
module TTEAVBEtherHost
{
    parameters:
        @display("bgb=894,314;i=device/device");
        @networkNode;

        // Number of Applications running on the device
        int numApps = default(0);
        // Optional: Number of Buffers with Incoming Module for TT and RC traffic 
        // (When not manually declared in own deriving .ned file)
        int numBuffer = default(0);
        // Number of Ports of the device
        int numPorts = default(1);
        // Forwardingdelay of the device hardware
        double hardware_delay @unit(s) = default(0us);
        // Promiscuous mode for best-efford traffic handling
        bool be_promiscuous = default(true);

        *.interfaceTableModule = default(absPath(".interfaceTable"));

    gates:
        inout ethg;

    submodules:
        // Physical port of the host
        phy[numPorts]: TTEAVBPHYPort {
            @display("p=380,255,c,50");
            promiscuous = be_promiscuous;
        }

		// AVB critical traffic control
        avbCTC: AVBIncoming {
            parameters:
                @display("p=380,118");
                hardware_delay = hardware_delay;
            gates:
                AVBAout[numPorts];
                AVBBout[numPorts];
        }

		// AVB class A buffer
        avbABuffer[numPorts]: AVBQueueBuffer {
            parameters:
                srClass = "A";
                @display("p=341,193");
        }

        // AVB class B buffer
        avbBBuffer[numPorts]: AVBQueueBuffer {
            parameters:
                srClass = "B";
                @display("p=419,193");
        }

		// Stream Reservation Protocol ethernet encapsulation
        encap: SRPEtherEncap {
            parameters:
                @display("p=141,255");
        }

        // Sync module for synchronisation of the scheduler
        sync: <default("DummySync")> like ISync {
            @display("p=208,169");
        }

        // Scheduler for the device
        scheduler: <default("Scheduler")> like ITTEScheduler {
            @display("p=274,169");
        }

		// Applications for the device
        app[numApps]: <> like IApplication {
            @display("p=380,37,row,70");
        }

		// Best-efford buffer for incoming traffic 
        bgIn: BGQueueBuffer {
            @display("p=60,37");
        }

		// Best-efford buffer for outgoing traffic
        bgOut: BGQueueBuffer {
            @display("p=109,37");
        }

		// Stream Reservation Protocol table
        srpTable: SRPTable {
            @display("p=141,99");
        }

		// Stream Reservation Protocol implementation
        srpProtocol: SRProtocol {
            @display("p=141,169");
        }

        // Holds interface names
        interfaceTable: InterfaceTable {
            @display("p=208,99");
        }

    connections allowunconnected:
        phy[0].phys <--> ethg;
        encap.lowerLayerOut --> phy[0].upperLayerIn;
        phy[0].upperLayerOut --> encap.lowerLayerIn;

        encap.bgOut --> bgIn.in;
        bgOut.out --> encap.bgIn;

        avbCTC.AVBAout[0] --> avbABuffer[0].in;
        avbCTC.AVBBout[0] --> avbBBuffer[0].in;
        avbABuffer[0].out --> phy[0].AVBAin;
        avbBBuffer[0].out --> phy[0].AVBBin;

        srpProtocol.out --> encap.srpIn;
        srpProtocol.in <-- encap.srpOut;
}