Compound Module OverlayBroose

File: Overlay/Broose/OverlayBroose.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.

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
keyLength numeric
localPort numeric
debugOutput bool
joinOnApplicationRequest bool

only join the overlay on application request

lookupRedundantNodes numeric
lookupParallelPaths numeric
lookupParallelRpcs numeric
lookupSecure bool
lookupMerge bool
lookupFailedNodeRpcs bool
shiftingBits numeric
hopCountMax numeric
measureNetwInitPhase bool
drawOverlayTopology bool

Gates:

Name Direction Description
from_udp input
to_udp output
from_app input
to_app output

Unassigned submodule parameters:

Name Type Description
broose.useBaseLookup bool

use the base lookup class

broose.iterativeLookup bool

do iterative instead of recursive lookups

broose.bucketSize numeric
broose.rBucketSize numeric
broose.joinDelay numeric
broose.userDist numeric
broose.refreshTime numeric
broose.pingDelay numeric
broose.numberRetries numeric
broose.parallelRequests numeric

Source code:

module OverlayBroose

	parameters:
		keyLength: numeric,
		localPort: numeric,
		debugOutput: bool,
		joinOnApplicationRequest : bool, // only join the overlay on application request

                lookupRedundantNodes : numeric,
                lookupParallelPaths : numeric,
                lookupParallelRpcs : numeric,
                lookupSecure : bool,
                lookupMerge : bool,
		lookupFailedNodeRpcs : bool,

		shiftingBits : numeric,

		hopCountMax: numeric,
		measureNetwInitPhase: bool,
		drawOverlayTopology: bool;

	gates:
        	in: from_udp;
        	out: to_udp;
		in: from_app;
		out: to_app;

	submodules:
		rBucket : BrooseBucket[2^shiftingBits];
			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: 
				    keyLength = keyLength,
				    localPort = localPort,
				    debugOutput = debugOutput,
				    joinOnApplicationRequest = joinOnApplicationRequest,
                                    shiftingBits = shiftingBits,
                                    lookupRedundantNodes = lookupRedundantNodes,
                                    lookupParallelPaths = lookupParallelPaths,
                                    lookupParallelRpcs = lookupParallelRpcs,
                                    lookupSecure = lookupSecure,
                                    lookupMerge = lookupMerge,
				    lookupFailedNodeRpcs = lookupFailedNodeRpcs,
				    hopCountMax = hopCountMax,
				    measureNetwInitPhase = measureNetwInitPhase,
				    drawOverlayTopology = drawOverlayTopology;
            		display: "p=60,60;i=block/circle";


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

endmodule