[nfsv4] draft haynes-nfsv4-versioning: Issues relating to opcode assignments etc.

David Noveck <davenoveck@gmail.com> Tue, 28 October 2014 15:23 UTC

Return-Path: <davenoveck@gmail.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D28131A8ACD for <nfsv4@ietfa.amsl.com>; Tue, 28 Oct 2014 08:23:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.701
X-Spam-Level:
X-Spam-Status: No, score=0.701 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=ham
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 4Knvj6CBYJIk for <nfsv4@ietfa.amsl.com>; Tue, 28 Oct 2014 08:23:50 -0700 (PDT)
Received: from mail-ob0-x22b.google.com (mail-ob0-x22b.google.com [IPv6:2607:f8b0:4003:c01::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E6C4D1A8A9C for <nfsv4@ietf.org>; Tue, 28 Oct 2014 08:23:30 -0700 (PDT)
Received: by mail-ob0-f171.google.com with SMTP id wp18so710478obc.2 for <nfsv4@ietf.org>; Tue, 28 Oct 2014 08:23:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=3kwCh3dKDfaiglno/tehI9eZiTLf0zt09dqMl1aqzOc=; b=RvAXEWQTBnpbSZNlHG9cvVOWJyohGkuR0u2wc8bG5ybgb9/Tx370Xdw3Cvf+FErcun beJdoeWdm8c4xJAVi+bK9qA0i6Ne04QzeonW8T387pIO77fNe6nnDoVUjmd1mjGA1B8p p5fIInbN6G31L7cn3FD3+4turgXGILEGDS2xOtQsDriUgfzYWlvo55KmtAeFmkQqqwiM Fpdldg5aPmHy9MbOzgkBPRSLN/krByg3dZqYXHNaxcX4wOMq2/Xvl2DVnbrkDTwMG7NG RtrVochQpl9TsD0mKMwPovlIyy2jIx2ANSHyuyUWtSJCAeoWxXYrWyqgYDjPxvPnsL8D yaAg==
MIME-Version: 1.0
X-Received: by 10.182.233.169 with SMTP id tx9mr3450667obc.38.1414509810320; Tue, 28 Oct 2014 08:23:30 -0700 (PDT)
Received: by 10.182.226.106 with HTTP; Tue, 28 Oct 2014 08:23:30 -0700 (PDT)
Date: Tue, 28 Oct 2014 11:23:30 -0400
Message-ID: <CADaq8jcGEHYG8Y9+Lj6GBPhePC6vknPXaW9Yh+tbTJ4+bVxvJg@mail.gmail.com>
From: David Noveck <davenoveck@gmail.com>
To: Thomas Haynes <thomas.haynes@primarydata.com>, Christoph Hellwig <hch@lst.de>, Benny Halevy <bhalevy@primarydata.com>
Content-Type: multipart/alternative; boundary="001a11c2e596c68a3b05067d3a05"
Archived-At: http://mailarchive.ietf.org/arch/msg/nfsv4/Fkpg-zxn1_5D7w1zJVS6x1n8qLU
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>
Subject: [nfsv4] draft haynes-nfsv4-versioning: Issues relating to opcode assignments etc.
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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, 28 Oct 2014 15:23:55 -0000

> 1) Are new operations assigned by IANA or by publishing a draft?

Just to clarify here, the draft in question would be a draft (i.e.
typically the first draft) of a working group document.  No assignments by
publishing individual drafts are contemplated.

> Actually Christoph's observation, but there seems to be controversy here.
:-)

I did recall Christoph asking about this but I didn't recall any
controversy.  I've looked for the email in which this was discussed but
haven't found it.

There are some issues here that need to be clarified, whether "controversy"
is the right word or not.  Also, It makes sense to consider issues related
to assignment of attribute numbers, other enums, and flag bits, at the same
time we consider operation code assignment (including those for callbacks,
I assume).

I think we need to distinguish a couple of related issues:

   - How (or by whom) the assignment is made.
   - When the assignment is made

I think the issue about which there is likely to be disagreement or
controversy will be the question of when (i.e. how early) the assignment is
to be made. My understanding of the connection between these two issues is
as follows:

   - If the assignment is to be made when the RFC is published, then we
   could implement IANA-based assignment by creating one or more registries
   with a "specification required" assignment policy.  However, this could be
   complicated to do, although it is relatively simple if you just do it for
   operations.  The big issue is that doing this doesn't buy you anything (see
   below for a discussion of this).
   - If the assignment is to made earlier than that (e.g. when the document
   becomes a working-group document as suggested in the current draft), it
   isn't clear how to specify an assignment policy that IANA would accept.

If IANA is to be making the assignment, I'll  assume the assignment policy
people are thinking about is "specification required", essentially meaning
you have to have an RFC.   If there's been any discussion of a different
assignment policy, I haven't heard of it.

