Simple Module Gia

File: Overlay/Gia/Gia.ned

C++ definition: click here

The main module of the GIA implementation

Author: Robert Palmer

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.

Used in compound modules:

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

GiaModules

Implementation of the Gia overlay as described in "Making Gnutella-like P2P Systems Scalable" by Yatin Chawathe, Sylvia Ratnasamy, Lee Breslau, Nick Lanham and Scott Shenker, published in "In Proc. ACM SIGCOMM (Aug. 2003)".

Author: Robert Palmer

Parameters:

Name Type Description
localPort numeric

local UDP Port for overlay

debugOutput bool

output debug messages?

maxNeighbors numeric

maximum number of neighbors

minNeighbors numeric

minimum number of neighbors

maxTopAdaptionInterval numeric

maximum topology adaption interval

topAdaptionAggressiveness numeric

topology adaption aggressiveness

maxLevelOfSatisfaction numeric

maximum level of satisfaction

maxHopCount numeric

maximum TTL for sent messages

messageTimeout numeric

message timeout

neighborTimeout numeric

neighbor timeout

sendTokenTimeout numeric

token timeout

tokenWaitTime numeric

delay when sending new token

keyListDelay numeric

delay when sending new key list to our neighbors

updateDelay numeric

delay between two update messages

outputNodeDetails bool

output node details

optimizeReversePath bool

use optimized reverse path?

iterativeLookup bool

do iterative instead of recursive lookups

useCommonAPIforward bool

enable CommonAPI forward() calls

useNextHopRpc bool

use RPCs for route messages

collectPerHopDelay bool

delay statistics for single 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

measureNetwInitPhase bool

gather stats when bootstrapping

hopCountMax numeric

maximum number of overlay hops

drawOverlayTopology numeric

draw arrow to successor node?

keyLength numeric

overlay key length in bits

Gates:

Name Direction Description
from_udp [ ] input

gate from UDP

to_udp [ ] output

gate to UDP

from_app input

gate from application

to_app output

gate to application

direct_in input

gate for sendDirect

Source code:

simple Gia
    parameters:
        localPort : numeric,               // local UDP Port for overlay
        debugOutput : bool,                // output debug messages?
        maxNeighbors : numeric,            // maximum number of neighbors
        minNeighbors : numeric,            // minimum number of neighbors
        maxTopAdaptionInterval : numeric,  // maximum topology adaption interval
        topAdaptionAggressiveness : numeric, // topology adaption aggressiveness
        maxLevelOfSatisfaction : numeric,  // maximum level of satisfaction
        maxHopCount : numeric,             // maximum TTL for sent messages
        messageTimeout : numeric,          // message timeout
        neighborTimeout : numeric,         // neighbor timeout
        sendTokenTimeout : numeric,        // token timeout
        tokenWaitTime : numeric,           // delay when sending new token
        // delay when sending new key list to our neighbors
        keyListDelay : numeric,            
        updateDelay : numeric,             // delay between two update messages
        outputNodeDetails : bool,          // output node details
        optimizeReversePath : bool,        // use optimized reverse path?
        // do iterative instead of recursive lookups
        iterativeLookup : bool,            
        useCommonAPIforward : bool,        // enable CommonAPI forward() calls
        useNextHopRpc : bool,              // use RPCs for route messages
        collectPerHopDelay : bool,         // delay statistics for single hops
        // only join the overlay on application request
        joinOnApplicationRequest : bool,   
        lookupRedundantNodes : numeric,    // number of next hops in each step
        lookupParallelPaths : numeric,     // number of parallel paths
        lookupParallelRpcs : numeric,      // number of nodes to ask in parallel
        // true, if all nodes should be identified with a ping
        lookupSecure : bool,               
        // true, if parallel Rpc results should be merged
        lookupMerge : bool,                
        lookupFailedNodeRpcs : bool,       // communicate failed nodes
        measureNetwInitPhase : bool,       // gather stats when bootstrapping
        hopCountMax : numeric,             // maximum number of overlay hops
        drawOverlayTopology : numeric,     // draw arrow to successor node?
        keyLength : numeric;               // overlay key length in bits

    gates:
        in: from_udp[]; // gate from UDP
        out: to_udp[];  // gate to UDP
        in: from_app;   // gate from application
        out: to_app;    // gate to application
        in: direct_in;  // gate for sendDirect
endsimple