A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::TcpNewReno Class Reference

An implementation of a stream socket using TCP. More...

#include <tcp-newreno.h>

+ Inheritance diagram for ns3::TcpNewReno:
+ Collaboration diagram for ns3::TcpNewReno:

Public Member Functions

 TcpNewReno (void)
 TcpNewReno (const TcpNewReno &sock)
virtual ~TcpNewReno (void)
virtual int Connect (const Address &address)
virtual int Listen (void)
- Public Member Functions inherited from ns3::TcpSocketBase
 TcpSocketBase (void)
 TcpSocketBase (const TcpSocketBase &sock)
virtual ~TcpSocketBase (void)
virtual int Bind (void)
virtual int Bind (const Address &address)
virtual int Bind6 (void)
 Allocate a local IPv6 endpoint for this socket.
virtual void BindToNetDevice (Ptr< NetDevice > netdevice)
virtual int Close (void)
virtual enum SocketErrno GetErrno (void) const
virtual Ptr< NodeGetNode (void) const
virtual uint32_t GetRxAvailable (void) const
virtual enum SocketType GetSocketType (void) const
virtual int GetSockName (Address &address) const
virtual uint32_t GetTxAvailable (void) const
virtual Ptr< PacketRecv (uint32_t maxSize, uint32_t flags)
virtual Ptr< PacketRecvFrom (uint32_t maxSize, uint32_t flags, Address &fromAddress)
virtual int Send (Ptr< Packet > p, uint32_t flags)
virtual int SendTo (Ptr< Packet > p, uint32_t flags, const Address &toAddress)
virtual void SetNode (Ptr< Node > node)
virtual void SetRtt (Ptr< RttEstimator > rtt)
virtual void SetTcp (Ptr< TcpL4Protocol > tcp)
virtual int ShutdownRecv (void)
virtual int ShutdownSend (void)
- Public Member Functions inherited from ns3::TcpSocket
 TcpSocket (void)
virtual ~TcpSocket (void)
- Public Member Functions inherited from ns3::Socket
 Socket (void)
virtual ~Socket (void)
Ptr< NetDeviceGetBoundNetDevice ()
 Returns socket's bound netdevice, if any.
bool IsRecvPktInfo () const
 Get status indicating whether enable/disable packet information to socket.
Ptr< PacketRecv (void)
 Read a single packet from the socket.
int Recv (uint8_t *buf, uint32_t size, uint32_t flags)
 Recv data (or dummy data) from the remote host.
Ptr< PacketRecvFrom (Address &fromAddress)
 Read a single packet from the socket and retrieve the sender address.
int RecvFrom (uint8_t *buf, uint32_t size, uint32_t flags, Address &fromAddress)
 Read a single packet from the socket and retrieve the sender address.
int Send (Ptr< Packet > p)
 Send data (or dummy data) to the remote host.
int Send (const uint8_t *buf, uint32_t size, uint32_t flags)
 Send data (or dummy data) to the remote host.
int SendTo (const uint8_t *buf, uint32_t size, uint32_t flags, const Address &address)
 Send data to a specified peer.
void SetAcceptCallback (Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated)
 Accept connection requests from remote hosts.
void SetCloseCallbacks (Callback< void, Ptr< Socket > > normalClose, Callback< void, Ptr< Socket > > errorClose)
 Detect socket recv() events such as graceful shutdown or error.
void SetConnectCallback (Callback< void, Ptr< Socket > > connectionSucceeded, Callback< void, Ptr< Socket > > connectionFailed)
 Specify callbacks to allow the caller to determine if the connection succeeds of fails.
void SetDataSentCallback (Callback< void, Ptr< Socket >, uint32_t > dataSent)
 Notify application when a packet has been sent from transport protocol (non-standard socket call)
void SetRecvCallback (Callback< void, Ptr< Socket > >)
 Notify application when new data is available to be read.
void SetRecvPktInfo (bool flag)
 Enable/Disable receive packet information to socket.
void SetSendCallback (Callback< void, Ptr< Socket >, uint32_t > sendCb)
 Notify application when space in transmit buffer is added.
- Public Member Functions inherited from ns3::Object
 Object ()
virtual ~Object ()
void AggregateObject (Ptr< Object > other)
void Dispose (void)
AggregateIterator GetAggregateIterator (void) const
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 SimpleRefCount (const SimpleRefCount &o)
uint32_t GetReferenceCount (void) const
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::TcpNewReno.

Protected Member Functions

