MultiDYMO

Package: inet.routing.dymo

MultiDYMO

compound module

This module provides DYMO routing for multiple network protocols simultaneously.

ipv4 : DYMO

This module provides Dynamic MANET On-demand (DYMO also known as AODVv2) Routing based on the IETF...

Source:
ipv4: DYMO if enableIPv4 {
    @display("p=100,100");
} ipv6 : DYMO

This module provides Dynamic MANET On-demand (DYMO also known as AODVv2) Routing based on the IETF...

Source:
ipv6: DYMO if enableIPv6 {
    @display("p=200,100");
} generic : DYMO

This module provides Dynamic MANET On-demand (DYMO also known as AODVv2) Routing based on the IETF...

Source:
generic: DYMO if enableGeneric {
    @display("p=300,100");
} multiplexer : NetworkDatagramMultiplexer

This module provides network protocol specific multiplexing.

Source:
multiplexer: NetworkDatagramMultiplexer {
    @display("p=200,200");
}

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(this.interfaceTableModule));
        ipv4.routingTableModule = default(absPath(this.routingTableModule)  + ".ipv4");
        ipv4.networkProtocolModule = default("^.^.networkLayer.ipv4.ip");
        ipv6.routingTableModule = default(absPath(this.routingTableModule)  + ".ipv6");
        ipv6.networkProtocolModule = default("^.^.networkLayer.ipv6.ipv6");
        generic.routingTableModule = default(absPath(this.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;
}
File: src/inet/routing/dymo/DYMO.ned