Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-09

Chuck Lever <chuck.lever@oracle.com> Mon, 08 May 2017 17:34 UTC

Return-Path: <chuck.lever@oracle.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B338A127B31 for <nfsv4@ietfa.amsl.com>; Mon, 8 May 2017 10:34:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.221
X-Spam-Level:
X-Spam-Status: No, score=-4.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MUJdsBQsrxNW for <nfsv4@ietfa.amsl.com>; Mon, 8 May 2017 10:34:26 -0700 (PDT)
Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9ADCB129537 for <nfsv4@ietf.org>; Mon, 8 May 2017 10:34:26 -0700 (PDT)
Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v48HYPxR017162 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 8 May 2017 17:34:26 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id v48HYPqt007384 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 8 May 2017 17:34:25 GMT
Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v48HYOQk030807; Mon, 8 May 2017 17:34:25 GMT
Received: from anon-dhcp-171.1015granger.net (/68.46.169.226) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 08 May 2017 10:34:24 -0700
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <EECCB2E9-7BC3-4D29-A95D-BAC42F78AFAF@oracle.com>
Date: Mon, 08 May 2017 13:34:23 -0400
Content-Transfer-Encoding: 7bit
Message-Id: <77E46834-1407-4A44-8C78-83C8EED801C1@oracle.com>
References: <CADaq8jdkGgL+H-yoO-+bTNbSYiE_1us9cN5SXY8QV0gfYfK0Ng@mail.gmail.com> <33468014-6695-a2da-1af8-f1f355fbe986@talpey.com> <CADaq8jcJJQ3TiVX6fFURg22YgNg=Cd7ezNQewjt6fgNK4LrPVg@mail.gmail.com> <F417EA11-D49F-420D-A64F-AE6A382B920C@oracle.com> <7213a956-6157-d0a6-432d-1da8d555d8e9@talpey.com> <A7BB8A22-53E3-4910-A6DE-C6103343D309@oracle.com> <6974E7E7-051B-4F28-A61A-DF6F841B248B@oracle.com> <af6ed8c5-6a7d-08ed-590b-1774f34e05f2@talpey.com> <F842F8E7-B576-4781-A845-F13317593F88@oracle.com> <1451a113-115b-5c43-5cfe-f0c5e21b59d6@talpey.com> <C91AC1D8-C884-490B-8738-7279DEC0F372@oracle.com> <CADaq8jc6X6y5WXuptVevhNopG9Nbfca8FUV6zYCBTADs5ohvag@mail.gmail.com> <F7941956-149D-4B4C-B793-444FC61A9517@oracle.com> <e7ff236f-29e4-06d8-86c9-486f95f9db14@oracle.com> <505CD860-4167-49FB-8162-B5FE6083E7AF@oracle.com> <BN6PR03MB2449B8D6FE! E4975D78858456A0160@BN6PR03MB2449.namprd03.prod.outlook.com> <263A2988-0B52-4706-B00F-41D121F7DA42@oracle.com> <2e9d0b61-26f6-cecb-9f75-717ac48f3b88! ! @talpey.com> <EECCB2E9-7BC3-4D29-A95D-BAC42F78AFAF@oracle.com>
To: NFSv4 <nfsv4@ietf.org>, Tom Talpey <ttalpey@microsoft.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: userv0022.oracle.com [156.151.31.74]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/tR6EEZ8XBMEPuvcAjHNVBXLlCWQ>
Subject: Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-09
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 08 May 2017 17:34:29 -0000

> On May 8, 2017, at 9:58 AM, Chuck Lever <chuck.lever@oracle.com> wrote:
> 
>> 
>> On May 8, 2017, at 8:35 AM, Tom Talpey <tom@talpey.com> wrote:
>> 
>> On 5/4/2017 11:00 AM, Chuck Lever wrote:
>>> I've tried to address your concerns, and I changed the segment count
>>> limit to document what we know about the current Solaris implementations.
>>> I liked the "be conservative in what you send" idea, but I couldn't find
>>> a way to work it in that was not awkward.
>>> 
>>> If this text is OK, I'll submit a fresh I-D revision after WGLC ends on
>>> Friday.
>> 
>> Well that wasn't enough time for me to respond since I was traveling
>> from SambaXP in Germany, but the text does look better. The statement
>> below makes no requirement on the server.
>> 
>>> 5.4.2.  Chunk List Complexity
>>> ...
>>>  To avoid encountering server chunk list complexity limits, NFS
>>>  version 4 clients SHOULD follow the below prescriptions 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.
>> 
>> I would suggest the following modifications to the above.
>> 
>> "In accordance with chunk list processing limits of existing
>>  server implementations, NFS Version 4 clients SHOULD maximally
>>  follow the below prescriptions when constructing requests to
>>  be transported by RPC-over-RDMA. Additionally, NFS Version 4
>>  servers SHOULD minimally be prepared to accept and process such
>>  requests."
> 
> Actually I think "servers MUST be prepared" is appropriate here,
> although IMO "clients should follow the below" implies the server
> side requirements already. But no harm in making it explicit.
> 
> 
>>>  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:
>> 
>> 
>> Strongly suggest deleting the words "has some flexibility" and "Examples
>> include". We've already had this discussion, so I will just suggest the
>> following.
>> 
>> "An NFS Version 4 server SHOULD return one of the following responses
>>  to a client which has sent a request containing RPC-over-RDMA chunks
>>  which cannot be processed due to exceeding server implementation
>>  limits"
> 
> Both look fine to me. Spencer, if you're willing, I can replace -10
> with a revision that includes these changes.

Here's the new text. I'll wait for Tom to respond before cutting -11.


5.4.2.  Chunk List Complexity

   The RPC-over-RDMA Version One protocol does not place any limit on
   the number of chunks or segments that may appear in Read or Write
   lists.  However, for various reasons NFS version 4 server
   implementations often have practical limits on the number of chunks
   or segments they are prepared to process in a single RPC transaction
   conveyed via RPC-over-RDMA Version One.

   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.

   In accordance with chunk list processing limits of existing server
   implementations, NFS Version 4 clients SHOULD follow the
   prescriptions listed below when constructing RPC-over-RDMA Version
   One messages.  NFS Version 4 servers MUST be prepared to accept and
   process such requests.

   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 chunk overruns at the
   receiving peer.

   An NFS Version 4 server SHOULD return one of the following responses
   to a client that has sent an RPC transaction via RPC-over-RDMA
   Version One which cannot be processed due to chunk list complexity
   limits on the server:

   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.


>> Tom.
>> 
>> 
>>>  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.
>> 
>> 
>> _______________________________________________
>> nfsv4 mailing list
>> nfsv4@ietf.org
>> https://www.ietf.org/mailman/listinfo/nfsv4
> 
> --
> Chuck Lever
> 
> 
> 
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4

--
Chuck Lever