Subject: ssthresh

From: "Minghua Lu" <[email-masked]>
Date: Tue, 23 Mar 1999 10:27:43 PST

We are running some HTTP applications on Solaris 2.6 platform. In some 
tcp connections, we noticed that the ssthresh was initialized to a 
very low value (for example, 2 MSSs) for some reason, even though 
there were no packet losses in these connections. The slow start phase 
in these connections was very short, and the cwnd stays at low values 
because of the slow increasing in linear phase. This behavior leads to 
long delay and low throughput in the application.
     
It is also noticed that if there are no more packet losses, the 
ssthresh will stay at the same low value for all consequent TCP 
connections. ssthresh will increase only if there is a packet loss. 
     
We assumed that the above problem was caused by caching the ssthresh in 
the routing table. It seems that caching ssthresh might not always 
be desired.
     
I have two questions regarding the Solaris 2.6 implementation:
     
1) ssthresh is saved in the routing table when a tcp connection is 
closed. A condition for saving the ssthresh is that there must be at 
least a certain amount of data transferred during the connection. BSD 
uses 16 times the high water mark of the send buffer. Solaris 2.6 does 
not seem to be using the same value. Does anybody know what the 
condition is for saving ssthresh in Solaris 2.6?
     
2) I assumed that the ssthresh in the routing table will timeout 
eventually if there are no more updates to it after some time. Does 
anyone know what the timer is for this in Solaris 2.6?
Get Your Private, Free Email at http://www.hotmail.com