Re: [nfsv4] draft-ietf-nfsv4-rpcrdma-bidirection-03 review

David Noveck <davenoveck@gmail.com> Mon, 06 June 2016 17:10 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 F3A2712D627 for <nfsv4@ietfa.amsl.com>; Mon, 6 Jun 2016 10:10:41 -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 JaB2vTZJtNSQ for <nfsv4@ietfa.amsl.com>; Mon, 6 Jun 2016 10:10:39 -0700 (PDT)
Received: from mail-oi0-x233.google.com (mail-oi0-x233.google.com [IPv6:2607:f8b0:4003:c06::233]) (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 94BBE12D870 for <nfsv4@ietf.org>; Mon, 6 Jun 2016 10:10:38 -0700 (PDT)
Received: by mail-oi0-x233.google.com with SMTP id k23so236380643oih.0 for <nfsv4@ietf.org>; Mon, 06 Jun 2016 10:10:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=0jDaSRyAUI7KVdRvWWf4o08Tz9wiGwwa5x7fvaRMr0w=; b=bFeRXLLeTVLYn+uwZComgOu/DTFw49rKfkaUsKvuChBwrcBPsht2jk0VI/ttRKbOee lHBn8K6ZtCOSQkltgTGlz+ABc0qnf2gsSw4+tUveB+BnUEOqI3WgkXWTp+UqZt3fBi0f aq2uv7qkrBhesxvzGzlMtENIU2GD6tQ7t3dHBKAC87oGsl3UrUrbarLVVpWGnL4hQYmF JyQ0mNaDgH3Atf1I653FEWPBsSu7AK/giIdm8CBXttkwiiTpLVZcZfC1zY+fmE8ahP6M smG6VqZGccUFcc7+/XLxoJvtHYwQKT0RdFJcXVVUVDnAnLkmmbeafVTY9Scq9Dhr4fZa dBsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=0jDaSRyAUI7KVdRvWWf4o08Tz9wiGwwa5x7fvaRMr0w=; b=KQp/H/DRm2wcGpaUOEVCFOKCvdUc4t46fP9TqWVpPoLuTaQGMutNtrr5kdbSZT3xlP dTXXZAjuLz9jmTZduqR/cs1Ge1PAXZPDLOAG48G9A5U09KemI5XPEMNZbmJFQawOIQVS oIq4pGx4YbsJ5IlstYnP3yxkXpfwgCKJfINDkyo/bgMIr9j2d8m1xwKyfE0INl4EHhBN IqTWK/srPgxtQch7FPfTUUE+qlMjfVpGrYRSpCvN8pEw9ksej8lEiZpqqyq1BIfNe2L4 QuvbUSZRoBsHktSvitXwQMEkDQk0sI36GY7A4IyCsdFUU5wiQMJUXGfwpfOJyM3GvGmO ySAQ==
X-Gm-Message-State: ALyK8tIGBzwuudWoBYwVZu+igJ0d69Kbd2+tvfh7OjTyP3Xh9r6MRt/8OL2oJWMhzAYYzCx7/A5KL8Fvy0n6OQ==
X-Received: by 10.157.33.132 with SMTP id s4mr8320173otb.61.1465233037768; Mon, 06 Jun 2016 10:10:37 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.182.29.166 with HTTP; Mon, 6 Jun 2016 10:10:36 -0700 (PDT)
In-Reply-To: <EFC3267A-A89F-4538-9995-2F531D8DC14B@oracle.com>
References: <6da90b6b-bb58-d241-0d74-dc421358c97c@oracle.com> <9ECFBBD5-9359-46AB-B1CC-7FCBF06C40A8@oracle.com> <f609eba3-4294-37ae-3bb8-c7df8f648bb0@oracle.com> <0E79D0E4-9D53-4ED4-8D17-2D806C56648F@oracle.com> <567848d1-d854-ef70-8fba-33708e7e0601@oracle.com> <E2B31EDF-74D6-4CC8-8F6C-674C85498B56@oracle.com> <E0C18ECC-7D15-447F-9DA7-654E1EBF6C3B@oracle.com> <CADaq8jcgW316nLwA3LnCAmL7nAY3o6XjeQLCkV-S_Sps9g+LJw@mail.gmail.com> <4E8C421F-1A22-413C-AA2E-833C71AC6F71@oracle.com> <CADaq8jdVjt6x0MNgc7g0HCvQ9tR6yC01AdSPCiqHmEn8CMPscw@mail.gmail.com> <CADaq8jcHk4PzxhGLtsK7mBEuh0J3T54Bn3PFd==X5cdoB9pGSQ@mail.gmail.com> <46B6E3E0-4598-4A54-A091-D590BF084B7F@oracle.com> <CADaq8jeBFLT4QB9=jY0OywbDDon0eUSrafz3nDVxcORNvwpDbg@mail.gmail.com> <CADaq8jc2hEg+sk7ADPoaFKmvCQ_xWjAkP1amWz9PJDHRSnCvHw@mail.gmail.com> <B338F553-B74E-49C2-A638-2691B2A8E86D@oracle.com> <CADaq8jeybG3fx4evUhKDxXkVfpbiVSm1td9mvrN=RwrqqFtiwg@mail.gmail.com> <46F55B8B-5266-4472-BD30-D9FAEF2265AA@oracle.com> <CADaq8jf17P41ft2mnFhSEWi6oM0-D7KUEshdUof4SnQUUSbaWg@mail.gmail.com> <EFC3267A-A89F-4538-9995-2F531D8DC14B@oracle.com>
From: David Noveck <davenoveck@gmail.com>
Date: Mon, 06 Jun 2016 13:10:36 -0400
Message-ID: <CADaq8jfB4kOpAv3nKe1APu9ZswF3AcEYJYGvKBTytAix6g6eAw@mail.gmail.com>
To: Chuck Lever <chuck.lever@oracle.com>
Content-Type: multipart/alternative; boundary="001a114709aebac04105349f2654"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/fFHWD3iA4ja_21MzE4xBdPPmImI>
Cc: NFSv4 <nfsv4@ietf.org>
Subject: Re: [nfsv4] draft-ietf-nfsv4-rpcrdma-bidirection-03 review
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: Mon, 06 Jun 2016 17:10:42 -0000

> I think you're suggesting that we have a problem only
> for RDMA2_OPTIONAL, and that can be dealt with in
> rpcrdma-version-two?

That was what I was suggesting, but I just read rpcdama-version-two-01
and so I think "can be dealt with in rpcrdma-version-two" can be replaced by
"has been dealt with in rpcrdma-version-two" :-)

