[comp.protocols.nfs] NeFS protocol

guy@auspex.auspex.com (Guy Harris) (05/26/90)

>Programming is a human activity.  PostScript is a computer language
>unsuited to programming.

As Mike O'Dell pointed out, this is considerably less relevant to NeFS
than to NeWS, since:

>People should never write PostScript,

...people don't generally write NeFS programs, NeFS client code writes
NeFS programs.

bin@primate.wisc.edu (Brain in Neutral) (05/26/90)

From article <1990May24.205149.6065@Neon.Stanford.EDU>, by pallas@Neon.Stanford.EDU (Joe Pallas):
> In article <3378@auspex.auspex.com> guy@auspex.auspex.com (Guy Harris)
> writes:
>>What exactly is the complaint being made about PostScript here?
> 
> Programming is a human activity.  PostScript is a computer language
> unsuited to programming.  It was designed as a device-independent 2-d
> graphics representation language, of which it is a nearly adequate
> instance.

Human programming is a human activity.  Programming in general is not,
as many programs also write programs.  If you mean PostScript is a
computer language unsuited for use by human in programming, well, ok.
But it's a language that's easy for programs to generate, which may well
mean it's a good language for program programming.

Paul DuBois
Internet:	dubois@primate.wisc.edu
UUCP:		rhesus!dubois
FAX:		608/263-4031

pallas@Neon.Stanford.EDU (Joe Pallas) (05/26/90)

In article <3385@auspex.auspex.com> guy@auspex.auspex.com (Guy Harris)
writes:

>...people don't generally write NeFS programs, NeFS client code writes
>NeFS programs.

I've never written any NeFS client code, so maybe I'm talking through
my hat, but I doubt that NeFS client code is likely to write NeFS
programs.  NeFS client code is likely to ship NeFS programs over to
the server once (at initialization), and then invoke those programs
with the appropriate arguments as desired.  Now you may call those
invocations programs, but they're really just RPCs.  The server-side
programs being invoked by those RPCs will almost certainly by written
by humans.

Anyone with experience writing NeFS (or NeWS) clients is welcome to
contradict me.  (Use of PostScript as a compiler target language does
not count.)

joe

vjs@rhyolite.wpd.sgi.com (Vernon Schryver) (05/26/90)

In article <136212@sun.Eng.Sun.COM>, pugs@whitsun.Sun.COM (Tom Lyon) writes:
> 
> My belief is that PostScript makes a pretty good intermediate language - we
> just haven't figured out what the high level language should look like.


Could you comment about the use of PostScript in file systems in
view of Sun's experience with PostScript in window managers, setting
asside the marketing issues with respect to X?  I am making the obvious
inference that Sun must view NeWS as a disaster, if only because of the
amount of code that is being put down the memory hole.

Could you say why NeWS and NeFS will have differing fates, despite
the evident parallels between X vs. NeWS and NFS or AFS vs. NeFS?

History (simplistic, one-sided history for third parties):
    -Sun announces a new, open standard for window managers, using PostScript,
    -Silicon Graphics receives presentations from Sun, and is impressed by
	the same arguements about sending programs instead of data.
    -SGI hears presentations from Getty's et al about X.
    -Since high speed graphics prefer programs to pixels and raster ops, SGI
	is less impressed by X than by NeWS.
    -SGI decides to join the Sun NeWS bandwagon.
    -after enormous porting, debugging, and re-writing effort and pain, NeWS
	becames the default window manager on Silicon Graphics IRIS's.
    -the same never seems to happen at Sun (the default, I wouldn't know
	about the pain).
    -X wins in the market, for various reasons.
    -Sun supports X vigorously and completely forgets NeWS.

Summary:
    The idea is interesting.  The implementation, particularly using
    PostScript, is less compelling for technical and business reasons.

Disclaimer:
    NeWS will be the default in the next SGI release.  Please do not
    understand anything here as an announcement--that's not my department.

Moral:
    Avoid cute, mixed-case acronyms.


Vernon Schryver
vjs@sgi.com

amanda@mermaid.intercon.com (Amanda Walker) (05/26/90)

In article <1990May25.234950.1465@Neon.Stanford.EDU>, pallas@Neon.Stanford.EDU
(Joe Pallas) writes:
> Now you may call those invocations programs, but they're really just RPCs.

