editing over a packet net - response summary

Ed Arnold era at hao.UUCP
Sat Oct 12 06:47:08 AEST 1985


Some months ago, I inquired as to what usenet readers know about the
problems of editing under UN*X over a packet network.  I should have posted
this response much sooner, but two new systems which arrived here in the
meantime (names of manufacturers will not be repeated, to protect the
innocent) went into a time-hogging infant mortality mode.

If there's any further interest, mail me and I'll include your info in
another summary; it won't take nearly as long as this one (Boy Scouts'
honor).

Before I summarize, thanks to all who have communicated:

Rich Altmaier	hplabs!oliveb!ios!richa
Sean Casey	ames!vortex!cbosgd!ukma!sean
Gilles Chartrand	ihnp4!alberta!myriasb!ggc
Brad Davis	{ihnp4,decvax,seismo}!utah-cs!b-davis
R. Drew Davis	seismo!harvard!bentley!drew
Chuck Hedrick	seismo!topaz!hedrick
Eric Kolotyluk	seismo!ubc-vision!ubcg-mts!kolotyluk	604-228-4215
David Parter	seismo!uwvax!david
Jim Shankland	ucbvax!mtxinu!rtech!jas
Dave Sherman	ihnp4!utzoo!lsuc!dave
Maurice Suhre	ucbvax!trwrb!suhre
Chris Thomson	ihnp4!alberta!myriasb!cmt
Scott Weikart	scott at Glacier.ARPA
Jim Wilson						201-631-7219
???		ihnp4!ihtnt!jhh
???		seismo!harvard!packard!hoxna!mdm

WHAT I HAD IN MIND
------------------------------------------------------------------------

First, an explanation of the specific situations I had in mind is probably
in order.  I didn't make it clear as to whether I was thinking of one type
of network, or was stuck with a network, or what.  The primary networks
which have to do with external access to this organization (NCAR) are
(1) Uninet, a typical packet switched network which anyone can buy time on,
and (2) remote ethernets connected to a local ethernet via TransLAN boxes
over satellite links.

Uninet is probably typical of the major public packet nets.  It has
three basic algorithms allowed in the PAD (packet assembler/disassembler):
(1) one character per packet, (2) all characters up to some terminator
(e.g. newline) per packet, or (3) a time-slice arrangement in which all
characters received within some amount of time (in units of 1/20 second,
up to 255 units) are put into a packet.  The problem with (1) is that it
is expensive.  Number (3) is a better match for UN*X editors, which
typically issue a write() call on a tty line in raw or cbreak mode, but
large writes (e.g. a total screen refresh) can end up being broken up into
more packets than is really necessary.  As pointed out by Maurice Suhre,
Tymnet implements a slight variation on these tricks: it inserts a delay
of 2.5 character times before sending out a character, to see if something
else is on the way.

Regarding ethernets, this issue really concerns anyone who has an ethernet
of any size (although it's of somewhat greater interest in a case such as
the one here, where a demo system connecting remote ethernets, called USAN
[University Satellite Network] is being put together in concert with a
number of universities).  It's obviously in the interest of your ethernet
that you don't load it with oodles of 1-character packets, although that's
actually what's going on if you're using any of the common terminal-server
products to allow you to connect your terminals to multiple hosts.  I don't
believe any of the current products use terminator characters or time
delays in an attempt to minimize the number of packets.  (Can anyone 
correct me on that?)  If that's the case, embarass your terminal server
salesman the next time you see him; perhaps those companies will begin to
improve their products in this area.

WHY DO THIS AT ALL?
------------------------------------------------------------------------

I received several replies that questioned why anyone would want to do
something like this, in the first place.  There are several good reasons:

1) People are already doing this, for instance, Eric Kolotyluk.  Sites
   running IBM software with SNA are, in general, in a better position to
   support this sort of thing than UN*X, since SNA can speak in packets.
2) Line editing is only a substitute for screen editing if you're
   prepared to take the hit in productivity that implies.  I personally
   don't know anyone who's using "emacs", "vi", or "e", who would care to
   revert to "ed".  However, one user who replied says that he uses
   "qed" (a superset of "ed") for all his editing at 1200 (on a packet
   net) or at 19200, and that's a satisfactory solution for him.
3) When running over a relatively slow (1200 or 2400 bps link), it isn't
   always practical to transfer a complete file to a remote site for
   editing.  For instance, we have scientists who log in here to prepare
   jobs for submission to our Cray-1s, and if any of you know how many
   scientists program (no offense to the scientific community intended -
   after all, they're REAL scientists, not quiche-eating computer
   scientists :-) ), you'd know that they often generate some very
   large, non-modular pogroms, er, programs.