virtual void DupAck (const TcpHeader &t, uint32_t count)
virtual Ptr< TcpSocketBaseFork (void)
virtual uint32_t GetInitialCwnd (void) const
virtual uint32_t GetSSThresh (void) const
virtual void NewAck (SequenceNumber32 const &seq)
virtual void Retransmit (void)
virtual void SetInitialCwnd (uint32_t cwnd)
virtual void SetSegSize (uint32_t size)
virtual void SetSSThresh (uint32_t threshold)
virtual uint32_t Window (void)
- Protected Member Functions inherited from ns3::TcpSocketBase
virtual void AddOptions (TcpHeader &)
virtual uint16_t AdvertisedWindowSize (void)
virtual uint32_t AvailableWindow (void)
virtual uint32_t BytesInFlight (void)
void CancelAllTimers (void)
void CloseAndNotify (void)
void CompleteFork (Ptr< Packet >, const TcpHeader &, const Address &fromAddress, const Address &toAdress)
void ConnectionSucceeded (void)
void DeallocateEndPoint (void)
virtual void DelAckTimeout (void)
void Destroy (void)
void Destroy6 (void)
int DoClose (void)
int DoConnect (void)
virtual void DoForwardUp (Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface)
virtual void DoForwardUp (Ptr< Packet > packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port)
void DoPeerClose (void)
virtual void DoRetransmit (void)
virtual void EstimateRtt (const TcpHeader &)
void ForwardUp (Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface)
void ForwardUp6 (Ptr< Packet > packet, Ipv6Address saddr, Ipv6Address daddr, uint16_t port)
virtual bool GetAllowBroadcast (void) const
 Query whether broadcast datagram transmissions are allowed.
virtual uint32_t GetConnCount (void) const
virtual Time GetConnTimeout (void) const
virtual uint32_t GetDelAckMaxCount (void) const
virtual Time GetDelAckTimeout (void) const
virtual Time GetPersistTimeout (void) const
virtual uint32_t GetRcvBufSize (void) const
virtual uint32_t GetSegSize (void) const
virtual uint32_t GetSndBufSize (void) const
virtual bool GetTcpNoDelay (void) const
virtual void LastAckTimeout (void)
bool OutOfRange (SequenceNumber32 head, SequenceNumber32 tail) const
void PeerClose (Ptr< Packet >, const TcpHeader &)
virtual void PersistTimeout (void)
void ProcessClosing (Ptr< Packet >, const TcpHeader &)
void ProcessEstablished (Ptr< Packet >, const TcpHeader &)
void ProcessLastAck (Ptr< Packet >, const TcpHeader &)
void ProcessListen (Ptr< Packet >, const TcpHeader &, const Address &, const Address &)
void ProcessSynRcvd (Ptr< Packet >, const TcpHeader &, const Address &, const Address &)
void ProcessSynSent (Ptr< Packet >, const TcpHeader &)
void ProcessWait (Ptr< Packet >, const TcpHeader &)
virtual void ReadOptions (const TcpHeader &)
virtual void ReceivedAck (Ptr< Packet >, const TcpHeader &)
virtual void ReceivedData (Ptr< Packet >, const TcpHeader &)
virtual void ReTxTimeout (void)
uint32_t SendDataPacket (SequenceNumber32 seq, uint32_t maxSize, bool withAck)
void SendEmptyPacket (uint8_t flags)
bool SendPendingData (bool withAck=false)
void SendRST (void)
virtual bool SetAllowBroadcast (bool allowBroadcast)
 Configure whether broadcast datagram transmissions are allowed.
virtual void SetConnCount (uint32_t count)
virtual void SetConnTimeout (Time timeout)
virtual void SetDelAckMaxCount (uint32_t count)
virtual void SetDelAckTimeout (Time timeout)
virtual void SetPersistTimeout (Time timeout)
virtual void SetRcvBufSize (uint32_t size)
virtual void SetSndBufSize (uint32_t size)
virtual void SetTcpNoDelay (bool noDelay)
int SetupCallback (void)
int SetupEndpoint (void)
int SetupEndpoint6 (void)
void TimeWait (void)
virtual uint32_t UnAckDataCount (void)

Protected Attributes

