NDN consumer application with more advanced congestion control options. More...
#include <ndn-consumer-pcon.hpp>


Public Member Functions | |
| ConsumerPcon () | |
| virtual void | OnData (shared_ptr< const Data > data) override |
| Method that will be called every time new Data arrives. More... | |
| virtual void | OnTimeout (uint32_t sequenceNum) override |
| Timeout event. More... | |
Public Member Functions inherited from ns3::ndn::ConsumerWindow | |
| ConsumerWindow () | |
| Default constructor. More... | |
| virtual void | WillSendOutInterest (uint32_t sequenceNumber) |
| An event that is fired just before an Interest packet is actually send out (send is inevitable) More... | |
Public Member Functions inherited from ns3::ndn::Consumer | |
| Consumer () | |
| Default constructor Sets up randomizer function and packet sequence number. More... | |
| virtual | ~Consumer () |
| virtual void | OnNack (shared_ptr< const lp::Nack > nack) |
| Method that will be called every time new Nack arrives. More... | |
| void | SendPacket () |
| Actually send packet. More... | |
Public Member Functions inherited from ns3::ndn::App | |
| App () | |
| Default constructor. More... | |
| virtual | ~App () |
| uint32_t | GetId () const |
| Get application ID (ID of applications face) More... | |
| virtual void | OnInterest (shared_ptr< const Interest > interest) |
| Method that will be called every time new Interest arrives. More... | |
Static Public Member Functions | |
| static TypeId | GetTypeId () |
Static Public Member Functions inherited from ns3::ndn::ConsumerWindow | |
| static TypeId | GetTypeId () |
Static Public Member Functions inherited from ns3::ndn::Consumer | |
| static TypeId | GetTypeId () |
Static Public Member Functions inherited from ns3::ndn::App | |
| static TypeId | GetTypeId () |
Additional Inherited Members | |
Public Types inherited from ns3::ndn::ConsumerWindow | |
| typedef std::function< void(double)> | WindowTraceCallback |
Public Types inherited from ns3::ndn::Consumer | |
| typedef void(* | LastRetransmittedInterestDataDelayCallback) (Ptr< App > app, uint32_t seqno, Time delay, int32_t hopCount) |
| typedef void(* | FirstInterestDataDelayCallback) (Ptr< App > app, uint32_t seqno, Time delay, uint32_t retxCount, int32_t hopCount) |
Public Types inherited from ns3::ndn::App | |
| typedef void(* | InterestTraceCallback) (shared_ptr< const Interest >, Ptr< App >, shared_ptr< Face >) |
| typedef void(* | DataTraceCallback) (shared_ptr< const Data >, Ptr< App >, shared_ptr< Face >) |
| typedef void(* | NackTraceCallback) (shared_ptr< const lp::Nack >, Ptr< App >, shared_ptr< Face >) |
Protected Member Functions inherited from ns3::ndn::ConsumerWindow | |
| virtual void | ScheduleNextPacket () |
| Constructs the Interest packet and sends it using a callback to the underlying NDN protocol. More... | |
Protected Member Functions inherited from ns3::ndn::Consumer | |
| virtual void | StartApplication () |
| Called at time specified by Start. More... | |
| virtual void | StopApplication () |
| Called at time specified by Stop. More... | |
| void | CheckRetxTimeout () |
| Checks if the packet need to be retransmitted becuase of retransmission timer expiration. More... | |
| void | SetRetxTimer (Time retxTimer) |
| Modifies the frequency of checking the retransmission timeouts. More... | |
| Time | GetRetxTimer () const |
| Returns the frequency of checking the retransmission timeouts. More... | |
Protected Member Functions inherited from ns3::ndn::App | |
| virtual void | DoInitialize () |
| virtual void | DoDispose () |
Protected Attributes inherited from ns3::ndn::ConsumerWindow | |
| uint32_t | m_payloadSize |
| double | m_maxSize |
| uint32_t | m_initialWindow |
| bool | m_setInitialWindowOnTimeout |
| TracedValue< double > | m_window |
| TracedValue< uint32_t > | m_inFlight |
Protected Attributes inherited from ns3::ndn::Consumer | |
| Ptr< UniformRandomVariable > | m_rand |
| nonce generator More... | |
| uint32_t | m_seq |
| currently requested sequence number More... | |
| uint32_t | m_seqMax |
| maximum number of sequence number More... | |
| EventId | m_sendEvent |
| EventId of pending "send packet" event. More... | |
| Time | m_retxTimer |
| Currently estimated retransmission timer. More... | |
| EventId | m_retxEvent |
| Event to check whether or not retransmission should be performed. More... | |
| Ptr< RttEstimator > | m_rtt |
| RTT estimator. More... | |
| Time | m_offTime |
| Time interval between packets. More... | |
| Name | m_interestName |
| NDN Name of the Interest (use Name) More... | |
| Time | m_interestLifeTime |
| LifeTime for interest packet. More... | |
Protected Attributes inherited from ns3::ndn::App | |
| bool | m_active |
| Flag to indicate that application is active (set by StartApplication and StopApplication) More... | |
| shared_ptr< Face > | m_face |
| AppLinkService * | m_appLink |
| uint32_t | m_appId |
| TracedCallback< shared_ptr< const Interest >, Ptr< App >, shared_ptr< Face > > | m_receivedInterests |
| App-level trace of received Interests. More... | |
| TracedCallback< shared_ptr< const Data >, Ptr< App >, shared_ptr< Face > > | m_receivedDatas |
| App-level trace of received Data. More... | |
| TracedCallback< shared_ptr< const lp::Nack >, Ptr< App >, shared_ptr< Face > > | m_receivedNacks |
| App-level trace of received Nacks. More... | |
| TracedCallback< shared_ptr< const Interest >, Ptr< App >, shared_ptr< Face > > | m_transmittedInterests |
| App-level trace of transmitted Interests. More... | |
| TracedCallback< shared_ptr< const Data >, Ptr< App >, shared_ptr< Face > > | m_transmittedDatas |
| App-level trace of transmitted Data. More... | |
| TracedCallback< shared_ptr< const lp::Nack >, Ptr< App >, shared_ptr< Face > > | m_transmittedNacks |
| App-level trace of transmitted Nacks. More... | |
NDN consumer application with more advanced congestion control options.
This app uses the algorithms from "A Practical Congestion Control Scheme for Named Data Networking" (https://dl.acm.org/citation.cfm?id=2984369).
It implements slow start, conservative window adaptation (RFC 6675), and 3 different TCP algorithms: AIMD, BIC, and CUBIC (RFC 8312).
ns3::ndn::ConsumerPcon is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Size of this type is 944 bytes (on a 64-bit architecture).
Definition at line 46 of file ndn-consumer-pcon.hpp.
| ns3::ndn::ConsumerPcon::ConsumerPcon | ( | ) |
Definition at line 88 of file ndn-consumer-pcon.cpp.
|
static |
Definition at line 34 of file ndn-consumer-pcon.cpp.
References ns3::ndn::AIMD, ns3::ndn::BIC, and ns3::ndn::CUBIC.
|
overridevirtual |
Method that will be called every time new Data arrives.
Reimplemented from ns3::ndn::ConsumerWindow.
Definition at line 105 of file ndn-consumer-pcon.cpp.
References ns3::ndn::ConsumerWindow::m_inFlight, ns3::ndn::ConsumerWindow::m_window, ns3::ndn::Consumer::OnData(), and ns3::ndn::ConsumerWindow::ScheduleNextPacket().
|
overridevirtual |
Timeout event.
| sequenceNumber | time outed sequence number |
Reimplemented from ns3::ndn::ConsumerWindow.
Definition at line 139 of file ndn-consumer-pcon.cpp.
References ns3::ndn::AIMD, ns3::ndn::BIC, ns3::ndn::CUBIC, ns3::ndn::ConsumerWindow::m_inFlight, ns3::ndn::ConsumerWindow::m_initialWindow, ns3::ndn::Consumer::m_seq, ns3::ndn::ConsumerWindow::m_window, ndn::time::steady_clock::now(), and ns3::ndn::Consumer::OnTimeout().