4) (mild flame on) Those of us who deal with UN*X frequently tend to
   forget that there are a few things it doesn't do well, and speaking
   in packets is one of them.  We have to remember that there are lots
   of IBM system managers out there who will never go for anything else,
   but they sure won't even consider going for something else if that
   something else can't do everything they're already doing.  (flame out)
5) Economics: it's probably safe to say that slow links, i.e. 4KHz voice-
   grade channels, are going to be around for a lot longer than we'd like
   them to be.

A GENERAL SOLUTION
------------------------------------------------------------------------

There are several things needed before a general solution to this
problem emerges.

(1) There needs to be some sort of standard for packet communication
    between terminals and hosts.  If this were the case, the packet wrapper
    would make communication between terminals and hosts truly transparent,
    doing away with the ugliness of escape sequences.  Eric Kolotyluk
    mentioned that ISO/ANSI is working on a specification entitled
    "Basic Class Virtual Terminal Protocol" (document ISO/TC97/SC16N1276 -
    probably superseded by a later number), which would appear, at least
    from the title, to be addressing this terminal/host packet comm problem.
    Still, it is not likely that there will be any standards soon in this
    area, as pointed out by jhh:

    >To make this work well and universally, a protocol is needed for
    >standardizing communications between terminals and hosts.
    >This will enable both terminal and host manufacturers to proceed
    >with development of this software independently.  This will
    >also enable the editing features to be more controlled by the
    >terminal rather than the host.  One terminal manufacturer may
    >provide an EMACS type interface, while another provides a VI
    >type interface.  Since the same terminal would work on any host,
    >the editing commands would not change from operating system to
    >operating system, but from terminal to terminal.
    >
    >This is a subject near and dear to my heart, as I work on the
    >development of a packet switch network.  To make packet switching
    >cost effective, the data must be easily packetizable, but
    >there is little effort to develop the protocols to packetize
    >things until packet switching is more readily available, which
    >won't happen until ...  The old chicken and egg problem.

(2) UN*X needs to learn how to speak in packets in a more general way.
    Sure, everyone running 4.2 has an ethernet, but I don't believe
    that can be called a general solution; there's always talk of the
    warts under the surface of 4.2 at Usenix conferences.  I suspect
    that the "streams" capability being added to System V (D.M. Ritchie,
    "A Stream Input-Output System"; BSTJ, Oct. 84) is one promising
    approach to the problem of popping a protocol processing module
    into the path between a program and device; does anyone know of
    others?

(3) There needs to be some sort of standard for splitting of functions
    between a host and an intelligent terminal/PC during editing sessions.
    Brad Davis pointed out that there's a document that provides some
    possibilities in this area, namely: Stallman, Richard, "The SUPDUP
    Local Editing Protocol" (MIT AI Lab, 6 Aug 84).  (I've asked my
    friendly local librarian to get me a copy of this; it hasn't arrived
    yet, but if you want a copy, mail me and I'll send you one when I get
    it, IF it doesn't prohibit me from copying it.)

DISTRIBUTED EDITORS
------------------------------------------------------------------------

Even without a generalized packet capability for UN*X, it's still possible
to implement distributed editors, and several of those responding
provided comments about the general characteristics of such an editor.
There were two responses that described actual working editors, the first
from jhh:

 >The jim editor for the Teletype DMD 5620 works pretty much the way you
 >want.  It still lacks some maturity and features compared with emacs or
 >vi, and it is mouse based, for better or worse.  It does have two
 >parts - one running in the terminal, and one running in the host.
 >The host handles such things as context searches, and the like,
 >while the terminal handles the local editing, sending things back and
 >forth in packets.  A strategy where there is some intelligence in both
 >the terminal and the host is needed.  As the terminal-host connection
 >is usually bandwidth limited, the minimazation amount of data transfer
 >is desirable.  This requires host software to determine what is
 >the smallest amount of data that can be sent to the terminal,
 >and terminal software to make small changes and send them to the host
 >in a minimal amount of changes.

Even though jhh is talking about a specific product, his earlier comments
about the need for standards are probably a good reason to believe that
this distributed blit editor he mentioned won't be widely used because
there is not a widely-recognized standard on which it's built.

