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 .SetGroupName (
"Internet")
44 .AddAttribute (
"ReTxThreshold",
"Threshold for fast retransmit",
47 MakeUintegerChecker<uint32_t> ())
59 m_retxThresh (sock.m_retxThresh),
73 return CopyObject<TcpReno> (
this);
104 adder = std::max (1.0, adder);
105 m_cWnd +=
static_cast<uint32_t
> (adder);
147 if (m_state <= ESTABLISHED && m_txBuffer->HeadSequence () >=
m_highTxMark)
return;
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 "...
virtual void Retransmit(void)
Halving cwnd and call DoRetransmit()
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
virtual Ptr< TcpSocketBase > Fork(void)
Call CopyObject<> to clone me.
TracedValue< uint32_t > m_cWnd
Congestion window.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
bool IsRunning(void) const
This method is syntactic sugar for !IsExpired().
uint32_t m_segmentSize
Segment size.
virtual void NewAck(const SequenceNumber32 &seq)
Update buffers w.r.t.
TracedValue< SequenceNumber32 > m_nextTxSequence
Next seqnum to be sent (SND.NXT), ReTx pushes it back.
T Get(void) const
Get the underlying value.
TracedValue< TcpStates_t > m_state
TCP state.
An implementation of a stream socket using TCP.
bool m_inFastRec
currently in fast recovery
Ptr< TcpTxBuffer > m_txBuffer
Tx buffer.
virtual void DupAck(const TcpHeader &t, uint32_t count)
Received dupack (duplicate ACK)
Hold an unsigned integer type.
A base class for implementation of a stream socket using TCP.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint32_t m_retxThresh
Fast Retransmit threshold.
virtual uint32_t BytesInFlight(void)
Return total bytes in flight.
static TypeId GetTypeId(void)
Get the type ID.
static Time Now(void)
Return the current simulation virtual time.
TracedValue< SequenceNumber32 > m_highTxMark
Highest seqno ever sent, regardless of ReTx.
virtual void NewAck(SequenceNumber32 const &seq)
Update buffers w.r.t.
bool m_connected
Connection established.
Timeout to catch resent junk before entering closed, can only be entered from FIN_WAIT2 or CLOSING...
TracedValue< uint32_t > m_ssThresh
Slow start threshold.
EventId m_sendPendingDataEvent
micro-delay event to send pending data
TcpReno(void)
Create an unbound tcp socket.
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.
bool SendPendingData(bool withAck=false)
Send as much pending data as possible according to the Tx window.
virtual void DoRetransmit(void)
Retransmit the oldest packet.