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