Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

TCP Class Reference

#include <tcp.h>

Inheritance diagram for TCP:

L4Protocol TimerHandler NotifyHandler Protocol Handler Object TCPNewReno TCPReno TCPTahoe List of all members.

Public Types

enum  TimeSeqSelector_t {
  LOG_SEQ_TX, LOG_ACK_TX, LOG_SEQ_RX, LOG_ACK_RX,
  LOG_CWIN, LOG_SSTHRESH, LOG_DUPACK, LOG_LAST
}
enum  TCPTrace_t {
  SOURCE_PORT, DEST_PORT, SEQ_NUMBER, ACK_NUMBER,
  HEADER_LENGTH, FLAGS, WINDOW, CHECKSUM,
  URGENT, FID, DATA_LENGTH, CWND
}
enum  Flags {
  FIN = 0x01, SYN = 0x02, RST = 0x04, PSH = 0x08,
  ACK = 0x10, URG = 0x20
}
enum  TCPMaxFlags_t { MAX_FLAGS = 0x40 }
enum  States_t {
  CLOSED, LISTEN, SYN_SENT, SYN_RCVD,
  ESTABLISHED, CLOSE_WAIT, LAST_ACK, FIN_WAIT_1,
  FIN_WAIT_2, CLOSING, TIMED_WAIT, LAST_STATE
}
enum  Events_t {
  APP_LISTEN, APP_CONNECT, APP_SEND, SEQ_RECV,
  APP_CLOSE, TIMEOUT, ACK_RX, SYN_RX,
  SYN_ACK_RX, FIN_RX, FIN_ACK_RX, RST_RX,
  BAD_FLAGS, LAST_EVENT
}
enum  Actions_t {
  NO_ACT, ACK_TX, ACK_TX_1, RST_TX,
  SYN_TX, SYN_ACK_TX, FIN_TX, FIN_ACK_TX,
  NEW_ACK, NEW_SEQ_RX, RETX, TX_DATA,
  PEER_CLOSE, APP_CLOSED, CANCEL_TM, APP_NOTIFY,
  SERV_NOTIFY, LAST_ACTION
}
enum  TCPProto_t { ProtoNumber = 6 }

Public Member Functions

 TCP ()
 TCP (Node *n)
 TCP (const TCP &)
void CommonConstructor ()
virtual ~TCP ()
virtual void DataIndication (Node *, Packet *, IPAddr_t, Interface *)
void Notify (void *)
NCount_t Send (Size_t)
NCount_t Send (char *, Size_t)
NCount_t Send (Data &)
NCount_t SendTo (Size_t, IPAddr_t, PortId_t)
NCount_t SendTo (char *, Size_t, IPAddr_t, PortId_t)
NCount_t SendTo (Data &, IPAddr_t, PortId_t)
Proto_t Proto () const
bool Connect (IPAddr_t, PortId_t)
bool Close ()
L4ProtocolCopy () const =0
Proto_t ProtocolNumber ()
bool IsTCP ()
void Timeout (TimerEvent *)
bool Listen ()
void Reset ()
void ChildComplete ()
void Abort ()
bool Respond (PortId_t, IPAddr_t)
void Reject (PortId_t, IPAddr_t)
void SetRTTEstimator (const RTTEstimator &)
RTTEstimatorGetRTTEstimator ()
void SetSSThresh (Count_t sst)
void SetAdvertisedWindow (Count_t w)
void DeleteOnComplete (bool doc=true)
void DeleteOnTWait (bool dotw=true)
void CloseOnEmpty (bool coe=true)
void SetSegSize (Count_t s)
void SetTxBuffer (Count_t s)
void SetRxBuffer (Count_t s)
void SetTwTimeout (Time_t t)
void SetConnTimeout (Time_t t)
void SetChildLimit (Count_t l)
void SetInitialCWnd (Count_t w)
Rate_t GoodPut ()
Count_t RetransmitCount ()
void EnableTimeSeq (TimeSeqSelector_t)
void DisableTimeSeq (TimeSeqSelector_t)
void ResetTimeSeq (TimeSeqSelector_t)
void LogTimeSeq (TimeSeqSelector_t, std::ostream &, Seq_t div=0, Seq_t mod=0, char sep= ' ')
Count_t CWnd ()
void DBDump ()
TCPPeer ()
int State () const
Count_t TimeoutCount () const
Time_t TimeoutDelay () const
void DebugHistory (const DBHist &)
void PrintDBH ()

