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

Namespaces

 asf
 

Classes

class  AccessStrategy
 Access Router Strategy version 1. More...
 
class  AdmitAllUnsolicitedDataPolicy
 admits all unsolicited Data More...
 
class  AdmitLocalUnsolicitedDataPolicy
 admits unsolicited Data from local faces More...
 
class  AdmitNetworkUnsolicitedDataPolicy
 admits unsolicited Data from non-local faces More...
 
class  BestRouteStrategy
 Best Route strategy version 1. More...
 
class  BestRouteStrategy2
 Best Route strategy version 4. More...
 
class  ClientControlStrategy
 identical to BestRouteStrategy v1, for backwards compatibility More...
 
class  DropAllUnsolicitedDataPolicy
 drops all unsolicited Data More...
 
class  MulticastStrategy
 a forwarding strategy that forwards Interest to all FIB nexthops More...
 
class  NccStrategy
 a forwarding strategy similar to CCNx 0.7.2 More...
 
class  RetxSuppression
 helper for consumer retransmission suppression More...
 
class  RetxSuppressionExponential
 a retransmission suppression decision algorithm that suppresses retransmissions using exponential backoff More...
 
class  RetxSuppressionFixed
 a retransmission suppression decision algorithm that suppresses retransmissions within a fixed duration More...
 
class  Strategy
 represents a forwarding strategy More...
 
class  StrategyInfo
 contains arbitrary information forwarding strategy places on table entries More...
 
class  UnsolicitedDataPolicy
 determines how to process an unsolicited Data More...
 

Typedefs

typedef std::function< unique_ptr< Strategy >Forwarder &)> StrategyCreateFunc
 
typedef DropAllUnsolicitedDataPolicy DefaultUnsolicitedDataPolicy
 the default UnsolicitedDataPolicy More...
 

Enumerations

enum  DuplicateNonceWhere {
  DUPLICATE_NONCE_NONE = 0, DUPLICATE_NONCE_IN_SAME = (1 << 0), DUPLICATE_NONCE_IN_OTHER = (1 << 1), DUPLICATE_NONCE_OUT_SAME = (1 << 2),
  DUPLICATE_NONCE_OUT_OTHER = (1 << 3)
}
 indicates where duplicate Nonces are found More...
 
enum  UnsolicitedDataDecision { UnsolicitedDataDecision::DROP, UnsolicitedDataDecision::CACHE }
 a decision made by UnsolicitedDataPolicy More...
 

Functions

 NFD_REGISTER_STRATEGY (AccessStrategy)
 
bool wouldViolateScope (const Face &inFace, const Interest &interest, const Face &outFace)
 determine whether forwarding the Interest in pitEntry to outFace would violate scope More...
 
bool violatesScope (const pit::Entry &pitEntry, const Face &outFace)
 
bool canForwardToLegacy (const pit::Entry &pitEntry, const Face &face)
 decide whether Interest can be forwarded to face More...
 
int findDuplicateNonce (const pit::Entry &pitEntry, uint32_t nonce, const Face &face)
 determine whether pitEntry has duplicate Nonce nonce More...
 
bool hasPendingOutRecords (const pit::Entry &pitEntry)
 determine whether pitEntry has any pending out-records More...
 
 DEPRECATED (bool violatesScope(const pit::Entry &pitEntry, const Face &outFace))
 determine whether forwarding the Interest in pitEntry to outFace would violate scope More...
 
 NFD_REGISTER_STRATEGY (BestRouteStrategy)
 
 NFD_REGISTER_STRATEGY (BestRouteStrategy2)
 
static bool isNextHopEligible (const Face &inFace, const Interest &interest, const fib::NextHop &nexthop, const shared_ptr< pit::Entry > &pitEntry, bool wantUnused=false, time::steady_clock::TimePoint now=time::steady_clock::TimePoint::min())
 determines whether a NextHop is eligible More...
 
static fib::NextHopList::const_iterator findEligibleNextHopWithEarliestOutRecord (const Face &inFace, const Interest &interest, const fib::NextHopList &nexthops, const shared_ptr< pit::Entry > &pitEntry)
 pick an eligible NextHop with earliest out-record More...
 
lp::NackReason compareLessSevere (lp::NackReason x, lp::NackReason y)
 
 NFD_REGISTER_STRATEGY (ClientControlStrategy)
 
 NFD_REGISTER_STRATEGY (MulticastStrategy)
 
 NFD_REGISTER_STRATEGY (NccStrategy)
 
