lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 10 Sep 2018 17:22:07 +0200
From:   Paolo Abeni <pabeni@...hat.com>
To:     Eric Dumazet <eric.dumazet@...il.com>, netdev@...r.kernel.org
Cc:     Toshiaki Makita <makita.toshiaki@....ntt.co.jp>
Subject: Re: unexpected GRO/veth behavior

On Mon, 2018-09-10 at 07:56 -0700, Eric Dumazet wrote:
> 
> On 09/10/2018 07:44 AM, Paolo Abeni wrote:
> > hi all,
> > 
> > while testing some local patches I observed that the TCP tput in the
> > following scenario:
> > 
> > # the following enable napi on veth0, so that we can trigger the
> > # GRO path with namespaces
> > ip netns add test
> > ip link add type veth
> > ip link set dev veth0 netns test
> > ip -n test link set lo up
> > ip -n test link set veth0 up
> > ip -n test addr add dev veth0 172.16.1.2/24
> > ip link set dev veth1 up
> > ip addr add dev veth1 172.16.1.1/24
> > IDX=`ip netns exec test cat /sys/class/net/veth0/ifindex`
> > 
> > # 'xdp_pass' is a NO-OP XDP program that simply return XDP_PASS
> > ip netns exec test ./xdp_pass $IDX &
> > taskset 0x2 ip netns exec test iperf3 -s -i 60 &
> > taskset 0x1 iperf3 -c 172.16.1.2 -t 60 -i 60
> > 
> > is quite lower than expected (~800Mbps). 'perf' shows a weird topmost 
> > offender:
> > 
> 
> 
> But... why GRO would even be needed in this scenario ?

AFAICS, attaching an XDP program to a veth device makes TCP flows over
such veth unconditionally hit this code path since:

commit 948d4f214fde43743c57aae0c708bff44f6345f2
Author: Toshiaki Makita <makita.toshiaki@....ntt.co.jp>
Date:   Fri Aug 3 16:58:10 2018 +0900

    veth: Add driver XDP

I'm personally looking for some way to hit the GRO code path with
selftest/namespaces.

> GRO is really meant for physical devices, having to mess with skb->sk adds extra cost
> in this already heavy cost engine.

Yup, even if I do not see any measurable cost added by the posted code.

Cheers,

Paolo

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