Static Public Member Functions

void DefaultSegSize (Count_t s)
void DefaultAdvWin (Count_t s)
void DefaultSSThresh (Count_t s)
void DefaultTxBuffer (Count_t s)
void DefaultRxBuffer (Count_t s)
void DefaultTwTimeout (Time_t t)
void DefaultConnTimeout (Time_t t)
void DefaultDelAckTimeout (Time_t t)
void DefaultInitialCWnd (Count_t w)
void LogFlagsText (bool b)
void UseTimerBuckets (bool u=true)
void DefaultConnCount (Count_t c)
void Default (const TCP &)
TCPDefault ()
void RegisterBackplane (DSHandle_t)
int TCPExportQuery (char *, int, void *)
int TCPDefaultCallback (char *, void *)
int TCPExportCallback (char *, char *, int, void *)
int TCPImportCallback (char *, int, char *, void *)

Public Attributes

Seq nextTxSeq
Seq highTxMark
Seq highestRxAck
Seq lastRxAck
bool isServer
bool nRequested

Static Public Attributes

Count_t defaultSegSize = 512
Count_t defaultAdvWin = 0xffff
Count_t defaultSSThresh = 0xffff
Count_t defaultTxBuffer = ((Count_t)0xffffffffl)
Count_t defaultRxBuffer = ((Count_t)0xffffffffl)
Time_t defaultTwTimeout = 5.0
Time_t defaultConnTimeout = 6.0
Time_t defaultDelAckTimeout = 0.0
Count_t defaultInitialCWnd = 1
bool logFlagsText = false
FId_t nextFlowId
bool useTimerBuckets = false
Count_t defaultConnCount = 3
TCPHeaderbpHeader = 0
Count_t totalTimeouts = 0
Count_t totalAborts = 0

Protected Member Functions

virtual Count_t UnAckDataCount ()
virtual Count_t BytesInFlight ()
virtual Count_t Window ()
virtual Count_t AvailableWindow ()
Actions_t ProcessEvent (Events_t)
bool ProcessAction (Actions_t, Packet *p=NULL, TCPHeader *tcp=NULL, IPAddr_t ip=((IPAddr_t) 0x0))
void SendEmptyPacket (Byte_t, Seq_t, Seq_t)
void SendEmptyPacketTo (Byte_t, Seq_t, Seq_t, IPAddr_t dstip, PortId_t dstport)
void SendPacket (Byte_t, Seq_t, Seq_t, Packet *)
void SendPacketTo (Byte_t, Seq_t, Seq_t, Packet *, IPAddr_t dstip, PortId_t dstport)
bool SendPendingData (bool withAck=false)
virtual void NewAck (Seq)=0
virtual void CommonNewAck (Seq, bool)
virtual void DupAck (const TCPHeader &, Count_t)=0
virtual void SendAck (Seq, bool=false)
virtual void NewRx (Packet *, TCPHeader *, IPAddr_t)
void ScheduleTimer (Event_t, TCPEvent *&, Time_t)
void CancelTimer (TCPEvent *&, bool delTimer=false)
void CancelAllTimers ()
virtual void ReTxTimeout ()=0
virtual void Retransmit ()
void NoteTimeSeq (TimeSeqSelector_t, Seq_t)

Protected Attributes

