Simple Module Broose

File: Overlay/Broose/Broose.ned

C++ definition: click here

The main module of the Broose implementation

Author: Jochen Schenk

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.

BrooseModules

Implementation of the Broose overlay as described in "Broose: A Practical Distributed Hashtable based on the De-Bruijn Topology" by A. Gai and L. Viennot, published in "Technical report, INRIA, june 2004"

Parameters:

Name Type Description
keyLength numeric

overlay key length

localPort numeric

port on which the node is listening

debugOutput bool

write debug information?

collectPerHopDelay bool

delay statistics for single hops

joinOnApplicationRequest bool

only join the overlay on application request

useCommonAPIforward bool

enable CommonAPI forward() calls

routeMsgAcks bool

use RPCs for route messages

recNumRedundantNodes numeric

numRedundantNodes for recursive routing

routingType string

default routing mode (iterative, semi-recursive,...)

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

lookupStrictParallelRpcs bool

limited the number of concurrent rpcs to parameter parallelRpcs

lookupUseAllParallelResponses bool

merge all parallel responses from earlier steps

lookupNewRpcOnEveryTimeout bool

send a new RPC immediately after an RPC timeouts

lookupNewRpcOnEveryResponse bool

send a new RPC after every response, even if there was no progress

lookupFinishOnFirstUnchanged bool

finish lookup, if the last pending RPC returned without progress

lookupFailedNodeRpcs bool

communicate failed Nodes

hopCountMax numeric

maximum hops for a lookup

drawOverlayTopology bool

draw arrow to successor node?

bucketSize numeric

number of nodes a bucket contains

rBucketSize numeric

number of nodes a right-bucket contains

joinDelay numeric

time to wait to join the overlay after simulation start

brooseShiftingBits numeric

number of bits shifted in/out each step

userDist numeric

number of hops that are added to the estimated hop count

refreshTime numeric

time interval between two pings

pingDelay numeric

time interval between bucket refreshs

numberRetries numeric

number of retries in case of timeout

parallelRequests numeric

number ob parallel requests

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

direct_in input

gate for sendDirect

Source code:

simple Broose
    parameters:
        keyLength : numeric,    // overlay key length	
        localPort: numeric,    // port on which the node is listening
        debugOutput: bool,    // write debug information?
        collectPerHopDelay : bool,    // delay statistics for single hops
        joinOnApplicationRequest : bool,    // only join the overlay on application request
        useCommonAPIforward : bool,    // enable CommonAPI forward() calls
        routeMsgAcks : bool,            // use RPCs for route messages
        recNumRedundantNodes : numeric, // numRedundantNodes for recursive routing
        routingType : string, // default routing mode (iterative, semi-recursive,...)

        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
        lookupStrictParallelRpcs: bool, // limited the number of concurrent rpcs to parameter parallelRpcs
        lookupUseAllParallelResponses: bool, // merge all parallel responses from earlier steps
        lookupNewRpcOnEveryTimeout: bool, // send a new RPC immediately after an RPC timeouts
        lookupNewRpcOnEveryResponse: bool, // send a new RPC after every response, even if there was no progress
        lookupFinishOnFirstUnchanged: bool, // finish lookup, if the last pending RPC returned without progress        
        lookupFailedNodeRpcs : bool,    // communicate failed Nodes

        hopCountMax: numeric,    // maximum hops for a lookup
        drawOverlayTopology: bool,    // draw arrow to successor node?
        bucketSize: numeric,    // number of nodes a bucket contains
        rBucketSize: numeric,    // number of nodes a right-bucket contains
        joinDelay: numeric,    // time to wait to join the overlay after simulation start 
        brooseShiftingBits: numeric,    // number of bits shifted in/out each step
        userDist: numeric,    // number of hops that are added to the estimated hop count
        refreshTime: numeric,    // time interval between two pings
        pingDelay: numeric,    // time interval between bucket refreshs
        numberRetries: numeric,    // number of retries in case of timeout
        parallelRequests: numeric;    // number ob parallel requests

    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
        in: direct_in;    // gate for sendDirect
endsimple