All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
	Eric Dumazet <eric.dumazet@gmail.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	"David S. Miller" <davem@davemloft.net>,
	Paul Moore <paul.moore@hp.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [PATCH] tun: orphan an skb on tx
Date: Sun, 01 Feb 2015 13:33:50 +0000	[thread overview]
Message-ID: <1422797630.11044.32.camel@infradead.org> (raw)
In-Reply-To: <20150201122611.GA8883@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1806 bytes --]

On Sun, 2015-02-01 at 14:26 +0200, Michael S. Tsirkin wrote:
> > When I run over the VPN, netperf thinks it sent 2½ times the amount of
> > TX traffic.
> 
> At some level, it's expected: netperf's manual actually says:
> 	A UDP_STREAM test has no end-to-end flow control - UDP provides none and
> 	neither does netperf. However, if you wish, you can configure netperf
> 	with --enable-intervals=yes to enable the global command-line -b and -w
> 	options to pace bursts of traffic onto the network.

True, but UDP is just a canary for other protocols here. We *should* be
able to keep track of the packets before they even leave the box, and
know that we haven't even managed to send them. Even if we know it's a
datagram protocol and it's potentially going to be dropped in transit
later.

Of course, now I'm looking closely at the path these packets take to
leave the box, it starts to offend me that they're being passed up to
userspace just to encrypt them (as DTLS or ESP) and then send them back
down to the kernel on a UDP socket. The kernel already knows how to
{en,de}crypt ESP, and do the sequence number checking on incoming
packets.

I'm wondering if we bypass userspace in that case somehow — let
userspace negotiate the encryption and connect the UDP socket, then just
pass the socket fd and the parameters to the kernel so that incoming
packets are decrypted and 'received' on the tun device, and outgoing
packets on the tun device are encrypted and sent out on the UDP socket. 

The performance isn't too much of an issue for a VPN *client* in
practice, but we have a server implementation too which would probably
benefit quite well from such an offload facility.

If I were to look at such a thing, would it provoke screams of horror? 

-- 
dwmw2


[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5745 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: David Woodhouse <dwmw2@infradead.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Paul Moore <paul.moore@hp.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Eric Dumazet <eric.dumazet@gmail.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [Qemu-devel] [PATCH] tun: orphan an skb on tx
Date: Sun, 01 Feb 2015 13:33:50 +0000	[thread overview]
Message-ID: <1422797630.11044.32.camel@infradead.org> (raw)
In-Reply-To: <20150201122611.GA8883@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1806 bytes --]

On Sun, 2015-02-01 at 14:26 +0200, Michael S. Tsirkin wrote:
> > When I run over the VPN, netperf thinks it sent 2½ times the amount of
> > TX traffic.
> 
> At some level, it's expected: netperf's manual actually says:
> 	A UDP_STREAM test has no end-to-end flow control - UDP provides none and
> 	neither does netperf. However, if you wish, you can configure netperf
> 	with --enable-intervals=yes to enable the global command-line -b and -w
> 	options to pace bursts of traffic onto the network.

True, but UDP is just a canary for other protocols here. We *should* be
able to keep track of the packets before they even leave the box, and
know that we haven't even managed to send them. Even if we know it's a
datagram protocol and it's potentially going to be dropped in transit
later.

Of course, now I'm looking closely at the path these packets take to
leave the box, it starts to offend me that they're being passed up to
userspace just to encrypt them (as DTLS or ESP) and then send them back
down to the kernel on a UDP socket. The kernel already knows how to
{en,de}crypt ESP, and do the sequence number checking on incoming
packets.

I'm wondering if we bypass userspace in that case somehow — let
userspace negotiate the encryption and connect the UDP socket, then just
pass the socket fd and the parameters to the kernel so that incoming
packets are decrypted and 'received' on the tun device, and outgoing
packets on the tun device are encrypted and sent out on the UDP socket. 

The performance isn't too much of an issue for a VPN *client* in
practice, but we have a server implementation too which would probably
benefit quite well from such an offload facility.

If I were to look at such a thing, would it provoke screams of horror? 

-- 
dwmw2


