Mark Lottor (MKL@SRI-NIC.ARPA)
Fri 19 Dec 86 01:44:13-PST
NFS is claimed to be a general network file system, but it really isn't.
As someone who is trying to implement an NFS server for a non-UNIX
system, I've got lots of problems. Here are a few:
As far as I'm concerned, NFS has no security or authentication.
If you want security you must specify exactly which hosts can
mount your filesystems and you must trust EVERY single user
on those hosts, since they can tell the server that they are
whoever they want to be. This isn't really a problem with the
file protocol and may be considered a seperate issue,
but I wouldn't use a file protocol without security.
NFS is claimed to be idempotent, but it really isn't. One example:
If you do a file rename and the request is retransmitted, you may
get back a success indication if the first request was received,
or you'll get back an error if it was the retransmission.
There are some fields that are very UNIX specific. A userid field is
used to indicate user names for things like file authors. This userid
is a number and it is assumed that there is a GLOBAL /etc/passwd file
so you can translate numbers to names. This is completely bogus. A
userid should be a string, not a number. More could be said about the
NFS uses very large UDP packets to achieve acceptable performance.
This may indicate that the protocol is what really needs to be fixed.
There is no attempt at any ASCII conversion between normal systems
and UNIX. This of course is the famous CRLF to newline problem which
makes sharing of text files between different systems almost useless.
Yes, you can write a program to do the conversions, but that ruins
the entire idea of file access since you must then do an entire file transfer.
Besides that, sharing binary files between different operating systems
is almost useless anyways.
>From a document that lists the design goals of NFS, it appears that it
was only intended as a way to provide ACCESS to remote files.
It was not and is not a protocol to allow SHARING of the data
in those files between non-homogeneous systems. For that reason
it is really quite useless as a way to share files between
different operating systems (and probably explains why the CRLF/newline
problem was left out). It is too bad that they defined
a common data representation (XDR) to build the RPC protocol
with, but then left it out when dealing with file representation.
With that stated, I can probably say that NFS is a good protocol for
sharing files between homogeneous (UNIX-like) systems based on
non-homogeneous file servers. This doesn't seem like a very
interesting or useful design goal though, and I still don't know
why I'm bothering to implement it.
This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:37:00 GMT