40     .AddConstructor<TcpVeno> ()
    41     .SetGroupName (
"Internet")
    42     .AddAttribute (
"Beta", 
"Threshold for congestion detection",
    45                    MakeUintegerChecker<uint32_t> ())
    55     m_doingVenoNow (true),
    66     m_baseRtt (sock.m_baseRtt),
    67     m_minRtt (sock.m_minRtt),
    68     m_cntRtt (sock.m_cntRtt),
    69     m_doingVenoNow (true),
    72     m_ackCnt (sock.m_ackCnt),
    86   return CopyObject<TcpVeno> (
this);
   164   targetCwnd = 
static_cast<uint32_t
> (segCwnd * tmp);
   165   NS_LOG_DEBUG (
"Calculated targetCwnd = " << targetCwnd);
   169   m_diff = segCwnd - targetCwnd;
   175       NS_LOG_LOGIC (
"Veno is not turned on, we follow NewReno algorithm.");
   183       NS_LOG_LOGIC (
"We do not have enough RTT samples to perform Veno "   184                     "calculations, we behave like NewReno.");
   189       NS_LOG_LOGIC (
"We have enough RTT samples to perform Veno calculations.");
   193           NS_LOG_LOGIC (
"We are in slow start, behave like NewReno.");
   198           NS_LOG_LOGIC (
"We are in congestion avoidance, execute Veno additive "   205               NS_LOG_LOGIC (
"Available bandwidth not fully utilized, increase "   206                             "cwnd by 1 every RTT");
   213               NS_LOG_LOGIC (
"Available bandwidth fully utilized, increase cwnd "   214                             "by 1 every other RTT");
   241                       uint32_t bytesInFlight)
   249       NS_LOG_LOGIC (
"Random loss is most likely to have occurred, "   250                     "cwnd is reduced by 1/5");
   251       static double tmp = 4.0/5.0;
   252       return std::max (static_cast<uint32_t> (bytesInFlight * tmp),
   253                        2 * tcb->m_segmentSize);
   259       NS_LOG_LOGIC (
"Congestive loss is most likely to have occurred, " virtual Ptr< TcpCongestionOps > Fork()
Copy the congestion control algorithm across socket. 
Simulation virtual time values and global simulation resolution. 
Smart pointer class similar to boost::intrusive_ptr. 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
Normal state, no dubious events. 
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
virtual uint32_t GetSsThresh(Ptr< const TcpSocketState > tcb, uint32_t bytesInFlight)
Get slow start threshold during Veno multiplicative-decrease phase. 
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit. 
TcpVeno(void)
Create an unbound tcp socket. 
virtual uint32_t SlowStart(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
 Tcp NewReno slow start algorithm 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
void DisableVeno()
Turn off Veno. 
virtual void IncreaseWindow(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
Try to increase the cWnd following the NewReno specification. 
The NewReno implementation. 
An implementation of TCP Veno. 
bool m_inc
If true, cwnd needs to be incremented. 
uint32_t m_beta
Threshold for congestion detection. 
static Time Max()
Maximum representable Time. 
bool m_doingVenoNow
If true, do Veno for this RTT. 
Hold an unsigned integer type. 
uint32_t m_diff
Difference between expected and actual throughput. 
int64x64_t Max(const int64x64_t &a, const int64x64_t &b)
Maximum. 
virtual uint32_t GetSsThresh(Ptr< const TcpSocketState > tcb, uint32_t bytesInFlight)
Get the slow start threshold after a loss event. 
TracedValue< uint32_t > m_ssThresh
Slow start threshold. 
TcpCongState_t
Definition of the Congestion state machine. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
virtual std::string GetName() const
Get the name of the congestion control algorithm. 
NS_LOG_LOGIC("Net device "<< nd<< " is not bridged")
virtual void CongestionStateSet(Ptr< TcpSocketState > tcb, const TcpSocketState::TcpCongState_t newState)
Enable/disable Veno depending on the congestion state. 
static TypeId GetTypeId(void)
Get the type ID. 
TracedValue< uint32_t > m_cWnd
Congestion window. 
virtual void PktsAcked(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked, const Time &rtt)
Perform RTT sampling needed to execute Veno algorithm. 
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG. 
Time m_baseRtt
Minimum of all RTT measurements seen during connection. 
uint32_t m_cntRtt
Number of RTT measurements during last RTT. 
virtual void IncreaseWindow(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
Adjust cwnd following Veno additive increase algorithm. 
virtual void CongestionAvoidance(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
NewReno congestion avoidance. 
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
 Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
a unique identifier for an interface. 
TypeId SetParent(TypeId tid)
Set the parent TypeId. 
Time m_minRtt
Minimum of RTTs measured within last RTT. 
void EnableVeno()
Enable Veno algorithm to start Veno sampling. 
uint32_t GetCwndInSegments() const
Get cwnd in segments rather than bytes.