Yes and no.  They are RPCs in the sense that any client/server transaction
is an RPC, but the important difference between NeWS & NeFS and, say, X &
NFS is that the RPC is defined by the client, on the fly, to suit the
client's needs, not defined in advance by someone who has to try and figure
out what clients will want.

Let me take a presently hypothetical example: a file service client for
my favorite machine, the Apple Macintosh.  The biggest problem with doing
this under NFS is that, despite a reasonable correspondence between the file
systems themselves, the *operations* performable on a file system vary quite
a bit between the Mac OS and NFS, thus requiring a ridiculous amount of either
network traffic or client-side caching in order to get acceptable performance.
With NeFS, the client can blort over some code that tells the server how
to implement those operations that the client is going to want to invoke.

Flexibility wins.  This is probably even more true for file service than
for display service...

$.02,--
Amanda Walker, InterCon Systems Corporation
--
"Go not to the elves for counsel, for they will say both no and yes."
	--J.R.R. Tolkien, The Lord of the Rings

amanda@mermaid.intercon.com (Amanda Walker) (05/26/90)

OK.  I've just FTP'd over the NeFS draft spec, and I am impressed.

When I read the spec for NFS v2 (and XDR and RPC), my principal reaction
was something along the lines of "Bleah--at least it seems to work, but
I'm glad I don't have to deal with it."

After reading through the NeFS draft, my principal reaction is, "OK, how
long until they finalize it so that people can implement it?"

NeFS gets my vote.

--
Amanda Walker, InterCon Systems Corporation
--
"Go not to the elves for counsel, for they will say both no and yes."
	--J.R.R. Tolkien, The Lord of the Rings

droms@sol.bucknell.edu (Ralph E. Droms) (05/26/90)

Can someone post a list of pointers to NeFS documentation and
references?  Thanks...

-- 
- Ralph Droms                 Computer Science Department
  droms@bucknell.edu          323 Dana Engineering
                              Bucknell University
  (717) 524-1145              Lewisburg, PA 17837

pallas@Neon.Stanford.EDU (Joe Pallas) (05/27/90)

In article <265DFAD2.5818@intercon.com> amanda@mermaid.intercon.com
(Amanda Walker) writes:

>They are RPCs in the sense that any client/server transaction
>is an RPC, but the important difference between NeWS & NeFS and, say, X &
>NFS is that the RPC is defined by the client, on the fly, to suit the
>client's needs, not defined in advance by someone who has to try and figure
>out what clients will want.

We have no disagreement here.  My point is that, for Amanda's
presently-hypothetical Macintosh NeFS client, the code which gets
dynamically loaded into the server to define the Mac-appropriate RPC
interface (things like lookup_file_ignoring_case, e.g.) will be
written by humans, not programs.  NeFS clients don't write code, they
invoke code written by NeFS client implementors.

And filesystem code will be even more complicated than graphics code,
which is hard enough for humans to read and write in PostScript.

joe

vjs@rhyolite.wpd.sgi.com (Vernon Schryver) (05/28/90)

In article <265DFAD2.5818@intercon.com>, amanda@mermaid.intercon.com (Amanda Walker) writes:
> Flexibility wins.  This is probably even more true for file service than
> for display service...
> Amanda Walker, InterCon Systems Corporation

Yes, but only when all else is equal.  Unfortunately, things are rarely equal.

I've been thinking about why people have been saying the idea behind NeFS
is good, that sending "programs" is better than sending requests.  There
seem to be two justifications for this claim.  First is that high latency,
high bandwidth networks do not like round trips.  Second are varitions of
the flexibility arguement.

Concerning the first, I know of a Distribute Graphics Library that is
required to look like a certain Graphics Library, on which applications in
C, Fortran, Ada, etc. like to make >100,000/sec calls like
"drawfoo(x,y,z,r)".  This DGL library now runs at >20,000 "remote
procedure calls"/sec over ordinary ethernet.  As far as the application
program is concerned, it is simply linked with a different graphics
library.  There are not 40,000 ethernet packets/sec, but the details are
irrelevant.  The point is that at 20,000 "RPC's" second, an ethernet looks
like a high latency network.  Also, at 200,000 to 1,000,000 GL calls/sec,
we don't have a lot of time for compiling requests.  Yes, there is work on
"higher level" stuff, but that is irrelevant for my point, that high
latency is not antithetical to "RPC".

