[comp.dcom.lans] Super Cheap IP router

morrison@accuvax.nwu.edu (Vance Morrison ) (04/03/89)

Hello All,

I have developed software for Turning a klunky old IBM XT into
a IP router.  Below is a description of the software I wrote.
The software is available via anonymous FTP from accuvax.nwu.edu
(129.105.49.1) in the directory pub/pcroute.  

We here at Northwestern have found this program to be very useful
Already we have replaced a major Hub in our network with a PCrouter
and others additions/substitutions are planned.  

If you find this program useful, let me know, it helps my ego (:-).


Vance

--------------------------------------------------------------------------

	    PCROUTE - and IP routing program from the IBM PC
		 	     Vance Morrison
			morrison@accuvax.nwu.edu

    Traditionally IP routers have been fairly high performance,
expensive machines.  Typically they run about $5000-$10,000 a unit.
Until now a IP router for under $5000 was just about impossible
to get.  Recent developments in PC hardware, however, has made
it possible to convert a PC to an IP router for a TOTAL of $800-$1000
a unit.  This price is less that the cost of many ethernet boards
and thus it now makes sense to always use dedicated router to
perform IP gatewaying functions.  

---------------------------------------------------------------------
What is PCroute?

    PCroute is software written for an PC/XT (or AT) that will 
allow it to act as a IP router that will gateway between the following
kinds of Physical media.

	Ethernet - Ethernet
	Ethernet - Starlan
	Starlan - Starlan

   In addition to the XT, the only other hardware needed are the
networking cards, which at present run about $200-$250 a piece.  
Since you can buy an XT (without an monitor) for $400, the total
cost for the hardware is $800-$900.  

---------------------------------------------------------------------
What do I need to install PCroute?

	1) An XT computer (does not need monitor)
	2) 2 Western Digital WD8003 network cards
		WD8003E		Ethercard Plus
		WD8003S		Starcard Plus
		WD8003SH	Starlink Plus

---------------------------------------------------------------------
How Fast is PC route?

    Some may argue that a PC simply is not fast enough to be a
good IP router.  This would true if the PC had to do all the work,
but in fact, the ethernet cards do most of the work.  All the
PC needs to do is determine the route, and copy the packet from
one interface to the other.  By programming in assembler and 
optimizing for peak efficiency, the PC is up to the task.  

    Actual tests indicate that that following formula is a
worst case estimate of throughput of PCroute on a 4.77Mhz XT

	packet_delay = .473 + .00393 * len	msec

   Where 'len' is the length of the packet in bytes.  Thus
PCroute has a fix per packet overhead of .473msec and takes
3.93usec/byte to transfer the packet from one network to the
other.  





    Thus for the largest packet size (1514) we get throughput of 

	packet_delay = .473 + .00393 * 1514 = 6.4 ms
	throughput = len*8/packet_delay = 1.9 Mbit/sec

    For the smallest packet size (64) we get a throughput of

	packet_delay = .473 + .00393 * 64 = .724 ms
	throughput = len*8/packet_delay = .7 Mbit/sec

   If you were to buy a XT clone, (even the $400 variety) it
would undoubtedly be a 8Mhz or 10Mhz machine, so you should
expect to do 1.6 and 2.0 times better respectively with these
machines.  I most strongly suggest that you get the 10Mhz variety
since they are usually only $30 more and will give you a 12%
performance boost

   In addition the Ethernet boards have an on-board 6.5K packet
buffer.  Thus packets that come at the PCrouter too fast for
it to process will be queued.  The router will start dropping
packets after this 6.5K buffer is exhausted.

   Note that since SUN NFS likes to send 8K blocks in fast spurts
this will sometimes cause the router to drop packets.  I suggest
that you set this block size down to 4K if you expect a lot of
NFS traffic through the router (look for 'wsize' in man fstab).

---------------------------------------------------------------------
What PC route supports?

   PCroute was designed to be as simple as possible yet perform
well as a IP router.  In particular it supports

	1) IP routing with Subsets (however the subnet mask
	   must begin with 255.255)
	2) Static routing with up to 250 routes.
	3) responds to ICMP echo (ping) 
	3) Directed broadcasts 

   The PCrouter also has support for more than two network interfaces,
but this requires recompilation of the code, so for now you will have
to contact me.

