[nfsv4] AD Evaluation for draft-ietf-nfsv4-flex-files-14.txt

Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com> Tue, 07 November 2017 19:42 UTC

Return-Path: <spencerdawkins.ietf@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 5A40C132F69; Tue, 7 Nov 2017 11:42:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 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_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 aHfy1_txZU_K; Tue, 7 Nov 2017 11:42:30 -0800 (PST)
Received: from mail-yw0-x241.google.com (mail-yw0-x241.google.com [IPv6:2607:f8b0:4002:c05::241]) (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 641DE1321DC; Tue, 7 Nov 2017 11:42:27 -0800 (PST)
Received: by mail-yw0-x241.google.com with SMTP id t11so312298ywg.12; Tue, 07 Nov 2017 11:42:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=XmbiHuyUQLFrOlIoGWAVzvlXySN+wdMD5QMIMJfbllk=; b=WJJMJTWB+UqpWbKRr51/RSY+fhsF3G0qqxBQpOp52e3aX1F6x8GVcE7f+3jBWAb/57 CqYUifxvYtOmhx2gUGEAT1lljGiduZ1rI4TvmIsGY0QoDLhGlr9qOKSFfuXKDHjXl+gK 05MYnSOqaHJx+3rmp/WHsS5M7R8OZsn3MPMJB0jPdYaOB6FOl9/JYm4lsj+O+vKeYhfg UghC4W9nblzOWUTeGQ4e1Zo7FOLibL5j+JQ6mvWBXkehLSezYJxzVs3Rei8ydTfV9o5v +kIk7GjxLbfRH62ig3Pm/6ZOU2sZf4HnIu+zvF4FMkCKHiSiueG+juUcVFIWcEbhy9Id Hwrw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=XmbiHuyUQLFrOlIoGWAVzvlXySN+wdMD5QMIMJfbllk=; b=gsM/Ej5ZZFoLtAWyOuYHFUseF66jjrF+DZyaewn/LtilFyNsyKJMaB7tkIvdcyQk03 qwXQXQSobzOjZXlduGiqMCLJAFSEUmHqMhM54lm5Oy9IiEqj6BDdsvjwY6HcT4jgjHKx cV77aCysdVKsvSmSQHyFl5lO6D57aT9deXfD8bWizBNZA70gzi6bbWuOfbFf6LbCSH9o fBfXhehHbVi6qnkoXkconvkFqSm2YptHDEQ9JuiHRrnq8t+s+rXS9Nk59FDpjJkkeNFS NFuCc7YDJr9efZP3BBZXeftuZAfqMD4gq6TCfkYi4JrTnvoM8EweKkdB4Ir3TOicqGlV OpIw==
X-Gm-Message-State: AMCzsaXH6LqA9FYP+wl17jByhRbqtH0umRpPyl2/yaMca5Syt/57N2cp k+8hkZg6N9VuFgofpnhCU5e+3OcCnNzINUALAFljoA==
X-Google-Smtp-Source: ABhQp+Tr6on7FHPQCqpbnlRnmABvJork5ImjflM6kU4n651hQheQ91q1oT3Q42JZoAL2LHMNuJLWT0FG7FyjpBf6lE0=
X-Received: by 10.129.1.2 with SMTP id 2mr13363400ywb.66.1510083746039; Tue, 07 Nov 2017 11:42:26 -0800 (PST)
MIME-Version: 1.0
Received: by 10.37.162.204 with HTTP; Tue, 7 Nov 2017 11:42:25 -0800 (PST)
From: Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>
Date: Tue, 07 Nov 2017 13:42:25 -0600
Message-ID: <CAKKJt-cJTyCDtptO8NvZXznQ31O5kNn4ffh9TVgNBtioFRw7yw@mail.gmail.com>
To: draft-ietf-nfsv4-flex-files@ietf.org
Cc: nfsv4-ads@ietf.org, NFSv4 <nfsv4@ietf.org>
Content-Type: multipart/alternative; boundary="001a114293c8438fc5055d69c50e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/STMwR8KUQ9co46OCRsebkct6HkA>
Subject: [nfsv4] AD Evaluation for draft-ietf-nfsv4-flex-files-14.txt
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: Tue, 07 Nov 2017 19:42:33 -0000

Hi, authors,

I apologize for not jumping on this draft when publication was requested -
it shows up with that status in the datatracker, but a quick search of my
e-mail archive doesn't show the corresponding notification e-mail to me.
But, having noticed that I should be reading it ...

I have some questions, which I'd like to work through before requesting
Last Call. Most are harmless, and a few are requirements language
questions, but I really need to understand the IANA Considerations section
note about Table 3.

Just administratively, I know that automatic I-D submissions are closed
until next Monday, and NFSv4 isn't meeting at IETF 100, so I'd expect to
wait until after IETF 100 to request Last Call (since we typically extend
Last Calls that overlap meeting weeks anyway). If the chairs would like for
me to handle this in another way, please let me know.

And thanks for your work on this.

Spencer (D)

--

I think

   This document does
   not provide a standard's track control protocol.

should be "standard track control protocol".

I think

   The requirements for the a
   control protocol are specified in [RFC5661] and clarified in
   [pNFSLayouts].

should either be "for a control protocol" or "for the control protocol",
but not both.

I don't understand what "need not be a protocol as normally understood" in

     control protocol:  is the particular mechanism that an implementation
      of a layout type would use to meet the control communication
      requirement for that layout type.  This need not be a protocol as
      normally understood.  In some cases the same protocol may be used
      as a control protocol and storage protocol.

means. You do expand the definition in the next sentence, but only
explaining something about a protocol as I understand protocols. Could you
also add an example of the kind of thing you're thinking of, as "not a
protocol"?

Is it possible to add a sentence or two in Section 2, that explains the
tradeoffs between loose and tight coupling? I understand there are two
alternatives (and the differences are described throughout the doc), but
don't understand at a high level how I'd decide which one to implement, if
I was starting from scratch.

I'm not a genius of "code in drafts", but shouldn't

  /// /*
   ///  * Copyright (c) 2012 IETF Trust and the persons identified
   ///  * as authors of the code. All rights reserved.
   ///  *

be 2017? The template in [LEGAL] is "insert current year" ...

I'm seeing major and minor version numbers, but I'm not seeing mention of
https://datatracker.ietf.org/doc/rfc8178/ -style extensions. Does that
matter? Or would support for extensions simply be detected in the way
described at the end of https://tools.ietf.org/html/rfc8178#section-4.3?

I'm fine with all of the SHOULDs and SHOULD NOTs in

  The client is free to use any of the network addresses as a
   destination to send storage device requests.  If some network
   addresses are less desirable paths to the data than others, then the
   MDS SHOULD NOT include those network addresses in ffda_netaddrs.  If
   less desirable network addresses exist to provide failover, the
   RECOMMENDED method to offer the addresses is to provide them in a
   replacement device-ID-to-device-address mapping, or a replacement
   device ID.  When a client finds no response from the storage device
   using all addresses available in ffda_netaddrs, it SHOULD send a
   GETDEVICEINFO to attempt to replace the existing device-ID-to-device-
   address mappings.  If the MDS detects that all network paths
   represented by ffda_netaddrs are unavailable, the MDS SHOULD send a
   CB_NOTIFY_DEVICEID (if the client has indicated it wants device ID
   notifications for changed device IDs) to change the device-ID-to-
   device-address mappings to the available addresses.  If the device ID
   itself will be replaced, the MDS SHOULD recall all layouts with the
   device ID, and thus force the client to get new layouts and device ID
   mappings via LAYOUTGET and GETDEVICEINFO.

except the last one. Can you help me understand why the MDS would not
recall all layouts and force clients to get new layouts and mappings?

Is it correct that there's no difference between the client's action when
receiving

  NFS4ERR_LAYOUTTRYLATER:  there is some issue preventing the layout
      from being granted.  If the client already has an appropriate
      layout, it should continue with I/O to the storage devices.

and

   NFS4ERR_DELAY:  there is some issue preventing the layout from being
      granted.  If the client already has an appropriate layout, it
      should not continue with I/O to the storage devices.

? That wouldn't surprise me, but I thought I should ask.

I think

  In [RFC5661], the file layout type is defined such that the
   relationship between multipathing and filehandles can result in
   either 0, 1, or N filehandles (see Section 13.3).  Some rationals for
   this are clustered servers which share the same filehandle or
   allowing for multiple read-only copies of the file on the same
   storage device.

should be "rationales".

Could you help me understand why

  The metadata server SHOULD recall any outstanding layouts to allow it
   exclusive write access to the stripes being recovered and to prevent
   other clients from hitting the same error condition.  In these cases,
   the server MUST complete recovery before handing out any new layouts
   to the affected byte ranges.

is not a MUST? ("Why wouldn't the MDS do that?")

Is "hot" a term of art for the NFS community? (If so, is there a reference
with a definition that could be included on first use?)

I'm really confused by

  Note, [RFC5661] should have also defined (see Table 3):

   +-------------------------------+------+-----------+-----+----------+
   | Recallable Object Type Name   | Valu | RFC       | How | Minor    |
   |                               | e    |           |     | Versions |
   +-------------------------------+------+-----------+-----+----------+
   | RCA4_TYPE_MASK_OTHER_LAYOUT_M | 12   | [RFC5661] | L   | 1        |
   | IN                            |      |           |     |          |
   | RCA4_TYPE_MASK_OTHER_LAYOUT_M | 15   | [RFC5661] | L   | 1        |
   | AX                            |      |           |     |          |
   +-------------------------------+------+-----------+-----+----------+

              Table 3: Recallable Object Type Assignments

As best I can tell,
https://www.iana.org/assignments/nfsv4-recallable-object-types/nfsv4-recallable-object-types.xhtml#nfsv4-recallable-object-types-1
defines them as

RCA4_TYPE_MASK_OBJ_LAYOUT_MIN 8 [RFC5661] L 1
RCA4_TYPE_MASK_OBJ_LAYOUT_MAX 9 [RFC5661] L 1

so, the values don't match. What am I missing? Is this a request to IANA to
change the assigned values, or something else?