📄 rfc2624.txt
字号:
Network Working Group S. SheplerRequest for Comments: 2624 Sun Microsystems, Inc.Category: Informational June 1999 NFS Version 4 Design ConsiderationsStatus 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 1999Table 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 . . . . . . . . . . . . . . . . . 221. 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 3Shepler 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, potentialShepler 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 andShepler 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -