mbox series

[v2,00/11] client-side RPC-with-TLS

Message ID 168485183242.6613.7025123558596119858.stgit@oracle-102.nfsv4bat.org (mailing list archive)
Headers show
Series client-side RPC-with-TLS | expand

Message

Chuck Lever May 23, 2023, 2:29 p.m. UTC
Let's have a look at what is needed to support NFS in-transit
confidentiality in the Linux NFS client. These apply to net-next
but previously they've been tested at multiple NFS bake-a-thon
events.

This series is also available in the topic-rpc-with-tls-upcall
branch at

  https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git

Changes since RFC:
- Add an rpc_authops method to send TLS probes

---

Chuck Lever (11):
      NFS: Improvements for fs_context-related tracepoints
      SUNRPC: Plumb an API for setting transport layer security
      SUNRPC: Trace the rpc_create_args
      SUNRPC: Add RPC client support for the RPC_AUTH_TLS auth flavor
      SUNRPC: Ignore data_ready callbacks during TLS handshakes
      SUNRPC: Capture CMSG metadata on client-side receive
      SUNRPC: Add a connect worker function for TLS
      SUNRPC: Add RPC-with-TLS support to xprtsock.c
      SUNRPC: Add RPC-with-TLS tracepoints
      NFS: Have struct nfs_client carry a TLS policy field
      NFS: Add an "xprtsec=" NFS mount option


 fs/nfs/client.c                 |   7 +
 fs/nfs/fs_context.c             |  55 +++++
 fs/nfs/internal.h               |   2 +
 fs/nfs/nfs3client.c             |   1 +
 fs/nfs/nfs4client.c             |  18 +-
 fs/nfs/super.c                  |  12 ++
 include/linux/nfs_fs_sb.h       |   3 +-
 include/linux/sunrpc/auth.h     |   2 +
 include/linux/sunrpc/clnt.h     |   2 +
 include/linux/sunrpc/xprt.h     |  17 ++
 include/linux/sunrpc/xprtsock.h |   3 +
 include/trace/events/sunrpc.h   |  96 ++++++++-
 net/sunrpc/Makefile             |   2 +-
 net/sunrpc/auth.c               |   2 +-
 net/sunrpc/auth_tls.c           | 175 ++++++++++++++++
 net/sunrpc/clnt.c               |   9 +-
 net/sunrpc/xprtsock.c           | 343 +++++++++++++++++++++++++++++++-
 17 files changed, 727 insertions(+), 22 deletions(-)
 create mode 100644 net/sunrpc/auth_tls.c

--
Chuck Lever

Comments

Jeff Layton May 24, 2023, 7:30 p.m. UTC | #1
On Tue, 2023-05-23 at 10:29 -0400, Chuck Lever wrote:
> Let's have a look at what is needed to support NFS in-transit
> confidentiality in the Linux NFS client. These apply to net-next
> but previously they've been tested at multiple NFS bake-a-thon
> events.
> 

Why net-next? Aren't the necessary non-NFS/RPC bits now in mainline at
this point? What's missing?

