Re: [nfsv4] [Technical Errata Reported] RFC8166 (6528)

David Noveck <davenoveck@gmail.com> Wed, 21 April 2021 11:47 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 43C463A226A for <nfsv4@ietfa.amsl.com>; Wed, 21 Apr 2021 04:47:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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 SXu6aEyyWRhm for <nfsv4@ietfa.amsl.com>; Wed, 21 Apr 2021 04:47:28 -0700 (PDT)
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (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 D80123A2267 for <nfsv4@ietf.org>; Wed, 21 Apr 2021 04:47:27 -0700 (PDT)
Received: by mail-ej1-x630.google.com with SMTP id l4so63016355ejc.10 for <nfsv4@ietf.org>; Wed, 21 Apr 2021 04:47:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hHZtdgckUuoeXlDIbC9xPP5d725Iz4ET99NonmXv/IE=; b=HTl9ktLJXn1F4Kfpgpi0bc2gkCpYhBIVM/m08O39plDfVnmWCVNrBRIu7F+lq0RBre bW/XM0+/K1QN864vKf23seorsxSk1G98pTn/WrnWR7gWKStbqRPswXrJwCpH8Ct2qaWn WBSEooiR5ud+k7UCYcCMON7fNvNOKSTVARcHtyVCWZ/9Zf1j0eoME+vxq76uSN8OI6Oa ccKaruoSzl8hh+jhS9cuP0Prd17ICZkSW5+Rpx6y+jzL0lmD5K7r4zUp0M3LIwmQdIgj RoX6X2yVxIUs+xRWzJ5/4j8ecRAwhJNmFqsDwCSxbgma6JOAMyYjG547yE9CPDooZ4Lu ULTw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=hHZtdgckUuoeXlDIbC9xPP5d725Iz4ET99NonmXv/IE=; b=P4rIdQnO0mj3qN6+aR5cjduzjoTF5U/Gh8Z3R/AWDsFz8kcuLIwHUe882BHbaWUJ9l MyemPTmVxRUMhvf49+7tTZvqKY8P7JNpIHcJQXxVJxu9H7M8Z5khfeGzQWfOaCxEtUDQ 7+IanJOzu771+/0fXA5m99H0cmv0EQMWIG6Y7NSl97Ae7ri3SngbhH2Uoy1qG/8gNYhU pza38WJVUMZz3DhYEm4FlNUWXGv0uTe73B5/TT7tGiOevN5ZCNV2gSK7GTNOoSbfV0eH vMu3QuPNNM60zGPB75geAyrmmNRZLxf69FLP25GnjNnqGvoGPeQMVjSlEcYSvthtF/X9 NKug==
X-Gm-Message-State: AOAM531DnzIHRxPyOPwENinDFm08VepDNcJu/2SgkUJM7vOA/fdolPD9 hLIIQRrhb4qx1oTV0LXzPmTAmUFGTr6sdtt8wNHgAOsOcH0=
X-Google-Smtp-Source: ABdhPJz+NAIu95denbUkr0rvawWXYI1eY5iHjIy2PSmKKjZpE1ZL8PLjxTTTO0ra3yAjImupKKccPOidWBBiwwZBQe4=
X-Received: by 2002:a17:906:134d:: with SMTP id x13mr32694963ejb.61.1619005645289; Wed, 21 Apr 2021 04:47:25 -0700 (PDT)
MIME-Version: 1.0
References: <20210412164024.82CB8F4075A@rfc-editor.org> <A4A2576B-A0BD-4B29-B1C1-C5498AC938DC@oracle.com> <296b1959-4f6c-d24b-7eaf-d26f185bc5f2@talpey.com>
In-Reply-To: <296b1959-4f6c-d24b-7eaf-d26f185bc5f2@talpey.com>
From: David Noveck <davenoveck@gmail.com>
Date: Wed, 21 Apr 2021 07:47:14 -0400
Message-ID: <CADaq8jepeyp61ex_rCOy4=3vyTf16Tv=BdN4Ez1MMoTDHcybvw@mail.gmail.com>
To: Tom Talpey <tom@talpey.com>
Cc: NFSv4 <nfsv4@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000607bc605c07a204a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/zIlO1yRq4iO2KzfhJoFQ3VjWsrI>
Subject: Re: [nfsv4] [Technical Errata Reported] RFC8166 (6528)
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
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, 21 Apr 2021 11:47:33 -0000

On Tue, Apr 20, 2021, 11:37 AM Tom Talpey <tom@talpey.com> wrote:

> On 4/20/2021 11:17 AM, Chuck Lever III wrote:
> > Sorry for the delay, I wasn't sure where to begin further conversation
> > on this errata.
> >
> >
> >> On Apr 12, 2021, at 12:40 PM, RFC Errata System <
> rfc-editor@rfc-editor.org> wrote:
> >>
> >> The following errata report has been submitted for RFC8166,
> >> "Remote Direct Memory Access Transport for Remote Procedure Call
> Version 1".
> >>
> >> --------------------------------------
> >> You may review the report below and at:
> >> https://www.rfc-editor.org/errata/eid6528
> >>
> >> --------------------------------------
> >> Type: Technical
> >> Reported by: David Noveck <davenoveck@gmail.com>
> >>
> >> Section: 4.2.4
> >>
> >> Original Text
> >> -------------
> >> A Requester MUST NOT send an RPC-over-RDMA header with the RDMA_ERROR
> >> procedure.  A Responder MUST silently discard RDMA_ERROR procedures
> >
> > Stated as a co-author of this document, I agree that this text is
> > problematic for version negotiation, which uses the RDMA_ERROR
> > procedure/header type.
> >
> > One vote for "verified".
> >
> >
> >> Corrected Text
> >> --------------
> >> An RDMA_ERROR header cannot be sent without an assurance that, the
> receiver
> >> has posted a receive operation which its sending will satisfy.  In most
> cases,
> >> this means that a Requester (i.e. one sending RPC Calls) MUST NOT send
> an
> >> RPC-over-RDMA header with the RDMA_ERROR procedure.  Similarly, a
> Responder
> >> (i.e. one sending RPC Replies) MUST silently discard RDMA_ERROR
> procedures.
> >
> > I don't recall that the issue that prompted the addition of the
> > original text was the requirement for a posted Receive. That
> > might be slightly revisionist.
> >
> > Though it is true sending an RDMA_ERROR when there is no Receive
> > waiting will likely result in loss of connection, I think the
> > typical scenario is that RDMA_ERROR is in response to a previous
> > message; thus missing a Receive would be an implementation bug.
>
> Why is this particular RDMA_ERROR so important? It seems to me like
> a ton of normative text for a version mismatch, which basically
> should never happen.


If we need to upgrade to v2, then we will have version mismatches.  The
spec as a whole devotes a lot of attention to version negotiation,
Including requirements that certain structures and values be maintained as
they are, for all r-o-r versions.

If anything, changing "silently discard" to
> "close the connection" would be just as appripriat.
>

No.  That would be a substantive change which we cannot make via an errata.
With the submitted errata we clarify the existing statement, and can move
forward with such a basic change as you are suggesting.


> Can someone motivate the scenario for me?
>

We have a number of weaknesses in v1, and we adopted your suggestions
(thanks) to correct them in v2.   To effect that transition effectively we
need a workable version negotiation scheme.

>
> > "In most cases," is not appropriate with MUST/MUST NOT. We could
> > stipulate that the exact cases where these requirements hold is
> > when sending ERR_CHUNK. These requirements do not hold for ERR_VERS.
>
> I'll go further - "in most cases" isn't appropriate for a spec.
>
> Tom.
>
> >> However, in the case of providing an RDMA_ERROR headers containing an
> error
> >> code of ERR_VERS, such a schema is not realizable, since there is no
> way for
> >> a receiver who does not support a particular version, to determine
> whether
> >> an RPC Call or Reply is being sent, leaving the receiver uncertain as
> to whether
> >> it is being Addressed as a Requester or a Responder, leaving it unable
> to
> >> participate in version negotiation.
> >
> > The particular issue is that either:
> >
> > - the Sender of the message with the unsupported version might be
> > using a procedure of the new protocol version that is not supported
> > in the protocol version the Receiver supports, or
> >
> > - the Sender of the message with the unsupported version might be
> > using a procedure that does not bear an RPC message or any other
> > indication of message direction.
> >
> > Thus the Receiver would not be able to determine the direction of
> > the incoming message.
> >
> > I'm not convinced that RFC 8166 Section 4.2 is an appropriate place
> > to explain this reasoning. (Stating it here in the errata is OK).
> > The above could be dropped in the Corrected text.
> >
> >
> >> In the case of version errors, the
> >> implementation is to rely on the assumption that forward direction
> requests
> >> are being done and reserve direction requests only done once the
> version is
> >> properly negotiated.
> >
> > Shorter:
> >
> > "For the purpose of version negotiation, the receiver is to assume
> > that reverse-direction operation is started only once the connection's
> > transport protocol version has been fixed using forward direction
> > operations."
> >
> > One problem with this is that reverse-direction operation is defined
> > in a separate RFC (8167).
> >
> >
> >> As a result, such messages MUST NOT be sent by the
> >> client and MUST be silently discarded by servers.
> >
> > I'd like to confirm that what the reporter intended in the second
> > sentence above was "client" and "servers" and not "Requester" and
> > "Responders".
> >
> >
> >> Notes
> >> -----
> >> Even if one feels that this is not an appropriate correction, the
> existing text must be fixed somehow.   In assuming that the terms Requester
> and Responder can be used this way in this context is likely to result in
> some implementers concluding that version errors can never be sent while
> other might be unabble to coonclude that given the effort expended in the
> spec to make such errors be interpretable by anf rpc-over-rdma version.
> >>
> >> Instructions:
> >> -------------
> >> This erratum is currently posted as "Reported". If necessary, please
> >> use "Reply All" to discuss whether it should be verified or
> >> rejected. When a decision is reached, the verifying party
> >> can log in to change the status and edit the report, if necessary.
> >>
> >> --------------------------------------
> >> RFC8166 (draft-ietf-nfsv4-rfc5666bis-11)
> >> --------------------------------------
> >> Title               : Remote Direct Memory Access Transport for Remote
> Procedure Call Version 1
> >> Publication Date    : June 2017
> >> Author(s)           : C. Lever, Ed., W. Simpson, T. Talpey
> >> Category            : PROPOSED STANDARD
> >> Source              : Network File System Version 4
> >> Area                : Transport
> >> Stream              : IETF
> >> Verifying Party     : IESG
> >
> > --
> > 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
>