UnAckData_t bufferedData
DatapendingData
Seq firstPendingSeq
Seq fastRecoveryMark
Count_t dupAckCount
bool fastRecovery
bool needAck
bool noTimer
Seq nextRxSeq
Seq nextAckSeq
Count_t segSize
Count_t rxWin
Count_t advWin
Count_t cWnd
Count_t ssThresh
Count_t initialCWnd
RTTEstimatorrtt
Timer timer
TCPEventconnTimeout
TCPEventretxTimeout
TCPEventdelAckTimeout
TCPEventtimedWaitTimeout
TCPEventlastAckTimeout
Time_t twTimeout
Time_t cnTimeout
Time_t daTimeout
Count_t retryCount
Count_t connCount
int state
bool closeOnEmpty
bool deleteOnComplete
bool deleteOnTWait
bool pendingClose
bool closeNotified
bool closeReqNotified
Count_t txBuffer
Count_t rxBuffer
Count_t totalAck
Time_t openTime
Time_t lastRxTime
Time_t lastAckTx
Time_t synTime
Count_t retransmitCount
Count_t timeoutCount
Count_t pktsSent
Count_t pktsReceived
Count_t bytesSent
Count_t bytesReceived
TimeSeqVec_ttimeSeqStats
TCPparent
TCPpeer
Count_t nChildren
Count_t childLimit
Count_t nFin
Time_t lastTimeoutDelay
Time_t lastMeasuredRTT
DBHVec_t dbVec
DBHVec_t::size_type dbInd

Static Private Attributes

TCPdefaultTCP = 0

Member Enumeration Documentation

enum TCP::Actions_t
 

Enumeration values:
NO_ACT 
ACK_TX 
ACK_TX_1 
RST_TX 
SYN_TX 
SYN_ACK_TX 
FIN_TX 
FIN_ACK_TX 
NEW_ACK 
NEW_SEQ_RX 
RETX 
TX_DATA 
PEER_CLOSE 
APP_CLOSED 
CANCEL_TM 
APP_NOTIFY 
SERV_NOTIFY 
LAST_ACTION 

enum TCP::Events_t
 

Enumeration values:
APP_LISTEN 
APP_CONNECT 
APP_SEND 
SEQ_RECV 
APP_CLOSE 
TIMEOUT 
ACK_RX 
SYN_RX 
SYN_ACK_RX 
FIN_RX 
FIN_ACK_RX 
RST_RX 
BAD_FLAGS 
LAST_EVENT 

enum TCP::Flags
 

Enumeration values:
FIN 
SYN 
RST 
PSH 
ACK 
URG 

enum TCP::States_t
 

Enumeration values:
CLOSED 
LISTEN 
SYN_SENT 
SYN_RCVD 
ESTABLISHED 
CLOSE_WAIT 
LAST_ACK 
FIN_WAIT_1 
FIN_WAIT_2 
CLOSING 
TIMED_WAIT 
LAST_STATE 

enum TCP::TCPMaxFlags_t
 

Enumeration values:
MAX_FLAGS 

enum TCP::TCPProto_t
 

Enumeration values:
ProtoNumber 

enum TCP::TCPTrace_t
 

Enumeration values:
SOURCE_PORT 
DEST_PORT 
SEQ_NUMBER 
ACK_NUMBER 
HEADER_LENGTH 
FLAGS 
WINDOW 
CHECKSUM 
URGENT 
FID 
DATA_LENGTH 
CWND 

enum TCP::TimeSeqSelector_t
 

Enumeration values:
LOG_SEQ_TX 
LOG_ACK_TX 
LOG_SEQ_RX 
LOG_ACK_RX 
LOG_CWIN 
LOG_SSTHRESH 
LOG_DUPACK 
LOG_LAST 


Constructor & Destructor Documentation

TCP::TCP  ) 
 

TCP::TCP Node n  ) 
 

TCP::TCP const TCP  ) 
 

TCP::~TCP  )  [virtual]
 


Member Function Documentation

void TCP::Abort  ) 
 

Count_t TCP::AvailableWindow  )  [protected, virtual]
 

Count_t TCP::BytesInFlight  )  [protected, virtual]
 

void TCP::CancelAllTimers  )  [protected]
 

void TCP::CancelTimer TCPEvent *&  ,
bool  delTimer = false
[protected]
 

void TCP::ChildComplete  ) 
 

bool TCP::Close  )  [virtual]
 