TracedValue< uint32_t > m_cWnd
bool m_inFastRec
uint32_t m_initialCWnd
bool m_limitedTx
SequenceNumber32 m_recover
uint32_t m_retxThresh
uint32_t m_ssThresh
- Protected Attributes inherited from ns3::TcpSocketBase
bool m_closeNotified
bool m_closeOnEmpty
uint32_t m_cnCount
uint32_t m_cnRetries
Time m_cnTimeout
bool m_connected
uint32_t m_delAckCount
EventId m_delAckEvent
uint32_t m_delAckMaxCount
Time m_delAckTimeout
uint32_t m_dupAckCount
Ipv4EndPointm_endPoint
Ipv6EndPointm_endPoint6
enum SocketErrno m_errno
TracedValue< SequenceNumber32m_highTxMark
EventId m_lastAckEvent
TracedValue< Timem_lastRtt
uint16_t m_maxWinSize
double m_msl
TracedValue< SequenceNumber32m_nextTxSequence
Ptr< Nodem_node
bool m_noDelay
EventId m_persistEvent
Time m_persistTimeout
EventId m_retxEvent
TracedValue< Timem_rto
Ptr< RttEstimatorm_rtt
TracedValue< uint32_t > m_rWnd
TcpRxBuffer m_rxBuffer
uint32_t m_segmentSize
bool m_shutdownRecv
bool m_shutdownSend
TracedValue< TcpStates_tm_state
Ptr< TcpL4Protocolm_tcp
EventId m_timewaitEvent
TcpTxBuffer m_txBuffer

Private Member Functions

void InitializeCwnd (void)

Additional Inherited Members

