Experimental TCP Implementations
As part of our research on TCP dynamics, we are developing experimental implementations of each of the algorithms that we are investigating, including the Proposed Standard TCP Selective Acknowledgment option (RFC2018). Our implementations will be made publicly available as licensing permits.
Our TCP Performance Tuning page includes information about configuring and tuning performance features in commercial TCP implementations, including TCP large windows (RFC1323: window scaling, RTTM, PAWS, etc) and SACK as it becomes available.
If you use our code, please track this page (http://www.psc.edu/ networking/tcp.html). It will be updated as TCP implementations evolve.
Information available:
PSC TCP Implementations
| Implementation | Date | Comments |
|---|---|---|
| NetBSD 1.3.2 SACK / RH / AUTO / ECN | 10/14/99 | H, Q, R, S |
| NetBSD 1.2.1 SACK / FACK / AUTO | 3/11/98 | R, S, F, O |
| NetBSD 1.2 SACK / FACK / AUTO | 3/11/98 | R, S, F, O |
| Digital Unix 3.2C SACK | 3/26/97 | S, D |
| NetBSD 1.1 SACK | 3/26/97 | R, S, N |
| NetBSD 1.1 FACK | 1/10/97 | R, F, N, P |
Key to the notes
- D.
- Digital Unix 3.2C binary distribution. This distribution is currently on hold due to license restrictions. People who hold appropriate licenses should contact us for further information.
- E.
- Expected to be available as of the date shown.
- F.
- An implementation of our Forward Acknowledgement (FACK) algorithm for improved congestion control during recovery. FACK provides more consistent congestion control during recovery, improving performance and reducing burstiness in some cases. Read our SIGCOMM’96 Paper “Forward Acknowledgment: Refining TCP Congestion Control” and our technical note describing recent changes to FACK.
- H.
- Includes an implementation of the Rate Halving algorithm, which has evolved from FACK.
- N.
- Source distribution for netBSD 1.1. This may be compatible with other BSD based kernels.
- O.
- Source distribution for NetBSD 1.2. May be compiled to perform either SACK or FACK congestion avoidance. This may be compatible with other BSD based kernels. It may also be compiled with automatic TCP socket buffer tuning.
- P.
- Also includes “patch” files.
- Q.
- Source distribution for NetBSD 1.3.2. May be compiled to perform any of the following: SACK, Rate Halving, Autotuning (with new memory allocation scheme), Explicit Congestion Notification (for end-hosts). This may be easily ported to other BSD-based kernels.
- R.
- Released/updated as of the date shown.
- S.
- This is a vanilla SACK Implementation using Reno congestion control and Sally Floyd’s “pipe” algorithm. It is (we believe) the most conservative implementation of the proposed SACK standard, in that it makes the minimum change to the behavior of current Reno TCP.
- W.
- Several bugs have been discovered in this implementation. We are currently working to correct them.
Helpful online information is available on using CVS for code development.
Other SACK research
- Sally Floyd also tracks other SACK research.
- Other SACK research tracked by PSC.
Comments and additions are welcome.