rfc2624.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,236 行 · 第 1/4 页

TXT
1,236
字号






Network Working Group                                        S. Shepler
Request for Comments: 2624                       Sun Microsystems, Inc.
Category: Informational                                       June 1999


                  NFS Version 4 Design Considerations

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (1999).  All Rights Reserved.

Abstract

   The main task of the NFS version 4 working group is to create a
   protocol definition for a distributed file system that focuses on the
   following items: improved access and good performance on the
   Internet, strong security with negotiation built into the protocol,
   better cross-platform interoperability, and designed for protocol
   extensions.  NFS version 4 will owe its general design to the
   previous versions of NFS.  It is expected, however, that many
   features will be quite different in NFS version 4 than previous
   versions to facilitate the goals of the working group and to address
   areas that NFS version 2 and 3 have not.

   This design considerations document is meant to present more detail
   than the working group charter.  Specifically, it presents the areas
   that the working group will investigate and consider while developing
   a protocol specification for NFS version 4.  Based on this
   investigation the working group will decide the features of the new
   protocol based on the cost and benefits within the specific feature
   areas.

Key Words

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119.








Shepler                      Informational                      [Page 1]

RFC 2624              NFSv4 Design Considerations              June 1999


Table of Contents

   1.  NFS Version 4 Design Considerations . . . . . . . . . . . . . 2
   2.  Ease of Implementation or Complexity of Protocol  . . . . . . 3
   2.1.  Extensibility / layering  . . . . . . . . . . . . . . . . . 3
   2.2.  Managed Extensions or Minor Versioning  . . . . . . . . . . 3
   2.3.  Relationship with Older Versions of NFS . . . . . . . . . . 4
   3.  Reliable and Available  . . . . . . . . . . . . . . . . . . . 5
   4.  Scalable Performance  . . . . . . . . . . . . . . . . . . . . 5
   4.1.  Throughput and Latency via the Network  . . . . . . . . . . 6
   4.2.  Client Caching  . . . . . . . . . . . . . . . . . . . . . . 6
   4.3.  Disconnected Client Operation . . . . . . . . . . . . . . . 7
   5.  Interoperability  . . . . . . . . . . . . . . . . . . . . . . 7
   5.1.  Platform Specific Behavior  . . . . . . . . . . . . . . . . 8
   5.2.  Additional or Extended Attributes . . . . . . . . . . . . . 8
   5.3.  Access Control Lists  . . . . . . . . . . . . . . . . . .   9
   6.  RPC Mechanism and Security  . . . . . . . . . . . . . . . .  10
   6.1.  User identification . . . . . . . . . . . . . . . . . . .  10
   6.2.  Security  . . . . . . . . . . . . . . . . . . . . . . . .  10
   6.2.1.  Transport Independence  . . . . . . . . . . . . . . . .  11
   6.2.2.  Authentication  . . . . . . . . . . . . . . . . . . . .  11
   6.2.3.  Data Integrity  . . . . . . . . . . . . . . . . . . . .  11
   6.2.4.  Data Privacy  . . . . . . . . . . . . . . . . . . . . .  12
   6.2.5.  Security Negotiation  . . . . . . . . . . . . . . . . .  12
   6.3.  Summary . . . . . . . . . . . . . . . . . . . . . . . . .  12
   7.  Internet Accessibility  . . . . . . . . . . . . . . . . . .  13
   7.1.  Congestion Control and Transport Selection  . . . . . . .  13
   7.2.  Firewalls and Proxy Servers . . . . . . . . . . . . . . .  14
   7.3.  Multiple RPCs and Latency . . . . . . . . . . . . . . . .  14
   8.  File locking / recovery . . . . . . . . . . . . . . . . . .  15
   9.  Internationalization  . . . . . . . . . . . . . . . . . . .  16
   10.  Security Considerations  . . . . . . . . . . . . . . . . .  17
   10.1.  Denial of Service  . . . . . . . . . . . . . . . . . . .  17
   11.  Bibliography . . . . . . . . . . . . . . . . . . . . . . .  18
   12.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . .  21
   13.  Author's Address . . . . . . . . . . . . . . . . . . . . .  21
   14.  Full Copyright Statement . . . . . . . . . . . . . . . . .  22

