MultiGPSR

Package: inet.routing.gpsr

MultiGPSR

compound module

This module provides GPSR routing for multiple network protocols simultaneously.

ipv4 : GPSR

This module provides Greedy Perimeter Stateless Routing for Wireless Networks.

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

This module provides Greedy Perimeter Stateless Routing for Wireless Networks.

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

This module provides Greedy Perimeter Stateless Routing for Wireless Networks.

Source:
generic: GPSR 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.outputInterface string "wlan0"
ipv4.planarizationMode int 0

GPSR parameters

ipv4.interfaces string "*"
ipv4.beaconInterval double 10s
ipv4.maxJitter double 1s
ipv4.neighborValidityInterval double 30s
ipv4.positionByteLength int 2 * 4B
ipv6.interfaceTableModule string

context parameters

ipv6.routingTableModule string
ipv6.networkProtocolModule string "^.networkLayer.ip"
ipv6.outputInterface string "wlan0"
ipv6.planarizationMode int 0

GPSR parameters

ipv6.interfaces string "*"
ipv6.beaconInterval double 10s
ipv6.maxJitter double 1s
ipv6.neighborValidityInterval double 30s
ipv6.positionByteLength int 2 * 4B
generic.interfaceTableModule string

context parameters

generic.routingTableModule string
generic.networkProtocolModule string "^.networkLayer.ip"
generic.outputInterface string "wlan0"
generic.planarizationMode int 0

GPSR parameters

generic.interfaces string "*"
generic.beaconInterval double 10s
generic.maxJitter double 1s
generic.neighborValidityInterval double 30s
generic.positionByteLength int 2 * 4B

Source code

//
// This module provides GPSR routing for multiple network protocols simultaneously.
//
module MultiGPSR like IGPSR
{
    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: GPSR if enableIPv4 {
            @display("p=100,100");
        }
        ipv6: GPSR if enableIPv6 {
            @display("p=200,100");
        }
        generic: GPSR 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/gpsr/GPSR.ned