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

Chuck Lever <chuck.lever@oracle.com> Mon, 06 June 2016 15:17 UTC

Return-Path: <chuck.lever@oracle.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 BB3A412D7DF for <nfsv4@ietfa.amsl.com>; Mon, 6 Jun 2016 08:17:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.646
X-Spam-Level:
X-Spam-Status: No, score=-5.646 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.426, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham autolearn_force=no
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 8bhsPf-tIetn for <nfsv4@ietfa.amsl.com>; Mon, 6 Jun 2016 08:17:40 -0700 (PDT)
Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5C43D12D7D4 for <nfsv4@ietf.org>; Mon, 6 Jun 2016 08:17:40 -0700 (PDT)
Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u56FHcYX003389 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 6 Jun 2016 15:17:39 GMT
Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0021.oracle.com (8.13.8/8.13.8) with ESMTP id u56FHb1O002937 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 6 Jun 2016 15:17:38 GMT
Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by aserv0121.oracle.com (8.13.8/8.13.8) with ESMTP id u56FHad1004689; Mon, 6 Jun 2016 15:17:37 GMT
Received: from anon-dhcp-171.1015granger.net (/68.46.169.226) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 06 Jun 2016 08:17:36 -0700
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <CADaq8jf17P41ft2mnFhSEWi6oM0-D7KUEshdUof4SnQUUSbaWg@mail.gmail.com>
Date: Mon, 06 Jun 2016 11:17:35 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <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> <CADaq8jf17P4! 1ft2mnFhSEWi6oM0-D7KUEshdUof4SnQUUSbaWg@mail.gmail.com>
To: David Noveck <davenoveck@gmail.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: userv0021.oracle.com [156.151.31.71]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/yOLE-LEHJAweqL4DmrECz2rGbco>
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 15:17:41 -0000

> 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