---------------------------------------------------------------------
What PC route DOESN'T support?

	1) Dynamic routing (yet)
	2) Booting off the network (BOOTP) (yet)
	3) Any IP services besides routing and ICMP echo.
	4) Any other Ethernet/starlan card besides Western 
	   Digital WD8003








---------------------------------------------------------------------
Coming Soon.

	1) RIP Support
	2) Appletalk - Ethernet Support (like a KIP box but you can
	   tunnel IP packets through the Appletalk network) Here at
	   NU we use this so that we can get cheap, reasonably fast
	   network access between buildings.
	3) Network Booting a la BOOTP
	4) The other ICMP functions so that router conforms to RFC1009

---------------------------------------------------------------------
Hints

	1) We found that the 10Mhz XT clones that Jamco and others sell
	   work very well.  One nice feature about these units is their
	   BIOS.  By setting the dip switches in the PC, you can tell it
	   that there is no Monitor.  This also tells the BIOS not to
	   check for a keyboard either.  Thus you don't need to buy either
	   the keyboard or the monitor.  Other XT BIOS ALWAYS check for
	   the keyboard, and thus you have to plug it in even though you
	   never use it.

---------------------------------------------------------------------
Reliability

	The reliability of PCroute has been EXCELLENT.  We have been
	using these routers for months now in three places with 
	absolutely no failures.   If you wish to PING one for yourself
	here are some PC routers on our campus

		129.105.49.13
		129.105.1.1
		129.105.7.1

---------------------------------------------------------------------
Comments and Bug reports

	I am interested in finding out what you think of PCroute and
	how well it performs for you.  I am also interested in hearing
	about any problems you have or bugs in the documentation.
	You should send your comments to 
		
		Vance Morrison <morrison@accuvax.nwu.edu>

	Note that since I am not paid to support this software, I can
	not guarantee that I can respond to your problem, but I will
	try.


						Vance Morrison
						Northwestern University

henry@utzoo.uucp (Henry Spencer) (04/04/89)

In article <583@accuvax.nwu.edu.NWU.EDU> morrison@accuvax.nwu.edu (Vance Morrison ) writes:
>I have developed software for Turning a klunky old IBM XT into
>a IP router...

Was there some reason not to just use the Phil Karn ("KA9Q") TCP/IP
for the PC/XT/AT/...?  I can't see any reason why Phil's stuff wouldn't
make a perfectly good router; were you aware of its existence?
-- 
Welcome to Mars!  Your         |     Henry Spencer at U of Toronto Zoology
passport and visa, comrade?    | uunet!attcan!utzoo!henry henry@zoo.toronto.edu

rpw3@amdcad.AMD.COM (Rob Warnock) (04/04/89)

In article <1989Apr4.000727.2759@utzoo.uucp> henry@utzoo.uucp writes:
+---------------
| In article <583@accuvax.nwu.edu.NWU.EDU> morrison@accuvax.nwu.edu writes:
| >I have developed software for Turning a klunky old IBM XT into a IP router...
| Was there some reason not to just use the Phil Karn ("KA9Q") TCP/IP
| for the PC/XT/AT/...?  I can't see any reason why Phil's stuff wouldn't
| make a perfectly good router; were you aware of its existence?
+---------------

