Date: Sat, 20 Mar 93 04:30:06 PST
From: Advanced Amateur Radio Networking Group <tcp-group@ucsd.edu>
Errors-To: TCP-Group-Errors@UCSD.Edu
Reply-To: TCP-Group@UCSD.Edu
Precedence: Bulk
Subject: TCP-Group Digest V93 #76
To: tcp-group-digest


TCP-Group Digest            Sat, 20 Mar 93       Volume 93 : Issue   76

Today's Topics:
                         Dialer enhancements

Send Replies or notes for publication to: <TCP-Group@UCSD.Edu>.
Subscription requests to <TCP-Group-REQUEST@UCSD.Edu>.
Problems you can't solve otherwise to brian@ucsd.edu.

Archives of past issues of the TCP-Group Digest are available
(by FTP only) from UCSD.Edu in directory "mailarchives".

We trust that readers are intelligent enough to realize that all text
herein consists of personal comments and does not represent the official
policies or positions of any party.  Your mileage may vary.  So there.
----------------------------------------------------------------------

Date: Fri, 19 Mar 93 19:40:40 EST
From: Mike Gallaher <mg@bds.bds.com>
Subject: Dialer enhancements
To: nos-bbs@hydra.carleton.CA

[This is a response to a question in nos-bbs, but I'm posting it to
tcp-group too.]

If you want to implement more flexible dialer scripts, you may want to
look at the script language used by the dialupip package.  The doc and
source code is in uunet.uu.net:pub/networking/dialupip2.0.tar.Z.

While we're on the subject: I wanted JNOS to have the on-demand
dialing feature that's appeared in recent versions of ka9q NOS.  (When
packets are outbound on an asy interface, if the dialup link is down,
it invokes the dialer script.  When the link is made, the packets go
through.  After a period of inactivity, it hangs up.)

The problem with the present scheme is that it's hard to use the same
port to route to different destinations.  If you route to both Joe and
Harry over the same port, then datagrams for either will go to
whichever it happens to be connected to.  (The misrouted packets
usually ping-pong back and forth until the time-to-live expires.)

I've been considering implementing a multiple-interface-per-port
scheme, similar to the Telebit NetBlazer's dynamic IP interfaces.
When such an IP interface has outbound traffic, it grabs a port from a
pool of available modem ports and dials up the destination, as before.
On the incoming call side, a calling host can start up a dynamic IP
interface on the called host, which automatically installs routes to
whatever destination are now reachable over the new connection.
Has anyone already done this, or something like it?

As a first step, I've got the demand-dialer working in JNOS.  I
originally set out to port just the dialer to JNOS, but for various
reasons I wound up merging all the lower-level protocol code from ka9q
into JNOS.  This includes everything from the device drivers up to the
socket code.  (I haven't touched the servers, sessions, etc.)  The
merged code mostly works, but I haven't fully shaken out all the bugs
yet.

Some of the reasons I've been wanting this code are:

 -  The ka9q code has a cleaner IP interface interface :).  For example,
    what used to be in rafts of #ifdefs is now called through function
    pointers in the interface structure.  This simplifies the
    various link encapsulations, among other things.
    The socket code is similarly cleaner.

 -  ka9q also has a much faster async driver.  The async code in JNOS would
    drop characters at speeds above 9600 on my 12MHz 286,
    (A 16550 does keep this from being to much of a problem, but with
    an internal V.32bis modem I don't have that option.)
    The ka9q code doesn't lose any at 19200 (I haven't tried 38400).

 -  I haven't verified this by experiment yet, but I believe that the
    ka9q code inherently avoids the output queue overflow problem that
    JNOS suffers from.

I've been very careful to retain in the merged code the fixes made to
JNOS.  (Sometimes it's not easy to tell which version was "fixed"...)

In particular, I can't test all the device drivers.  The drivers are a
bit different in the ka9q code.  The interrupt buffer pool (nibufs,
ibufsize) wasn't in ka9q (where did this come from, anyway?).  Drivers
now pass their incoming packets up slightly differently.  The
interrupt handlers have a different assembly-language wrapper.

Many of the drivers were already worked over in the ka9q code, but not
all the drivers in JNOS are present in ka9q, such as gracilis/packtwin.
The PI driver appears to have diverged considerably; I could use some
help with that one!

Mike Gallaher  WA2HEE mg@bds.com wa2hee@wa2hee.ampr.org

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

End of TCP-Group Digest V93 #76
******************************
******************************