Implements L4Protocol.

void TCP::CloseOnEmpty bool  coe = true  )  [inline]
 

void TCP::CommonConstructor  ) 
 

void TCP::CommonNewAck Seq  ,
bool 
[protected, virtual]
 

bool TCP::Connect IPAddr_t  ,
PortId_t 
[virtual]
 

Implements L4Protocol.

L4Protocol* TCP::Copy  )  const [pure virtual]
 

Implements L4Protocol.

Implemented in TCPNewReno, TCPReno, and TCPTahoe.

Count_t TCP::CWnd  )  [inline]
 

void TCP::DataIndication Node ,
Packet ,
IPAddr_t  ,
Interface
[virtual]
 

Implements L4Protocol.

void TCP::DBDump  ) 
 

void TCP::DebugHistory const DBHist  )  [inline]
 

TCP & TCP::Default  )  [static]
 

void TCP::Default const TCP  )  [static]
 

void TCP::DefaultAdvWin Count_t  s  )  [static]
 

void TCP::DefaultConnCount Count_t  c  )  [static]
 

void TCP::DefaultConnTimeout Time_t  t  )  [static]
 

void TCP::DefaultDelAckTimeout Time_t  t  )  [static]
 

void TCP::DefaultInitialCWnd Count_t  w  )  [static]
 

void TCP::DefaultRxBuffer Count_t  s  )  [static]
 

void TCP::DefaultSegSize Count_t  s  )  [static]
 

void TCP::DefaultSSThresh Count_t  s  )  [static]
 

void TCP::DefaultTwTimeout Time_t  t  )  [static]
 

void TCP::DefaultTxBuffer Count_t  s  )  [static]
 

void TCP::DeleteOnComplete bool  doc = true  )  [inline]
 

void TCP::DeleteOnTWait bool  dotw = true  )  [inline]
 

void TCP::DisableTimeSeq TimeSeqSelector_t   ) 
 

virtual void TCP::DupAck const TCPHeader ,
Count_t 
[protected, pure virtual]
 

Implemented in TCPNewReno, TCPReno, and TCPTahoe.

void TCP::EnableTimeSeq TimeSeqSelector_t   ) 
 

RTTEstimator * TCP::GetRTTEstimator  ) 
 

Rate_t TCP::GoodPut  ) 
 

bool TCP::IsTCP  )  [virtual]
 

Implements L4Protocol.

bool TCP::Listen  ) 
 

void TCP::LogFlagsText bool  b  )  [static]
 

void TCP::LogTimeSeq TimeSeqSelector_t  ,
std::ostream &  ,
Seq_t  div = 0,
Seq_t  mod = 0,
char  sep = ' '
 

virtual void TCP::NewAck Seq   )  [protected, pure virtual]
 

Implemented in TCPNewReno, TCPReno, and TCPTahoe.

void TCP::NewRx Packet ,
TCPHeader ,
IPAddr_t 
[protected, virtual]
 

void TCP::NoteTimeSeq TimeSeqSelector_t  ,
Seq_t 
[protected]
 

void TCP::Notify void *   )  [virtual]
 

Implements NotifyHandler.

TCP* TCP::Peer  )  [inline]
 

void TCP::PrintDBH  ) 
 

bool TCP::ProcessAction Actions_t  ,
Packet p = NULL,
TCPHeader tcp = NULL,
IPAddr_t  ip = ((IPAddr_t) 0x0)
[protected]
 

TCP::Actions_t TCP::ProcessEvent Events_t   )  [protected]
 

Proto_t TCP::Proto void   )  const [inline, virtual]
 

Implements L4Protocol.

Proto_t TCP::ProtocolNumber  )  [virtual]
 

Implements L4Protocol.

void TCP::RegisterBackplane DSHandle_t   )  [static]
 

void TCP::Reject PortId_t  ,
IPAddr_t 
 

void TCP::Reset  ) 
 

void TCP::ResetTimeSeq TimeSeqSelector_t   ) 
 

bool TCP::Respond PortId_t  ,
IPAddr_t 
 

