Re: [nfsv4] AD Evaluation for draft-ietf-nfsv4-rpcrdma-bidirection-05

Chuck Lever <chuck.lever@oracle.com> Tue, 10 January 2017 23:02 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 25F0E1295F7; Tue, 10 Jan 2017 15:02:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.419
X-Spam-Level:
X-Spam-Status: No, score=-7.419 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=-3.199, 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 M8qHoYrrnWuJ; Tue, 10 Jan 2017 15:02:04 -0800 (PST)
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 99C40127ABE; Tue, 10 Jan 2017 15:02:04 -0800 (PST)
Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v0AN22db004747 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 10 Jan 2017 23:02:02 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0021.oracle.com (8.13.8/8.14.4) with ESMTP id v0AN21EI030607 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 10 Jan 2017 23:02:02 GMT
Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v0AN21Zm029531; Tue, 10 Jan 2017 23:02:01 GMT
Received: from anon-dhcp-171.1015granger.net (/68.46.169.226) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 10 Jan 2017 15:02:01 -0800
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <CAKKJt-eMeTaVxSUctAjvimKGJPf=7sXpoXa8Ky6MSsYXToy5MA@mail.gmail.com>
Date: Tue, 10 Jan 2017 18:02:00 -0500
Content-Transfer-Encoding: quoted-printable
Message-Id: <B7F5E6A3-9E31-4F63-BF2A-9B931F64A56E@oracle.com>
References: <CAKKJt-fuKMwX06PerWzxBdBqQ_=eMvhQKUdSDb5xLsSX47q=yw@mail.gmail.com> <6ED233CF-5ED5-4C64-B9BD-F04E0BED0445@oracle.com> <CAKKJt-eMeTaVxSUctAjvimKGJPf=7sXpoXa8Ky6MSsYXToy5MA@mail.gmail.com>
To: Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: aserv0021.oracle.com [141.146.126.233]
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/b6x2OPrq-2opfs-FUpuNy6YzYEg>
Cc: draft-ietf-nfsv4-rpcrdma-bidirection@ietf.org, NFSv4 <nfsv4@ietf.org>
Subject: Re: [nfsv4] AD Evaluation for draft-ietf-nfsv4-rpcrdma-bidirection-05
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: Tue, 10 Jan 2017 23:02:06 -0000

> On Jan 10, 2017, at 5:13 PM, Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com> wrote:
> 
> Hi, Chuck,
> 
> On Tue, Jan 10, 2017 at 3:47 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
> Again, thanks for your review! Responses below.
> 
> Oh, thank YOU. You responded while I still have this draft in my solid state memory :-) ...
> 
> It looks like we're good except for the last point.
>  
> > On Jan 10, 2017, at 4:32 PM, Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com> wrote:

[ snipped ]

> > In this text,
> >
> >    When message direction is not fully determined by context (e.g.,
> >    suggested by the definition of the RPC-over-RDMA version that is in
> >    use) or by an accompanying RPC message payload with a call direction
> >    field, it is not possible for the receiver to tell with certainty
> >    whether the header credit value is a request or grant.  In such
> >    cases, the receiver MUST NOT use the header's credit value.
> >
> > does RDMA work at all, if the credit value can't be used?
> 
> What this means is the receiver MUST NOT update its credit accounting
> based on the information in this header. These foggy situations should
> be exceptionally rare.
> 
> "MUST ignore" might be more appropriate.
> 
> I think what I was thinking about, is whether this situation can lead to deadlock.

The credit grant value has to be ignored whenever the forward and backward
grants are not the same value (which is typical in current implementations).

With the current set of protocols, the only case like this is RDMA_ERROR,
which is almost never used. Ignoring the credit value for those messages
doesn't seem problematic.

If the backward credit grant (which is likely to be smaller) is suddenly
used in the forward direction, for that one message, the forward requester
would wait for any outstanding replies before sending more requests. The
next message from the responder would restore the forward credit grant to
its correct value.

I don't think a deadlock could occur unless the grant value went to zero,
and that is already forbidden by rfc5666bis.

Another way to address this I suppose would be to ensure the grant values
in both directions are always the same.


> I guess I should back up and ask a more basic question, which is whether you'd be able to recognize that this situation applies from looking at the definition of the RPC-over-RDMA version, so you could just say "I'm not going to do bidirectional" when a transport connection is established, rather than trying to figure out that there's a problem during request processing.

An implementer would be able to tell where these corner cases are, since
her implementation has to ignore the credit value in those cases. But
maybe I'm missing something.


--
Chuck Lever