Compound Module BambooModules

Package: oversim.overlay.bamboo
File: src/overlay/bamboo/Bamboo.ned

Implementation of the Bamboo KBR overlay as described in ...

Author: Gerhard Petruschat

Bamboo PastryRoutingTable PastryLeafSet PastryNeighborhoodSet

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Gates:

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

Unassigned submodule parameters:

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

Source code:

//
// 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;
}