The most common failing in systems' designs are expressions of the
designer's inability to so say "no".  Here the flexibililty argument
is a good way for file system designers to avoid designing the file system,
to avoid doing the hard thinking and making the hard choices in caching,
naming, locking, and so on.  In practice, it seems all agree that humans
will not write PostScript requests, that something will be compiling from
something else.  It is clear to me that for at least a few years we will
not have the CPU cycles for file system clients to be doing the equivalent
of SQL query optimization at a rate of one compilation of request to
Postscript per file open-access-close, or even of one compilation per human
interaction.

It is more likely that there are a modest number of requests that any and all
applications will ever make of remote, high latency file systems, and
that these requests will be written and compiled exactly once, like
rpcgen/XDR/etc of old.  Rather than using a Turing-complete language like
PostScript for a finite number of requests, a good designer would design a
good, extendable (not extensible) protocol for the job.

I designed and implemented a fancy WISIWYG, extensible, oject oriented,
device independent, text preparation system, complete with internal
description language for extensibilty for my employer-before-last.  It was
a mistake since the number of people interested and able to use the
language was insignificant.  It did allow quicker implementation, but that
had nothing to do with having J. Random Oem, let alone T.Arb.User,
use the language.  The same will apply to NeFS.  It is almost true of NeWS.

PostScript is a good page description description language.  Perhaps it
will be a good file system language, when the relative latency of the
network to the CPU is like that between troff/CPU and Apple Laserwriter, a
lot worse than 50 MIPS vs. 30 msec, and more like printings' 5 MIPS vs. 5 sec.


Vernon Schryver
vjs@sgi.com

thinman@cup.portal.com (Lance C Norskog) (05/29/90)

