All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@redhat.com>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: "J. Bruce Fields" <bfields@fieldses.org>,
	Trond Myklebust <trond.myklebust@primarydata.com>,
	Anna Schumaker <schumaker.anna@gmail.com>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>,
	Tom Talpey <tom@talpey.com>,
	jgunthorpe@obsidianresearch.com
Subject: Re: [PATCH v2 0/4] nfs/nfsd/sunrpc: enforce NFSv4 transport requirements
Date: Fri, 24 Feb 2017 13:53:33 -0500	[thread overview]
Message-ID: <1487962413.3314.6.camel@redhat.com> (raw)
In-Reply-To: <E56294C8-2F67-4279-A266-3C1E3B18F80C@oracle.com>

On Fri, 2017-02-24 at 10:38 -0800, Chuck Lever wrote:
> > On Feb 24, 2017, at 10:25 AM, Jeff Layton <jlayton@redhat.com> wrote:
> > 
> > v2: comment clarifications, and commit log cleanup. No functional changes.
> > 
> > RFC5661 says:
> > 
> >   NFSv4.1 works over Remote Direct Memory Access (RDMA) and non-RDMA-
> >   based transports with the following attributes:
> > 
> > 
> >   o  The transport supports reliable delivery of data, which NFSv4.1
> >      requires but neither NFSv4.1 nor RPC has facilities for ensuring
> >      [34].
> > 
> >   o  The transport delivers data in the order it was sent.  Ordered
> >      delivery simplifies detection of transmit errors, and simplifies
> >      the sending of arbitrary sized requests and responses via the
> >      record marking protocol [3].
> > 
> > ...and then some hand-wavy stuff about congestion control. RFC7530
> > doesn't mention needing reliable and ordered delivery, but it does need
> > congestion control.
> > 
> > In practical terms, that means we should be excluding NFSv4 from UDP
> > transports. The NFS server has never enforced this requirement,
> > however, so a user could issue NFSv4 calls against the server via UDP.
> 
> RPC-over-RDMA Version One requires the use of RDMA Reliable
> Connections, which is a layer above the link layer that
> provides reliable, in-order delivery using connection
> semantics. This meets all stated transport requirements in
> RFC 5661.
> 
> The language of RFC 5661 says that UDP by itself must not be
> used for NFSv4. IMO the use of Reliable Connections with
> RPC-over-RDMA makes this a non-issue for NFSv4, even for RoCE
> v2.
> 
> rfc5667bis-06 was submitted this morning to address this.
> 

Thanks, I may plagiarize you and update the comment in rdma_create_xprt
if that's ok:

+       /*
+        * RPC-over-RDMA Version One requires the use of RDMA Reliable
+        * Connections, which is a layer above the link layer that provides
+        * reliable, in-order delivery using connection semantics.
+        */

I won't bother to re-post just for that though.

> > This patchset adds a small bit of infrastructure to the sunrpc layer to
> > enforce this requirement, and has the nfs and nfsd layers set the
> > appropriate flags for it on their server-side transports. It also has
> > the rpcbind client skip registering the protocol version on a UDP port
> > when that flag is set.
> > 
> > Lightly tested by hand, but it's fairly straightforward.
> > 
> > Jeff Layton (4):
> >  sunrpc: turn bitfield flags in svc_version into bools
> >  sunrpc: flag transports as having both reliable and ordered delivery,
> >    and congestion control
> >  nfs/nfsd/sunrpc: enforce transport requirements for NFSv4
> >  sunrpc: don't register UDP port with rpcbind when version needs
> >    congestion control
> > 
> > fs/nfs/callback_xdr.c                    |  6 ++++--
> > fs/nfsd/nfs2acl.c                        |  1 -
> > fs/nfsd/nfs3acl.c                        |  1 -
> > fs/nfsd/nfs4proc.c                       | 13 +++++++------
> > include/linux/sunrpc/svc.h               | 12 ++++++++----
> > include/linux/sunrpc/svc_xprt.h          |  1 +
> > net/sunrpc/svc.c                         | 23 ++++++++++++++++++++++-
> > net/sunrpc/svcsock.c                     |  1 +
> > net/sunrpc/xprtrdma/svc_rdma_transport.c |  8 ++++++++
> > 9 files changed, 51 insertions(+), 15 deletions(-)
> > 
> > -- 
> > 2.9.3
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> Chuck Lever
> 
> 
> 