1.  NFS Version 4 Design Considerations

   As stated in the charter, the first deliverable for the NFS version 4
   working group is this design considerations document.  This document
   is to cover the "limitations and deficiencies of NFS version 3".
   This document will also be used as a mechanism to focus discussion
   and avenues of investigation as the definition of NFS version 4
   progresses.  Therefore, the contents of this document cover the
   general functional/feature areas that are anticipated for NFS version
   4.  Where appropriate, discussion of current NFS version 2 and 3



Shepler                      Informational                      [Page 2]

RFC 2624              NFSv4 Design Considerations              June 1999


   practice will be presented along with other appropriate references to
   current distributed file system practice.

2.  Ease of Implementation or Complexity of Protocol

   One of the strengths of NFS has been the ability to implement a
   client or server with relative ease.  The eventual size of a basic
   implementation is relatively small.  The main reason for keeping NFS
   as simple as possible is that a simple protocol design can be
   described in a simple specification that promotes straightforward,
   interoperable implementations.  All protocols can run into problems
   when deployed on real networks, but simple protocols yield problems
   that are easier to diagnose and correct.

2.1.  Extensibility / layering

   With NFS' relative simplicity, the addition or layering of
   functionality has been easy to accomplish.  The addition of features
   like the client automount or autofs, client side disk caching and
   high availability servers are examples.  This type of extensibility
   is desirable in an environment where problem solutions do not require
   protocol revision.  This extensibility can also be helpful in the
   future where unforeseen problems or opportunities can be solved by
   layering functionality on an existing set of tools or protocol.

2.2.  Managed Extensions or Minor Versioning

   For those cases where the NFS protocol is deficient or where a minor
   modification is the best solution for a problem, a minor version or a
   managed extension could be helpful.  There have been instances with
   NFS version 2 and 3 where small straightforward functional additions
   would have increased the overall value of the protocol immensely.
   For instance, the PATHCONF procedure that was added to version 2 of
   the MOUNT protocol would have been more appropriate for the NFS
   protocol. WebNFS [RFC2054][RFC2055] overloading of the LOOKUP
   procedure for NFS versions 2 and 3 would have been more cleanly
   implemented in a new LOOKUP procedure.

   However, the perceived size and burden of using a change of RPC
   version number for the introduction of new functionality led to no or
   slow change.  It is possible that a new NFS protocol could allow for
   the rare instance where protocol extension within the RPC version
   number is the most prudent course and an RPC revision would be
   unnecessary or impractical.

   The areas of an NFS protocol which are most obviously volatile are
   new orthogonal procedures, new well-defined file or directory
   attributes and potentially new file types.  As an example, potential



Shepler                      Informational                      [Page 3]

RFC 2624              NFSv4 Design Considerations              June 1999


   file types of the future could be a type such as "attribute" that
   represents a named file stream or a "dynamic" file type that
   generates dynamic data in response to a "query" procedure from the
   client.

   It is possible and highly desirable that these types of additions be
   done without changing the overall design model of NFS without
   significant effort or delay.

   A strong consideration should be given to a NFS protocol mechanism
   for the introduction of this type of new functionality.  This is
   obviously in contrast to using the standard RPC version mechanism to
   provide minor changes.  The process of using RPC version numbers to
   introduce new functionality brings with it a lot of history which may
   not technically prevent its use.  However, the historical issues
   involved will need to be addressed as part of the NFS version 4
   protocol work; this should increase the ability for current and
   future success of the protocol.

   As background, the RPC protocol described in [RFC1831] uses a version
   number to describe the set of procedure calls, replies, and their
   semantics.  Any change in this set must be reflected in a new version
   number for the program.  An example of this was the
   MOUNTPROC_PATHCONF procedure added in version 2 of the MOUNT
   protocol.  Except for the addition of this new procedure, the
   protocol was unchanged.  Many thought this protocol revision was
   unnecessary, since the RPC protocol already allows certain procedures
   not be implemented and defines a PROC_UNAVAIL error.

   Another historical data-point from NFS version 2 and 3 is the support
   (or lack) of symbolic links.  Servers that cannot support this
   feature will simply reject calls to the SYMLINK and READLINK
   procedures.  Additionally, NFS version 4 may describe many file
   attributes which cannot be supported by the server or file systems on
   the server.  Therefore, the protocol must support a discovery
   mechanism that allows clients to determine which features of the
   protocol are supported by a server.