If we are talking about assignments being made (or at least becoming
effective) at RFC approval time, I don't see how an IANA registry will add
anything to the process.  For example, we could have set up an opcode
registry when RFC3530 was published and then added the v4.1 opcodes to it
when RFC5662 was published.  Further assignments could be made when the
v4.2 XDR RFC is published.

If we had done that (and possibly set up registries for callbacks and
attributes) that would not have added anything to the process.  It's also a
lot of work to set up registries, including additional ones for various
enums and flag bits.  There's a good reason we chose not to do that and I
don't see what has changed to make this more desirable now.

So now let's turn back to the issue of when the assignment is to be made.
The following list is intended to summarize the issues raised regarding the
approach outlined in draft-haynes-nfsv4-versioning-01.  It is likely not to
be complete, as I can't remember what Christoph said about the issue and
it's possible that I've forgotten other stuff as well.

   - Benny raised issues regarding the potential existence of holes in the
   set of opcode and attribute assignments.  He was concerned about the
   performance implications.  This didn't turn into a controversy, but in my
   mind this remains an open issue which the working group should come to a
   consensus  on. Personally, I don't feel that the performance issues are
   significant enough to arouse concern.


   - Tom had some concerns that, while not explicitly directed to the
   time-of-opcode-assignment issue, may be relevant here.  Tom was concerned
   about situations in which an (unofficial) assignment was made, and code was
   shipped on the basis of that assignment, making it difficult to change that
   assignment, without impacting those running the previously shipped code.

This issue could have some bearing on the time-of-assignment question but
it could be argued both ways.  First, if one is concerned about assignments
being made too early, that might argue for either a later assignment point
(e.g RFC approval) or the group being a little more restrained about the
implementation of a earlier assignment policy (i.e. the working group
taking due note of the consequences of making an assignment at the point
the document is made a working group document.

Also, if one is concerned about the consequences, of people shipping code
that depends on assignments not formally made, this would argue against an
assignment policy subject to unpredictable delays.  Maybe I've been unduly
influenced by experiences with rfc3530bis, but i think that if you have a
policy that requires IESG approval and going through the RFC editing
process, one will sometimes wind up needing to ship code without waiting
for the process to complete.  My fear is that if one has a policy like
that, one may be faced with the choice of discouraging reasonable
implementation progress or violating ones own rules. That's what led me to
choose the policy of assignment at the time that the feature specification
document becomes a working group document.


   - Possibly (tangentially) related to this issue are Benny's remarks
   regarding assignment of experimental ranges for attributes, opcode and
   potentially other feature elements.   While it is true that such ranges
   could support some degree of experimental use, I would have to say that is
   so only in a very limited context.    It seems to me that the model is
   doing something in a very constrained environment in which the code you
   write is restricted environment and you don't want to let it escape into
   the wild, since the opcodes in the experimental assignments cannot be
   relied upon, since they are inherently transient.  Let's call that
   alpha-test-style experimental use.

The provisional assignments that are to be made as described in
draft-haynes-versioning-01 allow something that we might cal
beta-test-style experimental use.  The idea is that we may at times, need
to get the benefit of something nearer real use, as we dot the i's and
cross the t's on the spec.  In many cases, there needs to be extensive
specification work, and that work, while necessary to support the most
general sort of use, does not affect a large portion of typical use and
there are benefits to be had from getting that experience earlier.  As an
example, consider server-side copy, first proposed in an I-D in early
2009.  A lot of the work from that time to now concerned it's extension to
the case of inter-server copy and exploring the security issues posed by
the requirement that the protocol not require a trust relationship between
the source and destination servers.  If we could have beta-tested the
subset of the protocol dealing with the intra-server copy, the NFSv4 user
community would have gotten the benefits of that subset of the server-side
copy feature, while the security issues in the inter-server case were
addressed.


So to summarize where I stand on these issues:

   - I think the real issue here concerns the time at which it is
   appropriate to  make these assignments and that once that decision is made,
   whichever way the group makes it, adding IANA to the process is not a help.
   - If someone wants to make the case for IANA involvement in this
   process, the working group should address that issue.
   - I see no reason to modify the time-of-assignment approach specified in
   draft-haynes-nfsv4-versioning-01, but think that there may be reason for
   the working group to discuss this further.
   - Although I continue to think early assignment is a better choice, I'm
   not all that invested in that choice.  For me, getting rid of feature
   batching (section 5 of the document) and providing a clear path to
   correcting XDR problems discovered after RFC publication (section 6 of the
   document) are the big benefits of the current draft and my focus is on
   those.
   - I'd like to see us come to a consensus on this issue but don't think
   it is required for going forward and making this a working group document.
   Even if we do come to a consensus on this issue, it may change before we
   reach WGLC.