> This series is also available in the topic-rpc-with-tls-upcall
> branch at
> 
>   https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
> 
> Changes since RFC:
> - Add an rpc_authops method to send TLS probes
> 
> ---
> 
> Chuck Lever (11):
>       NFS: Improvements for fs_context-related tracepoints
>       SUNRPC: Plumb an API for setting transport layer security
>       SUNRPC: Trace the rpc_create_args
>       SUNRPC: Add RPC client support for the RPC_AUTH_TLS auth flavor
>       SUNRPC: Ignore data_ready callbacks during TLS handshakes
>       SUNRPC: Capture CMSG metadata on client-side receive
>       SUNRPC: Add a connect worker function for TLS
>       SUNRPC: Add RPC-with-TLS support to xprtsock.c
>       SUNRPC: Add RPC-with-TLS tracepoints
>       NFS: Have struct nfs_client carry a TLS policy field
>       NFS: Add an "xprtsec=" NFS mount option
> 
> 
>  fs/nfs/client.c                 |   7 +
>  fs/nfs/fs_context.c             |  55 +++++
>  fs/nfs/internal.h               |   2 +
>  fs/nfs/nfs3client.c             |   1 +
>  fs/nfs/nfs4client.c             |  18 +-
>  fs/nfs/super.c                  |  12 ++
>  include/linux/nfs_fs_sb.h       |   3 +-
>  include/linux/sunrpc/auth.h     |   2 +
>  include/linux/sunrpc/clnt.h     |   2 +
>  include/linux/sunrpc/xprt.h     |  17 ++
>  include/linux/sunrpc/xprtsock.h |   3 +
>  include/trace/events/sunrpc.h   |  96 ++++++++-
>  net/sunrpc/Makefile             |   2 +-
>  net/sunrpc/auth.c               |   2 +-
>  net/sunrpc/auth_tls.c           | 175 ++++++++++++++++
>  net/sunrpc/clnt.c               |   9 +-
>  net/sunrpc/xprtsock.c           | 343 +++++++++++++++++++++++++++++++-
>  17 files changed, 727 insertions(+), 22 deletions(-)
>  create mode 100644 net/sunrpc/auth_tls.c
> 
> --
> Chuck Lever
>
Chuck Lever III May 24, 2023, 7:38 p.m. UTC | #2
> On May 24, 2023, at 3:30 PM, Jeff Layton <jlayton@kernel.org> wrote:
> 
> On Tue, 2023-05-23 at 10:29 -0400, Chuck Lever wrote:
>> Let's have a look at what is needed to support NFS in-transit
>> confidentiality in the Linux NFS client. These apply to net-next
>> but previously they've been tested at multiple NFS bake-a-thon
>> events.
> 
> Why net-next? Aren't the necessary non-NFS/RPC bits now in mainline at
> this point? What's missing?

https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/net/handshake?id=eefca7ec514262aef08d0ef261552f2f604bd851

That fix has been in net-next for 12 days and is still not merged.

This series does not apply cleanly unless that fix has also been
applied. I did not expect it to take so long to get that fix into
upstream.


>> This series is also available in the topic-rpc-with-tls-upcall
>> branch at
>> 
>>  https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
>> 
>> Changes since RFC:
>> - Add an rpc_authops method to send TLS probes
>> 
>> ---
>> 
>> Chuck Lever (11):
>>      NFS: Improvements for fs_context-related tracepoints
>>      SUNRPC: Plumb an API for setting transport layer security
>>      SUNRPC: Trace the rpc_create_args
>>      SUNRPC: Add RPC client support for the RPC_AUTH_TLS auth flavor
>>      SUNRPC: Ignore data_ready callbacks during TLS handshakes
>>      SUNRPC: Capture CMSG metadata on client-side receive
>>      SUNRPC: Add a connect worker function for TLS
>>      SUNRPC: Add RPC-with-TLS support to xprtsock.c
>>      SUNRPC: Add RPC-with-TLS tracepoints
>>      NFS: Have struct nfs_client carry a TLS policy field
>>      NFS: Add an "xprtsec=" NFS mount option
>> 
>> 
>> fs/nfs/client.c                 |   7 +
>> fs/nfs/fs_context.c             |  55 +++++
>> fs/nfs/internal.h               |   2 +
>> fs/nfs/nfs3client.c             |   1 +
>> fs/nfs/nfs4client.c             |  18 +-
>> fs/nfs/super.c                  |  12 ++
>> include/linux/nfs_fs_sb.h       |   3 +-
>> include/linux/sunrpc/auth.h     |   2 +
>> include/linux/sunrpc/clnt.h     |   2 +
>> include/linux/sunrpc/xprt.h     |  17 ++
>> include/linux/sunrpc/xprtsock.h |   3 +
>> include/trace/events/sunrpc.h   |  96 ++++++++-
>> net/sunrpc/Makefile             |   2 +-
>> net/sunrpc/auth.c               |   2 +-
>> net/sunrpc/auth_tls.c           | 175 ++++++++++++++++
>> net/sunrpc/clnt.c               |   9 +-
>> net/sunrpc/xprtsock.c           | 343 +++++++++++++++++++++++++++++++-
>> 17 files changed, 727 insertions(+), 22 deletions(-)
>> create mode 100644 net/sunrpc/auth_tls.c
>> 
>> --
>> Chuck Lever
>> 
> 
> -- 
> Jeff Layton <jlayton@kernel.org>


--
Chuck Lever