Well, for one thing, Phil's code associates an IP address with the *host*,
not with each interface. (See? KA9Q isn't *perfect*... yet.)  That's all
right when you a gatewaying from (say) Ethernet to a SLIP link, but isn't
so hot if you are trying to go Ether-to-Ether.  (Someone at AMD hacked the
KA9Q code to put the IP addresses with the interface, and *is* playing with
it as an experimental IP router. But it's a hack, and not completely general.
Best would be for one of the real KA9Q maintainers to do an "official" fix.)


Rob Warnock
Systems Architecture Consultant

UUCP:	  {amdcad,fortune,sun}!redwood!rpw3
DDD:	  (415)572-2607
USPS:	  627 26th Ave, San Mateo, CA  94403

les@chinet.chi.il.us (Leslie Mikesell) (04/05/89)

In article <1989Apr4.000727.2759@utzoo.uucp> henry@utzoo.uucp (Henry Spencer) writes:
>
>Was there some reason not to just use the Phil Karn ("KA9Q") TCP/IP
>for the PC/XT/AT/...?  I can't see any reason why Phil's stuff wouldn't
>make a perfectly good router; were you aware of its existence?

Is there anything similar for OSI protocols?  I would like to split
a 1 Megabit starlan into at least 2 sub-nets but the only thing I
have seen to connect them would be to put 10-1 bridges back to back
(at about $4500 each).  A PC with two boards sounds a lot nicer.

Les Mikesell

karn@jupiter (Phil R. Karn) (04/05/89)

>Well, for one thing, Phil's code associates an IP address with the *host*,
>not with each interface. (See? KA9Q isn't *perfect*... yet.)

I consider that a feature, not a bug. :-)  Seriously, I have always
considered the Internet approach of giving addresses to interfaces
rather than to hosts to have been a bad move, and my approach of "one IP
address per customer" was a deliberate design decision based on how I
wanted the amateur packet radio TCP/IP network to evolve.

Nevertheless, you can still make my code emulate a conventional Ethernet
router with two distinct addresses by merely enabling proxy ARP. You
assign the router running KA9Q an address on each network. One of these
addresses becomes the host address for the system; the other is entered
into the ARP table with the "publish" subcommand such that it answers
ARP requests for that address with the Ethernet address of the
appropriate interface.

For example, consider a system with two Ethernet interfaces and two IP
addresses as follows:

Interface A:	Ethernet addr 02:60:8c:0:0:1	IP addr 1.2.3.4
Interface B:	Ethernet addr 02:60:8c:0:0:2	IP addr 44.0.0.1

The autoexec.net file would contain, among other things, the following
two lines:

ip address [1.2.3.4]
arp publish [44.0.0.1] ethernet 02:60:8c:0:0:2

This will make the system behave just as it should for purposes of
routing packets. The only precaution you have to make is to use the
router's "primary" IP address whenever you want to talk directly to it
as a host. Of course, it is then operating as a host, not a router...

Phil

zdwcv@dcatla.UUCP (Wm. C. VerSteeg) (04/05/89)

The notion of a cheap IP router based on a PC is a good one. When
we start talking about implementations, some interesting ideas get thrown 
out.

Is a proxy arp scheme good enough scheme for such a low-end router?
Phil Karn says that his KA9Q can be used as a router by configuring
it for proxy arp. If the intended user group is relatively sophisticated,
and is confining itself to a SMALL network environment, I would say 
that proxy arp is sufficient. But proxy arp is not intended for large
networks. There is no distributed routing algorithm, so it does not
scale well at all. Proxy arp schemes would not work in the internet at 
large, but may be usefull in some limited applications.

Carefully look at your options before you decide to use a package that 
was not designed to be a router as a router. 


Bill VerSteeg

karn@ka9q.bellcore.com (Phil Karn) (04/06/89)

>Is a proxy arp scheme good enough scheme for such a low-end router?
>Phil Karn says that his KA9Q can be used as a router by configuring
>it for proxy arp...[]..Proxy arp schemes would not work in the internet at 
>large, but may be usefull in some limited applications.

You misunderstood the reason I suggested you use proxy arp. The idea was to
use it only to circumvent the "one IP address per system" design inherent in
my code. Proxy arp allows the package to reply properly to ARP requests for
its secondary IP address.

You could, of course, go further and use my proxy arp as a general routing
mechanism, but in this case the objections you raise become valid. There
is, however, no routing algorithm code in my package, although there is
talk of adding OSPFIGP.

Phil

fink@nucthy.physics.orst.edu (Paul Fink) (04/07/89)

In article <1989Apr4.000727.2759@utzoo.uucp> henry@utzoo.uucp (Henry Spencer) writes:
>Was there some reason not to just use the Phil Karn ("KA9Q") TCP/IP
>for the PC/XT/AT/...?  I can't see any reason why Phil's stuff wouldn't
>make a perfectly good router; were you aware of its existence?
>-- 
>Welcome to Mars!  Your         |     Henry Spencer at U of Toronto Zoology
>passport and visa, comrade?    | uunet!attcan!utzoo!henry henry@zoo.toronto.edu

Ah, I'm not aware of it's existence. Could you tell me wher to get it?


____________________________________________________________________________
         Paul J. Fink Jr.                    Internet:
         Oregon State University                fink@PHYSICS.ORST.EDU       
         Department of Physics               Phone:
         Corvallis, Oregon 97331                (503) 754-4631

mah@hpuviea.UUCP (Michael Haberler) (04/08/89)

We're using KA9Q as a 'super cheap' IP router for about a year now at the
University of Economics at Vienna. It's an AT clone bridging a NetBIOS
IBM PC Network (broadband - the early works from IBM & Sytek) and the
campus ethernet. Also, it has a permanent SLIP connection to a remote
PC Network running with 19200 baud. We also experimented with two KA9Q's 
and dialup SLIP for bridging two distant Ethernets.

This worked flawless as long as traffic is low; given the average dumb
PC hardware it's easy to lose interrupts when traffic is coming in from
more than one side. Especially the Slip connection deteriorated badly
under high load. The Ethernet card we use (3c501 - yes I know) keeps
the CPU busy with interrupts disabled too long so the serial port just is
overrun. The Netbios/slip route actually works better, probably due
to less latency of the Netbios driver. 

I think that a bridge able to sustain higer traffic would need interface
cards with substantial on-board buffering. The one-interrupt-per-character
scheme for slip would need to be replaced with at least DMA, or better an
own CPU on the card. 

Remember: this all is due to the !@*&^% PC hardware having lousy
real-time performance. KA9Q never gave us a problem (Kudos, Phil!).

Michael Haberler & Gustaf Neumann (neumann@awiwuw11.bitnet)
-- 
Michael Haberler		mah@hpuviea.uucp 
Hewlett-Packard Austria GmbH, 	...mcvax!tuvie!hpuviea!mah
Lieblgasse 1 			...hplabs!hpfcla!hpbbn!hpuviea!mah
A-1220 Vienna, Austria		Tel: (0043) (222) 2500 x412 (9-18 CET) 	

morrison@accuvax.nwu.edu (Vance Morrison ) (07/04/89)

               Call for Beta Testers from PCroute 2.0


Hello All,

I have written debugged, and alpha-tested the next version of the
PCrouter software.  For those of you who don't know what PCroute is,
it is a piece of software can turn an old XT or AT into an IP router.

The best part of all of this is due to the low cost of and XT clone and
ethernet cards, you can make an IP router for under $800.  Not bad since
A Cisco router doing the same thing cost $8000.   (granted, Cisco is
a higher performance machine, but I think you will be pleasantly supprised
by the throughput of this software, we do a fair amount of NFS and FTP
and really don't notice the difference).

I have been testing this code for about 3 weeks now in 9 PCrouters here
at Northwestern and they seem to be operating properly.  But before I
schedule an 'official' release (3 - 4 Weeks), I would like to get some
other people trying PCroute in situation we simply don't have here at
Northwestern.

The software itself as well as the source code can be found on 
accuvax.nwu.edu (129.105.49.1) in pub/pcroute.  The source code is
compressed, and both the source and the software has been 'tarred'.

Please don't go modifying the code until the official release comes out
in several weeks, then you can make LOCAL modifications to your hearts
content. I Reserve the right to be the SOLE person to make modifications
to PCroute that span organizational boundaries.  My motive is simple,
I want there to be only a single varient of PCroute.  If you have a good
idea you want incorporated let me know and I will probably put it in.

People that aren't on the internet, be patient, in a couple of weeks I
will ask UUNET and other UUCP archives to keep a copy, then you can get
it yourself. 

Here are some of the highlights of Version 2.0 (beta)

                      PCroute  Version 2.0

    PCroute, the software that can convert a PC into a IP router for
about $500, is now in its second major Version. As with version 1 
PCroute supports

        1) Western Digital WD8003 Ethernet and Starlan boards.
        2) Static IP routing (up to 250 routes).
        3) IP subneting
        4) ICMP Ping

    But in addition Version 2.0 also supports

        1) Up to 6 networks interfaces
        2) Localtalk interfaces (MacTCP compatable)
        3) SLIP (coming soon)
        4) ICMP TTL, Redirect, Unreachable 
        5) Fragmentation where necessary
        6) RIP dynamic routing protocol
        7) Error loging using BSD syslog
        8) PROXY ARP (if desired)
        9) Bootp forwarding


Vance
morrison@accuvax.nwu.edu