Re: [nfsv4] NFS over QUIC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bruce-

> On Sep 3, 2020, at 5:52 PM, J. Bruce Fields <bfields@xxxxxxxxxxxx> 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.


> 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@xxxxxxxxx






[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux