NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.0: NDN, CCN, CCNx, content centric networks
API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
nfd::fw::BestRouteStrategy2 Class Reference

Best Route strategy version 2. More...

#include <best-route-strategy2.hpp>

Inheritance diagram for nfd::fw::BestRouteStrategy2:
Collaboration diagram for nfd::fw::BestRouteStrategy2:

Public Member Functions

 BestRouteStrategy2 (Forwarder &forwarder, const Name &name=STRATEGY_NAME)
 
virtual void afterReceiveInterest (const Face &inFace, const Interest &interest, shared_ptr< fib::Entry > fibEntry, shared_ptr< pit::Entry > pitEntry) 1
 trigger after Interest is received More...
 
- Public Member Functions inherited from nfd::fw::Strategy
 Strategy (Forwarder &forwarder, const Name &name)
 construct a strategy instance More...
 
virtual ~Strategy ()
 
const Name & getName () const
 a Name that represent the Strategy program More...
 
virtual void beforeSatisfyInterest (shared_ptr< pit::Entry > pitEntry, const Face &inFace, const Data &data)
 trigger before PIT entry is satisfied More...
 
virtual void beforeExpirePendingInterest (shared_ptr< pit::Entry > pitEntry)
 trigger before PIT entry expires More...
 

Static Public Attributes

static const Name STRATEGY_NAME
 
static const time::milliseconds MIN_RETRANSMISSION_INTERVAL
 

Additional Inherited Members

- Protected Member Functions inherited from nfd::fw::Strategy
void sendInterest (shared_ptr< pit::Entry > pitEntry, shared_ptr< Face > outFace, bool wantNewNonce=false)
 send Interest to outFace More...
 
void rejectPendingInterest (shared_ptr< pit::Entry > pitEntry)
 decide that a pending Interest cannot be forwarded More...
 
MeasurementsAccessorgetMeasurements ()
 
shared_ptr< FacegetFace (FaceId id)
 
const FaceTablegetFaceTable ()
 
- Protected Attributes inherited from nfd::fw::Strategy
signal::Signal< FaceTable,
shared_ptr< Face > > & 
afterAddFace
 
signal::Signal< FaceTable,
shared_ptr< Face > > & 
beforeRemoveFace
 

Detailed Description

Best Route strategy version 2.

This strategy forwards a new Interest to the lowest-cost nexthop (except downstream). After that, it recognizes consumer retransmission: if a similar Interest arrives from any downstream after MIN_RETRANSMISSION_INTERVAL, the strategy forwards the Interest again to the lowest-cost nexthop (except downstream) that is not previously used. If all nexthops have been used, the strategy starts over.

Definition at line 42 of file best-route-strategy2.hpp.

Constructor & Destructor Documentation

nfd::fw::BestRouteStrategy2::BestRouteStrategy2 ( Forwarder forwarder,
const Name &  name = STRATEGY_NAME 
)

Definition at line 38 of file best-route-strategy2.cpp.

Member Function Documentation

void nfd::fw::BestRouteStrategy2::afterReceiveInterest ( const Face inFace,
const Interest &  interest,
shared_ptr< fib::Entry fibEntry,
shared_ptr< pit::Entry pitEntry 
)
virtual

trigger after Interest is received

The Interest:

  • does not violate Scope
  • is not looped
  • cannot be satisfied by ContentStore
  • is under a namespace managed by this strategy

The strategy should decide whether and where to forward this Interest.

  • If the strategy decides to forward this Interest, invoke this->sendInterest one or more times, either now or shortly after
  • If strategy concludes that this Interest cannot be forwarded, invoke this->rejectPendingInterest so that PIT entry will be deleted shortly
Note
The strategy is permitted to store a weak reference to fibEntry. Do not store a shared reference, because PIT entry may be deleted at any moment. fibEntry is passed by value to allow obtaining a weak reference from it.
The strategy is permitted to store a shared reference to pitEntry. pitEntry is passed by value to reflect this fact.

Implements nfd::fw::Strategy.

Definition at line 106 of file best-route-strategy2.cpp.

References nfd::fw::compare_OutRecord_lastRenewed(), nfd::fw::findEligibleNextHopWithEarliestOutRecord(), nfd::Face::getId(), MIN_RETRANSMISSION_INTERVAL, NFD_LOG_DEBUG, nfd::fw::predicate_NextHop_eligible(), nfd::fw::Strategy::rejectPendingInterest(), and nfd::fw::Strategy::sendInterest().

Member Data Documentation

const time::milliseconds nfd::fw::BestRouteStrategy2::MIN_RETRANSMISSION_INTERVAL
static
Todo:
don't use fixed interval; make it adaptive or use exponential back-off #1913

Definition at line 55 of file best-route-strategy2.hpp.

Referenced by afterReceiveInterest().

const Name nfd::fw::BestRouteStrategy2::STRATEGY_NAME
static

Definition at line 54 of file best-route-strategy2.hpp.


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