|
OverSim
|
Bamboo overlay module. More...
#include <Bamboo.h>
Public Member Functions | |
| virtual | ~Bamboo () |
| virtual void | initializeOverlay (int stage) |
| Initializes derived-class-attributes. | |
| virtual void | handleTimerEvent (cMessage *msg) |
| void | handleRpcResponse (BaseResponseMessage *msg, cPolymorphic *context, int rpcId, simtime_t rtt) |
| This method is called if an RPC response has been received. | |
| void | handleRequestLeafSetResponse (RequestLeafSetResponse *response) |
| void | handleStateMessage (PastryStateMessage *msg) |
| processes state messages, merging with own state tables | |
Public Member Functions inherited from BasePastry | |
| virtual | ~BasePastry () |
| int | getMaxNumSiblings () |
| Query the maximum number of siblings (nodes close to a key) that are maintained by this overlay protocol. | |
| int | getMaxNumRedundantNodes () |
| Query the maximum number of redundant next hop nodes that are returned by findNode(). | |
| virtual void | handleAppMessage (BaseOverlayMessage *msg) |
| processes messages from application | |
| virtual void | updateTooltip () |
| updates information shown in tk-environment | |
| virtual NodeVector * | findNode (const OverlayKey &key, int numRedundantNodes, int numSiblings, BaseOverlayMessage *msg) |
| Implements the find node call. | |
| virtual void | finishOverlay () |
| collects statistical data in derived class | |
| virtual bool | isSiblingFor (const NodeHandle &node, const OverlayKey &key, int numSiblings, bool *err) |
| Query if a node is among the siblings for a given key. | |
| virtual AbstractLookup * | createLookup (RoutingType routingType=DEFAULT_ROUTING, const BaseOverlayMessage *msg=NULL, const cPacket *dummy=NULL, bool appLookup=false) |
| Creates an abstract iterative lookup instance. | |
| uint8_t | getBitsPerDigit () |
| void | proxCallback (const TransportAddress &node, int rpcId, cPolymorphic *contextPointer, Prox prox) |
| virtual OverlayKey | estimateMeanDistance () |
| returns mean distance between OverlayKeys in the network | |
| uint8_t | getRTLastRow () const |
| std::vector< TransportAddress > * | getRTRow (uint8_t index) const |
| std::vector< TransportAddress > * | getLeafSet () const |
Public Member Functions inherited from BaseOverlay | |
| BaseOverlay () | |
| virtual | ~BaseOverlay () |
| Virtual destructor. | |
| States | getState () |
| bool | isMalicious () |
| Returns true, if node is malicious. | |
| bool | isInSimpleMultiOverlayHost () |
| Returns true if overlay is one in an array, inside a SimpleMultiOverlayHost. | |
| const simtime_t & | getCreationTime () |
| void | join (const OverlayKey &nodeID=OverlayKey::UNSPECIFIED_KEY) |
| Join the overlay with a given nodeID. | |
| virtual NodeVector * | local_lookup (const OverlayKey &key, int num, bool safe) |
| finds nodes closest to the given OverlayKey | |
| virtual NodeVector * | neighborSet (int num) |
| void | sendMessageToUDP (const TransportAddress &dest, cPacket *msg, simtime_t delay=SIMTIME_ZERO) |
| Sends message to underlay. | |
| void | sendToKey (const OverlayKey &key, BaseOverlayMessage *message, int numSiblings=1, const std::vector< TransportAddress > &sourceRoute=TransportAddress::UNSPECIFIED_NODES, RoutingType routingType=DEFAULT_ROUTING) |
| Sends a message to an overlay node, with the generic routing algorithm. | |
| void | registerComp (CompType compType, cModule *module) |
| cModule * | getCompModule (CompType compType) |
| cGate * | getCompRpcGate (CompType compType) |
| void | sendMessageToAllComp (cMessage *msg, CompType srcComp) |
| bool | providesKbr () |
| bool | getMeasureAuthBlock () |
| BootstrapList & | getBootstrapList () const |
| virtual uint32_t | estimateOverlaySize () |
| estimates the current number of nodes online | |
Public Member Functions inherited from BaseRpc | |
| BaseRpc () | |
| const NodeHandle & | getThisNode () |
| Returns the NodeHandle of this node. | |
| simtime_t | getUdpTimeout () |
Public Member Functions inherited from RpcListener | |
| virtual | ~RpcListener () |
| destructor | |
Public Member Functions inherited from BaseTcpSupport | |
| virtual void | socketDataArrived (int connId, void *yourPtr, cPacket *msg, bool urgent) |
| virtual void | socketEstablished (int connId, void *yourPtr) |
| virtual void | socketPeerClosed (int connId, void *yourPtr) |
| virtual void | socketFailure (int connId, void *yourPtr, int code) |
| virtual void | socketStatusArrived (int connId, void *yourPtr, TCPStatusInfo *status) |
Public Member Functions inherited from TopologyVis | |
| TopologyVis () | |
| void | showOverlayNeighborArrow (const NodeHandle &neighbor, bool flush=true, const char *displayString=NULL) |
| Draws an arrow from this node to neighbor. | |
| void | deleteOverlayNeighborArrow (const NodeHandle &neighbor) |
| Removes an arrow from this node to neighbor. | |
Public Member Functions inherited from LookupListener | |
| virtual | ~LookupListener () |
| virtual destructor | |
Protected Member Functions | |
| void | lookupFinished (AbstractLookup *lookup) |
| virtual void | changeState (int toState) |
| changes node state | |
Protected Member Functions inherited from BasePastry | |
| virtual bool | handleRpcCall (BaseCallMessage *msg) |
| Processes Remote-Procedure-Call invocation messages. | |
| virtual void | handleRpcTimeout (BaseCallMessage *call, const TransportAddress &dest, cPolymorphic *context, int rpcId, const OverlayKey &key) |
| This method is called if an RPC timeout has been reached. | |
| void | handleRequestLeafSetCall (RequestLeafSetCall *call) |
| void | handleRequestRoutingRowCall (RequestRoutingRowCall *call) |
| virtual void | handleRequestRoutingRowResponse (RequestRoutingRowResponse *response) |
| PastryStateMessage * | createStateMessage (enum PastryStateMsgType type=PASTRY_STATE_STD, simtime_t timestamp=-1, int16_t row=-1, bool lastHop=false) |
| virtual void | checkProxCache (void)=0 |
| checks whether proxCache is complete, takes appropriate actions depending on the protocol state | |
| virtual void | purgeVectors (void) |
| delete all information/messages caching vectors, used for restarting overlay or finish() | |
| void | baseInit (void) |
| initializes parameters and variables used in both Bamboo and Pastry | |
| void | baseChangeState (int) |
| changes node state, but leaves specific behavour, scheduling tasks in particular, to the inheriting protocols | |
| OverlayKey | distance (const OverlayKey &x, const OverlayKey &y, bool useAlternative=false) const |
| This method should implement the distance between two keys. | |
| virtual void | iterativeJoinHook (BaseOverlayMessage *msg, bool incrHopCount) |
| void | prePing (const PastryStateMessage *stateMsg) |
| ping all nodes in a given state message. | |
| void | pingNodes (void) |
| ping all nodes in the pastry state message pointed to by private member stateCache | |
| void | determineAliveTable (const PastryStateMessage *stateMsg) |
| change the aliveTable to match the given stateMsg. | |
| void | newLeafs (void) |
| Pastry API: send newLeafs() to application if enabled. | |
Protected Member Functions inherited from BaseOverlay | |
| int | numInitStages () const |
| Sets init stage. | |
| void | bindToPort (int port) |
| Tells UDP we want to get all packets arriving on the given port. | |
| virtual void | route (const OverlayKey &key, CompType destComp, CompType srcComp, cPacket *msg, const std::vector< TransportAddress > &sourceRoute=TransportAddress::UNSPECIFIED_NODES, RoutingType routingType=DEFAULT_ROUTING) |
| Routes message through overlay. | |
| void | callDeliver (BaseOverlayMessage *msg, const OverlayKey &destKey) |
| Calls deliver function in application. | |
| void | callForward (const OverlayKey &key, BaseRouteMessage *msg, const NodeHandle &nextHopNode) |
| Calls forward function in application. | |
| void | callUpdate (const NodeHandle &node, bool joined) |
| Informs application about state changes of nodes or newly joined nodes. | |
| void | handleMessage (cMessage *msg) |
| Checks for message type and calls corresponding method. | |
| void | handleBaseOverlayMessage (BaseOverlayMessage *msg, const OverlayKey &destKey=OverlayKey::UNSPECIFIED_KEY) |
| Handles a BaseOverlayMessage | |
| virtual void | handleUDPMessage (BaseOverlayMessage *msg) |
| Processes messages from underlay. | |
| virtual void | handleAppMessage (cMessage *msg) |
| Processes "timer" self-messages. | |
| virtual void | receiveChangeNotification (int category, const cPolymorphic *details) |
| callback-method for events at the NotificationBoard | |
| virtual void | handleTransportAddressChangedNotification () |
| This method gets call if the node has a new TransportAddress (IP address) because he changed his access network. | |
| virtual void | handleNodeLeaveNotification () |
| This method gets call **.gracefulLeaveDelay seconds before it is killed. | |
| virtual void | handleNodeGracefulLeaveNotification () |
| This method gets call **.gracefulLeaveDelay seconds before it is killed if this node is among the gracefulLeaveProbability nodes. | |
| virtual void | recordOverlaySentStats (BaseOverlayMessage *msg) |
| Collect overlay specific sent messages statistics. | |
| void | setOverlayReady (bool ready) |
| Sets the overlay ready icon and register/deregisters the node at the GlobalNodeList. | |
| virtual void | removeLookup (AbstractLookup *lookup) |
| Removes the abstract lookup instance. | |
| virtual void | joinOverlay () |
| Join the overlay with a given nodeID in thisNode.key. | |
| virtual void | joinForeignPartition (const NodeHandle &node) |
| Join another overlay partition with the given node as bootstrap node. | |
| virtual bool | handleFailedNode (const TransportAddress &failed) |
| Handles a failed node. | |
| virtual void | lookupRpc (LookupCall *call) |
| virtual void | nextHopRpc (NextHopCall *call) |
| void | countFindNodeCall (const FindNodeCall *call) |
| void | countFailedNodeCall (const FailedNodeCall *call) |
| bool | internalHandleRpcCall (BaseCallMessage *msg) |
| Handles internal rpc requests. | |
| void | internalHandleRpcResponse (BaseResponseMessage *msg, cPolymorphic *context, int rpcId, simtime_t rtt) |
| Handles rpc responses internal in base classes | |
| void | internalHandleRpcTimeout (BaseCallMessage *msg, const TransportAddress &dest, cPolymorphic *context, int rpcId, const OverlayKey &destKey) |
| Handles rpc timeouts internal in base classes | |
| void | internalSendRouteRpc (BaseRpcMessage *message, const OverlayKey &destKey, const std::vector< TransportAddress > &sourceRoute, RoutingType routingType) |
| CompType | getThisCompType () |
| Return the component type of this module. | |
Protected Member Functions inherited from BaseRpc | |
| void | initRpcs () |
| Initializes Remote-Procedure state. | |
| void | finishRpcs () |
| Deinitializes Remote-Procedure state. | |
| virtual void | internalHandleRpcMessage (BaseRpcMessage *msg) |
| Handles incoming rpc messages and delegates them to the corresponding listeners or handlers. | |
| uint32_t | sendRouteRpcCall (CompType destComp, const TransportAddress &dest, const OverlayKey &destKey, BaseCallMessage *msg, cPolymorphic *context=NULL, RoutingType routingType=DEFAULT_ROUTING, simtime_t timeout=-1, int retries=0, int rpcId=-1, RpcListener *rpcListener=NULL) |
| Routes a Remote-Procedure-Call message to an OverlayKey. | |
| uint32_t | sendRouteRpcCall (CompType destComp, const OverlayKey &destKey, BaseCallMessage *msg, cPolymorphic *context=NULL, RoutingType routingType=DEFAULT_ROUTING, simtime_t timeout=-1, int retries=0, int rpcId=-1, RpcListener *rpcListener=NULL) |
| Routes a Remote-Procedure-Call message to an OverlayKey. | |
| uint32_t | sendRouteRpcCall (CompType destComp, const TransportAddress &dest, BaseCallMessage *msg, cPolymorphic *context=NULL, RoutingType routingType=DEFAULT_ROUTING, simtime_t timeout=-1, int retries=0, int rpcId=-1, RpcListener *rpcListener=NULL) |
| Sends a Remote-Procedure-Call message using the overlay's UDP port This replaces ROUTE_DIRECT calls! | |
| uint32_t | sendUdpRpcCall (const TransportAddress &dest, BaseCallMessage *msg, cPolymorphic *context=NULL, simtime_t timeout=-1, int retries=0, int rpcId=-1, RpcListener *rpcListener=NULL) |
| Sends a Remote-Procedure-Call message to the underlay | |
| uint32_t | sendInternalRpcCall (CompType destComp, BaseCallMessage *msg, cPolymorphic *context=NULL, simtime_t timeout=-1, int retries=0, int rpcId=-1, RpcListener *rpcListener=NULL) |
| Sends an internal Remote-Procedure-Call between two tiers | |
| void | cancelRpcMessage (uint32_t nonce) |
| Cancels a Remote-Procedure-Call. | |
| void | cancelAllRpcs () |
| Cancels all RPCs. | |
| void | sendRpcResponse (TransportType transportType, CompType destComp, const TransportAddress &dest, const OverlayKey &destKey, BaseCallMessage *call, BaseResponseMessage *response) |
| Send Remote-Procedure response message and deletes call message. | |
| void | sendRpcResponse (BaseCallMessage *call, BaseResponseMessage *response) |
| Send Remote-Procedure response message to UDP and deletes call message. | |
| int | pingNode (const TransportAddress &dest, simtime_t timeout=-1, int retries=0, cPolymorphic *context=NULL, const char *caption="PING", RpcListener *rpcListener=NULL, int rpcId=-1, TransportType transportType=INVALID_TRANSPORT) |
| ping a node by its TransportAddress | |
| virtual void | pingResponse (PingResponse *pingResponse, cPolymorphic *context, int rpcId, simtime_t rtt) |
| virtual void | pingTimeout (PingCall *pingCall, const TransportAddress &dest, cPolymorphic *context, int rpcId) |
| bool | internalHandleMessage (cMessage *msg) |
Protected Member Functions inherited from RpcListener | |
| virtual void | handleRpcResponse (BaseResponseMessage *msg, const RpcState &rpcState, simtime_t rtt) |
| This method is called if an RPC response has been received. | |
| virtual void | handleRpcTimeout (const RpcState &rpcState) |
| This method is called if an RPC timeout has been reached. | |
Protected Member Functions inherited from BaseTcpSupport | |
| void | handleTCPMessage (cMessage *msg) |
| Member function to handle incoming TCP messages. | |
| void | bindAndListenTcp (int port) |
| Member function to bind service to the specified port and listen afterwards. | |
| bool | isAlreadyConnected (TransportAddress address) |
| Member function to check if the service is already connected. | |
| void | establishTcpConnection (TransportAddress address) |
| Member function to establish a connection to the specified node. | |
| void | sendTcpData (cPacket *msg, TransportAddress address) |
| Member function to send TCP data to the specified node. | |
| virtual void | handleConnectionEvent (EvCode code, TransportAddress address) |
| Member function to handle passive connection events. | |
| virtual void | handleDataReceived (TransportAddress address, cPacket *msg, bool urgent) |
| Member function to handle incoming data. | |
| virtual void | handleIncomingConnection (TransportAddress address) |
| Member function to handle newly opened connections. | |
| void | closeTcpConnection (TransportAddress address) |
| Member function to close an established connection. | |
| void | setTcpOut (cGate *gate) |
| Member function to set local gate towards the TCP module during init phase. | |
| cGate * | getTcpOut () |
| Member function to get local gate towards the TCP module. | |
Protected Member Functions inherited from TopologyVis | |
| void | initVis (cModule *terminal) |
Private Member Functions | |
| void | doLeafsetMaintenance (void) |
| periodically repairs the leafset by pushing it to and pulling it from from a random live leafset node | |
| int | getNextRowToMaintain () |
| void | doLocalTuning () |
| void | doGlobalTuning (void) |
| periodically repairs the routing table by performing random lookups | |
| bool | handleFailedNode (const TransportAddress &failed) |
| notifies leafset and routingtable of a failed node and sends out a repair request if possible | |
| void | checkProxCache (void) |
| checks whether proxCache is complete, takes appropriate actions depending on the protocol state | |
| virtual void | joinOverlay () |
Private Attributes | |
| uint16_t | rowToAsk |
| simtime_t | leafsetMaintenanceInterval |
| simtime_t | localTuningInterval |
| simtime_t | globalTuningInterval |
| cMessage * | leafsetMaintenanceTimer |
| cMessage * | globalTuningTimer |
| cMessage * | localTuningTimer |
Friends | |
| class | BambooLookupListener |
|
virtual |
Definition at line 41 of file Bamboo.cc.
|
protectedvirtual |
changes node state
| toState | state to change to |
Reimplemented from BasePastry.
Definition at line 86 of file Bamboo.cc.
Referenced by checkProxCache(), and joinOverlay().
|
private |
checks whether proxCache is complete, takes appropriate actions depending on the protocol state
Definition at line 323 of file Bamboo.cc.
Referenced by handleStateMessage(), and lookupFinished().
|
private |
periodically repairs the routing table by performing random lookups
Definition at line 275 of file Bamboo.cc.
Referenced by handleTimerEvent().
|
private |
periodically repairs the leafset by pushing it to and pulling it from from a random live leafset node
Definition at line 202 of file Bamboo.cc.
Referenced by handleTimerEvent().
|
private |
Definition at line 250 of file Bamboo.cc.
Referenced by handleTimerEvent().
|
private |
Definition at line 224 of file Bamboo.cc.
Referenced by doGlobalTuning(), and doLocalTuning().
|
private |
notifies leafset and routingtable of a failed node and sends out a repair request if possible
| failed | the failed node |
Definition at line 299 of file Bamboo.cc.
|
virtual |
Reimplemented from BasePastry.
Definition at line 183 of file Bamboo.cc.
Referenced by handleRpcResponse().
|
virtual |
This method is called if an RPC response has been received.
| msg | The response message. |
| context | Pointer to an optional state object. The object has to be handled/deleted by the handleRpcResponse() code |
| rpcId | The RPC id. |
| rtt | The Round-Trip-Time of this RPC |
Reimplemented from BasePastry.
Definition at line 162 of file Bamboo.cc.
|
virtual |
processes state messages, merging with own state tables
| msg | the pastry state message |
Implements BasePastry.
Definition at line 377 of file Bamboo.cc.
Referenced by handleRequestLeafSetResponse().
|
virtual |
Reimplemented from BaseRpc.
Definition at line 133 of file Bamboo.cc.
|
virtual |
Initializes derived-class-attributes.
Initializes derived-class-attributes, called by BaseOverlay::initialize(). By default this method is called once. If more stages are needed one can overload numInitStages() and add more stages.
| stage | the init stage |
Reimplemented from BaseOverlay.
Definition at line 50 of file Bamboo.cc.
|
privatevirtual |
|
protectedvirtual |
Implements LookupListener.
Definition at line 455 of file Bamboo.cc.
Referenced by BambooLookupListener::lookupFinished().
|
friend |
Definition at line 55 of file Bamboo.h.
Referenced by doGlobalTuning().
|
private |
Definition at line 95 of file Bamboo.h.
Referenced by changeState(), handleTimerEvent(), and initializeOverlay().
|
private |
Definition at line 98 of file Bamboo.h.
Referenced by changeState(), handleTimerEvent(), initializeOverlay(), and ~Bamboo().
|
private |
Definition at line 93 of file Bamboo.h.
Referenced by handleTimerEvent(), and initializeOverlay().
|
private |
Definition at line 97 of file Bamboo.h.
Referenced by changeState(), handleTimerEvent(), initializeOverlay(), and ~Bamboo().
|
private |
Definition at line 94 of file Bamboo.h.
Referenced by changeState(), handleTimerEvent(), and initializeOverlay().
|
private |
Definition at line 99 of file Bamboo.h.
Referenced by changeState(), handleTimerEvent(), initializeOverlay(), and ~Bamboo().
|
private |
Definition at line 90 of file Bamboo.h.
Referenced by doLocalTuning(), and initializeOverlay().