26 #include "ns3/simulator.h"     38     .AddConstructor<TcpLedbat> ()
    39     .SetGroupName (
"Internet")
    40     .AddAttribute (
"TargetDelay",
    41                    "Targeted Queue Delay",
    45     .AddAttribute (
"BaseHistoryLen",
    46                    "Number of Base delay samples",
    49                    MakeUintegerChecker<uint32_t> ())
    50     .AddAttribute (
"NoiseFilterLen",
    51                    "Number of Current delay samples",
    54                    MakeUintegerChecker<uint32_t> ())
    55     .AddAttribute (
"Gain",
    59                    MakeDoubleChecker<double> ())
    60     .AddAttribute (
"SSParam",
    61                    "Possibility of Slow Start",
    66     .AddAttribute (
"MinCwnd",
    67                    "Minimum cWnd for Ledbat",
    70                    MakeUintegerChecker<uint32_t> ())
   138   return CopyObject<TcpLedbat> (
this);
   150   if (b.
buffer.size () == 0)
   205   if (current_delay > base_delay)
   207       queue_delay = 
static_cast<int64_t
> (current_delay - base_delay);
   212       queue_delay = 
static_cast<int64_t
> (base_delay - current_delay);
   234   if (cb.
buffer.size () == 0)
   237       cb.
buffer.push_back (owd);
   241   cb.
buffer.push_back (owd);
   244       cb.
min = 
static_cast<uint32_t
> (cb.
buffer.size () - 1);
   246   if (cb.
buffer.size () >= maxlen)
   252       for (uint32_t i = 1; i < maxlen - 1; i++)
 uint32_t BaseDelay()
Return the value of base delay. 
uint32_t m_rcvTimestampValue
Receiver Timestamp value. 
uint32_t min
The index of minimum value. 
Simulation virtual time values and global simulation resolution. 
uint32_t m_noiseFilterLen
Length of current delay buffer. 
std::vector< uint32_t > buffer
Vector to store the delay. 
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 "...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
virtual void PktsAcked(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked, const Time &rtt)
Get information from the acked packet. 
uint32_t m_rcvTimestampEchoReply
Sender Timestamp echoed by the receiver. 
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit. 
uint64_t m_lastRollover
Timestamp of last added delay. 
virtual uint32_t SlowStart(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
 Tcp NewReno slow start algorithm 
void AddDelay(struct OwdCircBuf &cb, uint32_t owd, uint32_t maxlen)
Add new delay to the buffers. 
An implementation of LEDBAT. 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
virtual void IncreaseWindow(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
Adjust cwnd following LEDBAT algorithm. 
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit. 
uint32_t m_segmentSize
Segment size. 
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function. 
The NewReno implementation. 
static uint32_t MinCircBuf(struct OwdCircBuf &b)
Return the minimum delay of the buffer. 
OwdCircBuf m_baseHistory
Buffer to store the base delay. 
Buffer structure to store delays. 
virtual ~TcpLedbat(void)
Destructor. 
static TypeId GetTypeId(void)
Get the type ID. 
void InitCircBuf(struct OwdCircBuf &buffer)
Initialise a new buffer. 
virtual Ptr< TcpCongestionOps > Fork()
Copy the congestion control algorithm across sockets. 
Hold variables of type enum. 
  AttributeValue implementation for Time. 
Hold an unsigned integer type. 
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
 Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
SlowStartType m_doSs
Permissible Slow Start State. 
uint32_t m_baseHistoLen
Length of base delay history buffer. 
SequenceNumber32 m_lastAckedSeq
Last sequence ACKed. 
SlowStartType
The slowstart types. 
uint32_t CurrentDelay(FilterFunction filter)
Return the value of current delay. 
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC. 
TracedValue< uint32_t > m_ssThresh
Slow start threshold. 
uint32_t m_minCwnd
Minimum cWnd value mentioned in RFC 6817. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
double m_gain
GAIN value from RFC. 
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
 Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
static Time Now(void)
Return the current simulation virtual time. 
Time m_target
Target Queue Delay. 
TracedValue< uint32_t > m_cWnd
Congestion window. 
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
 Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void UpdateBaseDelay(uint32_t owd)
Update the base delay buffer. 
uint32_t m_flag
LEDBAT Flag. 
int64_t GetMilliSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit. 
bool IsPositive(void) const
Exactly equivalent to t >= 0. 
T Get(void) const
Get the underlying value. 
virtual void CongestionAvoidance(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
Reduce Congestion. 
void SetDoSs(SlowStartType doSS)
Change the Slow Start Capability. 
Ptr< const AttributeChecker > MakeEnumChecker(int v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name. 
TracedValue< SequenceNumber32 > m_highTxMark
Highest seqno ever sent, regardless of ReTx. 
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range. 
virtual void CongestionAvoidance(Ptr< TcpSocketState > tcb, uint32_t segmentsAcked)
NewReno congestion avoidance. 
OwdCircBuf m_noiseFilter
Buffer to store the current delay. 
This class can be used to hold variables of floating point type such as 'double' or 'float'...
virtual std::string GetName() const
Get the name of the TCP flavour. 
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. 
int32_t m_sndCwndCnt
The congestion window addition parameter. 
TcpLedbat(void)
Create an unbound tcp socket. 
If LEDBAT allows Slow Start. 
If valid timestamps are present.