van@HELIOS.EE.LBL.GOV (Van Jacobson) (01/06/90)
Archive-name: vj-compressed-slip/how-to-get Original-posting-by: van@HELIOS.EE.LBL.GOV (Van Jacobson) Original-subject: beta version of compressed SLIP available Archive-site: ftp.ee.lbl.gov [128.3.254.68] Archive-directory: / Archive-files: c*slip* Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti) 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
vixie@decwrl.dec.com (Paul A Vixie) (01/12/90)
Two notes on this text: >> 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: First, ftp.ee.lbl.gov's address is 128.3.254.68, not .168. Second, this code is now on gatekeeper.dec.com (16.1.0.2) in /pub/net/jacobson. Oh, and I guess, third, this code is so much better than my own feeble attempts at slip header compression that I'm going to ditch my own code and use Van's. Anyone else I gave my code to should do the same. Paul Vixie DEC WRL -- Paul Vixie DEC Western Research Lab <vixie@decwrl.dec.com> Palo Alto, California {ames,att,uunet}!decwrl!vixie