A Discrete-Event Network Simulator
API

This is an implementation of various Transmission Control Protocol flavors. More...

+ Collaboration diagram for TCP:

Modules

 Congestion Control Algorithms.
 The various congestion control algorithms, also known as "TCP flavors".
 
 Recovery Algorithms.
 The various recovery algorithms used in recovery phase of TCP.
 

Classes

class  ns3::RttEstimator
 Base class for all RTT Estimators. More...
 
class  ns3::RttHistory
 Helper class to store RTT measurements. More...
 
class  ns3::RttMeanDeviation
 The "Mean--Deviation" RTT estimator, as discussed by Van Jacobson. More...
 
class  ns3::TcpDctcp
 An implementation of DCTCP. More...
 
class  ns3::TcpHeader
 Header for the Transmission Control Protocol. More...
 
class  ns3::TcpL4Protocol
 TCP socket creation and multiplexing/demultiplexing. More...
 
class  ns3::TcpOption
 Base class for all kinds of TCP options. More...
 
class  ns3::TcpOptionEnd
 Defines the TCP option of kind 0 (end of option list) as in RFC 793 More...
 
class  ns3::TcpOptionTS
 Defines the TCP option of kind 8 (timestamp option) as in RFC 1323 More...
 
class  ns3::TcpOptionUnknown
 An unknown TCP option. More...
 
class  ns3::TcpOptionWinScale
 Defines the TCP option of kind 3 (window scale option) as in RFC 1323 More...
 
class  ns3::TcpRxBuffer
 Rx reordering buffer for TCP. More...
 
class  ns3::TcpSocket
 (abstract) base class of all TcpSockets More...
 
class  ns3::TcpSocketBase
 A base class for implementation of a stream socket using TCP. More...
 
class  ns3::TcpSocketFactory
 API to create TCP socket instances. More...
 
class  ns3::TcpSocketFactoryImpl
 socket factory implementation for native ns-3 TCP More...
 
class  ns3::TcpTxBuffer
 Tcp sender buffer. More...
 
class  ns3::TcpTxItem
 Item that encloses the application packet and some flags for it. More...
 

Typedefs

typedef void(* ns3::TracedValueCallback::EcnState) (const TcpSocketState::EcnState_t oldValue, const TcpSocketState::EcnState_t newValue)
 TracedValue Callback signature for EcnState_t. More...
 
typedef void(* ns3::EcnStatesTracedValueCallback) (const TcpSocketState::EcnState_t oldValue, const TcpSocketState::EcnState_t newValue)
 TracedValue Callback signature for ECN state trace. More...
 
typedef void(* ns3::TracedValueCallback::TcpCongState) (const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue)
 TracedValue Callback signature for TcpCongState_t. More...
 
typedef void(* ns3::TcpCongStatesTracedValueCallback) (const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue)
 TracedValue Callback signature for TcpCongState_t. More...
 
typedef void(* ns3::TcpStatesTracedValueCallback) (const TcpSocket::TcpStates_t oldValue, const TcpSocket::TcpStates_t newValue)
 TracedValue Callback signature for TcpStates_t. More...
 

Enumerations

enum  ns3::TcpSocket::TcpStates_t {
  ns3::TcpSocket::CLOSED = 0 , ns3::TcpSocket::LISTEN , ns3::TcpSocket::SYN_SENT , ns3::TcpSocket::SYN_RCVD ,
  ns3::TcpSocket::ESTABLISHED , ns3::TcpSocket::CLOSE_WAIT , ns3::TcpSocket::LAST_ACK , ns3::TcpSocket::FIN_WAIT_1 ,
  ns3::TcpSocket::FIN_WAIT_2 , ns3::TcpSocket::CLOSING , ns3::TcpSocket::TIME_WAIT , ns3::TcpSocket::LAST_STATE
}
 Names of the 11 TCP states. More...
 

Detailed Description

This is an implementation of various Transmission Control Protocol flavors.

Each TCP flavors is studied to match a specific environment, and they differ mainly in the congestion control algorithms used.

See RFC 793 and others.

Typedef Documentation

◆ EcnState

typedef void(* ns3::TracedValueCallback::EcnState) (const TcpSocketState::EcnState_t oldValue, const TcpSocketState::EcnState_t newValue)

TracedValue Callback signature for EcnState_t.

Parameters
[in]oldValueoriginal value of the traced variable
[in]newValuenew value of the traced variable

Definition at line 269 of file tcp-socket-state.h.

◆ EcnStatesTracedValueCallback

typedef void(* ns3::EcnStatesTracedValueCallback) (const TcpSocketState::EcnState_t oldValue, const TcpSocketState::EcnState_t newValue)

TracedValue Callback signature for ECN state trace.

Parameters
[in]oldValueoriginal value of the traced variable
[in]newValuenew value of the traced variable

Definition at line 1413 of file tcp-socket-base.h.

◆ TcpCongState

typedef void(* ns3::TracedValueCallback::TcpCongState) (const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue)

TracedValue Callback signature for TcpCongState_t.

Parameters
[in]oldValueoriginal value of the traced variable
[in]newValuenew value of the traced variable

Definition at line 259 of file tcp-socket-state.h.

◆ TcpCongStatesTracedValueCallback

typedef void(* ns3::TcpCongStatesTracedValueCallback) (const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue)

TracedValue Callback signature for TcpCongState_t.

Parameters
[in]oldValueoriginal value of the traced variable
[in]newValuenew value of the traced variable

Definition at line 1403 of file tcp-socket-base.h.

◆ TcpStatesTracedValueCallback

typedef void(* ns3::TcpStatesTracedValueCallback) (const TcpSocket::TcpStates_t oldValue, const TcpSocket::TcpStates_t newValue)

TracedValue Callback signature for TcpStates_t.

Parameters
[in]oldValueoriginal value of the traced variable
[in]newValuenew value of the traced variable

Definition at line 262 of file tcp-socket.h.

Enumeration Type Documentation

◆ TcpStates_t

Names of the 11 TCP states.

Enumerator
CLOSED 

Socket is finished

LISTEN 

Listening for a connection

SYN_SENT 

Sent a connection request, waiting for ack

SYN_RCVD 

Received a connection request, sent ack, waiting for final ack in three-way handshake.


ESTABLISHED 

Connection established

CLOSE_WAIT 

Remote side has shutdown and is waiting for us to finish writing our data and to shutdown (we have to close() to move on to LAST_ACK)

LAST_ACK 

Our side has shutdown after remote has shutdown.

There may still be data in our buffer that we have to finish sending

FIN_WAIT_1 

Our side has shutdown, waiting to complete transmission of remaining buffered data

FIN_WAIT_2 

All buffered data sent, waiting for remote to shutdown.

CLOSING 

Both sides have shutdown but we still have data we have to finish sending

TIME_WAIT 

Timeout to catch resent junk before entering closed, can only be entered from FIN_WAIT2 or CLOSING.

Required because the other end may not have gotten our last ACK causing it to retransmit the data packet (which we ignore)

LAST_STATE 

Last state, used only in debug messages

Definition at line 65 of file tcp-socket.h.