2.3.  Relationship with Older Versions of NFS

   NFS version 4 will be a self contained protocol in that it will not
   have any dependencies on the previous versions of NFS.  Stated
   another way, an NFS version 4 server or client will not require a
   NFSv2 or NFSv3 implementation be present for NFS version 4 to
   function as designed.  It should also be noted that having an NFS
   version 2 or 3 implementation present at the client or server will
   not enhance the functionality of an NFS version 4 implementation.




Shepler                      Informational                      [Page 4]

RFC 2624              NFSv4 Design Considerations              June 1999


   In the case where an NFS client has a choice of using various NFS
   protocol versions (i.e. 2, 3 and 4), the underlying ONCRPC mechanisms
   will allow the client to appropriately choose an available version of
   the protocol at the NFS server.  The ONCRPC protocol contains the
   semantics and error returns for the case where an RPC server program
   does not support a particular version.  This mechanism is used by the
   NFS client to receive notification of an unavailable version and in
   conjunction with the error the client will also receive the range of
   versions (min to max) that are available.  Therefore, the ONCRPC
   mechanism can be used by implementors of both clients and servers to
   provide for the transitioning to or installation of NFS version 4
   services.

3.  Reliable and Available

   Current NFS protocol design, while placing an emphasis on simple
   server design, has led to timely recovery from server and client
   failure.  This and other aspects to the design have provided a basis
   for layered technologies like high availability and clustered
   servers.  Providing a protocol design approach that lends itself to
   these types of reliability and availability features is very
   desirable.

   For the next version of NFS, consideration should be given to client
   side availability schemes such as client switching between or fail-
   over to available server replicas.  NFS currently requires that file
   handles be immutable; this requirement adds unnecessarily to the
   complexity of building fail-over configurations.  If possible, the
   protocol should allow for or ease the building of such layered
   solutions.

   For the next version of NFS, consideration should be given to schemes
   that support client switching between server replicas or highly
   available NFS servers that provide paths to data through multiple
   servers. For example: NFS currently requires that filehandles be
   unchanging for any instance of a file or directory. This requirement
   makes it more difficult for a client to switch from one server to
   another, since each server may construct filehandles differently.
   Protocol support could allow the client to handle a filehandle
   change.

4.  Scalable Performance

   In designing and developing an NFS protocol from a performance
   viewpoint there are several different points to consider.  Each can
   play a significant role in perceived and real performance from the
   user's perspective.  The three main areas of interest are: throughput
   and latency via the network, server work load or scalability and



Shepler                      Informational                      [Page 5]

RFC 2624              NFSv4 Design Considerations              June 1999


   client side caching.

4.1.  Throughput and Latency via the Network

   NFS currently has characteristics that provide good throughput for
   reading and writing file data. This is commonly achieved by the
   client's use of pipelining or windowing multiple RPC READ/WRITE
   requests to the server. The flexibility of the NFS and ONCRPC
   protocols allow for implementations to use this type of adaptation to
   provide efficient use of the network connection.

   However, the number of RPCs required to accomplish some tasks
   combined with high latency network environments may lead to sluggish
   single user or single client response.  The protocol should continue
   to provide good raw read and write throughput while addressing the
   issue of network latency.  This issue is discussed further in the
   section on Internet Accessibility.

4.2.  Client Caching

   In an attempt to speed response time and to reduce network and server
   load, NFS clients have always cached directory and file data.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?