void TCP::Retransmit  )  [protected, virtual]
 

Count_t TCP::RetransmitCount  ) 
 

virtual void TCP::ReTxTimeout  )  [protected, pure virtual]
 

Implemented in TCPNewReno, TCPReno, and TCPTahoe.

void TCP::ScheduleTimer Event_t  ,
TCPEvent *&  ,
Time_t 
[protected]
 

NCount_t TCP::Send Data  )  [virtual]
 

Implements L4Protocol.

NCount_t TCP::Send char *  ,
Size_t 
[virtual]
 

Implements L4Protocol.

NCount_t TCP::Send Size_t   )  [virtual]
 

Implements L4Protocol.

void TCP::SendAck Seq  ,
bool  = false
[protected, virtual]
 

void TCP::SendEmptyPacket Byte_t  ,
Seq_t  ,
Seq_t 
[protected]
 

void TCP::SendEmptyPacketTo Byte_t  ,
Seq_t  ,
Seq_t  ,
IPAddr_t  dstip,
PortId_t  dstport
[protected]
 

void TCP::SendPacket Byte_t  ,
Seq_t  ,
Seq_t  ,
Packet
[protected]
 

void TCP::SendPacketTo Byte_t  ,
Seq_t  ,
Seq_t  ,
Packet ,
IPAddr_t  dstip,
PortId_t  dstport
[protected]
 

bool TCP::SendPendingData bool  withAck = false  )  [protected]
 

NCount_t TCP::SendTo Data ,
IPAddr_t  ,
PortId_t 
[virtual]
 

Implements L4Protocol.

NCount_t TCP::SendTo char *  ,
Size_t  ,
IPAddr_t  ,
PortId_t 
[virtual]
 

Implements L4Protocol.

NCount_t TCP::SendTo Size_t  ,
IPAddr_t  ,
PortId_t 
[virtual]
 

Implements L4Protocol.

void TCP::SetAdvertisedWindow Count_t  w  )  [inline]
 

void TCP::SetChildLimit Count_t  l  )  [inline]
 

void TCP::SetConnTimeout Time_t  t  )  [inline]
 

void TCP::SetInitialCWnd Count_t  w  )  [inline]
 

void TCP::SetRTTEstimator const RTTEstimator  ) 
 

void TCP::SetRxBuffer Count_t  s  )  [inline]
 

void TCP::SetSegSize Count_t  s  )  [inline]
 

void TCP::SetSSThresh Count_t  sst  )  [inline]
 

void TCP::SetTwTimeout Time_t  t  )  [inline]
 

void TCP::SetTxBuffer Count_t  s  )  [inline]
 

int TCP::State  )  const [inline]
 

int TCP::TCPDefaultCallback char *  ,
void * 
[static]
 

int TCP::TCPExportCallback char *  ,
char *  ,
int  ,
void * 
[static]
 

int TCP::TCPExportQuery char *  ,
int  ,
void * 
[static]
 

int TCP::TCPImportCallback char *  ,
int  ,
char *  ,
void * 
[static]
 

void TCP::Timeout TimerEvent  )  [virtual]
 

Implements TimerHandler.

Count_t TCP::TimeoutCount  )  const [inline]
 

Time_t TCP::TimeoutDelay  )  const [inline]
 

Count_t TCP::UnAckDataCount  )  [protected, virtual]
 

void TCP::UseTimerBuckets bool  u = true  )  [static]
 

Count_t TCP::Window  )  [protected, virtual]
 


Member Data Documentation

Count_t TCP::advWin [protected]
 

TCPHeader * TCP::bpHeader = 0 [static]
 

UnAckData_t TCP::bufferedData [protected]
 

Count_t TCP::bytesReceived [protected]
 

Count_t TCP::bytesSent [protected]
 

Count_t TCP::childLimit [protected]
 

bool TCP::closeNotified [protected]
 

bool TCP::closeOnEmpty [protected]
 

bool TCP::closeReqNotified [protected]
 

Time_t TCP::cnTimeout [protected]
 

