IBR-DTN
1.0.0
|
Routing extension for PRoPHET routing. More...
#include <ProphetRoutingExtension.h>
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 |
![]() | |
RoutingExtension () | |
virtual | ~RoutingExtension ()=0 |
![]() | |
virtual | ~EventReceiver () |
![]() | |
virtual | ~EventReceiver () |
![]() | |
virtual | ~EventReceiver () |
Protected Member Functions | |
virtual void | run () throw () |
void | __cancellation () throw () |
![]() | |
void | transferTo (const dtn::data::EID &destination, const dtn::data::MetaBundle &meta, const dtn::core::Node::Protocol) |
BaseRouter & | operator* () |
Friends | |
class | ForwardingStrategy |
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.
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 | ||
) |
Definition at line 47 of file ProphetRoutingExtension.cpp.
References dtn::daemon::Configuration::getInstance(), dtn::utils::Clock::getMonotonicTimestamp(), dtn::daemon::Configuration::getPath(), dtn::core::BundleCore::local, dtn::routing::DeliveryPredictabilityMap::set(), and dtn::routing::ForwardingStrategy::setProphetRouter().
|
virtual |
Definition at line 81 of file ProphetRoutingExtension.cpp.
|
protected |
Definition at line 589 of file ProphetRoutingExtension.cpp.
|
virtual |
Implements dtn::routing::RoutingExtension.
Definition at line 306 of file ProphetRoutingExtension.cpp.
References dtn::core::EventDispatcher< E >::remove().
|
virtual |
Implements dtn::routing::RoutingExtension.
Definition at line 285 of file ProphetRoutingExtension.cpp.
References dtn::core::EventDispatcher< E >::add().
|
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().
|
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.
|
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().
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.
|
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.
|
virtual |
Reimplemented from dtn::routing::RoutingExtension.
Definition at line 112 of file ProphetRoutingExtension.cpp.
References dtn::core::BundlePurgeEvent::ACK_RECIEVED, dtn::routing::AcknowledgementSet::begin(), dtn::core::BUNDLE_DELETED, dtn::data::MetaBundle::destination, dtn::data::PrimaryBlock::DESTINATION_IS_SINGLETON, dtn::routing::AcknowledgementSet::end(), dtn::data::MetaBundle::get(), dtn::storage::BundleStorage::get(), dtn::routing::NodeHandshake::get(), dtn::routing::NeighborDatabase::get(), dtn::data::EID::getNode(), dtn::data::EID::getString(), dtn::core::BundleCore::local, dtn::routing::AcknowledgementSet::merge(), dtn::data::StatusReportBlock::NO_ADDITIONAL_INFORMATION, dtn::routing::NeighborDatabase::NeighborEntry::putDataset(), dtn::core::BundlePurgeEvent::raise(), dtn::core::BundleEvent::raise(), dtn::data::EID::sameHost(), and dtn::data::BundleID::toString().
|
virtual |
Implements dtn::core::EventReceiver< dtn::routing::NodeHandshakeEvent >.
Definition at line 266 of file ProphetRoutingExtension.cpp.
References dtn::routing::NodeHandshakeEvent::HANDSHAKE_COMPLETED.
|
virtual |
Implements dtn::core::EventReceiver< dtn::core::TimeEvent >.
Definition at line 240 of file ProphetRoutingExtension.cpp.
References dtn::utils::Clock::getMonotonicTimestamp().
|
virtual |
Implements dtn::core::EventReceiver< dtn::core::BundlePurgeEvent >.
Definition at line 275 of file ProphetRoutingExtension.cpp.
References dtn::core::BundlePurgeEvent::DELIVERED.
|
virtual |
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.
|
virtual |
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.
|
protectedvirtual |
|
friend |
Definition at line 61 of file ProphetRoutingExtension.h.