Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Aug 95 14:32:23 MDT
From:      terry@cs.weber.edu (Terry Lambert)
To:        paul@freebsd.org
Cc:        questions@freebsd.org
Subject:   Re: Netware gateway.
Message-ID:  <9508112032.AA08265@cs.weber.edu>
In-Reply-To: <199508111424.PAA18121@server.netcraft.co.uk> from "Paul Richards" at Aug 11, 95 03:24:14 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> Ok, here's a problem I've been mulling over for quite a while and
> I'm not getting anywhere with it.
> 
> I need to connect a Novell Netware network to the internet through
> a single dial-up account (Demon in the UK). I evaluated a product
> called Novix, which you load as an NLM onto the Netware server. I don't
> know the details of how it does it but I think basically it
> tunnels tcp/ip connections across spx/ipx so that you can run
> winsock clients on you windows boxes and they talk to the Novix NLM
> on the Netware server and then Novix talks SLIP across the modem to
> the ISP. The big advantage of all this is that only the Novix
> server needs an ip address, the windows clients don't so the single ip
> address allocated to the dial-up box is all that's needed.

This is called "tunneling".  Here is the equivalent process on a
UNIX box not using an NLM on the Novell side:


,----------------.      ,-------------.         ,----------------.
| NetWare client |      | UNIX system |         | NetWare server |
`----------------'      `-------------'         `----------------'
        |                       |                       ^
  NCP over NDIS/ODI          process                    |
        |                       |                  NCP over IPX
        V                       v                       |
,------------------.    ,-------------------.   ,----------------.
| Tunneling driver |    | Tunneling process |   | Server IPX/ODI |
`------------------'    `-------------------'   `----------------'
        |                   ^           |               ^
        |                   |          IPX              |
        |                 TCP/IP        |               |
       v                    |           `---------------'
,-----------------.     ,-------------.
| SLIP/PPP attach |     | SLIP server |
`-----------------'     `-------------'
        |                   ^
        |                   |
        |                   |
        v                   |
,-------------.      ,-------------.
| Async modem |----->| Async modem |
`-------------'      `-------------'


> Anyway, Novix's asynchronous NLM sucks big time and is totally
> incapable of keeping a dial-up connection alive and even if it does
> it can get into a real mess and drop packets everywhere. Since FreeBSD
> is known to work well in dial-up scenarious it would be great if I
> could use a FreeBSD box to talk to the ISP and have Novix talk across
> the LAN to the FreeBSD box. So, Novix is the SPX/IPX gateway to the
> tcp/ip LAN and FreeBSD is the gateway to the internet.

Unfortunately, I don't know what negotiation the client piece (the
tunneling driver in the picture above) does in terms of negotiating
the connection for NOVIX.  Probably it negotiates the connection end
to end via the SLIP connection on the dialup box, which means that
there is probably some protocol encapsulation control messages which
you wouldn't be able to handle on its behalf.

Most likely, the request/response nature of NCP and the NOVIX code not
identifying itself as a router (thereby dropping the IPX MTU to 512)
is probably what is screwing you on performance.

That, and most high speed modems don't do line turnaround very quickly;
without a sliding window, you will need to turn the connection around
on a per packet basis.  The real bandwidth available on a so-called
"high speed modem" is generally much smaller than you'd expect based
on the advertised rates it supports, or even normal TCP/SLIP connection,
which are sliding window in nature.

There are other tricks that you could do with the request packets to
make sure that you didn't generate excess line traffic during the latency
interval (in general, you'll need to do this because of the expotential
back off and the retry frequency causing multiple duplicate IPX requests
and responses).  The packet drops I don't understand unless you are
(incorrectly) counting the retransmits on the client and server side
as if they were dropped packets.

I would recommend against an NLM in any case, unless it were very, very
carefully engineered, since the non-preemptive tasking model on the
server implies a serious server slowdown on a long delay link if
they keep the processor until the encapsulation ACK has occurred.

Probably there is even a better design available, but it would assume
an external router with an internal net number (ie: a NetWare 3.11 type
routing environment).  Each incoming connection to the "local" IPX
net would seem like a locally attached external net to the internal
router and the external "cards".  In effect, each incoming SLIP
connection would be treated either as if it were on its own external
net by itself, or as if it were on the internal net.

The effect here would be that you would then be required to maintain
SAP traffic for the gateway system to proxy-answer (forward/bridge)
SAP requests.  This could either be done through a special case
protocol architecture violation on the SLIP serving box (GetNearestServer
is not supposed to be bridged) or by the router lying and identifying
a bridged server as the nearest server in its response.  This second
is more painful, since it requires the router/bridge to have NCP internal
knowledge (not a good thing).

> There's a problem. I need to use fake ip addresses on the
> internal side of the FreeBSD box since there's only a single valid ip
> address allocated. I've thought about using socks on the FreeBSD box so that
> the fake internal ip addresses are never seen. Basically, I'm not sure this
> will work with Novix and I'm touting for experiences of solving this
> setup in general, i.e. connecting Netware networks to the internet across
> a dial-up connection where you've only had a single ip address allocated.

I don't really understand this is a requirement.

> Using FreeBSD would be nice, but spending bucks on a packaged
> solution would do me fine at this point but I'd really like to hear
> from people with known working solutions since I was told Novix was a
> really good "solution" but that didn't turn out to be the case.

The Novell "soloution" in this case is LANWorkplace NCP over IP.  In
reality, this is, once again, protocol encapsulated IPX packets; there
is no true NCP-over-IP implementation.  The deencapsulation is hidden
on the server side.

In this case, you use the SLIP capability of the LANWorkplace product to
get onto a TCP/IP net with a NetWare server running NetWare TCP/IP and
straddling the local (IPX) net and the non-local (TCP/IP) net.  You
bind the TCP/IP stack to the card attached to the TCP/IP net and running
the SLIP server.  What the SLIP server is is really irrelevant, as long
as the LANWorkplace can get into it: it could be a BSD box or a
Livingston Portmaster, etc.

This is a bit of an expensive soloution, both on the TCP/IP for the
server and for the LANWorkplace on a per client basis.  It's really
up in the air whether this would be more expensive than using the BSD
IPX stack and writing your own software for the client (overall about
two weeks work on the client, assuming a full Level 2 MSDN membership
so that you'll have the MS DDK and the sample NDIS driver code.


I don't know if the all Novell arrangement would eliminate the excess
and duplicate traffic or not; I think that to do it you'd have to be
sneaky and clever at the same time.  The soloution is rather non-obvious
and rests solely on the client side of things, and I don't know if they
were as sneaky as I would have been.  It too relies on some knowledge
of NCP to work.


					Regards,
					Terry Lambert
					terry@cs.weber.edu
---
Any opinions in this posting are my own and not those of my present
or previous employers.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9508112032.AA08265>