IBR-DTNSuite  0.12
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 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::core::Event *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
 
void transferTo (const dtn::data::EID &destination, const dtn::data::MetaBundle &meta)
 
- Public Member Functions inherited from ibrcommon::JoinableThread
virtual ~JoinableThread ()=0
 
void join (void) throw (ThreadException)
 
bool isRunning (void)
 
void start (int priority=0) throw (ThreadException)
 
void stop () throw ()
 
- Public Member Functions inherited from dtn::core::EventReceiver
virtual ~EventReceiver ()=0
 

Protected Member Functions

virtual void run () throw ()
 
void __cancellation () throw ()
 
- Protected Member Functions inherited from dtn::routing::RoutingExtension
BaseRouteroperator* ()
 
- Protected Member Functions inherited from ibrcommon::JoinableThread
 JoinableThread (size_t size=DEFAULT_STACKSIZE)
 
- Protected Member Functions inherited from ibrcommon::Thread
virtual ~Thread ()=0
 
void reset () throw (ThreadException)
 
virtual void setup (void) throw ()
 
virtual void finally (void) throw ()
 
bool isFinalized () throw ()
 
bool operator== (const ibrcommon::Thread &other)
 
 Thread (size_t stack=DEFAULT_STACKSIZE)
 
int kill (int sig)
 
void cancel () throw ()
 

Friends

class ForwardingStrategy
 

Additional Inherited Members

- Public Types inherited from dtn::routing::RoutingExtension
enum  CALLBACK_ACTION { ROUTE_CALLBACK_FORWARDED = 0, ROUTE_CALLBACK_ABORTED = 1, ROUTE_CALLBACK_REJECTED = 2, ROUTE_CALLBACK_DELETED = 3 }
 
- Static Protected Member Functions inherited from ibrcommon::Thread
static size_t getNumberOfProcessors ()
 
static void yield (void)
 
static void sleep (time_t timeout)
 
static void concurrency (int level)
 
static bool equal (pthread_t thread1, pthread_t thread2)
 
static void * __execute__ (void *obj) throw ()
 

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 53 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 75 of file ProphetRoutingExtension.cpp.

References ibrcommon::JoinableThread::join(), and ibrcommon::JoinableThread::stop().

Here is the call graph for this function:

Member Function Documentation

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

Implements ibrcommon::Thread.

Definition at line 540 of file ProphetRoutingExtension.cpp.

References ibrcommon::Queue< T >::abort().

Here is the call graph for this function:

void dtn::routing::ProphetRoutingExtension::componentDown ( )
throw (
)
virtual
void dtn::routing::ProphetRoutingExtension::componentUp ( )
throw (
)
virtual
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 217 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 202 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 208 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 336 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 322 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 331 of file ProphetRoutingExtension.cpp.

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 82 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 91 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

Abstract interface for thread context run method.

Implements ibrcommon::Thread.

Friends And Related Function Documentation

friend class ForwardingStrategy
friend

Definition at line 55 of file ProphetRoutingExtension.h.


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