#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 |
| delayed ACKs enabled/disabled; FIXME make this a socket option | |
| bool | nagle_enabled |
| Nagle's algorithm (off = NODELAY socket option). | |
| int | rexmit_count |
| number of retransmissions (=1 after first rexmit) | |
| simtime_t | rexmit_timeout |
| current retransmission timeout (aka RTO) | |
| uint | snd_cwnd |
| congestion window | |
| uint32 | rtseq |
| 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 |
| smoothed round-trip time | |
| simtime_t | rttvar |
| variance of round-trip time | |
|
|
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 }
|
|
|
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 }
|
|
|
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 }
|
|
|
delayed ACKs enabled/disabled; FIXME make this a socket option
|
|
|
Nagle's algorithm (off = NODELAY socket option).
|
|
|
number of retransmissions (=1 after first rexmit)
|
|
|
current retransmission timeout (aka RTO)
|
|
|
starting sequence number of timed data
|
|
|
time when rtseq was sent (0 if RTT measurement is not running)
|
|
|
variance of round-trip time
|
|
|
congestion window
|
|
|
smoothed round-trip time
|
1.4.1