From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.toke.dk (mail.toke.dk [52.28.52.200]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 2F6463CB35 for ; Mon, 10 Sep 2018 12:04:28 -0400 (EDT) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1536595466; bh=QR6Ao+SfjCTRBlRDXTbMhzSc0dVmos2jXO+0Y1qVzrw=; h=From:To:Cc:Subject:Date:From; b=DC+hfCPSyBxX8ysX4sSud2J1B3jL78Czr2vL41Up/1jN4TeWo+ZxAoVMW87QGlhYV r1sSrByokvLT0YuSMKonmIPW3DvZ2nYi1LihZT4SO5OFrx/9QXCpjKEXOZVcFO7BEa d8gqIlNfpVhTQ5xQ9WBS108PfpZDPlVAn5MUkYuKoheAXbL9LVkEMfCiOmRacpwY9l HaqrsXxl1XW2mWxQt2syGRgFEf6c5tBzwln+B/W2ItQUku/X3oUEdplOl+y9ySWa5l NxhAFUImuw67q8QPKXXWxtIXvYOwnwjYVFsv7/33R0u5nBjx3vwYppAl6Kde6TjOU8 rYVplobS/2Zlg== To: netdev@vger.kernel.org Cc: cake@lists.bufferbloat.net Date: Mon, 10 Sep 2018 18:04:26 +0200 X-Clacks-Overhead: GNU Terry Pratchett Message-ID: <87in3djq45.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain Subject: [Cake] Corrupted sit-tunnelled packets when using skb_gso_segment() on an IFB interface? X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Sep 2018 16:04:28 -0000 Hi everyone While investigating a bug report on CAKE[0], I've run into the following behaviour: When running CAKE as an ingress shaper on an IFB interface, if the GSO splitting feature is turned on, TCP throughput will drop dramatically on 6in4 (sit) tunnels running over the interface in question. Looking at a traffic dump, I'm seeing ~15% packet loss on the encapsulated TCP stream. IPv4 traffic is fine on the same interface, as is native IPv6 traffic. And turning off GSO splitting in CAKE makes the packet loss go away. The issue only seems to appear on IFB interfaces. So I'm wondering if there is some interaction that corrupts packets when they are being split in this configuration? Steps to reproduce (assuming the box you are running on has IP 10.0.0.2 on eth0, and has a peer at 10.0.0.1 with a suitably configured sit tunnel): # modprobe ifb # ip link set dev ifb0 up # tc qdisc add dev eth0 handle ffff: ingress # tc filter add dev eth0 parent ffff: protocol all prio 10 matchall action mirred egress redirect dev ifb0 # tc qdisc replace dev ifb0 root cake # ip link add type sit local 10.0.0.2 remote 10.0.0.1 # ip link set dev sit1 up # netperf -H fe80::a00:1%sit1 -t TCP_MAERTS Whereas, in the same setup, this will work fine: # netperf -H 10.0.0.1 -t TCP_MAERTS As will this: # tc qdisc replace dev ifb0 root cake no-split-gso # netperf -H fe80::a00:1%sit1 -t TCP_MAERTS Does anyone have any ideas? :) -Toke [0] https://github.com/tohojo/sqm-scripts/issues/72