BSD 4_3 release
[unix-history] / usr / src / sys / netinet / tcp_timer.h
index bbc4765..d6071fd 100644 (file)
@@ -1,18 +1,21 @@
-/*     tcp_timer.h     4.8     82/06/06        */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ *     @(#)tcp_timer.h 7.1 (Berkeley) 6/5/86
+ */
 
 /*
  * Definitions of the TCP timers.  These timers are counted
  * down PR_SLOWHZ times a second.
  */
 
 /*
  * Definitions of the TCP timers.  These timers are counted
  * down PR_SLOWHZ times a second.
  */
-#define        TCPT_NTIMERS    5
+#define        TCPT_NTIMERS    4
 
 #define        TCPT_REXMT      0               /* retransmit */
 #define        TCPT_PERSIST    1               /* retransmit persistance */
 #define        TCPT_KEEP       2               /* keep alive */
 #define        TCPT_2MSL       3               /* 2*msl quiet time timer */
 
 #define        TCPT_REXMT      0               /* retransmit */
 #define        TCPT_PERSIST    1               /* retransmit persistance */
 #define        TCPT_KEEP       2               /* keep alive */
 #define        TCPT_2MSL       3               /* 2*msl quiet time timer */
-#ifdef TCPTRUEOOB
-#define        TCPT_OOBREXMT   4               /* out-of-band rexmt */
-#endif
 
 /*
  * The TCPT_REXMT timer is used to force retransmissions.
 
 /*
  * The TCPT_REXMT timer is used to force retransmissions.
  * then the retransmit timer is cleared (if there are no more
  * outstanding segments) or reset to the base value (if there
  * are more ACKs expected).  Whenever the retransmit timer goes off,
  * then the retransmit timer is cleared (if there are no more
  * outstanding segments) or reset to the base value (if there
  * are more ACKs expected).  Whenever the retransmit timer goes off,
- * we retransmit all unacknowledged segments, and do an exponential
- * backoff on the retransmit timer.
+ * we retransmit one unacknowledged segment, and do a backoff
+ * on the retransmit timer.
  *
  * The TCPT_PERSIST timer is used to keep window size information
  * flowing even if the window goes shut.  If all previous transmissions
  * have been acknowledged (so that there are no retransmissions in progress),
  *
  * The TCPT_PERSIST timer is used to keep window size information
  * flowing even if the window goes shut.  If all previous transmissions
  * have been acknowledged (so that there are no retransmissions in progress),
- * and the window is shut, then we start the TCPT_PERSIST timer, and at
- * intervals send a single byte into the peers window to force him to update
- * our window information.  We do this at most as often as TCPT_PERSMIN
- * time intervals, but no more frequently than the current estimate of
- * round-trip packet time.  The TCPT_PERSIST timer is cleared whenever
- * we receive a window update from the peer.
+ * and the window is too small to bother sending anything, then we start
+ * the TCPT_PERSIST timer.  When it expires, if the window is nonzero,
+ * we go to transmit state.  Otherwise, at intervals send a single byte
+ * into the peer's window to force him to update our window information.
+ * We do this at most as often as TCPT_PERSMIN time intervals,
+ * but no more frequently than the current estimate of round-trip
+ * packet time.  The TCPT_PERSIST timer is cleared whenever we receive
+ * a window update from the peer.
  *
  * The TCPT_KEEP timer is used to keep connections alive.  If an
  * connection is idle (no segments received) for TCPTV_KEEP amount of time,
  *
  * The TCPT_KEEP timer is used to keep connections alive.  If an
  * connection is idle (no segments received) for TCPTV_KEEP amount of time,
  * an ack segment in response from the peer.  If, despite the TCPT_KEEP
  * initiated segments we cannot elicit a response from a peer in TCPT_MAXIDLE
  * amount of time, then we drop the connection.
  * an ack segment in response from the peer.  If, despite the TCPT_KEEP
  * initiated segments we cannot elicit a response from a peer in TCPT_MAXIDLE
  * amount of time, then we drop the connection.
- *
- * The OOBREXMT timer is to force retransmissions of out-of-band indications.
- * Because out-of-band data is considered critical, it does not exponential
- * backoff, but runs at a multiple of smoothed round trip time until acked.
  */
 
  */
 
-#define        TCP_TTL         15              /* time to live for TCP segs */
+#define        TCP_TTL         30              /* time to live for TCP segs */
 /*
  * Time constants.
  */
 /*
  * Time constants.
  */
-#define        TCPTV_MSL       ( 30*PR_SLOWHZ)         /* max seg lifetime */
-#define        TCPTV_SRTTBASE  (  1*PR_SLOWHZ)         /* base roundtrip time */
+#define        TCPTV_MSL       ( 15*PR_SLOWHZ)         /* max seg lifetime */
+#define        TCPTV_SRTTBASE  0                       /* base roundtrip time;
+                                                  if 0, no idea yet */
+#define        TCPTV_SRTTDFLT  (  3*PR_SLOWHZ)         /* assumed RTT if no info */
+
 #define        TCPTV_KEEP      ( 45*PR_SLOWHZ)         /* keep alive - 45 secs */
 #define        TCPTV_PERSMIN   (  5*PR_SLOWHZ)         /* retransmit persistance */
 
 #define        TCPTV_KEEP      ( 45*PR_SLOWHZ)         /* keep alive - 45 secs */
 #define        TCPTV_PERSMIN   (  5*PR_SLOWHZ)         /* retransmit persistance */
 
 
 #define        TCP_LINGERTIME  120                     /* linger at most 2 minutes */
 
 
 #define        TCP_LINGERTIME  120                     /* linger at most 2 minutes */
 
-#define        TCP_MAXRXTSHIFT 10                      /* maximum retransmits */
+#define        TCP_MAXRXTSHIFT 12                      /* maximum retransmits */
 
 #ifdef TCPTIMERS
 char *tcptimers[] =
 
 #ifdef TCPTIMERS
 char *tcptimers[] =
-    { "REXMT", "PERSIST", "KEEP", "2MSL", "OOBREXMT" };
+    { "REXMT", "PERSIST", "KEEP", "2MSL" };
 #endif
 
 /*
 #endif
 
 /*
@@ -81,7 +85,7 @@ char *tcptimers[] =
  * each time a new value of tp->t_rtt is available.  The initial
  * retransmit timeout is then based on
  *    tp->t_timer[TCPT_REXMT] = tcp_beta * tp->t_srtt;
  * each time a new value of tp->t_rtt is available.  The initial
  * retransmit timeout is then based on
  *    tp->t_timer[TCPT_REXMT] = tcp_beta * tp->t_srtt;
- * limited, however to be at least TCPTV_REXMTLO and at most TCPTV_REXMTHI.
+ * limited, however to be at least TCPTV_MIN and at most TCPTV_MAX.
  */
 float  tcp_alpha, tcp_beta;
 
  */
 float  tcp_alpha, tcp_beta;