NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: 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  BestRouteStrategyBase
 
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  ProcessNackTraits
 
class  ProcessNackTraitsBase
 provides a common procedure for processing Nacks More...
 
class  RandomStrategy
 Randomly chooses a nexthop. 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  SelfLearningStrategy
 Self-learning strategy. 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 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  RetxSuppressionResult { RetxSuppressionResult::NEW, RetxSuppressionResult::FORWARD, RetxSuppressionResult::SUPPRESS }
 
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 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...
 
time::steady_clock::TimePoint getLastOutgoing (const pit::Entry &pitEntry)
 
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...
 
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 i.e. More...
 
 NFD_REGISTER_STRATEGY (BestRouteStrategy)
 
 NFD_REGISTER_STRATEGY (BestRouteStrategy2)
 
 NFD_REGISTER_STRATEGY (MulticastStrategy)
 
 NFD_REGISTER_STRATEGY (NccStrategy)
 
 NFD_REGISTER_STRATEGY (RandomStrategy)
 
 NFD_REGISTER_STRATEGY (SelfLearningStrategy)
 
std::ostream & operator<< (std::ostream &os, UnsolicitedDataDecision d)
 

Variables

 AccessStrategy
 
 BestRouteStrategy2
 
 MulticastStrategy
 
 ProcessNackTraits
 
 RandomStrategy
 
 SelfLearningStrategy
 
 Strategy
 
 DropAllUnsolicitedDataPolicy
 
 AdmitLocalUnsolicitedDataPolicy
 
 AdmitNetworkUnsolicitedDataPolicy
 
 AdmitAllUnsolicitedDataPolicy
 

Typedef Documentation

◆ 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 61 of file algorithm.hpp.

◆ RetxSuppressionResult

Enumerator
NEW 

Interest is new (not a retransmission)

FORWARD 

Interest is retransmission and should be forwarded.

SUPPRESS 

Interest is retransmission and should be suppressed.

Definition at line 34 of file retx-suppression.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/7]

nfd::fw::NFD_REGISTER_STRATEGY ( AccessStrategy  )

◆ wouldViolateScope()

◆ 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 54 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::BestRouteStrategyBase::afterReceiveInterest(), nfd::fw::NccStrategy::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 78 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().

◆ hasPendingOutRecords()

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

◆ getLastOutgoing()

time::steady_clock::TimePoint nfd::fw::getLastOutgoing ( const pit::Entry pitEntry)
Returns
last out-record time
Precondition
pitEntry has one or more unexpired out-records

Definition at line 119 of file algorithm.cpp.

References nfd::pit::Entry::out_begin(), and nfd::pit::Entry::out_end().

Referenced by nfd::fw::RetxSuppressionFixed::decidePerPitEntry(), and nfd::fw::RetxSuppressionExponential::decidePerPitEntry().

◆ findEligibleNextHopWithEarliestOutRecord()

fib::NextHopList::const_iterator nfd::fw::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

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

Definition at line 132 of file algorithm.cpp.

References isNextHopEligible().

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

◆ isNextHopEligible()

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() 
)

determines whether a NextHop is eligible i.e.

not the same inFace

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 154 of file algorithm.cpp.

References nfd::fib::NextHop::getFace(), nfd::face::Face::getId(), nfd::face::Face::getLinkType(), ndn::nfd::LINK_TYPE_AD_HOC, and wouldViolateScope().

Referenced by findEligibleNextHopWithEarliestOutRecord().

◆ NFD_REGISTER_STRATEGY() [2/7]

nfd::fw::NFD_REGISTER_STRATEGY ( BestRouteStrategy  )

◆ NFD_REGISTER_STRATEGY() [3/7]

nfd::fw::NFD_REGISTER_STRATEGY ( BestRouteStrategy2  )

◆ NFD_REGISTER_STRATEGY() [4/7]

nfd::fw::NFD_REGISTER_STRATEGY ( MulticastStrategy  )

◆ NFD_REGISTER_STRATEGY() [5/7]

nfd::fw::NFD_REGISTER_STRATEGY ( NccStrategy  )

◆ NFD_REGISTER_STRATEGY() [6/7]

nfd::fw::NFD_REGISTER_STRATEGY ( RandomStrategy  )

◆ NFD_REGISTER_STRATEGY() [7/7]

nfd::fw::NFD_REGISTER_STRATEGY ( SelfLearningStrategy  )

◆ operator<<()

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

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

References CACHE, and DROP.

Variable Documentation

◆ AccessStrategy

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

◆ BestRouteStrategy2

◆ MulticastStrategy

◆ ProcessNackTraits

◆ RandomStrategy

Definition at line 35 of file random-strategy.cpp.

◆ SelfLearningStrategy

◆ Strategy

Definition at line 38 of file strategy.cpp.

◆ DropAllUnsolicitedDataPolicy

◆ AdmitLocalUnsolicitedDataPolicy

◆ AdmitNetworkUnsolicitedDataPolicy

◆ AdmitAllUnsolicitedDataPolicy