>> The responsibility for defining the basic structure of bidirectional
operation belongs to rpcrdma-bidirection.
>> This includes the use of two separate credit pools and the fact each
message may contain either a request or a grant applying to the credit pool
owned by the message receiver.

> OK: the receiver has to decide whether each message
> contains a credit request (the receiver is acting as
> a responder) or a credit grant (the receiver is
> acting as a requester).

Yes but I'd boil this down to the receiver deciding whether the credit
field is a request or a grant (and the
RPC-over-RDMA version telling him how to decide.

The place where this gets "interesting" is a subcase of the feature you
brought up.  If a transmission can
contain multiple rpc messages, it can be the case the sender would want to
send both requests and replies
and thus want/need to send both a request and a grant.

I think we want to be careful that, where we specify how the credit field
is to be used, we don't foreclose
passing credits or grants in other fields.    If an XMOPT_GROUP were
defined, that allowed a group of
RPC messages to be sent, the version two sender would make the direction
field reflect the majority, but
I would want it to have the option to have an other-credit field so it
could convey a request and a grant in
the same transmission.

> I might refine the text of rpcrdma-bidirection in this
> area, but otherwise I don't think there's a significant
> change needed.

there might be minor text tweaking required.


> >       • The responsibility for defining how it is to be determined,
whether any particular message has a grant or a request in the credit field
is the responsibility of the specific RPC-over-RDMA version being used.

> I might add this suggestion to rpcrdma-bidrection.

OK, bu so far I hven't seen any obvious place to put it.


> >       • The responsibility of deciding whether bidirectional operation
is OPTIONAL, REQUIRED, or not allowed is the responsibility of the specific
RPC-over-RDMA version being used.

> I'm uncertain how that aligns with rfc5666bis, which
> does not mention backwards direction operation at all.
> This implies that it is allowed, and not REQUIRED. Is
> that enough?

I think what is in 5666bis is fine.  Section 8.1 introduces it as a
potential conventional extension and references rpcrdma-bidirection.


>>       • The text that now defines how the credit field for specfic
Version One messages is interpreted as illustrative of version one only.

> Is a text change needed for this, or are you simply
> stating an operating assumption for spec writers?

I was thinking of rewriting the last paragraph of section 4.1 of
rpcrdma-bidirection to read as follows:

When message direction is not fully determined by context or by an
accompanying RPC message with a call direction field, it may not be
clear whether the header credit value is a request or grant.  In such
cases the definition of the RPC-over-RDMA version used may provide
guidance as to how the credit value is to be interpreted. In such
cases in which such guidance is not provided or is adequate, the
receiver MUST NOT use the header's credit value.

I didn't see anything else that need to change.

>>       • draft-ietf-nfsv4-rpcrdma-bidirection explicitly takes on the
responsibility for defining this for Version Two.  We have some issues to
resolve which I'll address in a later message.

> Not sure what "this" is, and not sure we want version
> two anything in rpcrdma-bidirection. Awaiting your
> later message!

The first point is that I meant to type
draft-ietf-nfsv4-rpcrdma-version-two. :-(

The issue I was referring to was dealing with cases in which deciding
whether the credit was a request or a grant was hard either:

   - The message in question is, strictly speaking, neither an RPC request
   or a reply.  I think that is now dealt with in -01

You now allow the sender to decide whether the credit is a request or a
grant and the extension is free to tell him

how to choose.


   - The transmission might contain both requests and replies as discussed
   above.

I think that can be resolved in the next iteration of
draft-cel-nfsv4-rpcrdma-version-two.



On Mon, Jun 6, 2016 at 11:17 AM, Chuck Lever <chuck.lever@oracle.com> wrote:

>
> > On Jun 4, 2016, at 6:35 AM, David Noveck <davenoveck@gmail.com> wrote:
> >
> > > Alright, then, "unreliable" might be closer to my
> > > intended meaning.
> >
> > I don't see any unreliability either.  I think we have
> > something which is difficult to generalize, because,
> > as you point out, it has an unfortunate layering issue,
> > which we are unable to fix in Version One because it
> > is embedded in the Version One XDR.  We can fix it in subsequent
> versions where we can change the XDR but we have to take extra care because
> a lot of the layering confusion is located in the four words that we have
> defined as not subject to change :-(
> >
> > > I disagree with that. Having a single credit flow, with
> > > fixed roles of which side sends a request, and which
> > > sends a grant, solves the problem simply and fully, for
> > > all message types.
> >
> > It solves the ambiguity problem but it creates a bunch of
> > new ones.  I image that the first is interoperability with existing
> implementations, who I assume are using the model in rpcrdma-bidirection as
> it is today.
> >
> > I don't see how one can implement bidirectional operation with a single
> credit pool.  The reason for credits is to ensure that there are sufficient
> preposted receives to correspond to sends that the peer makes.  Since there
> is a set of receives on each peer node then there needs to be a
> corresponding credit pool for each direction.  I don't see how you can have
> a situation in which both client and server may be requesters
> > and have them share a single credit pool.
>
> Fair enough. One set of credits for each responder on
> a connection seems to align with what's already in the
> documents, and discourages the addition of credit
> flows for new message types.
>
>
> > > It is also possible that this issue could be resolved
> > > with language in rpcrdma-version-two, and allow the
> > > one-credit-per-RPC concept to linger in V1 only.
> >
> > Or alternatively, it could apply to both V1 and those
> > parts of V2 that use the existing V1 message types.
> >
> > > I think that would mean rpcrdma-bidirection is turning
> > > into a V1-only enhancement. Bidirection would have
> > > to be partially or fully specified again in rpcrdma-
> > > version-two.
> >
> > I don't think you need to do that, if you structure/layer things
> properly (see below for an approach).  Then any
> > further specification of bidirection for version two would  only address
> how the new classes of features we want to enable in version two would
> interact with the existing bidirectional operation.  In doing that we could
> use our
> > freedom to define the needed new XDR to avoid propagating the layering
> issue that you have identified.
>
> I think you're suggesting that we have a problem only
> for RDMA2_OPTIONAL, and that can be dealt with in
> rpcrdma-version-two?
>
>
> > > Having multiple different ways to do backward
> > > direction operation is onerous for implementations.
> >
> > Agree.
> >
> > > So I'd prefer to have this addressed in rfc5666bis and
> > > rpcrdma-bidirection if we can muster it.
> >
> > So here's the proposed division of responsibility:
> >       • The responsibility for defining the basic structure of
> bidirectional operation belongs to rpcrdma-bidirection.  This includes the
> use of two separate credit pools and the fact each message may contain
> either a request or a grant applying to the credit pool owned by the
> message receiver.
>
> OK: the receiver has to decide whether each message
> contains a credit request (the receiver is acting as
> a responder) or a credit grant (the receiver is
> acting as a requester).
>
> I might refine the text of rpcrdma-bidirection in this
> area, but otherwise I don't think there's a significant
> change needed.
>
>
> >       • The responsibility for defining how it is to be determined,
> whether any particular message has a grant or a request in the credit field
> is the responsibility of the specific RPC-over-RDMA version being used.
>
> I might add this suggestion to rpcrdma-bidrection.
>
>
> >       • The responsibility of deciding whether bidirectional operation
> is OPTIONAL, REQUIRED, or not allowed is the responsibility of the specific
> RPC-over-RDMA version being used.
>
> I'm uncertain how that aligns with rfc5666bis, which
> does not mention backwards direction operation at all.
> This implies that it is allowed, and not REQUIRED. Is
> that enough?
>
>
> >       • The text that now defines how the credit field for specfic
> Version One messages is interpreted as illustrative of version one only.
>
> Is a text change needed for this, or are you simply
> stating an operating assumption for spec writers?
>
>
> >       • draft-ietf-nfsv4-rpcrdma-bidirection explicitly takes on the
> responsibility for defining this for Version Two.  We have some issues to
> resolve which I'll address in a later message.
>
> Not sure what "this" is, and not sure we want version
> two anything in rpcrdma-bidirection. Awaiting your
> later message!
>
>
> Thanks for helping me with this. Let's try to close on
> what is needed for rpcrdma-bidirection and try to get
> a fresh revision by the end of this week.
>
> --
> Chuck Lever
>
>
>
>