Merge branch 'bpf-sockmap-fixes-and-improvements'
authorDaniel Borkmann <daniel@iogearbox.net>
Thu, 20 Dec 2018 22:47:10 +0000 (23:47 +0100)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 20 Dec 2018 22:47:11 +0000 (23:47 +0100)
commit1cf4a0ccc506b5c027afc5eaf3fddc83f96f31e7
treecd64f2bdd6ac693f204b18938c5836df2bcc698e
parent77ea5f4cbe2084db9ab021ba73fb7eadf1610884
parent28cb6f1eaffdc5a6a9707cac55f4a43aa3fd7895
Merge branch 'bpf-sockmap-fixes-and-improvements'

John Fastabend says:

====================
Set of bpf fixes and improvements to make sockmap with kTLS usable
with "real" applications. This set came as the fallout of pulling
kTLS+sockmap into Cilium[1] and running in container environment.

Roughly broken into three parts,

Patches 1-3: resolve/improve handling of size field in sk_msg_md
Patch     4: it became difficult to use this in Cilium when the
     SK_PASS verdict was not correctly handle. So handle
     the case correctly.
Patch   5-8: Set of issues found while running OpenSSL TX kTLS
     enabled applications. This resolves the most obvious
     issues and gets applications using kTLS TX up and
     running with sock{map|has}.

Other than the "sk_msg, zap ingress queue on psock down" (PATCH 6/8)
which can potentially cause a WARNING the issues fixed in this
series do not cause kernel side warnings, BUG, etc. but instead
cause stalls and other odd behavior in the user space applications
when using kTLS with BPF policies applied.

Primarily tested with 'curl' compiled with latest openssl and
also 'openssl s_client/s_server' containers using Cilium network
plugin with docker/k8s. Some basic testing with httpd was also
enabled. Cilium CI tests will be added shortly to cover these
cases as well. We also have 'wrk' and other test and benchmarking
tools we can run now.

We have two more sets of patches currently under testing that
will be sent shortly to address a few more issues. First the
OpenSSL RX kTLS side breaks when both sk_msg and sk_skb_verdict
programs are used with kTLS, the sk_skb_verdict programs are
not enforced. Second skmsg needs to call into tcp stack to
send to indicate consumed data.
====================

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>