ns-3
|
An implementation of a stream socket using TCP. More...
#include <tcp-tahoe.h>
Public Member Functions | |
TcpTahoe (void) | |
TcpTahoe (const TcpTahoe &sock) | |
virtual int | Connect (const Address &address) |
virtual int | Listen (void) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
This method returns the TypeId associated to ns3::TcpTahoe. | |
Protected Member Functions | |
virtual uint32_t | Window (void) |
virtual Ptr< TcpSocketBase > | Fork (void) |
virtual void | NewAck (SequenceNumber32 const &seq) |
virtual void | DupAck (const TcpHeader &t, uint32_t count) |
virtual void | Retransmit (void) |
virtual void | SetSegSize (uint32_t size) |
virtual void | SetSSThresh (uint32_t threshold) |
virtual uint32_t | GetSSThresh (void) const |
virtual void | SetInitialCwnd (uint32_t cwnd) |
virtual uint32_t | GetInitialCwnd (void) const |
Protected Attributes | |
TracedValue< uint32_t > | m_cWnd |
uint32_t | m_ssThresh |
uint32_t | m_initialCWnd |
uint32_t | m_retxThresh |
An implementation of a stream socket using TCP.
This class contains the Tahoe implementation of TCP. Tahoe is not officially published in RFC. The reference for implementing this is based on Kevin Fall and Sally Floyd, "Simulation-based Comparisons of Tahoe, Reno, and SACK TCP", CCR, 1996 http://inst.eecs.berkeley.edu/~ee122/fa05/projects/Project2/proj2_spec_files/sacks.pdf In summary, we have slow start, congestion avoidance, and fast retransmit. The implementation of these algorithms are based on W. R. Stevens's book and also RFC2001.
ns3::TcpTahoe::TcpTahoe | ( | void | ) |
Create an unbound tcp socket.
References NS_LOG_FUNCTION.
int ns3::TcpTahoe::Connect | ( | const Address & | address | ) | [virtual] |
We initialize m_cWnd from this function, after attributes initialized
Reimplemented from ns3::TcpSocketBase.
References NS_LOG_FUNCTION.
void ns3::TcpTahoe::DupAck | ( | const TcpHeader & | t, |
uint32_t | count | ||
) | [protected, virtual] |
Cut down ssthresh upon triple dupack
Implements ns3::TcpSocketBase.
References ns3::TcpTxBuffer::HeadSequence(), ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, and NS_LOG_LOGIC.
TypeId ns3::TcpTahoe::GetTypeId | ( | void | ) | [static] |
This method returns the TypeId associated to ns3::TcpTahoe.
This object is accessible through the following paths with Config::Set and Config::Connect:
Attributes defined for this type:
Attributes defined in parent class ns3::TcpSocketBase:
Attributes defined in parent class ns3::TcpSocket:
TraceSources defined for this type:
TraceSources defined in parent class ns3::TcpSocketBase:
Reimplemented from ns3::TcpSocketBase.
References ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
int ns3::TcpTahoe::Listen | ( | void | ) | [virtual] |
We initialize m_cWnd from this function, after attributes initialized
Reimplemented from ns3::TcpSocketBase.
References NS_LOG_FUNCTION.
void ns3::TcpTahoe::NewAck | ( | SequenceNumber32 const & | seq | ) | [protected, virtual] |
New ACK (up to seqnum seq) received. Increase cwnd and call TcpSocketBase::NewAck()
Reimplemented from ns3::TcpSocketBase.
References NS_LOG_FUNCTION, NS_LOG_INFO, and NS_LOG_LOGIC.
void ns3::TcpTahoe::Retransmit | ( | void | ) | [protected, virtual] |
Retransmit timeout
Reimplemented from ns3::TcpSocketBase.
References ns3::TcpTxBuffer::HeadSequence(), ns3::Simulator::Now(), NS_LOG_FUNCTION, and NS_LOG_LOGIC.
uint32_t ns3::TcpTahoe::Window | ( | void | ) | [protected, virtual] |
Limit the size of in-flight data by cwnd and receiver's rxwin
Reimplemented from ns3::TcpSocketBase.
References NS_LOG_FUNCTION.