[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.
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… David Noveck
- Re: [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis… Chuck Lever
- [nfsv4] Review of draft-ietf-nfsv4-rfc5667bis-00 David Noveck