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. 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. More...
 
class  DropAllUnsolicitedDataPolicy
 drops all unsolicited Data More...
 
class  MulticastStrategy
 A forwarding strategy that forwards Interests to all FIB nexthops. More...
 
class  ProcessNackTraits
 
class  ProcessNackTraitsBase
 Provides a common procedure for processing Nacks. More...
 
class  RandomStrategy
 A forwarding strategy that 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 forwarding strategy. More...
 
class  Strategy
 Represents a forwarding strategy. More...
 
class  StrategyInfo
 Contains arbitrary information placed by the forwarding strategy on table entries. More...
 
class  UnsolicitedDataPolicy
 determines how to process an unsolicited Data More...
 

Typedefs

using DefaultUnsolicitedDataPolicy = DropAllUnsolicitedDataPolicy
 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...
 
int findDuplicateNonce (const pit::Entry &pitEntry, Interest::Nonce 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::time_point 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, time::steady_clock::time_point now)
 
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 (MulticastStrategy)
 
 NFD_REGISTER_STRATEGY (RandomStrategy)
 
 NFD_REGISTER_STRATEGY (SelfLearningStrategy)
 
std::ostream & operator<< (std::ostream &os, UnsolicitedDataDecision d)
 

Variables

 AccessStrategy
 
 BestRouteStrategy
 
 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 47 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/5]

nfd::fw::NFD_REGISTER_STRATEGY ( AccessStrategy  )

◆ wouldViolateScope()

bool nfd::fw::wouldViolateScope ( const Face inFace,
const Interest interest,
const Face outFace 
)

◆ findDuplicateNonce()

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

determine whether pitEntry has duplicate Nonce nonce

Returns
OR'ed DuplicateNonceWhere

Definition at line 55 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::Forwarder().

◆ hasPendingOutRecords()

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

determine whether pitEntry has any pending out-records

Returns
true if there is at least one out-record waiting for Data

Definition at line 85 of file algorithm.cpp.

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

Referenced by nfd::fw::asf::AsfStrategy::afterReceiveInterest(), nfd::fw::RetxSuppressionFixed::decidePerPitEntry(), nfd::fw::RetxSuppressionExponential::decidePerPitEntry(), and nfd::Forwarder::onIncomingNack().

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

References nfd::pit::FaceRecord::getLastRenewed(), 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 109 of file algorithm.cpp.

References websocketpp::http::status_code::found, and isNextHopEligible().

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

◆ isNextHopEligible() [1/2]

◆ isNextHopEligible() [2/2]

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

◆ NFD_REGISTER_STRATEGY() [2/5]

nfd::fw::NFD_REGISTER_STRATEGY ( BestRouteStrategy  )

◆ NFD_REGISTER_STRATEGY() [3/5]

nfd::fw::NFD_REGISTER_STRATEGY ( MulticastStrategy  )

◆ NFD_REGISTER_STRATEGY() [4/5]

nfd::fw::NFD_REGISTER_STRATEGY ( RandomStrategy  )

◆ NFD_REGISTER_STRATEGY() [5/5]

nfd::fw::NFD_REGISTER_STRATEGY ( SelfLearningStrategy  )

◆ operator<<()

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

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

References CACHE, and DROP.

Variable Documentation

◆ AccessStrategy

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

◆ BestRouteStrategy

◆ MulticastStrategy

◆ ProcessNackTraits

◆ RandomStrategy

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

◆ SelfLearningStrategy

◆ Strategy

◆ DropAllUnsolicitedDataPolicy

◆ AdmitLocalUnsolicitedDataPolicy

◆ AdmitNetworkUnsolicitedDataPolicy

◆ AdmitAllUnsolicitedDataPolicy