Compound Module MultiDYMO

Package: inet.routing.dymo
File: src/inet/routing/dymo/DYMO.ned

This module provides DYMO routing for multiple network protocols simultaneously.

DYMO DYMO DYMO NetworkDatagramMultiplexer

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Parameters:

Name Type Default value Description
enableIPv4 bool true
enableIPv6 bool true
enableGeneric bool true
interfaceTableModule string

The path to the InterfaceTable module

routingTableModule string

Properties:

Name Value Description
display i=block/table

Gates:

Name Direction Size Description
ipIn input
ipOut output

Unassigned submodule parameters:

Name Type Default value Description
ipv4.interfaceTableModule string

context parameters

ipv4.routingTableModule string
ipv4.networkProtocolModule string "^.networkLayer.ip"
ipv4.clientAddresses string "10.10.0.0/24 10.20.0.0"

1. DYMO parameter group

ipv4.useMulticastRREP bool false

USE_MULTICAST_RREP

ipv4.interfaces string "*"

string DEFAULT_METRIC_TYPE = default("HOP_COUNT");

ipv4.activeInterval double 5s

2. DYMO parameter group

ipv4.maxIdleTime double 200s

MAX_IDLETIME

ipv4.maxSequenceNumberLifetime double 300s

MAX_SEQNUM_LIFETIME

ipv4.routeRREQWaitTime double 2s

ROUTE_RREQ_WAIT_TIME

ipv4.rreqHolddownTime double 10s

double UNICAST_MESSAGE_SENT_TIMEOUT @unit("s") = default(1s);

ipv4.maxHopCount int 20

3. DYMO parameter group

ipv4.discoveryAttemptsMax int 3

string MAX_METRIC = default(""); double MAXTIME;

ipv4.appendInformation bool true

4. DYMO parameter group

ipv4.bufferSizePackets int -1

BUFFER_SIZE_PACKETS

ipv4.bufferSizeBytes int -1B

BUFFER_SIZE_BYTES double CONTROL_TRAFFIC_LIMIT

ipv4.maxJitter double 10ms

DYMO extension parameters

ipv4.sendIntermediateRREP bool true
ipv4.minHopLimit int 5
ipv4.maxHopLimit int 10
ipv6.interfaceTableModule string

context parameters

ipv6.routingTableModule string
ipv6.networkProtocolModule string "^.networkLayer.ip"
ipv6.clientAddresses string "10.10.0.0/24 10.20.0.0"

1. DYMO parameter group

ipv6.useMulticastRREP bool false

USE_MULTICAST_RREP

ipv6.interfaces string "*"

string DEFAULT_METRIC_TYPE = default("HOP_COUNT");

ipv6.activeInterval double 5s

2. DYMO parameter group

ipv6.maxIdleTime double 200s

MAX_IDLETIME

ipv6.maxSequenceNumberLifetime double 300s

MAX_SEQNUM_LIFETIME

ipv6.routeRREQWaitTime double 2s

ROUTE_RREQ_WAIT_TIME

ipv6.rreqHolddownTime double 10s

double UNICAST_MESSAGE_SENT_TIMEOUT @unit("s") = default(1s);

ipv6.maxHopCount int 20

3. DYMO parameter group

ipv6.discoveryAttemptsMax int 3

string MAX_METRIC = default(""); double MAXTIME;

ipv6.appendInformation bool true

4. DYMO parameter group

ipv6.bufferSizePackets int -1

BUFFER_SIZE_PACKETS

ipv6.bufferSizeBytes int -1B

BUFFER_SIZE_BYTES double CONTROL_TRAFFIC_LIMIT

ipv6.maxJitter double 10ms

DYMO extension parameters

ipv6.sendIntermediateRREP bool true
ipv6.minHopLimit int 5
ipv6.maxHopLimit int 10
generic.interfaceTableModule string

context parameters

generic.routingTableModule string
generic.networkProtocolModule string "^.networkLayer.ip"
generic.clientAddresses string "10.10.0.0/24 10.20.0.0"

1. DYMO parameter group

generic.useMulticastRREP bool false

USE_MULTICAST_RREP

generic.interfaces string "*"

string DEFAULT_METRIC_TYPE = default("HOP_COUNT");

generic.activeInterval double 5s

2. DYMO parameter group

generic.maxIdleTime double 200s

MAX_IDLETIME

generic.maxSequenceNumberLifetime double 300s

MAX_SEQNUM_LIFETIME

generic.routeRREQWaitTime double 2s

ROUTE_RREQ_WAIT_TIME

generic.rreqHolddownTime double 10s

double UNICAST_MESSAGE_SENT_TIMEOUT @unit("s") = default(1s);

generic.maxHopCount int 20

3. DYMO parameter group

generic.discoveryAttemptsMax int 3

string MAX_METRIC = default(""); double MAXTIME;

generic.appendInformation bool true

4. DYMO parameter group

generic.bufferSizePackets int -1

BUFFER_SIZE_PACKETS

generic.bufferSizeBytes int -1B

BUFFER_SIZE_BYTES double CONTROL_TRAFFIC_LIMIT

generic.maxJitter double 10ms

DYMO extension parameters

generic.sendIntermediateRREP bool true
generic.minHopLimit int 5
generic.maxHopLimit int 10

Source code:

//
// This module provides DYMO routing for multiple network protocols simultaneously.
//
module MultiDYMO like IDYMO
{
    parameters:
        @display("i=block/table");
        bool enableIPv4 = default(true);
        bool enableIPv6 = default(true);
        bool enableGeneric = default(true);
        string interfaceTableModule;   // The path to the InterfaceTable module
        string routingTableModule;

        *.interfaceTableModule = default(absPath(interfaceTableModule));
        ipv4.routingTableModule = default(absPath(routingTableModule)  + ".ipv4");
        ipv4.networkProtocolModule = default("^.^.networkLayer.ipv4.ip");
        ipv6.routingTableModule = default(absPath(routingTableModule)  + ".ipv6");
        ipv6.networkProtocolModule = default("^.^.networkLayer.ipv6.ipv6");
        generic.routingTableModule = default(absPath(routingTableModule)  + ".generic");
        generic.networkProtocolModule = default("^.^.networkLayer.generic.gnp");

    gates:
        input ipIn;
        output ipOut;

    submodules:
        ipv4: DYMO if enableIPv4 {
            @display("p=100,100");
        }
        ipv6: DYMO if enableIPv6 {
            @display("p=200,100");
        }
        generic: DYMO if enableGeneric {
            @display("p=300,100");
        }
        multiplexer: NetworkDatagramMultiplexer {
            @display("p=200,200");
        }

    connections allowunconnected:
        multiplexer.upperOut --> ipOut;
        ipIn --> multiplexer.upperIn;
        multiplexer.lowerOut++ --> ipv4.ipIn if enableIPv4;
        ipv4.ipOut --> multiplexer.lowerIn++ if enableIPv4;
        multiplexer.lowerOut++ --> ipv6.ipIn if enableIPv6;
        ipv6.ipOut --> multiplexer.lowerIn++ if enableIPv6;
        multiplexer.lowerOut++ --> generic.ipIn if enableGeneric;
        generic.ipOut --> multiplexer.lowerIn++ if enableGeneric;
}