IBR-DTN  1.0.0
dtn::routing::ProphetRoutingExtension Class Reference

Routing extension for PRoPHET routing. More...

#include <ProphetRoutingExtension.h>

Inheritance diagram for dtn::routing::ProphetRoutingExtension:
Inheritance graph
Collaboration diagram for dtn::routing::ProphetRoutingExtension:
Collaboration graph

Classes

class  GRTR_Strategy
 The GRTR forwarding strategy. Using this strategy, packets are forwarding, if the neighbor has a higher predictability then the destination. More...
 
class  GTMX_Strategy
 The GTMX forwarding strategy. Using this strategy, packets are forwarding, if the neighbor has a higher predictability then the destination, but at most NF_max times. More...
 

Public Member Functions

 ProphetRoutingExtension (ForwardingStrategy *strategy, float p_encounter_max, float p_encounter_first, float p_first_threshold, float beta, float gamma, float delta, size_t time_unit, size_t i_typ, dtn::data::Timestamp next_exchange_timeout)
 
virtual ~ProphetRoutingExtension ()
 
virtual const std::string getTag () const throw ()
 
virtual void requestHandshake (const dtn::data::EID &, NodeHandshake &) const
 
virtual void responseHandshake (const dtn::data::EID &, const NodeHandshake &, NodeHandshake &)
 
virtual void processHandshake (const dtn::data::EID &, NodeHandshake &)
 
virtual void componentUp () throw ()
 
virtual void componentDown () throw ()
 
virtual void raiseEvent (const dtn::routing::NodeHandshakeEvent &evt) throw ()
 
virtual void raiseEvent (const dtn::core::TimeEvent &evt) throw ()
 
virtual void raiseEvent (const dtn::core::BundlePurgeEvent &evt) throw ()
 
virtual void eventDataChanged (const dtn::data::EID &peer) throw ()
 
virtual void eventTransferCompleted (const dtn::data::EID &peer, const dtn::data::MetaBundle &meta) throw ()
 
virtual void eventBundleQueued (const dtn::data::EID &peer, const dtn::data::MetaBundle &meta) throw ()
 
ibrcommon::ThreadsafeReference
< DeliveryPredictabilityMap
getDeliveryPredictabilityMap ()
 
ibrcommon::ThreadsafeReference
< const
DeliveryPredictabilityMap
getDeliveryPredictabilityMap () const
 
ibrcommon::ThreadsafeReference
< const AcknowledgementSet
getAcknowledgementSet () const
 
- Public Member Functions inherited from dtn::routing::RoutingExtension
 RoutingExtension ()
 
virtual ~RoutingExtension ()=0
 
- Public Member Functions inherited from dtn::core::EventReceiver< dtn::routing::NodeHandshakeEvent >
virtual ~EventReceiver ()
 
- Public Member Functions inherited from dtn::core::EventReceiver< dtn::core::TimeEvent >
virtual ~EventReceiver ()
 
- Public Member Functions inherited from dtn::core::EventReceiver< dtn::core::BundlePurgeEvent >
virtual ~EventReceiver ()
 

Protected Member Functions

virtual void run () throw ()
 
void __cancellation () throw ()
 
- Protected Member Functions inherited from dtn::routing::RoutingExtension
void transferTo (const dtn::data::EID &destination, const dtn::data::MetaBundle &meta, const dtn::core::Node::Protocol)
 
BaseRouteroperator* ()
 

Friends

class ForwardingStrategy
 

Detailed Description

Routing extension for PRoPHET routing.

PRoPHET keeps track of predictabilities to see specific other nodes. i.e. Nodes that are seen often will have a high predictabilites attached and forwarding decisions can be made based on these predictabilites. In addition, these predictabilites are updated transitively by exchanging predictabilityMaps with neighbors. For a detailed description of the protocol, see draft-irtf-dtnrg-prophet-09

Definition at line 56 of file ProphetRoutingExtension.h.

Constructor & Destructor Documentation

dtn::routing::ProphetRoutingExtension::ProphetRoutingExtension ( ForwardingStrategy strategy,
float  p_encounter_max,
float  p_encounter_first,
float  p_first_threshold,
float  beta,
float  gamma,
float  delta,
size_t  time_unit,
size_t  i_typ,
dtn::data::Timestamp  next_exchange_timeout 
)
dtn::routing::ProphetRoutingExtension::~ProphetRoutingExtension ( )
virtual

Definition at line 81 of file ProphetRoutingExtension.cpp.

Member Function Documentation

void dtn::routing::ProphetRoutingExtension::__cancellation ( )
throw (
)
protected

Definition at line 589 of file ProphetRoutingExtension.cpp.

void dtn::routing::ProphetRoutingExtension::componentDown ( )
throw (
)
virtual

Implements dtn::routing::RoutingExtension.

Definition at line 306 of file ProphetRoutingExtension.cpp.

References dtn::core::EventDispatcher< E >::remove().

Here is the call graph for this function:

void dtn::routing::ProphetRoutingExtension::componentUp ( )
throw (
)
virtual

Implements dtn::routing::RoutingExtension.

