[nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-00

David Noveck <davenoveck@gmail.com> Wed, 15 June 2016 10:30 UTC

Return-Path: <davenoveck@gmail.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 4F5A212D191 for <nfsv4@ietfa.amsl.com>; Wed, 15 Jun 2016 03:30:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 u8iPO7Ada-lZ for <nfsv4@ietfa.amsl.com>; Wed, 15 Jun 2016 03:30:00 -0700 (PDT)
Received: from mail-oi0-x22d.google.com (mail-oi0-x22d.google.com [IPv6:2607:f8b0:4003:c06::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9BB7D12D13D for <nfsv4@ietf.org>; Wed, 15 Jun 2016 03:30:00 -0700 (PDT)
Received: by mail-oi0-x22d.google.com with SMTP id w5so26761797oib.2 for <nfsv4@ietf.org>; Wed, 15 Jun 2016 03:30:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:cc; bh=LxT1789B3i4b1mXpKosDq7u/FVGZB9STPClUlf834+k=; b=rsJ+igVgc9OOPOVJIukY3ROLw3esZOMTVpqmyMTtrv1CPevW4pnY9z73rGmeCE6GWF ewFdnP1wrkdWKDgyCMLitMo5O5Vt4HkJ1rTdqy9c/jW4XBw+vxJHoz69ST98J6wt0ZHV BMGp4n+VOIzOyEcQTfdKgk0TgWCk1bzpZNu8hohCDXxjrdqmVhuKYG3qmZ6R6CY4HsMu LQShujMo51Wf6V9lXt58jZ+uCaw6XpZJDNcQSrBFedFtze6Pm0oig735yXZt1rUcXz7H SP3Yua0STiQssu4NL6Oh16ja7EO/SGw8JR8d6m1/VeMqjN/NkEvHUX0UGcbnnnSnwM1b L1sQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=LxT1789B3i4b1mXpKosDq7u/FVGZB9STPClUlf834+k=; b=XceD1x0lDhUKPIoUGnVN6kP9S15IoyUAdyDRn0UTj3I4ANVQ6LV6WF89g24QueW2xs NPXZNqdXj2N6mPjHU/Qewoo+o783Xx6mW5c21/8HpdI1Er8bVRQCfBZSF2eGhIM/f3Rl Un8L6xKJKXGdlArdlrsnv/Ce7qI86Dt4ppJIkDrJC4CzzOewp6gWNe3eqYpbFSW93nd+ vfF9CzQ7c09PQ+brr/GCjUBWHixmOoVtCroxP2NandzcRproicXGLP9lB/sen1QJKLPX siCvhDDfDh7BnRFCU3s/61oZb/7NLbWrqDUceHKycgF8HiAtyAcsojbNTp/BsVVuzSHw Y8ww==
X-Gm-Message-State: ALyK8tJ/MzyNbDQGqhNIUL0Acj/r9KFR+pXnppXdUEust7OJTyOo9eo9cPBTmCSBa5RTl54Vd0v5D0DaktuUzw==
X-Received: by 10.202.221.6 with SMTP id u6mr13291224oig.51.1465986599649; Wed, 15 Jun 2016 03:29:59 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.182.20.72 with HTTP; Wed, 15 Jun 2016 03:29:59 -0700 (PDT)
From: David Noveck <davenoveck@gmail.com>
Date: Wed, 15 Jun 2016 06:29:59 -0400
Message-ID: <CADaq8jcOwt2wG=sZER155M=0Tz8xVP5UrjF9NCNYUo83yGKWcw@mail.gmail.com>
To: Chuck Lever <chuck.lever@oracle.com>
Content-Type: multipart/alternative; boundary="001a113ce256848ab305354e9a36"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/AILkIE_zO-jCrk-_hieJKrRRqyE>
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>
Subject: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-00
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.17
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: Wed, 15 Jun 2016 10:30:03 -0000

*General Comments*

*Overall Evaluation*

This draft does not yet take sufficient account of the changes that were
made in going from RFC5666 to rfc5666bis.

In particular, since it only addresses changes in things known to be wrong
in RFC5667, it does not take proper account of

   - The definition of what is supposed to be in a ULB.
   - The fact that DDP-eligibility violations are supposed to be checked
   for.
   - The fact that DDP-eligibility is now a generic concept and is not, in
   general, tied to the use of explicit RDMA operations.
   - It repeats a  lot of material that is in rfc5666bis, which is in
   conflict with the fact that there will be multiple RPC-over-RDMA versions
   and this ULB is supposed to cover all of them.
   - A lot of stuff that was deleted in rfc5666bis, is still referred to in
   rfc5667bis.


*Specific Classes of Issues*

A very large part of this document seems to inappropriately duplicate what
is in rfc5666bis.

There are many instances in which the responder is told to ignore chunk
lists.  I believe that these statements basically contradict rfc5666bis in
that the chunks in the lists to be ignored will inevitably involve
DDP-eligiblility violations and the ULB has no business telling people to
ignore these.

The rfc5666bis requirement to specify response size limits seems to be
ignored.  In many cases (see below), there appears to be confusion in that
there is inappropriate discussion of the maximum size of buffers (which
will be removed), which might be taken into account as we formulate text
regarding the maximum size of responses.  In any case, this gap needs to be
filled.

*Comments by Section*

*Title*

Suggest changing the title to be "Network File System (NFS) RDMA Upper
Layer Binding"

*Abstract*

The fact that this assumes that all DDP will be done by explicit RDMA
operations makes it Version-One-only.

In addition, given that rfc566bis defines the concept of a ULB, it is
appropriate to reference that. in the abstract.

Suggest the following rewrite:

This document provides the ULB needed for various version of the
Network File System (NFS)  to use the RPC-over-RDMA transport.  It
describes the DDP-eligibility of XDR items within NFS versions 2, 3,
4, and 4.1, as well as any other material defined as necessary for an
upper Layer Bindiing in [rfc5666bis].  This binding may be extended to
cover the additions of new DDP-eligible XDR items as defined in new
versions of the NFSv4 protocol. This document obsoletes RFC5667.

*1.  Introduction*

I think this is far too specific, given that this document is supposed to
be a ULB which applies to all RPC-over-RDMA versions.

Also, the phrase "specific argument and results" is way out of date given
that, in the context of NFSv4, every RPC has only a single argument and
result, although each is likely to be a complicated one.

Also, I think better advantage can be taken of the framework established by
rfc5666bis.

Suggest the following rewrite:

The Remote Direct Memory Access (RDMA) Transport for Remote Procedure
Call (RPC) [RFC5666] allows an RPC client to provide for the direct
placement of data to be sent to and received from the RPC server The
RDMA transport header provides information about the desired placement
of XDR items subject to direct data placement.  In order to assure
interoperability, the client and the server must agree about which XDR
items are eligible for Direct Data Placement. This document details
the DDP-eligible data items for each of:


   - NFS version 2 [RFC1094]
   - NFS version 3 [RFC1813]
   - NFS version 4.0 [RFC7530]
   - NFS version 4.1 [RFC5661]

This listing of eligible items may be extended to cover the addition
of new DDP-eligible XDR items as defined by new versions of the NFSv4
protocol.

It also contains additional material required of Upper layer bindings,
as specified in [rfc5666bis].

*1.2.  Planned Changes To This Document*

In the second sentence of the first bullet, suggest replacing
"relative to" by "made necessary by".

Although this could arguably be within the first bullet, suggest
adding a new bullet "Will add material required for ULBs by
[rfc5666bis], that was not present in [RFC5667]".

Suggest adding a new bullet: "Material that duplicates what is in
[rfc5666bis] will be deleted"

In the fourth bullet, suggest replacing 'threshold by thresholds"

In the sixth bullet, suggest adding ", replacing the previous
treatment of callback operations." at the end of the sentence.

In the seventh bullet, suggest replace "is required by IDNITS" by
"will be added".

Suggest deleting the eighth bullet since all of the code fragments
should be gone.  See *3.  Transfers from NFS Server to NFS Client *

*2.  Transfers from NFS Client to NFS Server*

I don't see anything in this section that is appropriate to a ULB.  It
basically just repeats a lot of material that belongs in rfc5666bis.

I suggest deleting the section.

*3.  Transfers from NFS Server to NFS Client*

Has the same issue as *2**.  Transfers from NFS Client to NFS Server*

Also suggest deleting this section.

*4.  NFS Versions 2 and 3 Mapping*

Suggest changing the section title to "Binding for NFS Versions 2 and 3"

A large part of what is in this section needs to be deleted because it either:


   - Duplicates what is in rfc5666bis.
   - Contradicts what is in rfc5666bis.

Rather than identify each item, I'll just state what I think is in
here that is relevant.

Note that there is still things that the ULB says are supposed to do,
that aren't done here, but I'll address those below.

The big issue in that respect is a means of bounding response length.

In any case, I think this section boils down to:

The only DDP-eligible response data items are the following:


   - The opaque file data return by a READ request.
   - The pathname returned by a READLINK request.

The only DDP-eligible request items data items are the following:


   - The opaque file data provided in a WRITE request.
   - The pathname provided in a SYMLINK request.

With regard to response size limits, the material in the existing sixth
paragraph, which
needs to be deleted, should be taken into account. In any case we need some
response
size limits and the ones specified there are better than nothing.

*5.  NFS Version 4 Mapping*

Suggest changing the section title to "Binding for NFSv4 Versions"

Except for the first and the last three paragraphs, which I'll deal
with later, I think this boils down to:

Except in the case of backward direction operation (for which see
section 5.1), the only DDP-eligible data items are contained within
the request or the response for the COMPOUND procedure.

The only DDP-eligible response data items are the following:


   - The opaque file data returned by a READ operation.
   - The pathname returned by a READLINK operation.

The only DDP-eligible request items data items are the following:


   - The opaque file data provided in a WRITE operation.
   - The pathname provided when the NF4LNK case is used in a CRATE operation.

With regard to the first paragraph, I suggest the following replacement:

This specification specifies DDP-eligibility and request and response
limits size to the applicable to the first minor version of NFS
version 4 (NFSv4.0) and the second (NFSv4.1).  New versions of NFSv4
which extend the NFSv4 XDR may designate some of these new XDR items
as  DDP-eligible.  Subsequent minor versions of NFSv4 may override
this specification as it applies to those new minor versions.


The last three paragraphs meander for a while and never addresses the ULB
requirements. Not sure yet
exactly how to fix this but note that:

   - It may be that. like the material *4. NFS Versions 2 and 3 Mapping,*
   this texr is inappropriately focused on determining the inline buffer size.
   If so, this material would need to be deleted as both RFC5666 and
   rfc5666bis have moved past that idea that buffers have to be as long as
   messages. However, the ULB still requires response size limits so we need
   to extract anything relevant from the existing discussion.
   - It is not clear what "mechanism" is being described as "unworkable" in
   the antepenultimate paragraph.
   - This is particularly perplexing given that NFSv4.1, which presumably
   has the same layering as NFSv4.0, does have the limits needed, as noted in
   the lat paragraph.
   - The penultimate paragraph, while it discusses "theory" and "practice"
   never gets down to what is "required" to assure interoperability. As such,
   it does not meet the requirements for a ULB, given that there is no way
   specific to bound the size of a response. Thus, a requester has no
   ULB-specified way to determine how large the reply chunk should be.

Regarding response size limits:

   - For NFSv4.1, the limits must need to reflect, the session parameters
   referred to in the final paragraph.
   - For NFSv4.0, we need to focus on existing interoperable
   implementations and simply adopt those limits. Although there might be, in
   theory or in practice, NFSv4.0 implementations that on't respect those
   limits, those implementations need to be told that they are not compatible,
   as of now, with RPC-over-RDMA.
   - Even though the configuration protocol is gone, we need to somehow
   leave open the door for future versions of RPC-over-RDMA or optional
   extensions within them to provide a way to support higher response limits.

*5.1.  NFS Version 4 Callbacks*

Needs to be replaced by something consistent with
draft-ietf-nfsv4-rpcrdma-bidirection.

*9.  References*

The reference to rfc5666bis need to be made normative.