unique_ptr< StrategymakeDefaultStrategy (Forwarder &forwarder)
 
static std::map< Name, StrategyCreateFunc > & getStrategyFactories ()
 
void registerStrategyImpl (const Name &strategyName, const StrategyCreateFunc &createFunc)
 
void installStrategies (Forwarder &forwarder)
 
template<typename S >
void registerStrategy ()
 registers a strategy to be installed later More...
 
std::ostream & operator<< (std::ostream &os, UnsolicitedDataDecision d)
 

Variables

 AccessStrategy
 
 BestRouteStrategy2
 
 ClientControlStrategy
 
 Strategy
 
 DropAllUnsolicitedDataPolicy
 
drop all
 
 AdmitLocalUnsolicitedDataPolicy
 
admit local
 
 AdmitNetworkUnsolicitedDataPolicy
 
admit network
 
 AdmitAllUnsolicitedDataPolicy
 

Typedef Documentation

◆ StrategyCreateFunc

typedef std::function<unique_ptr<Strategy>Forwarder&)> nfd::fw::StrategyCreateFunc

Definition at line 46 of file strategy-registry.hpp.

◆ DefaultUnsolicitedDataPolicy

Enumeration Type Documentation

◆ DuplicateNonceWhere

indicates where duplicate Nonces are found

Enumerator
DUPLICATE_NONCE_NONE 

no duplicate Nonce is found

DUPLICATE_NONCE_IN_SAME 

in-record of same face

DUPLICATE_NONCE_IN_OTHER 

in-record of other face

DUPLICATE_NONCE_OUT_SAME 

out-record of same face

DUPLICATE_NONCE_OUT_OTHER 

out-record of other face

Definition at line 99 of file algorithm.hpp.

◆ UnsolicitedDataDecision

a decision made by UnsolicitedDataPolicy

Enumerator
DROP 

the Data should be dropped

CACHE 

the Data should be cached in the ContentStore

Definition at line 36 of file unsolicited-data-policy.hpp.

Function Documentation

◆ NFD_REGISTER_STRATEGY() [1/6]

nfd::fw::NFD_REGISTER_STRATEGY ( AccessStrategy  )

◆ wouldViolateScope()

◆ violatesScope()

◆ canForwardToLegacy()

bool nfd::fw::canForwardToLegacy ( const pit::Entry pitEntry,
const Face face 
)

decide whether Interest can be forwarded to face

Returns
true if out-record of this face does not exist or has expired, and there is an in-record not of this face
Note
This algorithm has a weakness that it does not permit consumer retransmissions before out-record expires. Therefore, it's not recommended to use this function in new strategies.
Todo:
find a better name for this function

Definition at line 82 of file algorithm.cpp.

References nfd::pit::Entry::in_begin(), nfd::pit::Entry::in_end(), ndn::time::steady_clock::now(), nfd::pit::Entry::out_begin(), and nfd::pit::Entry::out_end().

Referenced by nfd::fw::MulticastStrategy::afterReceiveInterest(), nfd::fw::NccStrategy::afterReceiveInterest(), nfd::fw::BestRouteStrategy::afterReceiveInterest(), and nfd::fw::NccStrategy::doPropagate().

◆ findDuplicateNonce()

int nfd::fw::findDuplicateNonce ( const pit::Entry pitEntry,
uint32_t  nonce,
const Face face 
)

determine whether pitEntry has duplicate Nonce nonce

Returns
OR'ed DuplicateNonceWhere

Definition at line 106 of file algorithm.cpp.

References DUPLICATE_NONCE_IN_OTHER, DUPLICATE_NONCE_IN_SAME, DUPLICATE_NONCE_NONE, DUPLICATE_NONCE_OUT_OTHER, DUPLICATE_NONCE_OUT_SAME, nfd::pit::Entry::getInRecords(), and nfd::pit::Entry::getOutRecords().

Referenced by nfd::Forwarder::startProcessNack().

◆ hasPendingOutRecords()

bool nfd::fw::hasPendingOutRecords ( const pit::Entry pitEntry)

◆ DEPRECATED()

nfd::fw::DEPRECATED ( bool   violatesScopeconst pit::Entry &pitEntry, const Face &outFace)

determine whether forwarding the Interest in pitEntry to outFace would violate scope

See also
https://redmine.named-data.net/projects/nfd/wiki/ScopeControl
Deprecated:
use violatesScope(inFace, interest, outFace) instead

◆ NFD_REGISTER_STRATEGY() [2/6]

nfd::fw::NFD_REGISTER_STRATEGY ( BestRouteStrategy  )