-- 
Jeff Layton <jlayton@redhat.com>

  reply	other threads:[~2017-02-24 19:02 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-23 17:03 [PATCH 0/4] nfs/nfsd/sunrpc: enforce requirement for congestion control protocols in NFSv4 Jeff Layton
2017-02-23 17:03 ` [PATCH 1/4] sunrpc: flag transports as using IETF approved congestion control protocols Jeff Layton
2017-02-23 19:42   ` Tom Talpey
     [not found]     ` <2152dfdf-f847-2511-1600-6499b6ea9708-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2017-02-23 20:00       ` Jeff Layton
2017-02-23 20:00         ` Jeff Layton
     [not found]         ` <1487880034.3448.8.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-02-23 20:06           ` Tom Talpey
2017-02-23 20:06             ` Tom Talpey
     [not found]             ` <65056db6-f30a-c44d-b01c-b549887c4895-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2017-02-23 20:11               ` J. Bruce Fields
2017-02-23 20:11                 ` J. Bruce Fields
     [not found]                 ` <20170223201109.GC11882-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2017-02-23 20:26                   ` Jason Gunthorpe
2017-02-23 20:26                     ` Jason Gunthorpe
     [not found]                     ` <20170223202609.GC26301-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-23 20:33                       ` Tom Talpey
2017-02-23 20:33                         ` Tom Talpey
     [not found]                         ` <18ef37c3-95db-9a2c-dbcb-f579672065d6-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2017-02-23 20:55                           ` Jason Gunthorpe
2017-02-23 20:55                             ` Jason Gunthorpe
     [not found]                             ` <20170223205502.GA29673-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-02-24 15:08                               ` Tom Talpey
2017-02-24 15:08                                 ` Tom Talpey
     [not found]                                 ` <4eb1da3d-2690-7647-2d85-cc574bc1d564-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2017-02-24 17:17                                   ` Jeff Layton
2017-02-24 17:17                                     ` Jeff Layton
     [not found]                                     ` <1487956644.3314.4.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-02-24 18:03                                       ` Jason Gunthorpe
2017-02-24 18:03                                         ` Jason Gunthorpe
2017-02-23 20:32                   ` Jeff Layton
2017-02-23 20:32                     ` Jeff Layton
2017-02-23 20:17               ` Chuck Lever
2017-02-23 20:17                 ` Chuck Lever
2017-02-23 20:15     ` Chuck Lever
2017-02-23 17:03 ` [PATCH 2/4] sunrpc: turn bitfield flags in svc_version into bools Jeff Layton
2017-02-23 17:03 ` [PATCH 3/4] nfs/nfsd/sunrpc: enforce congestion control protocol requirement for NFSv4 Jeff Layton
2017-02-23 17:03 ` [PATCH 4/4] sunrpc: don't register UDP port with rpcbind when version needs congestion control Jeff Layton
2017-02-23 17:17 ` [PATCH 0/4] nfs/nfsd/sunrpc: enforce requirement for congestion control protocols in NFSv4 Jeff Layton
2017-02-24 18:25 ` [PATCH v2 0/4] nfs/nfsd/sunrpc: enforce NFSv4 transport requirements Jeff Layton
2017-02-24 18:25   ` [PATCH v2 1/4] sunrpc: turn bitfield flags in svc_version into bools Jeff Layton
2017-02-24 18:25   ` [PATCH v2 2/4] sunrpc: flag transports as having both reliable and ordered delivery, and congestion control Jeff Layton
2017-02-24 18:25   ` [PATCH v2 3/4] nfs/nfsd/sunrpc: enforce transport requirements for NFSv4 Jeff Layton
2017-02-24 18:25   ` [PATCH v2 4/4] sunrpc: don't register UDP port with rpcbind when version needs congestion control Jeff Layton
2017-02-24 18:38   ` [PATCH v2 0/4] nfs/nfsd/sunrpc: enforce NFSv4 transport requirements Chuck Lever
2017-02-24 18:53     ` Jeff Layton [this message]
2017-02-24 21:23       ` J. Bruce Fields
2017-02-24 18:53   ` Tom Talpey
2017-02-24 21:22     ` J. Bruce Fields
2017-02-24 21:25   ` J. Bruce Fields
2017-02-24 21:34     ` Jeff Layton
2017-02-24 21:44       ` J. Bruce Fields
2017-02-27 11:59         ` Jeff Layton
2017-02-27 12:08           ` Tom Talpey
2017-02-27 12:55             ` Jeff Layton
2017-02-27 14:20               ` J. Bruce Fields

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1487962413.3314.6.camel@redhat.com \
    --to=jlayton@redhat.com \
    --cc=bfields@fieldses.org \
    --cc=chuck.lever@oracle.com \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=schumaker.anna@gmail.com \
    --cc=tom@talpey.com \
    --cc=trond.myklebust@primarydata.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.