#include <TCPBaseAlg.h>
Inheritance diagram for TCPBaseAlgStateVariables:
Public Member Functions | |
TCPBaseAlgStateVariables () | |
virtual std::string | info () const |
virtual std::string | detailedInfo () const |
Public Attributes | |
bool | delayed_acks_enabled |
TCP features delayed ACKs enabled/disabled; FIXME make this a socket option. | |
bool | nagle_enabled |
Nagle's algorithm (off = NODELAY socket option). | |
int | rexmit_count |
retransmit count number of retransmissions (=1 after first rexmit) | |
simtime_t | rexmit_timeout |
current retransmission timeout (aka RTO) | |
uint | snd_cwnd |
congestion window congestion window | |
uint32 | rtseq |
round-trip time measurements starting sequence number of timed data | |
simtime_t | rtseq_sendtime |
time when rtseq was sent (0 if RTT measurement is not running) | |
simtime_t | srtt |
round-trip time estimation (Jacobson's algorithm) smoothed round-trip time | |
simtime_t | rttvar |
variance of round-trip time |
TCPBaseAlgStateVariables::TCPBaseAlgStateVariables | ( | ) |
00041 { 00042 // We disable delayed acks, since it appears that it isn't used in real-life TCPs. 00043 // 00044 // In SSFNet test suite http://www.ssfnet.org/Exchange/tcp/test/f5.html 00045 // the rule for delayed ACK is: 00046 // An ACK must be sent immediatly when either of the following conditions exist: 00047 // * Two full-sized packets received (to avoid too few ACKs). 00048 // * Out of order packets received (to help trigger fast retransmission). 00049 // * Received packet fills in all gap or part of gap of out of order data. 00050 // We do not implement this rule. In our measurements on network traffic, we 00051 // never encountered delayed ACKs. 00052 // 00053 delayed_acks_enabled = false; 00054 00055 nagle_enabled = true; // FIXME this should be parameter eventually 00056 00057 rexmit_count = 0; 00058 rexmit_timeout = 3.0; 00059 00060 snd_cwnd = 0; // will be set to MSS when connection is established 00061 00062 rtseq = 0; 00063 rtseq_sendtime = 0; 00064 00065 // Jacobson's alg: srtt must be initialized to 0, rttvar to a value which 00066 // will yield rto = 3s initially. 00067 srtt = 0; 00068 rttvar = 3.0/4.0; 00069 }
std::string TCPBaseAlgStateVariables::detailedInfo | ( | ) | const [virtual] |
Reimplemented from TCPStateVariables.
Reimplemented in TCPTahoeRenoFamilyStateVariables.
00081 { 00082 std::stringstream out; 00083 out << TCPStateVariables::detailedInfo(); 00084 out << "snd_cwnd = " << snd_cwnd << "\n"; 00085 out << "rto = " << rexmit_timeout << "\n"; 00086 // TBD add others too 00087 return out.str(); 00088 }
std::string TCPBaseAlgStateVariables::info | ( | ) | const [virtual] |
Reimplemented from TCPStateVariables.
Reimplemented in TCPTahoeRenoFamilyStateVariables.
00072 { 00073 std::stringstream out; 00074 out << TCPStateVariables::info(); 00075 out << " snd_cwnd=" << snd_cwnd; 00076 out << " rto=" << rexmit_timeout; 00077 return out.str(); 00078 }
TCP features delayed ACKs enabled/disabled; FIXME make this a socket option.
Nagle's algorithm (off = NODELAY socket option).
retransmit count number of retransmissions (=1 after first rexmit)
simtime_t TCPBaseAlgStateVariables::rexmit_timeout |
current retransmission timeout (aka RTO)
round-trip time measurements starting sequence number of timed data
simtime_t TCPBaseAlgStateVariables::rtseq_sendtime |
time when rtseq was sent (0 if RTT measurement is not running)
simtime_t TCPBaseAlgStateVariables::rttvar |
variance of round-trip time
congestion window congestion window
simtime_t TCPBaseAlgStateVariables::srtt |
round-trip time estimation (Jacobson's algorithm) smoothed round-trip time