From: Prashant Bhole <prashantbhole.linux@gmail.com>
To: "David S . Miller" <davem@davemloft.net>,
"Michael S . Tsirkin" <mst@redhat.com>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Jesper Dangaard Brouer <hawk@kernel.org>
Cc: Prashant Bhole <prashantbhole.linux@gmail.com>,
Jason Wang <jasowang@redhat.com>, David Ahern <dsahern@gmail.com>,
Jakub Kicinski <jakub.kicinski@netronome.com>,
John Fastabend <john.fastabend@gmail.com>,
Toshiaki Makita <toshiaki.makita1@gmail.com>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>, Andrii Nakryiko <andriin@fb.com>,
netdev@vger.kernel.org
Subject: [RFC net-next 00/14] XDP in tx path
Date: Wed, 18 Dec 2019 17:10:36 +0900 [thread overview]
Message-ID: <20191218081050.10170-1-prashantbhole.linux@gmail.com> (raw)
This series introduces tx path XDP. RFC also includes usage of the
feature in tun driver. Later both can be posted separately. Another
possible use of this feature can be in veth driver. It can improve
container networking where veth pair links the host and the container.
Host can set ACL by setting tx path XDP to the veth iface.
It was originally a part of Jason Wang's work "XDP offload with
virtio-net" [1]. In order to simplify this work we decided to split
it and introduce tx path XDP separately in this set.
The performance improvment can be seen when an XDP program is attached
to tun tx path opposed to rx path in the guest.
* Case 1: When packets are XDP_REDIRECT'ed towards tun.
virtio-net rx XDP tun tx XDP
xdp1(XDP_DROP) 2.57 Mpps 12.90 Mpps
xdp2(XDP_TX) 1.53 Mpps 7.15 Mpps
* Case 2: When packets are pass through bridge towards tun
virtio-net rx XDP tun tx XDP
xdp1(XDP_DROP) 0.99 Mpps 1.00 Mpps
xdp2(XDP_TX) 1.19 Mpps 0.97 Mpps
Since this set modifies tun and vhost_net, below are the netperf
performance numbers.
Netperf_test Before After Difference
UDP_STREAM 18byte 90.14 88.77 -1.51%
UDP_STREAM 1472byte 6955 6658 -4.27%
TCP STREAM 9409 9402 -0.07%
UDP_RR 12658 13030 +2.93%
TCP_RR 12711 12831 +0.94%
XDP_REDIRECT will be handled later because we need to come up with
proper way to handle it in tx path.
Patches 1-4 are related to adding tx path XDP support.
Patches 5-14 implement tx path XDP in tun driver.
[1]: https://netdevconf.info/0x13/session.html?xdp-offload-with-virtio-net
David Ahern (2):
net: add tx path XDP support
tun: set tx path XDP program
Jason Wang (2):
net: core: rename netif_receive_generic_xdp() to do_generic_xdp_core()
net: core: export do_xdp_generic_core()
Prashant Bhole (10):
tools: sync kernel uapi/linux/if_link.h header
libbpf: API for tx path XDP support
samples/bpf: xdp1, add XDP tx support
tuntap: check tun_msg_ctl type at necessary places
vhost_net: user tap recvmsg api to access ptr ring
tuntap: remove usage of ptr ring in vhost_net
tun: run XDP program in tx path
tun: add a way to inject tx path packet into Rx path
tun: handle XDP_TX action of tx path XDP program
tun: run xdp prog when tun is read from file interface
drivers/net/tap.c | 42 +++--
drivers/net/tun.c | 278 +++++++++++++++++++++++++----
drivers/vhost/net.c | 77 ++++----
include/linux/if_tap.h | 5 -
include/linux/if_tun.h | 23 ++-
include/linux/netdevice.h | 6 +-
include/uapi/linux/if_link.h | 1 +
net/core/dev.c | 39 ++--
net/core/rtnetlink.c | 112 +++++++++++-
samples/bpf/xdp1_user.c | 28 ++-
tools/include/uapi/linux/if_link.h | 2 +
tools/lib/bpf/libbpf.h | 4 +
tools/lib/bpf/libbpf.map | 3 +
tools/lib/bpf/netlink.c | 77 +++++++-
14 files changed, 571 insertions(+), 126 deletions(-)
--
2.21.0
next reply other threads:[~2019-12-18 8:12 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-18 8:10 Prashant Bhole [this message]
2019-12-18 8:10 ` [RFC net-next 01/14] net: add tx path XDP support Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 02/14] tools: sync kernel uapi/linux/if_link.h header Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 03/14] libbpf: API for tx path XDP support Prashant Bhole
2019-12-18 18:20 ` Alexei Starovoitov
2019-12-18 8:10 ` [RFC net-next 04/14] samples/bpf: xdp1, add XDP tx support Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 05/14] net: core: rename netif_receive_generic_xdp() to do_generic_xdp_core() Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 06/14] net: core: export do_xdp_generic_core() Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 07/14] tuntap: check tun_msg_ctl type at necessary places Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 08/14] vhost_net: user tap recvmsg api to access ptr ring Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 09/14] tuntap: remove usage of ptr ring in vhost_net Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 10/14] tun: set tx path XDP program Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 11/14] tun: run XDP program in tx path Prashant Bhole
2019-12-18 10:07 ` Jesper Dangaard Brouer
2019-12-18 11:48 ` Toke Høiland-Jørgensen
2019-12-18 16:33 ` David Ahern
2019-12-19 2:44 ` Jason Wang
2019-12-18 18:19 ` Alexei Starovoitov
2019-12-19 2:34 ` Prashant Bhole
2019-12-19 10:15 ` Toke Høiland-Jørgensen
2019-12-20 0:07 ` Prashant Bhole
2019-12-20 3:24 ` Jason Wang
2019-12-20 4:46 ` Prashant Bhole
2019-12-20 7:36 ` Jason Wang
2019-12-20 10:11 ` Toke Høiland-Jørgensen
2019-12-20 16:11 ` David Ahern
2019-12-20 22:17 ` Prashant Bhole
2019-12-23 6:05 ` Jason Wang
2019-12-23 8:09 ` Prashant Bhole
2019-12-23 8:34 ` Jason Wang
2019-12-23 11:06 ` Prashant Bhole
2019-12-18 16:29 ` David Ahern
2019-12-19 1:47 ` Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 12/14] tun: add a way to inject tx path packet into Rx path Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 13/14] tun: handle XDP_TX action of tx path XDP program Prashant Bhole
2019-12-18 8:10 ` [RFC net-next 14/14] tun: run xdp prog when tun is read from file interface Prashant Bhole
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=20191218081050.10170-1-prashantbhole.linux@gmail.com \
--to=prashantbhole.linux@gmail.com \
--cc=andriin@fb.com \
--cc=ast@kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsahern@gmail.com \
--cc=hawk@kernel.org \
--cc=jakub.kicinski@netronome.com \
--cc=jasowang@redhat.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=songliubraving@fb.com \
--cc=toshiaki.makita1@gmail.com \
--cc=yhs@fb.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).