The second response, from Rich Altmaier, was:

 >But on the general question, of what to do with a slower network, I believe
 >use of a local processor ('pc') can work to advantage.  The method here
 >should not be some kludge but an editor designed to be split between
 >local processor and host.  My company built a product with a local
 >processor doing editing, communicating with a host at 1200 baud.
 >The local processor interacts with the host with a Remote Procedure Call
 >model.  A buffer of text is pulled into the local processor as needed.
 >Changes are passed back to the host.  Global operations such as text
 >searches as passed to the host.  The program written to do this is
 >not all that complicated, given an RPC facility it is quite natural
 >to design and write code knowing there is a boundary where control
 >passes from machine to machine.  Of course there are difficulties
 >with data being duplicated, insuring host operations have the latest
 >text image.  We actually didn't use a pure RPC model, local changes
 >are being sent to the host in parallel with further local editting.
 >With this model, the host program consists of a set of procedures
 >awaiting work requests from the local processor.  The host program never
 >interacts at the single character at a time level.

AN AT&T "END-RUN" SOLUTION
------------------------------------------------------------------------

A couple respondents (R. Drew Davis, mdm) provided information about a
solution that would be suitable if you're not already stuck with some net,
and are shopping.  This solution is in the form of the AT&T "Datakit VCS"
product, which is said to provide low delay for character-per-packet
traffic, even in the presence of other (large) packets.  That is, you
presumably don't worry about the inefficiencies of character-per-packet
traffic; you just hook VCS up to your UN*X boxes and live happily ever
after.

The primary drawback to this is that you have to buy a private net.
As I found from talking to Jim Wilson of AT&T Marketing (Morristown, NJ),
VCS is not a tariffed product which is an alternative to public nets like
Telenet.  If you are prepared to pay for & install a private net, fine; you
can get the benefits of their low (~10ms node-to-node) delay, which is the
result of special protocols and 8MB fiber LANs with 1.5MB (T1) wide-area
links.  But - there are currently no plans for the operating companies to
offer it on a public-access basis like Telenet.  And, there is always that
annoying problem with the speed of light, which means they can't use
satellites, which means you probably can't get this service to points
overseas.

ETHERNET SOLUTIONS
------------------------------------------------------------------------

Gilles Chartrand provided some interesting food for thought for those
who have ethernets.  Although his ideas are especially useful in an
environment which links remote ethernets, they are also useful to those
who have ethernets that are getting too crowded.

The basic idea is this:

 >	We have the same problem and have come the the following solution.
 >In the case of vi, a temporary file is create on which the actual editing
 >is done.  Wich very small modifications this file can be made to exist on
 >the CURRENT system.  For example : If you are on machine A and you want
 >to edit a file on machine B you would enter the following commands on
 >machine A :
 >
 >		vi B:<file name>
 >
 >The only time the network is used would be to transfer the file at the
 >start and whenever a write is done and it would then be done in "block"
 >mode for which packet networks shine!
    .
    .
    .
 >	We looked into modifying emacs and gave up before we could find
 >any solid method.

It appears that getting the code to do this is easy:

 >	In order to get the special vi, all you have to do is relink
 >the .o files with the -lra (remote access) library.  This package will
 >allow you to prefix the files name with "<machine name>:".  If no
 >collon occures in the file name then vi (or whatever) works as before.
 >Otherwise the file on the specified machine is opened via ethernet
 >(like magic).  There is a version of the csh which allows you to do
 >things like "cd fred:" and presto, your on a new machine.  "ls
 >fred:~/bin" will give you a listing of the files in your bin on the
 >other machine.  The remote access library and the remote csh are
 >available from the Purdue University (E-mail path: ...!ihnp4!purdue!tichy)
 >They are part of a larger project called IBIS which is destined to become
 >a true, distributed file system.

Gilles also mentioned that work is being done at his site on a version
of "rlogin" which, in normal tty driver mode, echoes remotely and
doesn't send a packet until a timeout or a CR.

********
For those who have machines of the likes of Pyramids or Suns, I suspect
that Sun's Network File System may provide a solution which is available
now.  Once a remote file system has been "mounted" on the local machine,
it should be possible to cd, edit, etc. in the remote filesystem, although
we don't know of anyone at this point who has been doing this on remotely
connected ethernets.  Do any of you know of such activity?
-- 

Ed Arnold * NCAR (Nat'l Center for Atmospheric Research)
PO Box 3000 * Boulder, CO  80307-3000 * 303-497-1253
csnet: era at ncar * arpa: era%ncar at csnet-relay * uucp: ...!hao!scdpyr!era



More information about the Comp.unix.wizards mailing list