Re: [nfsv4] NFS over QUIC

Bruce Fields <bfields@fieldses.org> Fri, 04 September 2020 00:32 UTC

Return-Path: <bfields@fieldses.org>
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 E26643A140E for <nfsv4@ietfa.amsl.com>; Thu, 3 Sep 2020 17:32:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level:
X-Spam-Status: No, score=-2.1 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, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=fieldses.org
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 5oCpUOQpoRjh for <nfsv4@ietfa.amsl.com>; Thu, 3 Sep 2020 17:32:44 -0700 (PDT)
Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) (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 03E043A140C for <nfsv4@ietf.org>; Thu, 3 Sep 2020 17:32:43 -0700 (PDT)
Received: by fieldses.org (Postfix, from userid 2815) id 008CF1C25; Thu, 3 Sep 2020 20:32:42 -0400 (EDT)
DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org 008CF1C25
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fieldses.org; s=default; t=1599179563; bh=dLAB1MPBVRT7GKapn7gbbNjUolzi9JXeotoop74XbFs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ik3rQwmx2aKZ9mSf86uK6FtCSmUEE5+lVYMnTKVMy7CoBa+N3sQ0CgWHfpoOTpleZ sfMB4IkdFmJzkBBEhOm2Wq1ETOT/mWg3xRRIWczLF8fI8/ix8Ps1Zp3r/o+0TAERa3 84f9vW5bg+kgTFfOnNk4RbL8IB57cp4MmtBcJKeY=
Date: Thu, 03 Sep 2020 20:32:42 -0400
From: Bruce Fields <bfields@fieldses.org>
To: Chuck Lever <chucklever@gmail.com>
Cc: Linux NFS Mailing List <linux-nfs@vger.kernel.org>, nfsv4@ietf.org, stfrench@microsoft.com
Message-ID: <20200904003242.GB4788@fieldses.org>
References: <20200903215242.GA4788@fieldses.org> <EFDBAD41-E0BE-4AEF-8E37-18A414CE8588@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <EFDBAD41-E0BE-4AEF-8E37-18A414CE8588@gmail.com>
User-Agent: Mutt/1.5.21 (2010-09-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/fJxZGlHTNO8uuCCO8MV24BGJif4>
Subject: Re: [nfsv4] NFS over QUIC
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: Fri, 04 Sep 2020 00:32:46 -0000

On Thu, Sep 03, 2020 at 07:48:19PM -0400, Chuck Lever wrote:
> Hi Bruce-
> 
> > On Sep 3, 2020, at 5:52 PM, J. Bruce Fields <bfields@fieldses.org> wrote:
> > 
> > I've been thinking about what might be required for NFS to run over
> > QUIC.
> > 
> > Also cc'ing Steve French in case he's thought about this for CIFS/SMB.
> > 
> > I don't have real plans.  For Linux, I don't even know if there's a
> > kernel QUIC implementation planned yet.
> > 
> > QUIC uses TLS so we'd probably steal some stuff from the NFS/TLS draft:
> > 
> > 	https://datatracker.ietf.org/doc/draft-cel-nfsv4-rpc-tls/
> 
> The link to the latest version of that document is
> 
> https://datatracker.ietf.org/doc/draft-ietf-nfsv4-rpc-tls/
>
> > For example, section 4.3, which explains how to authenticate on top of
> > an already-encrypted session, should also apply to QUIC.
> 
> Most of the document's content will be re-used for defining
> RPC-over-QUIC, for example the ALPN defined in Section 8.2.
> Lars Eggert, a chair of the QUIC WG, has been helping guide
> the RPC-over-TLS effort with an eye towards using QUIC for
> RPC when QUIC becomes more mature.
> 
> I thought the plan was to write a specification of RPC-over-
> QUIC as a new RPC transport type with a netid and uaddr along
> with a definition of the transport semantics (a la TI-RPC).
> The document would need to explain record marking, peer
> authentication, how to use multi-path and multi-stream support,
> and so on.
> 
> Making NFS work on that transport should then be straightforward
> enough that perhaps additional standards work wouldn't be
> necessary.

Oh, OK, good.  Sounds like you're way ahead of me, then, I didn't know
there was a plan.

--b.

> > QUIC runs over UDP, so I think all that would be required to negotiate
> > support would be to attempt a QUIC connection to port 2049.
> > 
> > The "Transport Layers" section in the NFS RFCs:
> > 
> > 	https://tools.ietf.org/html/rfc5661#section-2.9
> > 
> > requires transports support reliable and in-order transmission, forbids
> > clients from retrying a request unless a connection is lost, and forbids
> > servers from dropping a request without closing a connection.  I'm still
> > vague on how those requirements interact with QUIC's connection
> > management and 0-RTT reconnection.
> > 
> > https://www.ietf.org/id/draft-ietf-quic-applicability-07.txt looks
> > useful, as a guide for applications running over QUIC.  It warns that
> > connections can time out fairly quickly.  For timely callbacks over NFS
> > sessions, that means we need the client to ping the server regularly.
> > Sounds like that's what they do for HTTP/QUIC to make server push
> > notifications work:
> > 
> > 	https://tools.ietf.org/html/draft-ietf-quic-http-09#section-5
> > 
> > 	HTTP clients are expected to use QUIC PING frames to keep
> > 	connections open.  Servers SHOULD NOT use PING frames to keep a
> > 	connection open.  A client SHOULD NOT use PING frames for this
> > 	purpose unless there are responses outstanding for requests or
> > 	server pushes.
> > 
> > QUIC allows multiple streams per connection--I wonder how we might use
> > that.  RFC 5661 justifies the requirement for an ordered transport with:
> > 
> > 	Ordered delivery simplifies detection of transmit errors, and
> > 	simplifies the sending of arbitrary sized requests and responses
> > 	via the record marking protocol.
> > 
> > So as long as we don't try to split a single RPC among streams, I think
> > we're OK.  Would a stream per session slot be reasonable?  I'm not sure
> > what the cost of a stream is.
> > 
> > Do we need to add a new universal address type so the protocol can
> > specify QUIC endpoints when necessary?  (For server-to-server-copy, pnfs
> > file layouts, fs_locations, etc.)  All QUIC needs is an IP address and
> > maybe a port, so maybe the existing UDP/TCP addresses are enough?
> 
> --
> Chuck Lever
> chucklever@gmail.com
> 
>