BSD 4_3 release
[unix-history] / usr / src / sys / netinet / tcp_timer.h
index 8021cd1..d6071fd 100644 (file)
@@ -1,4 +1,10 @@
-/*     tcp_timer.h     6.1     83/07/29        */
+/*
+ * 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
 
 /*
  * Definitions of the TCP timers.  These timers are counted
  * 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,
  * amount of time, then we drop the connection.
  */
 
  * amount of time, then we drop the connection.
  */
 
-#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 */
 
@@ -60,7 +71,7 @@
 
 #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[] =
@@ -74,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;