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".
 

Classes

class  ns3::PendingData
 class for managing I/O between applications and TCP More...
 
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::TcpHeader
 Header for the Transmission Control Protocol. More...
 
class  ns3::TcpHtcp
 An implementation of the H-TCP variant of TCP. 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
 class for the reordering buffer that keeps the data from lower layer, i.e. 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
 class for keeping the data sent by the application to the TCP socket, i.e. More...
 

Typedefs

typedef void(* ns3::TcpSocketState::TcpCongStatesTracedValueCallback) (const TcpCongState_t oldValue, const 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::TcpHeader::Flags_t {
  ns3::TcpHeader::NONE = 0, ns3::TcpHeader::FIN = 1, ns3::TcpHeader::SYN = 2, ns3::TcpHeader::RST = 4,
  ns3::TcpHeader::PSH = 8, ns3::TcpHeader::ACK = 16, ns3::TcpHeader::URG = 32, ns3::TcpHeader::ECE = 64,
  ns3::TcpHeader::CWR = 128
}
 TCP flag field values. More...
 
enum  ns3::TcpOption::Kind {
  ns3::TcpOption::END = 0, ns3::TcpOption::NOP = 1, ns3::TcpOption::MSS = 2, ns3::TcpOption::WINSCALE = 3,
  ns3::TcpOption::TS = 8, ns3::TcpOption::UNKNOWN = 255
}
 The option Kind, as defined in the respective RFCs. More...
 
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

typedef void(* ns3::TcpSocketState::TcpCongStatesTracedValueCallback) (const TcpCongState_t oldValue, const 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 145 of file tcp-socket-base.h.

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 1072 of file tcp-socket-base.h.

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

TCP flag field values.

Enumerator
NONE 

No flags.

FIN 

FIN.

SYN 

SYN.

RST 

Reset.

PSH 

Push.

ACK 

Ack.

URG 

Urgent.

ECE 

ECE.

CWR 

CWR.

Definition at line 271 of file tcp-header.h.

The option Kind, as defined in the respective RFCs.

Enumerator
END 

END.

NOP 

NOP.

MSS 

MSS.

WINSCALE 

WINSCALE.

TS 

TS.

UNKNOWN 

not a standardized value; for unknown recv'd options

Definition at line 53 of file tcp-option.h.

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.