Compound Module BrooseModules

File: Overlay/Broose/Broose.ned

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"

Author: Jochen Schenk

rBucket: BrooseBucket lBucket: BrooseBucket bBucket: BrooseBucket broose: Broose

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.

Broose

The main module of the Broose implementation

BrooseBucket

This modul contains the buckets of the Broose implementation.

Parameters:

Name Type Description
brooseShiftingBits numeric

number of bits shifted in/out each step

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
broose.keyLength numeric

overlay key length

broose.localPort numeric

port on which the node is listening

broose.debugOutput bool

write debug information?

broose.collectPerHopDelay bool

delay statistics for single hops

broose.joinOnApplicationRequest bool

only join the overlay on application request

broose.useCommonAPIforward bool

enable CommonAPI forward() calls

broose.routeMsgAcks bool

use RPCs for route messages

broose.recNumRedundantNodes numeric

numRedundantNodes for recursive routing

broose.routingType string

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

broose.lookupRedundantNodes numeric

number of next hops in each step

broose.lookupParallelPaths numeric

number of parallel paths

broose.lookupParallelRpcs numeric

number of nodes to ask in parallel

broose.lookupSecure bool

true, if all nodes should be identified with a ping

broose.lookupMerge bool

true, if parallel Rpc results should be merged

broose.lookupStrictParallelRpcs bool

limited the number of concurrent rpcs to parameter parallelRpcs

broose.lookupUseAllParallelResponses bool

merge all parallel responses from earlier steps

broose.lookupNewRpcOnEveryTimeout bool

send a new RPC immediately after an RPC timeouts

broose.lookupNewRpcOnEveryResponse bool

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

broose.lookupFinishOnFirstUnchanged bool

finish lookup, if the last pending RPC returned without progress

broose.lookupFailedNodeRpcs bool

communicate failed Nodes

broose.hopCountMax numeric

maximum hops for a lookup

broose.drawOverlayTopology bool

draw arrow to successor node?

broose.bucketSize numeric

number of nodes a bucket contains

broose.rBucketSize numeric

number of nodes a right-bucket contains

broose.joinDelay numeric

time to wait to join the overlay after simulation start

broose.userDist numeric

number of hops that are added to the estimated hop count

broose.refreshTime numeric

time interval between two pings

broose.pingDelay numeric

time interval between bucket refreshs

broose.numberRetries numeric

number of retries in case of timeout

broose.parallelRequests numeric

number ob parallel requests

Source code:

module BrooseModules
    parameters:
        brooseShiftingBits : numeric; // number of bits shifted in/out each step
    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:
        rBucket : BrooseBucket[2^brooseShiftingBits];
            display: "i=block/table";
        lBucket : BrooseBucket;
            display: "p=360,60;i=block/table";
        bBucket : BrooseBucket;
            display: "p=420,60;i=block/table";
        broose: Broose;
            parameters:
                brooseShiftingBits = brooseShiftingBits;
            display: "p=60,60;i=block/circle";

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

endmodule