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

Chuck Lever <chuck.lever@oracle.com> Mon, 08 May 2017 19:10 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 A3079126B71 for <nfsv4@ietfa.amsl.com>; Mon, 8 May 2017 12:10:46 -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 yStuWMfZNPbK for <nfsv4@ietfa.amsl.com>; Mon, 8 May 2017 12:10:44 -0700 (PDT)
Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) (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 3B997124D37 for <nfsv4@ietf.org>; Mon, 8 May 2017 12:10:44 -0700 (PDT)
Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v48JAgWZ020276 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 8 May 2017 19:10:43 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id v48JAg5q024786 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 8 May 2017 19:10:42 GMT
Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v48JAgVc007752; Mon, 8 May 2017 19:10:42 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 12:10:41 -0700
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <806e7663-8c21-7b26-f778-ce45605c6c43@talpey.com>
Date: Mon, 08 May 2017 15:10:40 -0400
Cc: nfsv4@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <0CE5B736-4090-456A-87CA-3D393BE07A9C@oracle.com>
References: <CADaq8jdkGgL+H-yoO-+bTNbSYiE_1us9cN5SXY8QV0gfYfK0Ng@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> <77E46834-1407-4A44-8C78-83C8EED801C1@oracle.com> <8! 06e7663-8c21-7b26-f778-ce45605c6c43@talpey.com>
To: Tom Talpey <tom@talpey.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: userv0021.oracle.com [156.151.31.71]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/tnsEmsFcR_H3Yvljp24M1uJeJsI>
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 19:10:47 -0000

> On May 8, 2017, at 2:53 PM, Tom Talpey <tom@talpey.com> wrote:
> 
> On 5/8/2017 1:34 PM, Chuck Lever wrote:
>> 
>>> 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.
> 
> My only comment is on the above paragraph, on which I had suggested
> adding "maximally" and "minimally" in an attempt to convey that these
> were not absolute requirements, i.e. no more, no less than the listed
> values. That's not the intent, right?

The server is required to accept the listed bullets at a minimum,
and the client should not send more than the list bullets, but
it can send more if it is confident the server supports it. And,
the stated limits are based on existing implementations, not on
any particular limit in the transport protocol.

I think we agree on the intent.


> Again, my suggestion is to state these as "safe" values, to be used by
> the client when no other knowledge of the actual limits exists.

I had some trouble with "safe" because it's kind of an undefined
term in this context. My preference is the paragraph should state
what it means directly.

It still feels to me like "SHOULD follow" means it is OK for the
client to exceed the stated limits. So the current text says the
same thing with and without "maximally" or "minimally" and already
conveys the above intent.


> The server text is ok.
> 
> Along those lines then, how about:
> 
>  "In accordance with chunk list processing limits of existing server
>   implementations, in the absence of explicit knowedge of the server's
>   limits, NFS Version 4 clients SHOULD follow the prescriptions listed
>   below when constructing RPC-over-RDMA Version One messages.  All NFS
>   Version 4 servers MUST be prepared to accept and process such
>   requests."

My counter-offer ;-)

   In the absence of explicit knowledge of the server’s limits, NFS
   Version 4 clients SHOULD follow the prescriptions listed below when
   constructing RPC-over-RDMA Version One messages.  NFS Version 4
   servers MUST accept and process such requests.


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

--
Chuck Lever