| < draft-ietf-nfsv4-rfc5667bis-09.txt | draft-ietf-nfsv4-rfc5667bis-10.txt > | |||
|---|---|---|---|---|
| Network File System Version 4 C. Lever, Ed. | Network File System Version 4 C. Lever, Ed. | |||
| Internet-Draft Oracle | Internet-Draft Oracle | |||
| Obsoletes: 5667 (if approved) April 10, 2017 | Obsoletes: 5667 (if approved) May 5, 2017 | |||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: October 12, 2017 | Expires: November 6, 2017 | |||
| Network File System (NFS) Upper Layer Binding To RPC-Over-RDMA Version | Network File System (NFS) Upper Layer Binding To RPC-Over-RDMA Version | |||
| One | One | |||
| draft-ietf-nfsv4-rfc5667bis-09 | draft-ietf-nfsv4-rfc5667bis-10 | |||
| Abstract | Abstract | |||
| This document specifies Upper Layer Bindings of Network File System | This document specifies Upper Layer Bindings of Network File System | |||
| (NFS) protocol versions to RPC-over-RDMA Version One, enabling the | (NFS) protocol versions to RPC-over-RDMA Version One, enabling the | |||
| use of Direct Data Placement. This document obsoletes RFC 5667. | use of Direct Data Placement. This document obsoletes RFC 5667. | |||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on October 12, 2017. | This Internet-Draft will expire on November 6, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 40 ¶ | skipping to change at page 2, line 40 ¶ | |||
| 3.2. RPC Binding Considerations . . . . . . . . . . . . . . . 5 | 3.2. RPC Binding Considerations . . . . . . . . . . . . . . . 5 | |||
| 4. Upper Layer Bindings for NFS Version 2 and 3 Auxiliary | 4. Upper Layer Bindings for NFS Version 2 and 3 Auxiliary | |||
| Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. MOUNT, NLM, and NSM Protocols . . . . . . . . . . . . . . 6 | 4.1. MOUNT, NLM, and NSM Protocols . . . . . . . . . . . . . . 6 | |||
| 4.2. NFSACL Protocol . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. NFSACL Protocol . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Upper Layer Binding For NFS Version 4 . . . . . . . . . . . . 7 | 5. Upper Layer Binding For NFS Version 4 . . . . . . . . . . . . 7 | |||
| 5.1. DDP-Eligibility . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. DDP-Eligibility . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.2. Reply Size Estimation . . . . . . . . . . . . . . . . . . 7 | 5.2. Reply Size Estimation . . . . . . . . . . . . . . . . . . 7 | |||
| 5.3. RPC Binding Considerations . . . . . . . . . . . . . . . 8 | 5.3. RPC Binding Considerations . . . . . . . . . . . . . . . 8 | |||
| 5.4. NFS COMPOUND Requests . . . . . . . . . . . . . . . . . . 8 | 5.4. NFS COMPOUND Requests . . . . . . . . . . . . . . . . . . 8 | |||
| 5.5. NFS Callback Requests . . . . . . . . . . . . . . . . . . 10 | 5.5. NFS Callback Requests . . . . . . . . . . . . . . . . . . 11 | |||
| 5.6. Session-Related Considerations . . . . . . . . . . . . . 11 | 5.6. Session-Related Considerations . . . . . . . . . . . . . 12 | |||
| 5.7. Transport Considerations . . . . . . . . . . . . . . . . 12 | 5.7. Transport Considerations . . . . . . . . . . . . . . . . 13 | |||
| 6. Extending NFS Upper Layer Bindings . . . . . . . . . . . . . 13 | 6. Extending NFS Upper Layer Bindings . . . . . . . . . . . . . 14 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 15 | 9.2. Informative References . . . . . . . . . . . . . . . . . 16 | |||
| Appendix A. Changes Since RFC 5667 . . . . . . . . . . . . . . . 16 | Appendix A. Changes Since RFC 5667 . . . . . . . . . . . . . . . 17 | |||
| Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . 17 | Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . 18 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 1. Introduction | 1. Introduction | |||
| The RPC-over-RDMA Version One transport may employ direct data | The RPC-over-RDMA Version One transport may employ direct data | |||
| placement to convey data payloads associated with RPC transactions | placement to convey data payloads associated with RPC transactions | |||
| [I-D.ietf-nfsv4-rfc5666bis]. To enable successful interoperation, | [I-D.ietf-nfsv4-rfc5666bis]. To enable successful interoperation, | |||
| RPC client and server implementations using RPC-over-RDMA Version One | RPC client and server implementations using RPC-over-RDMA Version One | |||
| must agree which XDR data items and RPC procedures are eligible to | must agree which XDR data items and RPC procedures are eligible to | |||
| use direct data placement (DDP). | use direct data placement (DDP). | |||
| skipping to change at page 9, line 37 ¶ | skipping to change at page 9, line 37 ¶ | |||
| o If a READ operation returns a union arm which does not contain a | o If a READ operation returns a union arm which does not contain a | |||
| DDP-eligible result, and the NFS version 4 client has provided a | DDP-eligible result, and the NFS version 4 client has provided a | |||
| matching non-empty Write chunk, an NFS version 4 server MUST | matching non-empty Write chunk, an NFS version 4 server MUST | |||
| return an empty Write chunk in that Write list position. | return an empty Write chunk in that Write list position. | |||
| o If there are more READ operations than Write chunks, then | o If there are more READ operations than Write chunks, then | |||
| remaining NFS Read operations in an NFS version 4 COMPOUND that | remaining NFS Read operations in an NFS version 4 COMPOUND that | |||
| have no matching Write chunk MUST return their results inline. | have no matching Write chunk MUST return their results inline. | |||
| If an NFS version 4 client sends an RPC Call with a Write list that | 5.4.2. Chunk List Complexity | |||
| contains more chunks than an NFS version 4 server is prepared to | ||||
| process, the server MUST reject the RPC by responding with an | ||||
| RDMA_ERROR message with the rdma_err value set to ERR_CHUNK. | ||||
| If an NFS version 4 client sends an RPC Call with a Read list that | The RPC-over-RDMA Version One protocol does not place any limit on | |||
| contains more chunks than an NFS version 4 server is prepared to | the number of chunks or segments that may appear in the Read or Write | |||
| process, the server MUST reject the RPC by responding with an | lists. However, for various reasons NFS version 4 server | |||
| RDMA_MSG message containing an RPC Reply with an accept status of | implementations often have practical limits on the number of chunks | |||
| GARBAGE_ARGS, or with an RDMA_ERROR message with the rdma_err value | or segments they are prepared to process in one message. | |||
| set to ERR_CHUNK. | ||||
| 5.4.2. NFS Version 4 COMPOUND Example | These implementation limits are especially important when Kerberos | |||
| integrity or privacy is in use [RFC7861]. GSS services increase the | ||||
| size of credential material in RPC headers, potentially requiring | ||||
| more frequent use of Long messages. This can increase the complexity | ||||
| of chunk lists independent of the NFS version 4 COMPOUND being | ||||
| conveyed. | ||||
| To avoid encountering server chunk list complexity limits, NFS | ||||
| version 4 clients SHOULD follow the prescriptions listed below when | ||||
| constructing transport headers: | ||||
| o The Read list can contain either a Position-Zero Read chunk, one | ||||
| Read chunk with a non-zero Position, or both. | ||||
| o The Write list can contain no more than one Write chunk. | ||||
| o Any chunk can contain up to sixteen RDMA segments. | ||||
| NFS version 4 clients wishing to send more complex chunk lists can | ||||
| provide configuration interfaces to bound the complexity of NFS | ||||
| version 4 COMPOUNDs, limit the number of elements in scatter-gather | ||||
| operations, and avoid other sources of RPC-over-RDMA chunk overruns | ||||
| at the receiving peer. | ||||
| An NFS Version 4 server has some flexibility in how it indicates that | ||||
| an RPC-over-RDMA Version One message received from an NFS Version 4 | ||||
| client is valid but cannot be processed. Examples include: | ||||
| o A problem is detected by the transport layer while parsing the | ||||
| transport header in an RPC Call message. The server responds with | ||||
| an RDMA_ERROR message with the err field set to ERR_CHUNK. | ||||
| o A problem is detected during XDR decoding of the RPC Call message | ||||
| while the RPC layer reassembles the call's XDR stream. The server | ||||
| responds with an RPC reply with its "reply_stat" field set to | ||||
| MSG_ACCEPTED and its "accept_stat" field set to GARBAGE_ARGS. | ||||
| After receiving one of these errors, an NFS version 4 client SHOULD | ||||
| NOT retransmit the failing request, as the result would be the same | ||||
| error. It SHOULD immediately terminate the RPC transaction | ||||
| associated with the XID in the reply. | ||||
| 5.4.3. NFS Version 4 COMPOUND Example | ||||
| The following example shows a Write list with three Write chunks, A, | The following example shows a Write list with three Write chunks, A, | |||
| B, and C. The NFS version 4 server consumes the provided Write | B, and C. The NFS version 4 server consumes the provided Write | |||
| chunks by writing the results of the designated operations in the | chunks by writing the results of the designated operations in the | |||
| compound request (READ and READLINK) back to each chunk. | compound request (READ and READLINK) back to each chunk. | |||
| Write list: | Write list: | |||
| A --> B --> C | A --> B --> C | |||
| skipping to change at page 11, line 42 ¶ | skipping to change at page 12, line 33 ¶ | |||
| The presence of an NFS session (defined in [RFC5661]) has no effect | The presence of an NFS session (defined in [RFC5661]) has no effect | |||
| on the operation of RPC-over-RDMA Version One. None of the | on the operation of RPC-over-RDMA Version One. None of the | |||
| operations introduced to support NFS sessions (e.g. the SEQUENCE | operations introduced to support NFS sessions (e.g. the SEQUENCE | |||
| operation) contain DDP-eligible data items. There is no need to | operation) contain DDP-eligible data items. There is no need to | |||
| match the number of session slots with the number of available RPC- | match the number of session slots with the number of available RPC- | |||
| over-RDMA credits. | over-RDMA credits. | |||
| However, there are a few new cases where an RPC transaction can fail. | However, there are a few new cases where an RPC transaction can fail. | |||
| For example, a requester might receive, in response to an RPC | For example, a requester might receive, in response to an RPC | |||
| request, an RDMA_ERROR message with an rdma_err value of ERR_CHUNK. | request, an RDMA_ERROR message with an rdma_err value of ERR_CHUNK. | |||
| These situations are no different from existing RPC errors which an | These situations are not different from existing RPC errors which an | |||
| NFS session implementation is already prepared to handle for other | NFS session implementation is already prepared to handle for other | |||
| transports. And as with other transports during such a failure, | transports. And as with other transports during such a failure, | |||
| there might be no SEQUENCE result available to the requester to | there might be no SEQUENCE result available to the requester to | |||
| distinguish whether failure occurred before or after the requested | distinguish whether failure occurred before or after the requested | |||
| operations were executed on the responder. | operations were executed on the responder. | |||
| When a transport error occurs (e.g. RDMA_ERROR), the requester | When a transport error occurs (e.g. RDMA_ERROR), the requester | |||
| proceeds as usual to match the incoming XID value to a waiting RPC | proceeds as usual to match the incoming XID value to a waiting RPC | |||
| Call. The RPC transaction is terminated, and the result status is | Call. The RPC transaction is terminated, and the result status is | |||
| reported to the Upper Layer Protocol. The requester's session | reported to the Upper Layer Protocol. The requester's session | |||
| implementation then determines the session ID and slot for the failed | implementation then determines the session ID and slot for the failed | |||
| request, and performs slot recovery to make that slot usable again. | request, and performs slot recovery to make that slot usable again. | |||
| If this is not done, that slot could be rendered permanently | If this were not done, that slot could be rendered permanently | |||
| unavailable. | unavailable. | |||
| 5.7. Transport Considerations | 5.7. Transport Considerations | |||
| 5.7.1. Congestion Avoidance | 5.7.1. Congestion Avoidance | |||
| Section 3.1 of [RFC7530] states: | Section 3.1 of [RFC7530] states: | |||
| Where an NFSv4 implementation supports operation over the IP | Where an NFS version 4 implementation supports operation over the | |||
| network protocol, the supported transport layer between NFS and IP | IP network protocol, the supported transport layer between NFS and | |||
| MUST be an IETF standardized transport protocol that is specified | IP MUST be an IETF standardized transport protocol that is | |||
| to avoid network congestion; such transports include TCP and the | specified to avoid network congestion; such transports include TCP | |||
| Stream Control Transmission Protocol (SCTP). | and the Stream Control Transmission Protocol (SCTP). | |||
| Section 2.9.1 of [RFC5661] also states: | Section 2.9.1 of [RFC5661] also states: | |||
| Even if NFSv4.1 is used over a non-IP network protocol, it is | Even if NFS version 4.1 is used over a non-IP network protocol, it | |||
| RECOMMENDED that the transport support congestion control. | is RECOMMENDED that the transport support congestion control. | |||
| It is permissible for a connectionless transport to be used under | It is permissible for a connectionless transport to be used under | |||
| NFSv4.1; however, reliable and in-order delivery of data combined | NFS version 4.1; however, reliable and in-order delivery of data | |||
| with congestion control by the connectionless transport is | combined with congestion control by the connectionless transport | |||
| REQUIRED. As a consequence, UDP by itself MUST NOT be used as an | is REQUIRED. As a consequence, UDP by itself MUST NOT be used as | |||
| NFSv4.1 transport. | an NFS version 4.1 transport. | |||
| RPC-over-RDMA Version One is constructed on a platform of RDMA | RPC-over-RDMA Version One is constructed on a platform of RDMA | |||
| Reliable Connections [I-D.ietf-nfsv4-rfc5666bis] [RFC5041]. RDMA | Reliable Connections [I-D.ietf-nfsv4-rfc5666bis] [RFC5041]. RDMA | |||
| Reliable Connections are reliable, connection-oriented transports | Reliable Connections are reliable, connection-oriented transports | |||
| that guarantee in-order delivery, meeting all above requirements for | that guarantee in-order delivery, meeting all above requirements for | |||
| NFS version 4 transports. | NFS version 4 transports. | |||
| 5.7.2. Retransmission and Keep-alive | 5.7.2. Retransmission and Keep-alive | |||
| NFS version 4 client implementations often rely on a transport-layer | NFS version 4 client implementations often rely on a transport-layer | |||
| skipping to change at page 13, line 40 ¶ | skipping to change at page 14, line 36 ¶ | |||
| specification to interoperate on RPC-over-RDMA Version One transports | specification to interoperate on RPC-over-RDMA Version One transports | |||
| [I-D.ietf-nfsv4-rfc5666bis]. Via standards action, the Upper Layer | [I-D.ietf-nfsv4-rfc5666bis]. Via standards action, the Upper Layer | |||
| Binding specified in this document can be extended to cover versions | Binding specified in this document can be extended to cover versions | |||
| of the NFS version 4 protocol specified after NFS version 4 minor | of the NFS version 4 protocol specified after NFS version 4 minor | |||
| version 2, or separately published extensions to an existing NFS | version 2, or separately published extensions to an existing NFS | |||
| version 4 minor version, as described in [I-D.ietf-nfsv4-versioning]. | version 4 minor version, as described in [I-D.ietf-nfsv4-versioning]. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| RPC-over-RDMA Version One supports all RPC security models, including | RPC-over-RDMA Version One supports all RPC security models, including | |||
| RPCSEC_GSS security and transport-level security [RFC2203]. The | RPCSEC_GSS security and transport-level security [RFC7861]. The | |||
| choice of what Direct Data Placement mechanism to convey RPC argument | choice of what Direct Data Placement mechanism to convey RPC argument | |||
| and results does not affect this, since it changes only the method of | and results does not affect this, since it changes only the method of | |||
| data transfer. Specifically, the requirements of | data transfer. Specifically, the requirements of | |||
| [I-D.ietf-nfsv4-rfc5666bis] ensure that this choice does not | [I-D.ietf-nfsv4-rfc5666bis] ensure that this choice does not | |||
| introduce new vulnerabilities. | introduce new vulnerabilities. | |||
| Because this document defines only the binding of the NFS protocols | Because this document defines only the binding of the NFS protocols | |||
| atop [I-D.ietf-nfsv4-rfc5666bis], all relevant security | atop [I-D.ietf-nfsv4-rfc5666bis], all relevant security | |||
| considerations are therefore to be described at that layer. | considerations are therefore to be described at that layer. | |||
| skipping to change at page 14, line 48 ¶ | skipping to change at page 15, line 43 ¶ | |||
| [RFC1833] Srinivasan, R., "Binding Protocols for ONC RPC Version 2", | [RFC1833] Srinivasan, R., "Binding Protocols for ONC RPC Version 2", | |||
| RFC 1833, DOI 10.17487/RFC1833, August 1995, | RFC 1833, DOI 10.17487/RFC1833, August 1995, | |||
| <http://www.rfc-editor.org/info/rfc1833>. | <http://www.rfc-editor.org/info/rfc1833>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2203] Eisler, M., Chiu, A., and L. Ling, "RPCSEC_GSS Protocol | ||||
| Specification", RFC 2203, DOI 10.17487/RFC2203, September | ||||
| 1997, <http://www.rfc-editor.org/info/rfc2203>. | ||||
| [RFC5661] Shepler, S., Ed., Eisler, M., Ed., and D. Noveck, Ed., | [RFC5661] Shepler, S., Ed., Eisler, M., Ed., and D. Noveck, Ed., | |||
| "Network File System (NFS) Version 4 Minor Version 1 | "Network File System (NFS) Version 4 Minor Version 1 | |||
| Protocol", RFC 5661, DOI 10.17487/RFC5661, January 2010, | Protocol", RFC 5661, DOI 10.17487/RFC5661, January 2010, | |||
| <http://www.rfc-editor.org/info/rfc5661>. | <http://www.rfc-editor.org/info/rfc5661>. | |||
| [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. | [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. | |||
| Cheshire, "Internet Assigned Numbers Authority (IANA) | Cheshire, "Internet Assigned Numbers Authority (IANA) | |||
| Procedures for the Management of the Service Name and | Procedures for the Management of the Service Name and | |||
| Transport Protocol Port Number Registry", BCP 165, | Transport Protocol Port Number Registry", BCP 165, | |||
| RFC 6335, DOI 10.17487/RFC6335, August 2011, | RFC 6335, DOI 10.17487/RFC6335, August 2011, | |||
| <http://www.rfc-editor.org/info/rfc6335>. | <http://www.rfc-editor.org/info/rfc6335>. | |||
| [RFC7530] Haynes, T., Ed. and D. Noveck, Ed., "Network File System | [RFC7530] Haynes, T., Ed. and D. Noveck, Ed., "Network File System | |||
| (NFS) Version 4 Protocol", RFC 7530, DOI 10.17487/RFC7530, | (NFS) Version 4 Protocol", RFC 7530, DOI 10.17487/RFC7530, | |||
| March 2015, <http://www.rfc-editor.org/info/rfc7530>. | March 2015, <http://www.rfc-editor.org/info/rfc7530>. | |||
| [RFC7861] Adamson, A. and N. Williams, "Remote Procedure Call (RPC) | ||||
| Security Version 3", RFC 7861, DOI 10.17487/RFC7861, | ||||
| November 2016, <http://www.rfc-editor.org/info/rfc7861>. | ||||
| [RFC7862] Haynes, T., "Network File System (NFS) Version 4 Minor | [RFC7862] Haynes, T., "Network File System (NFS) Version 4 Minor | |||
| Version 2 Protocol", RFC 7862, DOI 10.17487/RFC7862, | Version 2 Protocol", RFC 7862, DOI 10.17487/RFC7862, | |||
| November 2016, <http://www.rfc-editor.org/info/rfc7862>. | November 2016, <http://www.rfc-editor.org/info/rfc7862>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-nfsv4-versioning] | [I-D.ietf-nfsv4-versioning] | |||
| Noveck, D., "Rules for NFSv4 Extensions and Minor | Noveck, D., "Rules for NFSv4 Extensions and Minor | |||
| Versions", draft-ietf-nfsv4-versioning-09 (work in | Versions", draft-ietf-nfsv4-versioning-09 (work in | |||
| progress), December 2016. | progress), December 2016. | |||
| End of changes. 17 change blocks. | ||||
| 44 lines changed or deleted | 82 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||