Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp923344pxk; Thu, 3 Sep 2020 16:49:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUtfO0gIg7I6Y1/k1tdBMKdKK7zJ+tuhm70hpMKLS9sgkrurTaCV06zgoHRbgXmIw7mo5v X-Received: by 2002:a17:907:3301:: with SMTP id ym1mr5010449ejb.367.1599176947184; Thu, 03 Sep 2020 16:49:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599176947; cv=none; d=google.com; s=arc-20160816; b=RmhPaNqyJ3QR/cANBtBI0vIuadT+301f8/q8GVdrZjH+ppTSrF5mj0DiLiz0mcjfNQ 6lPHlIvNI0PP7rUc7pZJEjYSebcVJPtf4PzftUyaiNENUx+wKq0yU7YB+tNh4xKlHzja aI1Ul1jlrZO0q9bLTMdHzg62HNnGYSc7LKMQXqQUx2Z4BNR0vbMjlHHwdADHenfzzWg9 9VGDscaHIylLeBooGS/9n5iEaej4apNSqFjpknp+2aJXuPGFQJ27sQ23VbB07hEnGa+j id4sXy5anoMskM6ZLXw5pv2Crz67pve/pmiSsXc9Kt2Pc9YtpUE3X5dCput6xnoB1AWX 1SQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version:dkim-signature; bh=lwfq6FpRJclrB1/WzyzhGXyWxqVY2r+obdBZ8s9OSrA=; b=qy75i0SYwrbCvwQFfBR96BUgHVB5FF3bAaqBlyWeHEEqqaEIvnmLyZ5I3ie6dnzG/r yQxtzpxX8Q8fyp2YZKh0psk1dosCFVvsDNj+M2e4ko9Vt/SxOmumZgxYrxPFj1dJRxOJ kCX6pdD/yrEofwfysA6hwpWuaNLgwi3MvuH6Ck9a/hhzAFyiV7NyEuYPH/xJUMBgnGET S9hIzGqw1e7TsIK7Id4fM24F/LcOD/Wuj+4o/VcOQsAs1fN6mevukHuCehz6ll+GkTzq 4DH9vVqXX/toHJzVFXS/4dsY+WX/mMYYt4b/QRC0jb3i+iiNHAAxUTOjBnAjThxVlZyW Ay5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UqEDZU+n; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f12si2901028ejf.82.2020.09.03.16.48.30; Thu, 03 Sep 2020 16:49:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UqEDZU+n; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727804AbgICXsX (ORCPT + 99 others); Thu, 3 Sep 2020 19:48:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725782AbgICXsW (ORCPT ); Thu, 3 Sep 2020 19:48:22 -0400 Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2880DC061244 for ; Thu, 3 Sep 2020 16:48:22 -0700 (PDT) Received: by mail-qt1-x836.google.com with SMTP id n10so3400656qtv.3 for ; Thu, 03 Sep 2020 16:48:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=lwfq6FpRJclrB1/WzyzhGXyWxqVY2r+obdBZ8s9OSrA=; b=UqEDZU+nV8uXVgJ5TSjf/S7LqNd+pjxKPMWrc1Z3iOGEOYHhsU0l0AYF1dM+pi11jU nMutSXg5nP+YKoaM+NVNP0lOF3Xw5Ecbfw/10iHnVmBkZGqsfNmDRfL53jPRayU0Z4bJ kX0RFJuV7Qo5krbN4QM1HZWphwT5rUzkr6Wj5dcAZYzsbB9MxaAn1qbzCqREnDUx3p4n 9nk++rLD0RWvYquC8pKutd6psctL0QOUsGxBGxCJz9z/gZW2N1tIKnH94/h81Eu3tajD QSSSlRLgxXrSTySNiwscnD6LD+K8RNWjzmGTCPcxU3MMORxaj3o7K/7961GHSUAHKjZm jveA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=lwfq6FpRJclrB1/WzyzhGXyWxqVY2r+obdBZ8s9OSrA=; b=YlP3UX+bcrRsZhlvRRTHQQiDSMl1o3nk7uDgOMWa4YK5RNApAhGd5jGBpzWoLQl1be dgKSisOQfVQkJyqNy6EaMRV0C/3ioW8/ogHGYIl4/NsSln9UzQ/fovyecvWoHNxaYppj A/U8hMNacIegOGIzM5JY7t0mRodV77uFywSRukJgffTAPcJ9YVF/FzybNXnF32dqWi9g wI+DAT6AEKBEVGNKjmlAql1E0Ktsi1hIq7mXi4H0EzRnJ8aUgeuXVvt0J0LSeLjDiXSS HOk4rxOwzfvaW0xhxWnkPafwsbCpEXAgMKWrpA+ui7nNoTpNlovkK5foii8xfQLFqMkZ HD0w== X-Gm-Message-State: AOAM530H/rns/iiZ32+a0AvMNSNB7tFHuRLzwsc17aiBjasfGLKXKhmM gCg7HOjZQi5DemKEBfUw8Adox7hPejc= X-Received: by 2002:ac8:6b53:: with SMTP id x19mr6048113qts.296.1599176901379; Thu, 03 Sep 2020 16:48:21 -0700 (PDT) Received: from anon-dhcp-152.1015granger.net (c-68-61-232-219.hsd1.mi.comcast.net. [68.61.232.219]) by smtp.gmail.com with ESMTPSA id z37sm3400241qtz.67.2020.09.03.16.48.20 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Sep 2020 16:48:20 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.1\)) Subject: Re: [nfsv4] NFS over QUIC From: Chuck Lever In-Reply-To: <20200903215242.GA4788@fieldses.org> Date: Thu, 3 Sep 2020 19:48:19 -0400 Cc: Linux NFS Mailing List , nfsv4@ietf.org, stfrench@microsoft.com Content-Transfer-Encoding: 7bit Message-Id: References: <20200903215242.GA4788@fieldses.org> To: Bruce Fields X-Mailer: Apple Mail (2.3608.120.23.2.1) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Hi Bruce- > On Sep 3, 2020, at 5:52 PM, J. Bruce Fields 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@gmail.com