- Public Types inherited from ns3::Socket
enum  SocketErrno {
  ERROR_NOTERROR, ERROR_ISCONN, ERROR_NOTCONN, ERROR_MSGSIZE,
  ERROR_AGAIN, ERROR_SHUTDOWN, ERROR_OPNOTSUPP, ERROR_AFNOSUPPORT,
  ERROR_INVAL, ERROR_BADF, ERROR_NOROUTETOHOST, ERROR_NODEV,
  ERROR_ADDRNOTAVAIL, ERROR_ADDRINUSE, SOCKET_ERRNO_LAST
}
enum  SocketType { NS3_SOCK_STREAM, NS3_SOCK_SEQPACKET, NS3_SOCK_DGRAM, NS3_SOCK_RAW }
- Static Public Attributes inherited from ns3::TcpSocket
static const char *const TcpStateName [LAST_STATE] = { "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "CLOSE_WAIT", "LAST_ACK", "FIN_WAIT_1", "FIN_WAIT_2", "CLOSING", "TIME_WAIT" }

Detailed Description

An implementation of a stream socket using TCP.

This class contains the NewReno implementation of TCP, as of RFC2582.

Definition at line 36 of file tcp-newreno.h.

Constructor & Destructor Documentation

ns3::TcpNewReno::TcpNewReno ( void  )

Create an unbound tcp socket.

Definition at line 58 of file tcp-newreno.cc.

References NS_LOG_FUNCTION.

ns3::TcpNewReno::TcpNewReno ( const TcpNewReno sock)

Definition at line 66 of file tcp-newreno.cc.

References NS_LOG_FUNCTION, and NS_LOG_LOGIC.

ns3::TcpNewReno::~TcpNewReno ( void  )
virtual

Definition at line 79 of file tcp-newreno.cc.

Member Function Documentation

int ns3::TcpNewReno::Connect ( const Address address)
virtual

We initialize m_cWnd from this function, after attributes initialized

Reimplemented from ns3::TcpSocketBase.

Definition at line 94 of file tcp-newreno.cc.

References InitializeCwnd(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Ptr< TcpSocketBase > ns3::TcpNewReno::Fork ( void  )
protectedvirtual

Implements ns3::TcpSocketBase.

Definition at line 110 of file tcp-newreno.cc.

uint32_t ns3::TcpNewReno::GetInitialCwnd ( void  ) const
protectedvirtual

Implements ns3::TcpSocketBase.

Definition at line 241 of file tcp-newreno.cc.

References m_initialCWnd.

uint32_t ns3::TcpNewReno::GetSSThresh ( void  ) const
protectedvirtual

Implements ns3::TcpSocketBase.

Definition at line 228 of file tcp-newreno.cc.

References m_ssThresh.

TypeId ns3::TcpNewReno::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::TcpNewReno.

Attributes defined for this type:

  • ReTxThreshold: Threshold for fast retransmit
  • LimitedTransmit: Enable limited transmit
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read

Attributes defined in parent class ns3::TcpSocketBase:

  • MaxSegLifetime: Maximum segment lifetime in seconds, use for TIME_WAIT state transition to CLOSED state
    • Set with class: ns3::DoubleValue
    • Underlying type: double 0:1.79769e+308
    • Initial value: 120
    • Flags: construct write read
  • MaxWindowSize: Max size of advertised window

Attributes defined in parent class ns3::TcpSocket:

  • SndBufSize: TcpSocket maximum transmit buffer size (bytes)
  • RcvBufSize: TcpSocket maximum receive buffer size (bytes)
  • SegmentSize: TCP maximum segment size in bytes (may be adjusted based on MTU discovery)
  • SlowStartThreshold: TCP slow start threshold (bytes)
  • InitialCwnd: TCP initial congestion window size (segments)
  • ConnTimeout: TCP retransmission timeout when opening connection (seconds)
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +3000000000.0ns
    • Flags: construct write read
  • ConnCount: Number of connection attempts (SYN retransmissions) before returning failure
  • DelAckTimeout: Timeout value for TCP delayed acks, in seconds
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +200000000.0ns
    • Flags: construct write read
  • DelAckCount: Number of packets to wait before sending a TCP ack
  • TcpNoDelay: Set to true to disable Nagle's algorithm
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • PersistTimeout: Persist timeout to probe for rx window
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +6000000000.0ns
    • Flags: construct write read

TraceSources defined for this type:

  • CongestionWindow: The TCP connection's congestion window

TraceSources defined in parent class ns3::TcpSocketBase:

  • RTO: Retransmission timeout
  • RTT: Last RTT sample
  • NextTxSequence: Next sequence number to send (SND.NXT)
  • HighestSequence: Highest sequence number ever sent in socket's life time
  • State: TCP state
  • RWND: Remote side's flow control window

Reimplemented from ns3::TcpSocketBase.

Definition at line 38 of file tcp-newreno.cc.

References m_cWnd, m_limitedTx, m_retxThresh, ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().

Referenced by ns3::TcpL4Protocol::GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::TcpNewReno::InitializeCwnd ( void  )
private

Definition at line 247 of file tcp-newreno.cc.

References m_cWnd, m_initialCWnd, and ns3::TcpSocketBase::m_segmentSize.

Referenced by Connect(), and Listen().

+ Here is the caller graph for this function:

int ns3::TcpNewReno::Listen ( void  )
virtual

We initialize m_cWnd from this function, after attributes initialized

Reimplemented from ns3::TcpSocketBase.

Definition at line 85 of file tcp-newreno.cc.

References InitializeCwnd(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::TcpNewReno::NewAck ( SequenceNumber32 const &  seq)
protectedvirtual
void ns3::TcpNewReno::SetInitialCwnd ( uint32_t  cwnd)
protectedvirtual
void ns3::TcpNewReno::SetSegSize ( uint32_t  size)
protectedvirtual
void ns3::TcpNewReno::SetSSThresh ( uint32_t  threshold)
protectedvirtual

Implements ns3::TcpSocketBase.

Definition at line 222 of file tcp-newreno.cc.

References m_ssThresh.

uint32_t ns3::TcpNewReno::Window ( void  )
protectedvirtual

Limit the size of in-flight data by cwnd and receiver's rxwin

Reimplemented from ns3::TcpSocketBase.

Definition at line 103 of file tcp-newreno.cc.

References ns3::TracedValue< T >::Get(), m_cWnd, ns3::TcpSocketBase::m_rWnd, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

Member Data Documentation

TracedValue<uint32_t> ns3::TcpNewReno::m_cWnd
protected

Definition at line 68 of file tcp-newreno.h.

Referenced by DupAck(), GetTypeId(), InitializeCwnd(), NewAck(), Retransmit(), and Window().

bool ns3::TcpNewReno::m_inFastRec
protected

Definition at line 73 of file tcp-newreno.h.

Referenced by DupAck(), NewAck(), and Retransmit().

uint32_t ns3::TcpNewReno::m_initialCWnd
protected

Definition at line 70 of file tcp-newreno.h.

Referenced by GetInitialCwnd(), InitializeCwnd(), and SetInitialCwnd().

bool ns3::TcpNewReno::m_limitedTx
protected

Definition at line 74 of file tcp-newreno.h.

Referenced by DupAck(), and GetTypeId().

SequenceNumber32 ns3::TcpNewReno::m_recover
protected

Definition at line 71 of file tcp-newreno.h.

Referenced by DupAck(), and NewAck().

uint32_t ns3::TcpNewReno::m_retxThresh
protected

Definition at line 72 of file tcp-newreno.h.

Referenced by DupAck(), and GetTypeId().

uint32_t ns3::TcpNewReno::m_ssThresh
protected

Definition at line 69 of file tcp-newreno.h.

Referenced by DupAck(), GetSSThresh(), NewAck(), Retransmit(), and SetSSThresh().


The documentation for this class was generated from the following files: