21 #define NS_LOG_APPEND_CONTEXT \
22 if (m_node) { std::clog << Simulator::Now ().GetSeconds () << " [node " << m_node->GetId () << "] "; }
26 #include "ns3/trace-source-accessor.h"
27 #include "ns3/simulator.h"
28 #include "ns3/abort.h"
42 .AddConstructor<TcpNewReno> ()
43 .AddAttribute (
"ReTxThreshold",
"Threshold for fast retransmit",
46 MakeUintegerChecker<uint32_t> ())
47 .AddAttribute (
"LimitedTransmit",
"Enable limited transmit",
50 MakeBooleanChecker ())
51 .AddTraceSource (
"CongestionWindow",
52 "The TCP connection's congestion window",
69 m_ssThresh (sock.m_ssThresh),
70 m_initialCWnd (sock.m_initialCWnd),
71 m_retxThresh (sock.m_retxThresh),
73 m_limitedTx (sock.m_limitedTx)
112 return CopyObject<TcpNewReno> (
this);
120 NS_LOG_LOGIC (
"TcpNewReno receieved ACK for seq " << seq <<
138 NS_LOG_INFO (
"Received full ACK. Leaving fast recovery with cwnd set to " <<
m_cWnd);
151 adder = std::max (1.0, adder);
152 m_cWnd +=
static_cast<uint32_t
> (adder);
171 NS_LOG_INFO (
"Triple dupack. Enter fast recovery mode. Reset cwnd to " <<
m_cWnd <<
210 m_rtt->IncreaseMultiplier ();
NS_LOG_COMPONENT_DEFINE("TcpNewReno")
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
virtual void NewAck(SequenceNumber32 const &seq)
uint32_t SendDataPacket(SequenceNumber32 seq, uint32_t maxSize, bool withAck)
uint32_t SizeFromSequence(const SequenceNumber32 &seq) const
SequenceNumber32 HeadSequence(void) const
virtual uint32_t GetInitialCwnd(void) const
virtual uint32_t Window(void)
TracedValue< SequenceNumber32 > m_nextTxSequence
An implementation of a stream socket using TCP.
TracedValue< TcpStates_t > m_state
#define NS_ABORT_MSG_UNLESS(cond, msg)
Abnormal program termination if cond is false.
virtual void SetSegSize(uint32_t size)
a polymophic address class
static TypeId GetTypeId(void)
virtual void DupAck(const TcpHeader &t, uint32_t count)
Hold an unsigned integer type.
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
virtual void SetInitialCwnd(uint32_t cwnd)
virtual int Connect(const Address &address)
TracedValue< uint32_t > m_cWnd
A base class for implementation of a stream socket using TCP.
Ptr< RttEstimator > m_rtt
void InitializeCwnd(void)
#define NS_LOG_LOGIC(msg)
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
virtual uint32_t BytesInFlight(void)
virtual int Connect(const Address &address)
virtual void Retransmit(void)
TracedValue< SequenceNumber32 > m_highTxMark
virtual uint32_t GetSSThresh(void) const
virtual void NewAck(SequenceNumber32 const &seq)
virtual Ptr< TcpSocketBase > Fork(void)
virtual void SetSSThresh(uint32_t threshold)
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
bool SendPendingData(bool withAck=false)
TracedValue< uint32_t > m_rWnd
virtual void DoRetransmit(void)
SequenceNumber32 m_recover
virtual ~TcpNewReno(void)