[comp.protocols.tcp-ip] beta version of compressed SLIP available

van@HELIOS.EE.LBL.GOV (Van Jacobson) (01/01/90)

A beta version of the SLIP TCP/IP header compression software
I described at IETF and Interop-89 is available for anonymous
ftp from ftp.ee.lbl.gov (128.3.254.168).  There are two files
that might be of interest:
	
  compressed.slip.rfc.ps.Z -- is a compressed PostScript file
		containing a draft of the RFC describing the
		compression algorithm design and implementation.

  cslipbeta.tar.Z -- is a compressed Unix tar file containing
		an implementation of the header compressed SLIP
		that runs on most flavors of 4BSD, Sun OS 3.x
		and (sort of) Sun OS 4.  The tarchive also contains
		a copy of the draft RFC so YOU DON'T NEED TO FTP
		THE OTHER FILE if you grab this file.

Remember that these files have to be ftp'd in binary mode and
uncompressed with zcat or compress.

This is just a beta release -- a real release (integrated with the
Point-to-Point Protocol) should be available when (if?) the RFC
is published.  In other words: you probably don't want to play
with this code (see the first two paragraphs in the README
below.)

I apologize for getting this out four months later than I said I
would but teaching took an unexpectedly large amount of time
last quarter.  Hope people find this useful.  Have a happy new year.

 - Van

--------------- This is the README from the cslipbeta tarchive:

Berkeley, CA,  Sun Dec 31 08:54:07 PST 1989

This directory contains some experimental SLIP code that does
tcp/ip header compression & TOS queuing.  This is a beta test
version for hard-core network kernel hackers.  You don't want to
play with this code unless you're (a) comfortable hacking the
kernel and (b) familiar with your system's TCP/IP implementation.

If you get the code running on some new system, find and fix a
portability problem, or find and/or fix a bug, I very much want
to hear about it.  However, it you have trouble getting the code
up and want help, re-read the previous paragraph and wait for
the official, non-beta release.

Variants of this code have been run extensively under Sun OS 3.x
on Sun-3/whatever's; on HP9000/360s & 370s (68030 machines)
running Utah's 4.3bsd, all flavors of Vaxen running 4.2bsd,
4.3bsd and 4.3tahoe; on a CCI Tahoe running 4.4bsd and on a
Xylogics Annex terminal server.  The code has been run briefly
on various Sparc architectures (Sparcstation-1, 4/110, 4/280)
under Sun OS 4.0.3.  I have tested the compression code on an
HP9000/360 under HPUX, a DEC-3100 (PMax) under Ultrix 2.x and an
SGI Personnal IRIS.  However, I don't have access to HPUX,
Ultrix or SGI kernel source so I've never run the driver in
those kernels.  I seriously doubt it would work.  People at HP,
DEC and SGI have been beta-testing the code and they may one day
release whatever magic is necessary to run SLIP with their OS.

The pieces here are:

	draft.rfc.ps	a (postscript) draft of the RFC describing the
			protocol and its implementation.  You should
			read this before diving into the code.  It's
			complete so far as I know but the RFC editor
			might change any and everything in it before
			official publication.

	INSTALLATION	some notes on installing the slip code in
			your kernel.

	slcompress.[ch]	the compression code.  This should work on
			almost any BSD system with almost any if_sl.
			It should be trivial to modify it to work
			on non-BSD (e.g., ka9q) systems.  Other than
			use of the bsd ip.h, tcp.h, etc., header files
			for packet structures, I've tried to minimize
			bsd dependencies (see the discussion in app.A
			of the RFC).

	if_sl.c		a version of /sys/net/if_sl.c (the SLIP driver)
	if_slvar.h	that works under 4.3bsd, 4.3tahoe & Sun OS3.x.
			This is essentially the SLIP driver distributed
			with 4.3bsd-tahoe plus type-of-service queuing
			(i.e., telnet & rlogin packets have their own,
			high priority queue) and calls to the compression
			routines added.  There were also a couple of
			minor bug fixes & efficiency hacks added, together
			with #ifdef's for Sun OS3 / 4.2bsd.
			If you're rolling your own if_sl, just note
			where the calls to sl_compress_init,
			sl_compress_tcp and sl_uncompress_tcp are and
			plug the equivalents into your driver.
			Note that this will *not* work under Sun OS4--
			see notes below on the sunos4/ subdirectory.

	slattach.c	a version of slattach compatible with if_sl
			(it knows how to set the flags that enable
			compression, etc.).

	slstats.c	a "netstat -I"-like program to print out various
			performance stats kept in the driver.

	tester.c	a test program for checking that the compression
			code works on your machine.  This code reads a
			packet trace then compresses & decompresses each
			packet of the trace, making sure that the final
			decompressed version exactly matches the original.
			It also prints some stats (and compressed packet
			headers) on standard out.

			Before you start kernel hacking, you should make
			sure that the compression code compiles and runs
			in your environment.  Do "make tester" (which
			should also build slcompress.c), then
			  ./tester -v telnet.trace | diff telnet.ref -
			  ./tester -v ftp.trace | diff ftp.ref -
			 If slcompress.c is working correctly, there 
			 should be no output from either diff.

	sl.h		a (dummy) include file you'll need to lint things.

	telnet.trace	(binary) packet trace inputs for "tester" from
	ftp.trace	 a telnet & ftp session, respectively.

	telnet.ref	what the "tester -v" output for telnet.trace and
	ftp.ref		 ftp.trace should look like (i.e., how they look
			 on my machines).

	timer.c		a test program, script and packet trace I've
	timer.sh	used to make timing measurements on the
	timer.trace	compression code.  I would be interested in
			the results of your running this so I can
			add more times to the RFC.
	
	sunos4/		(Minimal) support for header compression in
			the Kingston/Zachariassen "streams" SLIP driver
			for SunOS 4.x.  See the README file is this
			directory for notes.


Good luck.  Let me know about problems, suggestions, etc.

 - Van Jacobson, Lawrence Berkeley Laboratory
   van@helios.ee.lbl.gov

sl@van-bc.UUCP (Stuart Lynne) (01/01/90)

In article <8912312141.AA15088@helios.ee.lbl.gov> van@HELIOS.EE.LBL.GOV (Van Jacobson) writes:
>  compressed.slip.rfc.ps.Z -- is a compressed PostScript file
>		containing a draft of the RFC describing the
>		compression algorithm design and implementation.

Would there be any chance to get a non postscript version of this rfc
posted? I hate to flog a dead horse here, but there's lot's of us that don't
have postscript printers down the hall. 



-- 
Stuart.Lynne@wimsey.bc.ca ubc-cs!van-bc!sl 604-937-7532(voice) 604-939-4768(fax)