[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5745 bytes --]

  reply	other threads:[~2015-02-01 13:34 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-13 14:59 [PATCH] tun: orphan an skb on tx Michael S. Tsirkin
2010-04-13 14:59 ` [Qemu-devel] " Michael S. Tsirkin
2010-04-13 15:12 ` Herbert Xu
2010-04-13 15:12   ` [Qemu-devel] " Herbert Xu
2010-04-13 15:12   ` Herbert Xu
2010-04-13 15:36 ` Jan Kiszka
2010-04-13 15:36   ` [Qemu-devel] " Jan Kiszka
2010-04-13 16:40   ` Eric Dumazet
2010-04-13 16:40     ` [Qemu-devel] " Eric Dumazet
2010-04-13 16:52     ` Jan Kiszka
2010-04-13 16:52       ` [Qemu-devel] " Jan Kiszka
2010-04-13 17:39     ` Michael S. Tsirkin
2010-04-13 17:39       ` [Qemu-devel] " Michael S. Tsirkin
2010-04-13 18:31       ` Eric Dumazet
2010-04-13 18:31         ` [Qemu-devel] " Eric Dumazet
2010-04-13 20:25         ` Michael S. Tsirkin
2010-04-13 20:25           ` [Qemu-devel] " Michael S. Tsirkin
2010-04-13 20:38           ` Eric Dumazet
2010-04-13 20:38             ` [Qemu-devel] " Eric Dumazet
2010-04-13 20:43             ` Michael S. Tsirkin
2010-04-13 20:43               ` [Qemu-devel] " Michael S. Tsirkin
2010-04-14  0:58         ` Herbert Xu
2010-04-14  0:58           ` [Qemu-devel] " Herbert Xu
2010-04-14  0:58           ` Herbert Xu
2010-04-14 11:55           ` David Miller
2010-04-14 11:55             ` [Qemu-devel] " David Miller
2010-04-14 11:55             ` David Miller
2015-02-01 11:20           ` David Woodhouse
2015-02-01 11:20             ` [Qemu-devel] " David Woodhouse
2015-02-01 12:26             ` Michael S. Tsirkin
2015-02-01 12:26               ` [Qemu-devel] " Michael S. Tsirkin
2015-02-01 13:33               ` David Woodhouse [this message]
2015-02-01 13:33                 ` David Woodhouse
2015-02-01 20:19                 ` David Miller
2015-02-01 20:19                   ` [Qemu-devel] " David Miller
2015-02-01 21:29                   ` David Woodhouse
2015-02-01 21:29                     ` [Qemu-devel] " David Woodhouse
2015-02-02  5:07                     ` David Miller
2015-02-02  5:07                       ` [Qemu-devel] " David Miller
2015-02-02  5:07                       ` David Miller
2015-02-02  7:27                       ` David Woodhouse
2015-02-02  7:27                         ` [Qemu-devel] " David Woodhouse
2015-02-02  8:24                         ` Steffen Klassert
2015-02-02  8:24                           ` [Qemu-devel] " Steffen Klassert
2015-02-02 15:30                           ` David Woodhouse
2015-02-02 15:30                             ` [Qemu-devel] " David Woodhouse
2015-02-02 15:23                         ` Phil Sutter
2015-02-02 15:23                           ` [Qemu-devel] " Phil Sutter
2015-02-02 15:47                           ` David Woodhouse
2015-02-02 15:47                             ` [Qemu-devel] " David Woodhouse
2015-02-04  0:19                         ` David Miller
2015-02-04  0:19                           ` [Qemu-devel] " David Miller
2015-02-04  6:35                           ` David Woodhouse
2015-02-04  6:35                             ` [Qemu-devel] " David Woodhouse
2021-06-25 15:56                       ` Bringing the SSL VPN data path back in-kernel David Woodhouse
2010-04-21 11:35 ` [PATCH] tun: orphan an skb on tx Michael S. Tsirkin
2010-04-21 11:35   ` [Qemu-devel] " Michael S. Tsirkin
2010-04-21 11:46   ` Jan Kiszka
2010-04-21 11:46     ` [Qemu-devel] " Jan Kiszka
2010-04-21 11:45     ` Michael S. Tsirkin
2010-04-21 11:45       ` [Qemu-devel] " Michael S. Tsirkin
2010-04-21 19:16   ` [stable] " Greg KH
2010-04-21 19:16     ` [Qemu-devel] " Greg KH
2010-09-14 15:20 ` Michael S. Tsirkin

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=1422797630.11044.32.camel@infradead.org \
    --to=dwmw2@infradead.org \
    --cc=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=jan.kiszka@siemens.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=paul.moore@hp.com \
    --cc=qemu-devel@nongnu.org \
    /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.