Implementation of the Bamboo KBR overlay as described in ...
Author: Gerhard Petruschat
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.
| Name | Direction | Size | Description |
|---|---|---|---|
| udpIn | input |
gate from the UDP layer |
|
| udpOut | output |
gate to the UDP layer |
|
| appIn | input |
gate from the application |
|
| appOut | output |
gate to the application |
| Name | Type | Default value | Description |
|---|---|---|---|
| bamboo.rpcUdpTimeout | double |
default timeout value for direct RPCs |
|
| bamboo.rpcKeyTimeout | double |
default timeout value for routed RPCs |
|
| bamboo.rpcExponentialBackoff | bool |
if true, doubles the timeout for every retransmission |
|
| bamboo.localPort | int |
UDP port for Chord messages |
|
| bamboo.debugOutput | bool |
enable debug output |
|
| bamboo.keyLength | int |
overlay key length in bits |
|
| bamboo.nodeId | string |
optional nodeId as string in hexadecimal notation |
|
| bamboo.useCommonAPIforward | bool |
enable CommonAPI forward() calls |
|
| bamboo.drawOverlayTopology | bool |
draw arrow to successor node? |
|
| bamboo.hopCountMax | int |
maximum number of overlay hops |
|
| bamboo.recNumRedundantNodes | int |
numRedundantNodes for recursive routing |
|
| bamboo.joinOnApplicationRequest | bool |
only join the overlay on application request |
|
| bamboo.collectPerHopDelay | bool |
delay statistics for single hops |
|
| bamboo.routeMsgAcks | bool |
use RPCs for route messages |
|
| bamboo.lookupRedundantNodes | int |
number of next hops in each step |
|
| bamboo.lookupParallelPaths | int |
number of parallel paths |
|
| bamboo.lookupParallelRpcs | int |
number of nodes to ask in parallel |
|
| bamboo.lookupSecure | bool |
true, if all nodes should be identified with a ping |
|
| bamboo.lookupMerge | bool |
true, if parallel Rpc results should be merged |
|
| bamboo.lookupFailedNodeRpcs | bool |
communicate failed nodes |
|
| bamboo.lookupStrictParallelRpcs | bool |
limited the number of concurrent rpcs to parameter parallelRpcs |
|
| bamboo.lookupUseAllParallelResponses | bool |
merge all parallel responses from earlier steps |
|
| bamboo.lookupNewRpcOnEveryTimeout | bool |
send a new RPC immediately after an RPC timeouts |
|
| bamboo.lookupNewRpcOnEveryResponse | bool |
send a new RPC after every response, even if there was no progress |
|
| bamboo.lookupFinishOnFirstUnchanged | bool |
finish lookup, if the last pending RPC returned without progress |
|
| bamboo.lookupVisitOnlyOnce | bool |
if true, the same node is never asked twice during a single lookup |
|
| bamboo.routingType | string |
default routing mode (iterative, semi-recursive,...) |
|
| bamboo.rejoinOnFailure | bool |
rejoin after loosing connection to the overlay? |
|
| bamboo.recordRoute | bool |
record visited hops on route |
|
| bamboo.enableNewLeafs | bool |
enable Pastry API call newLeafs() |
|
| bamboo.optimizeLookup | bool |
whether to search the closest node in findCloserNode() calls |
|
| bamboo.optimisticForward | bool |
forward message immediately in recursive mode, otherwise ping first |
|
| bamboo.avoidDuplicates | bool |
when node seems unreachable but msg already sent, do not retry |
|
| bamboo.bitsPerDigit | int |
bits per Pastry digit |
|
| bamboo.numberOfLeaves | int |
number of entries in leaf set |
|
| bamboo.numberOfNeighbors | int |
number of entries in neighborhoot set |
|
| bamboo.joinTimeout | double |
seconds to wait for STATE message from closest node |
|
| bamboo.repairTimeout | double |
how long to wait for repair messages |
|
| bamboo.pingTimeout | double |
how long to wait for PING reply |
|
| bamboo.pingRetries | int |
how often to retry PING after timeout |
|
| bamboo.useRegularNextHop | bool | ||
| bamboo.alwaysSendUpdate | bool | ||
| bamboo.sendStateWaitAmount | double |
how long to wait when sending state |
|
| bamboo.readyWait | double |
seconds to wait for missing state messages in JOIN phase |
|
| bamboo.repairTaskTimeoutAmount | double |
interval for periodic routing table maintenance |
|
| bamboo.leafsetMaintenanceTimeoutAmount | double |
leafset push/pull interval |
|
| bamboo.globalTuningTimeoutAmount | double |
global tuning interval |
// // Implementation of the Bamboo KBR overlay as described in // ... // // @author Gerhard Petruschat // module BambooModules like IOverlay { gates: input udpIn; // gate from the UDP layer output udpOut; // gate to the UDP layer input appIn; // gate from the application output appOut; // gate to the application submodules: bamboo: Bamboo { parameters: @display("p=60,52;i=block/circle"); } pastryRoutingTable: PastryRoutingTable { parameters: @display("p=140,68;i=block/table"); } pastryLeafSet: PastryLeafSet { parameters: @display("p=220,52;i=block/table"); } pastryNeighborhoodSet: PastryNeighborhoodSet { parameters: @display("p=300,68;i=block/table"); } connections allowunconnected: udpIn --> bamboo.udpIn; udpOut <-- bamboo.udpOut; appIn --> bamboo.appIn; appOut <-- bamboo.appOut; }