A forwarding strategy that forwards Interests to all FIB nexthops. More...
#include <multicast-strategy.hpp>
Public Member Functions | |
MulticastStrategy (Forwarder &forwarder, const Name &name=getStrategyName()) | |
void | afterReceiveInterest (const Interest &interest, const FaceEndpoint &ingress, const shared_ptr< pit::Entry > &pitEntry) override |
Trigger after an Interest is received. More... | |
void | afterNewNextHop (const fib::NextHop &nextHop, const shared_ptr< pit::Entry > &pitEntry) override |
Trigger after a new nexthop is added. More... | |
Public Member Functions inherited from nfd::fw::Strategy | |
Strategy (Forwarder &forwarder) | |
Construct a strategy instance. More... | |
virtual | ~Strategy () |
const Name & | getInstanceName () const |
virtual void | afterReceiveLoopedInterest (const FaceEndpoint &ingress, const Interest &interest, pit::Entry &pitEntry) |
trigger after a looped Interest is received More... | |
virtual void | beforeSatisfyInterest (const Data &data, const FaceEndpoint &ingress, const shared_ptr< pit::Entry > &pitEntry) |
trigger before PIT entry is satisfied More... | |
virtual void | satisfyInterest (const shared_ptr< pit::Entry > &pitEntry, const FaceEndpoint &ingress, const Data &data, std::set< std::pair< Face *, EndpointId >> &satisfiedDownstreams, std::set< std::pair< Face *, EndpointId >> &unsatisfiedDownstreams) |
virtual void | afterContentStoreHit (const Data &data, const FaceEndpoint &ingress, const shared_ptr< pit::Entry > &pitEntry) |
trigger after a Data is matched in CS More... | |
virtual void | afterReceiveData (const Data &data, const FaceEndpoint &ingress, const shared_ptr< pit::Entry > &pitEntry) |
trigger after Data is received More... | |
virtual void | afterReceiveNack (const lp::Nack &nack, const FaceEndpoint &ingress, const shared_ptr< pit::Entry > &pitEntry) |
Trigger after a Nack is received. More... | |
virtual void | onDroppedInterest (const Interest &interest, Face &egress) |
Trigger after an Interest is dropped (e.g., for exceeding allowed retransmissions). More... | |
Static Public Member Functions | |
static const Name & | getStrategyName () |
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< Strategy > | create (const Name &instanceName, Forwarder &forwarder) |
static bool | areSameType (const Name &instanceNameA, const Name &instanceNameB) |
static std::set< Name > | listRegistered () |
static const Name & | getStrategyName () |
Additional Inherited Members | |
Protected Member Functions inherited from nfd::fw::Strategy | |
NFD_VIRTUAL_WITH_TESTS pit::OutRecord * | sendInterest (const Interest &interest, Face &egress, const shared_ptr< pit::Entry > &pitEntry) |
Send an Interest packet. More... | |
NFD_VIRTUAL_WITH_TESTS bool | sendData (const Data &data, Face &egress, const shared_ptr< pit::Entry > &pitEntry) |
Send a Data packet. More... | |
NFD_VIRTUAL_WITH_TESTS void | sendDataToAll (const Data &data, const shared_ptr< pit::Entry > &pitEntry, const Face &inFace) |
Send a Data packet to all matched and qualified faces. More... | |
NFD_VIRTUAL_WITH_TESTS void | rejectPendingInterest (const shared_ptr< pit::Entry > &pitEntry) |
Schedule the PIT entry for immediate deletion. More... | |
NFD_VIRTUAL_WITH_TESTS bool | sendNack (const lp::NackHeader &header, Face &egress, const shared_ptr< pit::Entry > &pitEntry) |
Send a Nack packet. More... | |
void | sendNacks (const lp::NackHeader &header, const shared_ptr< pit::Entry > &pitEntry, std::initializer_list< const Face *> exceptFaces={}) |
Send Nack to every face that has an in-record, except those in exceptFaces . More... | |
void | setExpiryTimer (const shared_ptr< pit::Entry > &pitEntry, time::milliseconds duration) |
Schedule the PIT entry to be erased after duration . More... | |
const fib::Entry & | lookupFib (const pit::Entry &pitEntry) const |
Performs a FIB lookup, considering Link object if present. More... | |
MeasurementsAccessor & | getMeasurements () |
Face * | getFace (FaceId id) const |
const FaceTable & | getFaceTable () const |
void | setInstanceName (const Name &name) |
Set strategy instance name. More... | |
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 |
A forwarding strategy that forwards Interests to all FIB nexthops.
Definition at line 37 of file multicast-strategy.hpp.
|
explicit |
Definition at line 40 of file multicast-strategy.cpp.
References getStrategyName(), nfd::fw::Strategy::makeInstanceName(), NDN_THROW, nfd::fw::Strategy::ParsedInstanceName::parameters, nfd::fw::Strategy::parseInstanceName(), nfd::fw::Strategy::setInstanceName(), ndn::to_string(), and nfd::fw::Strategy::ParsedInstanceName::version.
|
static |
Definition at line 58 of file multicast-strategy.cpp.
References ns3::ndn::Name.
Referenced by MulticastStrategy().
|
overridevirtual |
Trigger after an Interest is received.
The Interest:
The PIT entry is set to expire after InterestLifetime has elapsed at each downstream.
The strategy should decide whether and where to forward this Interest.
pitEntry
shared_ptr after this function returns, otherwise undefined behavior may occur. However, the strategy is allowed to construct and keep a weak_ptr to pitEntry
. Implements nfd::fw::Strategy.
Definition at line 65 of file multicast-strategy.cpp.
References nfd::fw::RetxSuppressionExponential::decidePerUpstream(), Face, nfd::FaceEndpoint::face, nfd::fw::FORWARD, nfd::fib::Entry::getNextHops(), nfd::fw::RetxSuppressionExponential::incrementIntervalForOutRecord(), nfd::fw::isNextHopEligible(), nfd::fw::Strategy::lookupFib(), NFD_LOG_DEBUG, nfd::fw::Strategy::sendInterest(), and nfd::fw::SUPPRESS.
|
overridevirtual |
Trigger after a new nexthop is added.
The strategy should decide whether to send the buffered Interests to the new nexthop.
In the base class, this method does nothing.
Reimplemented from nfd::fw::Strategy.
Definition at line 94 of file multicast-strategy.cpp.
References nfd::fib::NextHop::getFace(), nfd::fw::isNextHopEligible(), NFD_LOG_DEBUG, and nfd::fw::Strategy::sendInterest().