Compound Module OverlayVast

File: Overlay/Vast/OverlayVast.ned

Implementation of the Vast overlay as described in "Scalable peer-to-peer networked virtual environment" by S.-Y. Hu and G.-M. Liao, published in NetGames �04: Proceedings of 3rd ACM SIGCOMM workshop on Network and system support for games, pages

Author: Ingmar Baumgart, Markus Mauch

vast: Vast neighborsList: NeighborsList

Usage diagram:

The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

NeighborsList (no description)
Vast (no description)

Parameters:

Name Type Description
localPort numeric

UDP port for Vast messages

debugOutput bool

enable debug output

keyLength numeric

overlay key length in bits

measureNetwInitPhase bool

gather statistics when bootstrapping

useCommonAPIforward bool

enable CommonAPI forward() calls

collectPerHopDelay bool

delay statistics for single hops

drawOverlayTopology bool

draw arrow to successor node?

hopCountMax numeric

maximum number of overlay hops

joinOnApplicationRequest bool

only join the overlay on application request

lookupRedundantNodes numeric

number of next hops in each step

lookupParallelPaths numeric

number of parallel paths

lookupParallelRpcs numeric

number of nodes to ask in parallel

lookupSecure bool

true, if all nodes should be identified with a ping

lookupMerge bool

true, if parallel Rpc results should be merged

lookupFailedNodeRpcs bool

communicate failed nodes

useNextHopRpc bool

use RPCs for route messages

useBaseLookup bool

use the base lookup class

iterativeLookup bool

do iterative instead of recursive lookups

debugVastOutput bool
ignoreFalseKeys bool
AOIWidth numeric
joinTimeout numeric
pingTimeout numeric

Gates:

Name Direction Description
from_udp input

gate from the UDP layer

to_udp output

gate to the UDP layer

from_app input

gate from the application

to_app output

gate to the application

Unassigned submodule parameters:

Name Type Description

Source code:

module OverlayVast
    parameters:
        localPort: numeric,    // UDP port for Vast messages
        debugOutput: bool,    // enable debug output
        keyLength : numeric,    // overlay key length in bits
        measureNetwInitPhase: bool,    // gather statistics when bootstrapping
        useCommonAPIforward : bool,      // enable CommonAPI forward() calls
        collectPerHopDelay : bool,    // delay statistics for single hops
        drawOverlayTopology : bool,    // draw arrow to successor node?
        hopCountMax : numeric,    // maximum number of overlay hops
        joinOnApplicationRequest : bool,    // only join the overlay on application request

        lookupRedundantNodes : numeric,     // number of next hops in each step
        lookupParallelPaths : numeric,    // number of parallel paths
        lookupParallelRpcs : numeric,    // number of nodes to ask in parallel
        lookupSecure : bool,    // true, if all nodes should be identified with a ping
        lookupMerge : bool,    // true, if parallel Rpc results should be merged
        lookupFailedNodeRpcs : bool,    // communicate failed nodes
        useNextHopRpc : bool,            // use RPCs for route messages

        useBaseLookup : bool,    // use the base lookup class
        iterativeLookup : bool,    // do iterative instead of recursive lookups

        debugVastOutput: bool,
        ignoreFalseKeys: bool,
        AOIWidth: numeric,
        joinTimeout: numeric,
        pingTimeout: numeric;

    gates:
        in: from_udp;    // gate from the UDP layer
        out: to_udp;    // gate to the UDP layer
        in: from_app;    // gate from the application
        out: to_app;    // gate to the application

    submodules:
        vast: Vast;
            parameters:
                localPort=localPort,    // UDP port for Vast messages
                debugOutput=debugOutput,    // enable debug output

                keyLength=keyLength,    // overlay key length in bits
                measureNetwInitPhase=measureNetwInitPhase,    // gather statistics when bootstrapping
                collectPerHopDelay=collectPerHopDelay,    // delay statistics for single hops
                drawOverlayTopology=drawOverlayTopology,    // draw arrow to successor node?
                hopCountMax=hopCountMax,    // maximum number of overlay hops
                joinOnApplicationRequest=joinOnApplicationRequest,    // only join the overlay on application request
                useCommonAPIforward = useCommonAPIforward,
                useNextHopRpc = useNextHopRpc, // use RPCs for route messages

                lookupParallelPaths=lookupParallelPaths,    // number of parallel paths
                lookupParallelRpcs=lookupParallelRpcs,    // number of nodes to ask in parallel
                lookupSecure=lookupSecure,    // true, if all nodes should be identified with a ping
                lookupMerge=lookupMerge,    // true, if parallel Rpc results should be merged
                lookupFailedNodeRpcs=lookupFailedNodeRpcs,    // communicate failed nodes
                lookupRedundantNodes=lookupRedundantNodes,     // number of next hops in each step

                useBaseLookup=useBaseLookup,    // use the base lookup class
                iterativeLookup=iterativeLookup,    // do iterative instead of recursive lookups

                debugVastOutput=debugVastOutput,
                ignoreFalseKeys=ignoreFalseKeys,
                AOIWidth=AOIWidth,
                joinTimeout=joinTimeout,
                pingTimeout=pingTimeout;
            display: "p=60,60;i=block/circle";

        neighborsList: NeighborsList;
            display: "p=180,60;i=block/table";

    connections nocheck:
        from_udp --> vast.from_udp++;
        to_udp <-- vast.to_udp++;
        from_app --> vast.from_app;
        to_app <-- vast.to_app;
endmodule