From: Jeff Layton <jlayton@poochiereds.net>
To: bfields@fieldses.org, trond.myklebust@primarydata.com
Cc: schumaker.anna@gmail.com, linux-nfs@vger.kernel.org
Subject: Re: [PATCH 0/4] nfs/nfsd/sunrpc: enforce requirement for congestion control protocols in NFSv4
Date: Thu, 23 Feb 2017 12:17:33 -0500 [thread overview]
Message-ID: <1487870253.3448.4.camel@poochiereds.net> (raw)
In-Reply-To: <20170223170337.10686-1-jlayton@redhat.com>
On Thu, 2017-02-23 at 12:03 -0500, Jeff Layton wrote:
> RFC5661 says:
>
> Where an NFSv4.1 implementation supports operation over the IP
> network protocol, any transport used between NFS and IP MUST be among
> the IETF-approved congestion control transport protocols.
>
> ...and RFC7530 has similar verbiage. The NFS server has never enforced
> this requirement, however, so a user could issue NFSv4 calls against
> the server via UDP.
>
> 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. It also has knfsd skip registering a UDP
> port for NFSv4, using the same flags.
>
> Lightly tested by hand, but it's fairly straightforward.
>
> Jeff Layton (4):
> sunrpc: flag transports as using IETF approved congestion control
> protocols
> sunrpc: turn bitfield flags in svc_version into bools
> nfs/nfsd/sunrpc: enforce congestion control protocol requirement 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 | 22 +++++++++++++++++++++-
> net/sunrpc/svcsock.c | 1 +
> net/sunrpc/xprtrdma/svc_rdma_transport.c | 2 ++
> 9 files changed, 44 insertions(+), 15 deletions(-)
>
I probably should have sent this as an RFC first. I'm not 100% clear on
whether PROG_MISMATCH is the right return code there.
Also, there is still a small wart after this patchset. The high/low
program versions reported look a little odd:
$ rpcinfo -T udp knfsdsrv nfs 4
rpcinfo: RPC: Program/version mismatch; low version = 3, high version = 4
program 100003 version 4 is not available
We could try to fix this and report different values depending on the
socket type, but I'm not sure I really care. AFAIK, this is just
informative anyway, and it's not _technically_ wrong. The server does
support version 4, just not the UDP socket where we sent the RPC ping.
Thoughts?
--
Jeff Layton <jlayton@poochiereds.net>
next prev parent reply other threads:[~2017-02-23 17:27 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
2017-02-23 20:00 ` Jeff Layton
2017-02-23 20:00 ` Jeff Layton
2017-02-23 20:06 ` Tom Talpey
2017-02-23 20:06 ` Tom Talpey
2017-02-23 20:11 ` J. Bruce Fields
2017-02-23 20:11 ` J. Bruce Fields
2017-02-23 20:26 ` Jason Gunthorpe
2017-02-23 20:26 ` Jason Gunthorpe
2017-02-23 20:33 ` Tom Talpey
2017-02-23 20:33 ` Tom Talpey
2017-02-23 20:55 ` Jason Gunthorpe
2017-02-23 20:55 ` Jason Gunthorpe
2017-02-24 15:08 ` Tom Talpey
2017-02-24 15:08 ` Tom Talpey
2017-02-24 17:17 ` Jeff Layton
2017-02-24 17:17 ` Jeff Layton
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 ` Jeff Layton [this message]
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
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=1487870253.3448.4.camel@poochiereds.net \
--to=jlayton@poochiereds.net \
--cc=bfields@fieldses.org \
--cc=linux-nfs@vger.kernel.org \
--cc=schumaker.anna@gmail.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.