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

Chuck Lever <chuck.lever@oracle.com> Mon, 23 May 2016 14:10 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 A45E112D093 for <nfsv4@ietfa.amsl.com>; Mon, 23 May 2016 07:10:59 -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 dPFJqJlSF61t for <nfsv4@ietfa.amsl.com>; Mon, 23 May 2016 07:10:57 -0700 (PDT)
Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) (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 4A30212D8C4 for <nfsv4@ietf.org>; Mon, 23 May 2016 07:10:56 -0700 (PDT)
Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u4NEAteY024772 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for <nfsv4@ietf.org>; Mon, 23 May 2016 14:10:55 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.13.8) with ESMTP id u4NEAsM8017034 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <nfsv4@ietf.org>; Mon, 23 May 2016 14:10:55 GMT
Received: from abhmp0010.oracle.com (abhmp0010.oracle.com [141.146.116.16]) by aserv0122.oracle.com (8.13.8/8.13.8) with ESMTP id u4NEAqR5021397 for <nfsv4@ietf.org>; Mon, 23 May 2016 14:10:53 GMT
Received: from anon-dhcp-171.1015granger.net (/68.46.169.226) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 23 May 2016 07:10:52 -0700
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: <E2B31EDF-74D6-4CC8-8F6C-674C85498B56@oracle.com>
Date: Mon, 23 May 2016 10:10:51 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <E0C18ECC-7D15-447F-9DA7-654E1EBF6C3B@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>
To: NFSv4 <nfsv4@ietf.org>
X-Mailer: Apple Mail (2.3124)
X-Source-IP: userv0022.oracle.com [156.151.31.74]
Archived-At: <http://mailarchive.ietf.org/arch/msg/nfsv4/X4F_LqlvXz9kXVPhm1hmZQ7Aq1M>
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, 23 May 2016 14:10:59 -0000

> On May 20, 2016, at 3:15 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
> 
> 
>> On May 20, 2016, at 2:51 PM, Karen <karen.deitke@oracle.com> wrote:
>> 
>> 
>> 
>> On 5/20/16 12:44 PM, Chuck Lever wrote:
>>>> On May 20, 2016, at 2:30 PM, Karen <karen.deitke@oracle.com> wrote:
>>>> 
>>>> 
>>>> 
>>>> On 5/20/16 10:41 AM, Chuck Lever wrote:
>>>>>> 
>>>>>> 4.1
>>>>>> 
>>>>>> "When message direction is not fully determined by context"
>>>>>> 
>>>>>> "fully determined by context" thats confusing, what does that really mean? I think this means when the rdma header does not directly indicate if the message is a call or reply, but the wording is confusing.
>>>>> That means that in some cases the receiver can guess
>>>>> accurately which direction the message was going, based
>>>>> on the context of the operation, even without having
>>>>> an RPC message payload.
>>>>> 
>>>>> I'm open to suggestions.
>>>>> 
>>>>> I think some prefer that the document simply state that
>>>>> direction is always unknown in cases where an RPC
>>>>> message payload is not present. That kind of opens a
>>>>> can of worms with RDMA_ERROR, which is needed to report
>>>>> that the client does not support backward direction
>>>>> operation.
>>>> I don't think that it can always absolutely be clear which direction without the RPC header. Or am I misunderstanding RPC payload? I'm taking that to mean the RPC header, but maybe you are referring to the NFS data in the rpc payload?
>>> "Context" here means that if the receiver can tell
>>> by other means (like, there are no other outstanding
>>> operations). So no, it's not always going to be clear.
>>> In those cases, direction is not known.
>> I don't think there is ever a 100% way to know the direction without the rpc header's call or reply field.
> 
> I don't think what I wrote contradicts that statement, but
> it does allow latitude for innovation to close this hole
> in other ways.
> 
> 
>> Even if there is an outstanding request, and it is for the xid that is defined in the rdma header, being that the xid is not unique between client and server, there still exists, though extremely small, a possiblity that this is a new request that just so happens to have the same xid and is not actually the reply to an outstanding operation.
> 
> The only case in RPC-over-RDMA Version One where this is
> a concern is RDMA_ERROR. The other two valid procs are
> RDMA_NOMSG and RDMA_MSG, and both of those have RPC
> message payloads.
> 
> When a client receives an RDMA_ERROR, that normally means
> one of its forward requests had a problem.
> 
> Typical RPC-over-RDMA Version One client implementations
> don't send an error to a server due to a problem with a
> forward reply. We can probably say the same about a
> server sending an RDMA_ERROR to a client in response
> to a bad backward reply. (And, rfc5666bis could be
> enhanced to suggest or require that requesters don't
> send RDMA_ERROR in response to a bogus reply).

OK, this idea is growing on me.

What do people think of updating rfc5666bis to restrict
RDMA_ERROR to be sent only by responders? This would be
for RPC-over-RDMA V1 only, of course.

The reason to do this would be to eliminate the ambiguity
of the meaning of the XID and credit value, due to the
absence of an RPC message payload with a direction field
in it.

I'm not aware of any current requester implementation
that can send an RDMA_ERROR message from its reply
handler.


> So the only instance where a server might receive an
> RDMA_ERROR message is when it has sent a backward
> request that the client did not like.
> 
> Thus: context indicates what direction that RDMA_ERROR
> message is going.
> 
> 
> --
> Chuck Lever
> 
> 
> 
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4

--
Chuck Lever