It seems to me that the problem of sending a machine-independent program
to a target machine for execution is intimately tied in with the problem of
distributing application software in a machine-independent format.  What
OSF terms ANDF, or Architecture-Neutral Distribution Format.  The quickest
road to success is to hack GNU CC and C++ to compile to an
ASN.1 format pseudo-assembler (called MIX, see Knuth's 3-volume opus) and 
ship that over the network, and on distribution tapes.  

The more high-level this MIX language (probably an object-oriented stack 
language) the faster compilation will be, and an interpreter/debugger will 
give a very nice development environment.  The interpreter would include
a full POSIX library, with optional run-time checking.

Lance Norskog
Sales Engineer
Streamlined Networks

liam@cs.qmw.ac.uk (William Roberts) (05/29/90)

In <265DFAD2.5818@intercon.com> amanda@mermaid.intercon.com (Amanda Walker) writes:

>Let me take a presently hypothetical example: a file service client for
>my favorite machine, the Apple Macintosh.  The biggest problem with doing
>this under NFS is that, despite a reasonable correspondence between the file
>systems themselves, the *operations* performable on a file system vary quite
>a bit between the Mac OS and NFS, thus requiring a ridiculous amount of either
>network traffic or client-side caching in order to get acceptable performance.
>With NeFS, the client can blort over some code that tells the server how
>to implement those operations that the client is going to want to invoke.

>Flexibility wins.  This is probably even more true for file service than
>for display service...


The NeFS spec is quite clearly written as a slight
generalisation over supporting a couple of slightly non-UNIX
file systems. It doesn't go anywhere near supporting
significantly different systems such as the Macintosh ("You
mean each file has two parts, plus comments?") even though the
polymorphic nature of PostScript would make it easy to allow
things like arrays or dictionaries of filehandles rather than
just single ones to be returned from open (for example).

Flexibility is good, but NeFS seems to me to be all wrong. It
dismisses the low-level network stuff with some hand waving,
and it just feels like an insane way to go about something
which needs to provide very high performance.

I loved PostScript and was very fond of NeWS until it needed
bigger machinery that I have available: NeFS just doesn't gell
at all.

I suggest we forget NeFS immediately and look at some real work
addressing real problems: anyone who hasn't read the Coda paper
should look out a copy

        Coda: A Highly Available File System for
              a Distributed Environment

        M. Satyanarayanan, J.J. Kistler et al
        IEEE Transactions on Computers, 39(4), 447-459,
        April 1990

Did anyone notice how little connection there was between the
list of "problems with NFS" and the proposed solution?
-- 

William Roberts                 ARPA: liam@cs.qmw.ac.uk
Queen Mary & Westfield College  UUCP: liam@qmw-cs.UUCP
Mile End Road                   AppleLink: UK0087
LONDON, E1 4NS, UK              Tel:  071-975 5250 (Fax: 081-980 6533)

amanda@mermaid.intercon.com (Amanda Walker) (05/29/90)

In article <1990May26.213221.15248@Neon.Stanford.EDU>, pallas@Neon.Stanford.EDU
(Joe Pallas) writes:
> And filesystem code will be even more complicated than graphics code,
> which is hard enough for humans to read and write in PostScript.

Depends on the human, I guess :-).  I don't see how writing file system
client code in C (even with RPCGEN) is any easier, though...

--
Amanda Walker, InterCon Systems Corporation
--
"Go not to the elves for counsel, for they will say both no and yes."
	--J.R.R. Tolkien, The Lord of the Rings

brent@terra.Eng.Sun.COM (Brent Callaghan) (05/30/90)

In article <2284@sequent.cs.qmw.ac.uk>, liam@cs.qmw.ac.uk (William Roberts) writes:
> The NeFS spec is quite clearly written as a slight
> generalisation over supporting a couple of slightly non-UNIX
> file systems. It doesn't go anywhere near supporting
> significantly different systems such as the Macintosh ("You
> mean each file has two parts, plus comments?") even though the
> polymorphic nature of PostScript would make it easy to allow
> things like arrays or dictionaries of filehandles rather than
> just single ones to be returned from open (for example).

The NeFS protocol goes a long way toward making Mac implementations
more efficient.  File attributes are represented as a dictionary -
name/value pairs.  The resource and finder forks of a Mac file
could be represented as attributes of the data fork.  Alternatively,
if the server is not a Mac server and is not capable of supporting
arbitrary attributes - we can fall back on Applesingle or
AppleDouble representations.  Either way, the protocol allows
a Mac client to construct a single NeFS request to do what it 
wants.  Consider the NFS requests required of a Mac client:
to open a folder on the Mac desktop requires
a READDIR to enumerate the files, then a LOOKUP on *each* name
to obtain its attributes, followed by a READ on some of the
files to get the icon.  

> Flexibility is good, but NeFS seems to me to be all wrong. It
> dismisses the low-level network stuff with some hand waving,

The draft spec for NeFS is deliberately vague about "low-level
network stuff".  There's nothing to be gained by spelling out
in detail what transport is going to convey requests between
client and server at this stage in the design.  Currently, the
prototype is built on RPC/XDR like NFS because that's what we
know best. Eventually there will be a document that defines
the protocol as expressed by RPC/XDR.

> and it just feels like an insane way to go about something
> which needs to provide very high performance.

Why insane ? If we're talking client or server CPU there
isn't really a lot of difference between NFS and NeFS.
The client just transmits "canned" requests - these do
not have to be generated on the fly.  Existing NFS servers
already employ an "interpreter" of sorts: the server
currently executes one "operation" per request as defined
by the NFS procedure number.  The NeFS protocol just allows
the client to string a bunch of operations together.
The overhead in executing these operations is extremely
small; it's just tiny drops of glue between vastly more
expensive I/O operations.  Remember: the drops of glue
have the potential to eliminate hugely expensive
over-the-wire operations.
--

Made in New Zealand -->  Brent Callaghan  @ Sun Microsystems
			 uucp: sun!bcallaghan
			 phone: (415) 336 1051

mo@messy.bellcore.com (Michael O'Dell) (05/30/90)

What might well be called "Clark's Law" is that "As bandwidth
goes to infinity, latency becomes a constant 30 milliseconds."
This is the round-trip delay across the US on a 1 gigabit or faster
fibre-optic network.  You can't change that number unless you
change the speed of light, so there is NOTHING you can do about
latency except avoid round trips!!!

The fact that some application can successfully beat the life out
of a local ethernet cable is NOT a feature when considering 
*networks which scale with latency*, and in Clark's view,
and mine, them's the future of networking.   Everthing else
is essentially a multiprocessor by comparison.

	-Mike

vjs@rhyolite.wpd.sgi.com (Vernon Schryver) (05/30/90)

In article <23707@bellcore.bellcore.com>, mo@messy.bellcore.com (Michael O'Dell) writes:
> What might well be called "Clark's Law" is that "As bandwidth
> goes to infinity, latency becomes a constant 30 milliseconds."
> This is the round-trip delay across the US on a 1 gigabit or faster
> fibre-optic network.  You can't change that number unless you
> change the speed of light, so there is NOTHING you can do about
> latency except avoid round trips!!!
>
> The fact that some application can successfully beat the life out
> of a local ethernet cable is NOT a feature when considering 
> *networks which scale with latency*, and in Clark's view,
> and mine, them's the future of networking.   Everthing else
> is essentially a multiprocessor by comparison.
> 	-Mike

I am apologize for not being clear.

I claim doing 20,000 "RPC's" per second over ethernet (i.e. 50
microsecond/call) is in some sense equivalent to doing a more familiar
number (500/sec?) over a "high latency" medium such as cross-country
fiber.  In neither case is there time for one round trip per call.  One
round trip/call at 20,000 calls/sec comes out to 25 usec/packet.  Isn't
the minimum packet time, including preamble, something like 60.8 usec on
10MHz ethernet?

Instead of remote-file-system-programming-languages, some cheating seems
more to the point.   Obviously, to get 20,000 "RPC's"/sec, not to mention
the 1,000,000/sec that we would like, it was necessary to cheat.
Obviously, you can't let the application, whether it is the upper layers of
the file system or a graphics application, catch you cheating.

You can get impressive preformance gains many places by cheating.  The Sun
use of the directory bit for client cache control is effective chicanery.
The Silicon Graphics "private" NFS mount option is, IMH(&biased)O, even better.

Some of the newer network file systems show signs of the right kind of cheating.

Please note that 30 msec latency is not very bad.  It permits >=15 round
trips/second.  An NFS rsize/wsize of 64K would in principle give 1MB/sec of
data thru NFS, 5-10 times most current NFS implements.

The big deal with GByte (not Gbit) fiber is not the latency, but the
bandwidth*latency product.  Having MBytes in flight stresses lots of
interesting things.


Vernon Schryver        vjs@sgi.com

jbvb@ftp.COM (James Van Bokkelen) (05/31/90)

In article <265DFDA9.58A5@intercon.com>, amanda@mermaid.intercon.com (Amanda Walker) writes:
> After reading through the NeFS draft, my principal reaction is, "OK, how
> long until they finalize it so that people can implement it?"

I read the draft of 12-Feb-90, and saw various levels of precision
(file size of 64 bits, time resolution to the nanosecond) that might
be looked on as overkill, but they stuck with 32 bits (unsigned, this
time) of seconds since 1-Jan-1970 as the low-resolution component of
the time format.  One or two more bits would probably suffice for
everything except interstellar probes and nuclear waste dump
monitoring systems, but I wouldn't design anything of this potential
scope to expire in 2106 CE.


-- 
James B. VanBokkelen		26 Princess St., Wakefield, MA  01880
FTP Software Inc.		voice: (617) 246-0900  fax: (617) 246-0901

brent@terra.Eng.Sun.COM (Brent Callaghan) (05/31/90)

In article <1015@ftp.COM>, jbvb@ftp.COM (James Van Bokkelen) writes:
> I read the draft of 12-Feb-90, and saw various levels of precision
> (file size of 64 bits, time resolution to the nanosecond) that might
> be looked on as overkill, but they stuck with 32 bits (unsigned, this
> time) of seconds since 1-Jan-1970 as the low-resolution component of
> the time format.  One or two more bits would probably suffice for
> everything except interstellar probes and nuclear waste dump
> monitoring systems, but I wouldn't design anything of this potential
> scope to expire in 2106 CE.

Nanosecond resolution is required by Svr4.  I don't know of any
server that currently requires this resolution - but you never know...

I'd be very happy if this protocol outlives me - let alone my 
grandchildren.  Perhaps by 2106 we will almost be converted
over to OSI protocols  :-)

--

Made in New Zealand -->  Brent Callaghan  @ Sun Microsystems
			 uucp: sun!bcallaghan
			 phone: (415) 336 1051