NOTE: This is a BETA release!  There WILL be bugs, so don't put your whole
organisation's IP connectivity through it! (yet) :)

What is SLiRP?
--------------

SLiRP is a TCP/IP emulator over the (C)SLIP/PPP link-level protocols,  which
allows a normal user with a shell account on a UNIX system to act like a
(C)SLIP/PPP account.


Some of the features of SLiRP
-----------------------------

* It's free

* It comes with source

* The TCP/IP code is based on 4.4BSD which is widely regarded as a very
  stable and complete implementation.  This means it does all the things
  expected of TCP implementations. eg: slow start, congestion avoidance,
  exponential backoff, round-trip-time calculation, delayed ACKs, Nagle
  algorithm, incoming and outgoing IP fragments, etc. etc. The TCP/IP code 
  was actually taken from the excellent FreeBSD 2.0 sources.  In fact, I went
  out of my way to do as little modification to it as possible.  Most things
  that I regarded as unnecessary (eg: the rfc1323 performance enhancements)
  were simply commented out, so if you want to experiment with them, you can.

* SLiRP can redirect ports, so, for example, even though you don't have a real
  address on the Internet (as with all SLIP-emulators) people can still ftp,
  telnet, etc. into your home machine.

* SLiRP can execute an arbitrary program on connection to a certain
  address/port.  For example, by default telneting to 10.0.2.1 will execute
  your shell so there's no need to login etc.

* Since nothing needs to be compiled on the client side, it works with any OS
  that can talk (C)SLIP/PPP

* SLiRP now has load-balancing support, so that you can use more than one
  link as if they were indeed one link.

* SLiRP has on-the-fly configuration.  Most of the commands that you can
  give slirp on the command line/in config files can also be done by
  telneting to 10.0.2.0 all without disturbing slirp.

* And more ...

Planned features:

* tupload-like program, which will let you download/upload files without the
  need to login via ftp. (sorta done)



A little more about SLiRP
-------------------------

Here's a little comparison to put SLiRP in perspective:

... Advantages of SLiRP over term:

* Only needs compilation on one side of the link (the remote side)

* No need to "port" (termify) software

* Can be used by non-UNIX users (DOS/Win/Mac/etc.)

* Is more secure

* Is easier to use by multiple users (since you're using the kernel's
  networking code, which is already multi-user (well, should be...))

... Advantages of term over SLiRP:

* Compression (this is planned in SLiRP.  Infact, I plan to "borrow" the
  compression code from term :)

* Term has more complete emulation (see below)

* Tupload (working on it)

... Advantages of SLiRP over real (C)SLIP/PPP accounts:

* No need to have your own IP address.  This can be useful if you are
  running out of IP's (as the whole Internet is)

* You can connect your whole LAN to the 'Net without even needing one IP
  address.  eg: If you have a LAN of 3 PC's at home, just route all packets
  to the host that has the modem, have it forward IP packets and route all
  packets over SLiRP.  Easy!

* Speed.  Depending on your situation, the speed improvement can be
  significant.  In real (C)SLIP/PPP connections, the IP packets are sent to
  and from the remote host directly, whereas with SLiRP, it's the
  remote-host which takes care of all this, SLiRP only (tries to) makes sure
  the modem is used to full capacity.  It's sorta like a "funneling" effect,
  as long as the remote-host has a fast connection to the 'Net, it'll keep
  enough data buffered to keep SLiRP happy.

* Security.  No need to worry about IP address spoofing, ICMP attacks, etc.
  You dictate how much access to grant outside users to your home machine,
  via port redirection.  (Watch those X redirections!  Make sure you have
  access control enabled, or you can be snooped with the greatest of ease)

... Advantages of real (C)SLIP/PPP over SLiRP:

* You get your own IP address.  This lets other people ftp into your home
  machine without needing to use a weird port number, etc.

* All programs will work.  In SLiRP, some programs may not work because you
  do not have your own IP address, so some programs need to be "emulated".

* Speed.  Again, depending on your situation, speed may be better than with
  SLiRP. (eg: because SLiRP will be run on a machine, competing with other
  processes, it will slow down on high loads, whereas with real (C)SLIP/PPP,
  the remote-host usually only acts as a "router" so it won't be prone to
  high loads)

How to contact the author
-------------------------

If you have any suggestions, additions, patches, questions, comments, liquor
you can e-mail me at danjo@blitzen.canberra.edu.au.

You can ftp SLiRP updates and patches from
ftp://blitzen.canberra.edu.au/pub/slirp.

There's also a WWW page (under construction) at
http://blitzen.canberra.edu.au/slirp/.  I'll put the latest information on
SLiRP on this WWW page, so please check this page before e-mailing me.  (Of
course, if you need SLiRP to work to be able to use
Mosaic/Netscape/whatever, then you better e-mail me instead)