Count_t TCP::connCount [protected]
 

TCPEvent* TCP::connTimeout [protected]
 

Count_t TCP::cWnd [protected]
 

Time_t TCP::daTimeout [protected]
 

DBHVec_t::size_type TCP::dbInd [protected]
 

DBHVec_t TCP::dbVec [protected]
 

Count_t TCP::defaultAdvWin = 0xffff [static]
 

Count_t TCP::defaultConnCount = 3 [static]
 

Time_t TCP::defaultConnTimeout = 6.0 [static]
 

Time_t TCP::defaultDelAckTimeout = 0.0 [static]
 

Count_t TCP::defaultInitialCWnd = 1 [static]
 

Count_t TCP::defaultRxBuffer = ((Count_t)0xffffffffl) [static]
 

Count_t TCP::defaultSegSize = 512 [static]
 

Count_t TCP::defaultSSThresh = 0xffff [static]
 

TCP * TCP::defaultTCP = 0 [static, private]
 

Time_t TCP::defaultTwTimeout = 5.0 [static]
 

Count_t TCP::defaultTxBuffer = ((Count_t)0xffffffffl) [static]
 

TCPEvent* TCP::delAckTimeout [protected]
 

bool TCP::deleteOnComplete [protected]
 

bool TCP::deleteOnTWait [protected]
 

Count_t TCP::dupAckCount [protected]
 

bool TCP::fastRecovery [protected]
 

Seq TCP::fastRecoveryMark [protected]
 

Seq TCP::firstPendingSeq [protected]
 

Seq TCP::highestRxAck
 

Seq TCP::highTxMark
 

Count_t TCP::initialCWnd [protected]
 

bool TCP::isServer
 

TCPEvent* TCP::lastAckTimeout [protected]
 

Time_t TCP::lastAckTx [protected]
 

Time_t TCP::lastMeasuredRTT [protected]
 

Seq TCP::lastRxAck
 

Time_t TCP::lastRxTime [protected]
 

Time_t TCP::lastTimeoutDelay [protected]
 

bool TCP::logFlagsText = false [static]
 

Count_t TCP::nChildren [protected]
 

bool TCP::needAck [protected]
 

Seq TCP::nextAckSeq [protected]
 

FId_t TCP::nextFlowId [static]
 

Seq TCP::nextRxSeq [protected]
 

Seq TCP::nextTxSeq
 

Count_t TCP::nFin [protected]
 

bool TCP::noTimer [protected]
 

bool TCP::nRequested
 

Time_t TCP::openTime [protected]
 

TCP* TCP::parent [protected]
 

TCP* TCP::peer [protected]
 

bool TCP::pendingClose [protected]
 

Data* TCP::pendingData [protected]
 

Count_t TCP::pktsReceived [protected]
 

Count_t TCP::pktsSent [protected]
 

Count_t TCP::retransmitCount [protected]
 

Count_t TCP::retryCount [protected]
 

TCPEvent* TCP::retxTimeout [protected]
 

RTTEstimator* TCP::rtt [protected]
 

Count_t TCP::rxBuffer [protected]
 

Count_t TCP::rxWin [protected]
 

Count_t TCP::segSize [protected]
 

Count_t TCP::ssThresh [protected]
 

int TCP::state [protected]
 

Time_t TCP::synTime [protected]
 

TCPEvent* TCP::timedWaitTimeout [protected]
 

Count_t TCP::timeoutCount [protected]
 

Timer TCP::timer [protected]
 

TimeSeqVec_t* TCP::timeSeqStats [protected]
 

Count_t TCP::totalAborts = 0 [static]
 

Count_t TCP::totalAck [protected]
 

Count_t TCP::totalTimeouts = 0 [static]
 

Time_t TCP::twTimeout [protected]
 

Count_t TCP::txBuffer [protected]
 

bool TCP::useTimerBuckets = false [static]
 


The documentation for this class was generated from the following files:
Generated on Wed Aug 27 16:17:34 2008 for Georgia Tech Network Simulator (GTNetS) by  doxygen 1.3.9.1