NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
nfd::fw::MulticastStrategy Class Reference

a forwarding strategy that forwards Interest to all FIB nexthops More...

#include <multicast-strategy.hpp>

Inheritance diagram for nfd::fw::MulticastStrategy:
Collaboration diagram for nfd::fw::MulticastStrategy:

Public Member Functions

 MulticastStrategy (Forwarder &forwarder, const Name &name=getStrategyName())
 
void afterReceiveInterest (const Face &inFace, const Interest &interest, const shared_ptr< pit::Entry > &pitEntry) override
 trigger after Interest is received More...
 
void afterReceiveNack (const Face &inFace, const lp::Nack &nack, const shared_ptr< pit::Entry > &pitEntry) override
 trigger after Nack is received More...
 
- Public Member Functions inherited from nfd::fw::Strategy
 Strategy (Forwarder &forwarder)
 construct a strategy instance More...
 
virtual ~Strategy ()
 
const NamegetInstanceName () const
 
virtual void beforeSatisfyInterest (const shared_ptr< pit::Entry > &pitEntry, const Face &inFace, const Data &data)
 trigger before PIT entry is satisfied More...
 
virtual void beforeExpirePendingInterest (const shared_ptr< pit::Entry > &pitEntry)
 trigger before PIT entry expires More...
 

Static Public Member Functions

static const NamegetStrategyName ()
 
- Static Public Member Functions inherited from nfd::fw::Strategy
template<typename S >
static void registerType (const Name &strategyName=S::getStrategyName())
 register a strategy type More...
 
static bool canCreate (const Name &instanceName)
 
static unique_ptr< Strategycreate (const Name &instanceName, Forwarder &forwarder)
 
static bool areSameType (const Name &instanceNameA, const Name &instanceNameB)
 
static std::set< NamelistRegistered ()
 
static const NamegetStrategyName ()
 

Additional Inherited Members

- Protected Member Functions inherited from nfd::fw::Strategy
void sendInterest (const shared_ptr< pit::Entry > &pitEntry, Face &outFace, const Interest &interest)
 send Interest to outFace More...
 
void rejectPendingInterest (const shared_ptr< pit::Entry > &pitEntry)
 decide that a pending Interest cannot be forwarded More...
 
void sendNack (const shared_ptr< pit::Entry > &pitEntry, const Face &outFace, const lp::NackHeader &header)
 send Nack to outFace More...
 
void sendNacks (const shared_ptr< pit::Entry > &pitEntry, const lp::NackHeader &header, std::initializer_list< const Face * > exceptFaces=std::initializer_list< const Face * >())
 send Nack to every face that has an in-record, except those in exceptFaces More...
 
const fib::EntrylookupFib (const pit::Entry &pitEntry) const
 performs a FIB lookup, considering Link object if present More...
 
MeasurementsAccessor & getMeasurements ()
 
FacegetFace (FaceId id) const
 
const FaceTablegetFaceTable () const
 
void setInstanceName (const Name &name)
 set strategy instance name More...
 
- Protected Member Functions inherited from nfd::fw::ProcessNackTraits< MulticastStrategy >
 ProcessNackTraits (MulticastStrategy *strategy)
 
- Protected Member Functions inherited from nfd::fw::ProcessNackTraitsBase
virtual ~ProcessNackTraitsBase ()=default
 
void processNack (const Face &inFace, const lp::Nack &nack, const shared_ptr< pit::Entry > &pitEntry)
 
- Static Protected Member Functions inherited from nfd::fw::Strategy
static ParsedInstanceName parseInstanceName (const Name &input)
 parse a strategy instance name More...
 
static Name makeInstanceName (const Name &input, const Name &strategyName)
 construct a strategy instance name More...
 
- Protected Attributes inherited from nfd::fw::Strategy
signal::Signal< FaceTable, Face & > & afterAddFace
 
signal::Signal< FaceTable, Face & > & beforeRemoveFace
 

Detailed Description

a forwarding strategy that forwards Interest to all FIB nexthops

Definition at line 38 of file multicast-strategy.hpp.

Constructor & Destructor Documentation

Member Function Documentation

const Name & nfd::fw::MulticastStrategy::getStrategyName ( )
static

Definition at line 59 of file multicast-strategy.cpp.

Referenced by MulticastStrategy().

void nfd::fw::MulticastStrategy::afterReceiveInterest ( const Face inFace,
const Interest interest,
const shared_ptr< pit::Entry > &  pitEntry 
)
overridevirtual

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
Warning
The strategy must not retain shared_ptr<pit::Entry>, otherwise undefined behavior may occur. However, the strategy is allowed to store weak_ptr<pit::Entry>.

Implements nfd::fw::Strategy.

Definition at line 66 of file multicast-strategy.cpp.

References nfd::fw::RetxSuppressionExponential::decidePerUpstream(), Face, nfd::fw::FORWARD, nfd::fib::Entry::getNextHops(), nfd::fw::RetxSuppressionExponential::incrementIntervalForOutRecord(), ndn::nfd::LINK_TYPE_AD_HOC, nfd::fw::Strategy::lookupFib(), NFD_LOG_DEBUG, nfd::fw::Strategy::rejectPendingInterest(), nfd::fw::Strategy::sendInterest(), nfd::fw::Strategy::sendNack(), ndn::lp::NackHeader::setReason(), nfd::fw::SUPPRESS, and nfd::fw::wouldViolateScope().

void nfd::fw::MulticastStrategy::afterReceiveNack ( const Face inFace,
const lp::Nack nack,
const shared_ptr< pit::Entry > &  pitEntry 
)
overridevirtual

trigger after Nack is received

This trigger is invoked when an incoming Nack is received in response to an forwarded Interest. The Nack has been confirmed to be a response to the last Interest forwarded to that upstream, i.e. the PIT out-record exists and has a matching Nonce. The NackHeader has been recorded in the PIT out-record.

In this base class this method does nothing.

Warning
The strategy must not retain shared_ptr<pit::Entry>, otherwise undefined behavior may occur. However, the strategy is allowed to store weak_ptr<pit::Entry>.

Reimplemented from nfd::fw::Strategy.

Definition at line 115 of file multicast-strategy.cpp.

References nfd::fw::ProcessNackTraitsBase::processNack().


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