StreamPolicyLayer

Package: inet.linklayer.ieee8021q

compound module StreamPolicyLayer

(no description)

StreamPolicyLayerupperLayerIn --> streamIdentifier.upperLayerInstreamIdentifier.lowerLayerOut --> streamRelay.upperLayerInstreamRelay.lowerLayerOut --> streamCoder.upperLayerInstreamCoder.lowerLayerOut --> lowerLayerOutlowerLayerIn --> streamCoder.lowerLayerInstreamCoder.upperLayerOut --> streamRelay.lowerLayerInstreamRelay.upperLayerOut --> streamIdentifier.lowerLayerInstreamIdentifier.upperLayerOut --> upperLayerOutstreamIdentifier: inet.protocolelement.redundancy.StreamIdentifierLayer (like IProtocolLayer) StreamIdentifierLayer: Wraps a stream identifier into a protocol layer so that it can be used in a layered compound module. IProtocolLayer: Interface for all protocol layer modules that connect to a higher and to a lower protocol layer,... Source: streamIdentifier: <default("StreamIdentifierLayer")> like IProtocolLayer { @display("p=300,150"); }streamIdentifierstreamRelay: inet.protocolelement.redundancy.StreamRelayLayer (like IProtocolLayer) StreamRelayLayer: Combines a stream merger and a stream splitter module into a stream relay layer. IProtocolLayer: Interface for all protocol layer modules that connect to a higher and to a lower protocol layer,... Source: streamRelay: <default("StreamRelayLayer")> like IProtocolLayer { @display("p=300,300"); }streamRelaystreamCoder: inet.protocolelement.redundancy.StreamCoderLayer (like IProtocolLayer) StreamCoderLayer: Combines a stream decoder and a stream encoder into a layer. IProtocolLayer: Interface for all protocol layer modules that connect to a higher and to a lower protocol layer,... Source: streamCoder: <default("StreamCoderLayer")> like IProtocolLayer { @display("p=300,450"); }streamCoder

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

Ieee8021rLayer

compound module

(no description)

Parameters

Name

Type

Default value

Description

interfaceTableModule

string

Properties

Name

Value

Description

display

i=block/layer

Gates

Name

Direction

Size

Description

upperLayerIn

input

upperLayerOut

output

lowerLayerIn

input

lowerLayerOut

output

Unassigned submodule parameters

Name

Type

Default value

Description

streamIdentifier.identifier.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

streamIdentifier.identifier.hasSequenceNumbering

bool

true

streamIdentifier.identifier.mapping

object

[]

Array of objects, where each object specifies a stream name and a packetFilter, for example [{stream: “s0”, packetFilter: “*”}, …]

streamRelay.merger.displayStringTextFormat

string

“dropped {numDroppedPackets}/{numProcessedPackets} pk ({droppedTotalLength}/{processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

streamRelay.merger.backpressure

bool

false

streamRelay.merger.mapping

object

{}

Map of input streams to output streams. An empty string means no stream. For example, {s0: “s1”, …}

streamRelay.merger.bufferSize

int

10

Window size for sequence numbers per stream.

streamRelay.splitter.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

streamRelay.splitter.mapping

object

{}

Map from input stream names to array of output stream names, empty string means no stream

streamCoder.decoder.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

streamCoder.decoder.interfaceTableModule

string

Relative module path of the interface table

streamCoder.decoder.mapping

object

[]

Array of objects, where each object maps a network interface name pattern, a source address, a destination address, a VLAN id, and a PCP value to a stream name, for example [{stream: “s1”, interface: “eth0”, destination: “dest1”, pcp: 3}, …]

streamCoder.encoder.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

streamCoder.encoder.mapping

object

[]

Array of objects, where each object maps a stream name to a VLAN ID and PCP value, for example [{stream: “s1”, vlan: 12, pcp: 7}, …]

Source code

module StreamPolicyLayer like IProtocolLayer
{
    parameters:
        string interfaceTableModule;
        *.interfaceTableModule = default(this.interfaceTableModule);
        @display("i=block/layer");
    gates:
        input upperLayerIn;
        output upperLayerOut;
        input lowerLayerIn;
        output lowerLayerOut;
    submodules:
        streamIdentifier: <default("StreamIdentifierLayer")> like IProtocolLayer {
            @display("p=300,150");
        }
        streamRelay: <default("StreamRelayLayer")> like IProtocolLayer {
            @display("p=300,300");
        }
        streamCoder: <default("StreamCoderLayer")> like IProtocolLayer {
            @display("p=300,450");
        }
    connections:
        upperLayerIn --> { @display("m=n"); } --> streamIdentifier.upperLayerIn;
        streamIdentifier.lowerLayerOut --> streamRelay.upperLayerIn;
        streamRelay.lowerLayerOut --> streamCoder.upperLayerIn;
        streamCoder.lowerLayerOut --> { @display("m=s"); } --> lowerLayerOut;

        lowerLayerIn --> { @display("m=s"); } --> streamCoder.lowerLayerIn;
        streamCoder.upperLayerOut --> streamRelay.lowerLayerIn;
        streamRelay.upperLayerOut --> streamIdentifier.lowerLayerIn;
        streamIdentifier.upperLayerOut --> { @display("m=n"); } --> upperLayerOut;
}

File: src/inet/linklayer/ieee8021q/StreamPolicyLayer.ned