File: Overlay/Chord/Chord.ned
C++ definition: click here
The main module of the Chord implementation
Author: Ingmar Baumgart, Markus Mauch
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.
ChordModules | Implementation of the Chord KBR overlay as described in "Chord: A Scalable Peer-to-Peer Lookup Protocol for Internet Applications" by I. Stoica et al. published in Transactions on Networking. |
Name | Type | Description |
---|---|---|
localPort | numeric | UDP port for Chord messages |
debugOutput | bool | enable debug output |
keyLength | numeric | overlay key length in bits |
useCommonAPIforward | bool | enable CommonAPI forward() calls |
drawOverlayTopology | bool | draw arrow to successor node? |
hopCountMax | numeric | maximum number of overlay hops |
recNumRedundantNodes | numeric | numRedundantNodes for recursive routing |
joinOnApplicationRequest | bool | only join the overlay on application request |
collectPerHopDelay | bool | delay statistics for single hops |
routeMsgAcks | bool | use RPCs for route messages |
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 |
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 |
routingType | string | default routing mode (iterative, semi-recursive,...) |
successorListSize | numeric | max number of successors in the SuccessorList |
joinRetry | numeric | after joinRetry unsuccessful join requests, we fetch a need bootstrap node from the BootstrapOracle |
stabilizeRetry | numeric | retries before a successor is considered failed |
joinDelay | numeric | delay between join retries (sec) |
stabilizeDelay | numeric | stabilize interval (sec) |
fixfingersDelay | numeric | fix_fingers interval (sec) |
aggressiveJoinMode | bool | use modified (faster) JOIN protocol |
extendedFingerTable | bool | use the extended finger table? |
numFingerCandidates | numeric | number of fingers when using extended finger table |
proximityRouting | bool | use proximity routing |
mergeOptimizationL1 | bool | enable merge optimization OPL1 |
mergeOptimizationL2 | bool | activate merge optimization OPL2 |
mergeOptimizationL3 | bool | activate merge optimization OPL3 |
mergeOptimizationL4 | bool | activate merge optimization OPL4 |
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 |
simple Chord parameters: localPort : numeric, // UDP port for Chord messages debugOutput : bool, // enable debug output keyLength : numeric, // overlay key length in bits useCommonAPIforward : bool, // enable CommonAPI forward() calls drawOverlayTopology : bool, // draw arrow to successor node? hopCountMax : numeric, // maximum number of overlay hops recNumRedundantNodes : numeric, // numRedundantNodes for recursive routing // only join the overlay on application request joinOnApplicationRequest : bool, collectPerHopDelay : bool, // delay statistics for single hops routeMsgAcks : bool, // use RPCs for route messages 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 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 routingType : string, // default routing mode (iterative, semi-recursive,...) // max number of successors in the SuccessorList successorListSize : numeric, // after joinRetry unsuccessful join requests, we fetch // a need bootstrap node from the BootstrapOracle joinRetry : numeric, // retries before a successor is considered failed stabilizeRetry : numeric, joinDelay : numeric, // delay between join retries (sec) stabilizeDelay : numeric, // stabilize interval (sec) fixfingersDelay : numeric, // fix_fingers interval (sec) aggressiveJoinMode : bool, // use modified (faster) JOIN protocol extendedFingerTable : bool, // use the extended finger table? // number of fingers when using extended finger table numFingerCandidates : numeric, proximityRouting : bool, // use proximity routing mergeOptimizationL1 : bool, // enable merge optimization OPL1 mergeOptimizationL2 : bool, // activate merge optimization OPL2 mergeOptimizationL3 : bool, // activate merge optimization OPL3 mergeOptimizationL4 : bool; // activate merge optimization OPL4 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