Definition at line 285 of file ProphetRoutingExtension.cpp.

References dtn::core::EventDispatcher< E >::add().

Here is the call graph for this function:

void dtn::routing::ProphetRoutingExtension::eventBundleQueued ( const dtn::data::EID peer,
const dtn::data::MetaBundle meta 
)
throw (
)
virtual

This method is called every time a bundle was queued

Reimplemented from dtn::routing::RoutingExtension.

Definition at line 223 of file ProphetRoutingExtension.cpp.

References dtn::core::BundleCore::getConnectionManager(), dtn::core::Node::getEID(), dtn::core::BundleCore::getInstance(), and dtn::net::ConnectionManager::getNeighbors().

Here is the call graph for this function:

void dtn::routing::ProphetRoutingExtension::eventDataChanged ( const dtn::data::EID peer)
throw (
)
virtual

This method is called every time something has changed. The module should search again for bundles to transfer to the given peer.

Reimplemented from dtn::routing::RoutingExtension.

Definition at line 208 of file ProphetRoutingExtension.cpp.

void dtn::routing::ProphetRoutingExtension::eventTransferCompleted ( const dtn::data::EID peer,
const dtn::data::MetaBundle meta 
)
throw (
)
virtual

This method is called every time a bundle has been completed successfully

Reimplemented from dtn::routing::RoutingExtension.

Definition at line 214 of file ProphetRoutingExtension.cpp.

References dtn::routing::ProphetRoutingExtension::GTMX_Strategy::addForward().

Here is the call graph for this function:

ibrcommon::ThreadsafeReference< const AcknowledgementSet > dtn::routing::ProphetRoutingExtension::getAcknowledgementSet ( ) const

Returns a threadsafe reference to the AcknowledgementSet. I.e. the corresponding Mutex is locked while this object exists.

Definition at line 343 of file ProphetRoutingExtension.cpp.

ibrcommon::ThreadsafeReference< DeliveryPredictabilityMap > dtn::routing::ProphetRoutingExtension::getDeliveryPredictabilityMap ( )

Returns a threadsafe reference to the DeliveryPredictabilityMap. I.e. the corresponding Mutex is locked while this object exists. In addition, the map is aged before it is returned.

Definition at line 329 of file ProphetRoutingExtension.cpp.

ibrcommon::ThreadsafeReference< const DeliveryPredictabilityMap > dtn::routing::ProphetRoutingExtension::getDeliveryPredictabilityMap ( ) const

Returns a threadsafe reference to the DeliveryPredictabilityMap. I.e. the corresponding Mutex is locked while this object exists. This const version does not age the map.

Definition at line 338 of file ProphetRoutingExtension.cpp.

const std::string dtn::routing::ProphetRoutingExtension::getTag ( ) const
throw (
)
virtual

Returns a tag used to identify the routing extension in filtering rules

Reimplemented from dtn::routing::RoutingExtension.

Definition at line 324 of file ProphetRoutingExtension.cpp.

void dtn::routing::ProphetRoutingExtension::raiseEvent ( const dtn::routing::NodeHandshakeEvent evt)
throw (
)
virtual
void dtn::routing::ProphetRoutingExtension::raiseEvent ( const dtn::core::TimeEvent evt)
throw (
)
virtual

Implements dtn::core::EventReceiver< dtn::core::TimeEvent >.

Definition at line 240 of file ProphetRoutingExtension.cpp.

References dtn::utils::Clock::getMonotonicTimestamp().

Here is the call graph for this function:

void dtn::routing::ProphetRoutingExtension::raiseEvent ( const dtn::core::BundlePurgeEvent evt)
throw (
)
virtual
void dtn::routing::ProphetRoutingExtension::requestHandshake ( const dtn::data::EID ,
NodeHandshake handshake 
) const
virtual
See Also
BaseRouter::Extension::requestHandshake

Reimplemented from dtn::routing::RoutingExtension.

Definition at line 88 of file ProphetRoutingExtension.cpp.

References dtn::routing::NodeHandshake::addRequest(), dtn::routing::DeliveryPredictabilityMap::identifier, dtn::routing::AcknowledgementSet::identifier, and dtn::routing::BloomFilterSummaryVector::identifier.

Here is the call graph for this function:

void dtn::routing::ProphetRoutingExtension::responseHandshake ( const dtn::data::EID neighbor,
const NodeHandshake request,
NodeHandshake response 
)
virtual
See Also
BaseRouter::Extension::responseHandshake

Reimplemented from dtn::routing::RoutingExtension.

Definition at line 97 of file ProphetRoutingExtension.cpp.

References dtn::routing::NodeHandshake::addItem(), dtn::routing::NodeHandshake::hasRequest(), dtn::routing::DeliveryPredictabilityMap::identifier, and dtn::routing::AcknowledgementSet::identifier.

Here is the call graph for this function:

virtual void dtn::routing::ProphetRoutingExtension::run ( )
throw (
)
protectedvirtual

Friends And Related Function Documentation

friend class ForwardingStrategy
friend

Definition at line 61 of file ProphetRoutingExtension.h.


The documentation for this class was generated from the following files: