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
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.
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. |
Name | Type | Description |
---|---|---|
keyLength | numeric | the length of overlay keys |
localPort | numeric | port on which the node is listening |
debugOutput | bool | debug output yes or no |
iterativeLookup | bool | do iterative instead of recursive lookups |
useCommonAPIforward | bool | enable CommonAPI forward() calls |
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 |
shiftingBits | numeric | number of bits shifted in/out each step |
useNextHopRpc | bool | use RPCs for route messages |
hopCountMax | numeric | maximum hop count for a lookup |
measureNetwInitPhase | bool | if true, some statistics are collected in init phase, too |
collectPerHopDelay | bool | delay statistics for single hops |
drawOverlayTopology | bool | draw arrow to successor node? |
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 |
Name | Type | Description |
---|---|---|
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 |
module BrooseModules parameters: keyLength: numeric, // the length of overlay keys localPort: numeric, // port on which the node is listening debugOutput: bool, // debug output yes or no iterativeLookup : bool, // do iterative instead of recursive lookups useCommonAPIforward : bool, // enable CommonAPI forward() calls 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 shiftingBits : numeric, // number of bits shifted in/out each step useNextHopRpc : bool, // use RPCs for route messages hopCountMax: numeric, // maximum hop count for a lookup measureNetwInitPhase: bool, // if true, some statistics are collected in init phase, too collectPerHopDelay : bool, // delay statistics for single hops drawOverlayTopology: bool; // draw arrow to successor node? 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^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, // the length of overlay keys localPort = localPort, // port on which the node is listening debugOutput = debugOutput, // debug output yes or no iterativeLookup = iterativeLookup, // do iterative instead of recursive lookups useCommonAPIforward = useCommonAPIforward, // enable CommonAPI forward() calls joinOnApplicationRequest = joinOnApplicationRequest, // only join the overlay on application request shiftingBits = shiftingBits, // number of bits shifted in/out each step lookupRedundantNodes = lookupRedundantNodes, // number of next hops in each step 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 hopCountMax = hopCountMax, // maximum hop count for a lookup measureNetwInitPhase = measureNetwInitPhase, // if true, some statistics are collected in init phase, too collectPerHopDelay = collectPerHopDelay, // delay statistics for single hops useNextHopRpc = useNextHopRpc, // use RPCs for route messages drawOverlayTopology = drawOverlayTopology; // draw arrow to successor node? 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