◆ NFD_REGISTER_STRATEGY() [3/6]

nfd::fw::NFD_REGISTER_STRATEGY ( BestRouteStrategy2  )

◆ isNextHopEligible()

static bool nfd::fw::isNextHopEligible ( const Face inFace,
const Interest interest,
const fib::NextHop nexthop,
const shared_ptr< pit::Entry > &  pitEntry,
bool  wantUnused = false,
time::steady_clock::TimePoint  now = time::steady_clock::TimePoint::min() 
)
inlinestatic

determines whether a NextHop is eligible

Parameters
inFaceincoming face of current Interest
interestincoming Interest
nexthopnext hop
pitEntryPIT entry
wantUnusedif true, NextHop must not have unexpired out-record
nowtime::steady_clock::now(), ignored if !wantUnused

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

References nfd::fib::NextHop::getFace(), and wouldViolateScope().

Referenced by nfd::fw::BestRouteStrategy2::afterReceiveInterest(), and findEligibleNextHopWithEarliestOutRecord().

◆ findEligibleNextHopWithEarliestOutRecord()

static fib::NextHopList::const_iterator nfd::fw::findEligibleNextHopWithEarliestOutRecord ( const Face inFace,
const Interest interest,
const fib::NextHopList nexthops,
const shared_ptr< pit::Entry > &  pitEntry 
)
inlinestatic

pick an eligible NextHop with earliest out-record

Note
It is assumed that every nexthop has an out-record.

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

References isNextHopEligible().

Referenced by nfd::fw::BestRouteStrategy2::afterReceiveInterest().

◆ compareLessSevere()

lp::NackReason nfd::fw::compareLessSevere ( lp::NackReason  x,
lp::NackReason  y 
)
inline
Returns
less severe NackReason between x and y

lp::NackReason::NONE is treated as most severe

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

References ndn::lp::NONE.

Referenced by nfd::fw::BestRouteStrategy2::afterReceiveNack().

◆ NFD_REGISTER_STRATEGY() [4/6]

nfd::fw::NFD_REGISTER_STRATEGY ( ClientControlStrategy  )

◆ NFD_REGISTER_STRATEGY() [5/6]

nfd::fw::NFD_REGISTER_STRATEGY ( MulticastStrategy  )

◆ NFD_REGISTER_STRATEGY() [6/6]

nfd::fw::NFD_REGISTER_STRATEGY ( NccStrategy  )

◆ makeDefaultStrategy()

unique_ptr< Strategy > nfd::fw::makeDefaultStrategy ( Forwarder forwarder)

Definition at line 33 of file strategy-registry.cpp.

◆ getStrategyFactories()

static std::map<Name, StrategyCreateFunc>& nfd::fw::getStrategyFactories ( )
static

Definition at line 39 of file strategy-registry.cpp.

Referenced by installStrategies(), and registerStrategyImpl().

◆ registerStrategyImpl()

void nfd::fw::registerStrategyImpl ( const Name strategyName,
const StrategyCreateFunc createFunc 
)

Definition at line 46 of file strategy-registry.cpp.

References getStrategyFactories().

Referenced by registerStrategy().

◆ installStrategies()

◆ registerStrategy()

template<typename S >
void nfd::fw::registerStrategy ( )

registers a strategy to be installed later

Definition at line 55 of file strategy-registry.hpp.

References registerStrategyImpl().

◆ operator<<()

std::ostream & nfd::fw::operator<< ( std::ostream &  os,
UnsolicitedDataDecision  d 
)

Definition at line 32 of file unsolicited-data-policy.cpp.

References CACHE, and DROP.

Variable Documentation

◆ AccessStrategy

Definition at line 33 of file access-strategy.cpp.

◆ BestRouteStrategy2

◆ ClientControlStrategy

◆ Strategy

Definition at line 35 of file strategy.cpp.

◆ DropAllUnsolicitedDataPolicy

◆ all

admit nfd::fw::all

Definition at line 58 of file unsolicited-data-policy.cpp.

Referenced by nfd::WebSocketChannel::WebSocketChannel().

◆ AdmitLocalUnsolicitedDataPolicy

◆ local

admit nfd::fw::local

Definition at line 66 of file unsolicited-data-policy.cpp.

◆ AdmitNetworkUnsolicitedDataPolicy

◆ network

admit nfd::fw::network

Definition at line 77 of file unsolicited-data-policy.cpp.

Referenced by nfd::Network::operator!=().

◆ AdmitAllUnsolicitedDataPolicy