From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net V3] net: reevalulate autoflowlabel setting after sysctl setting Date: Thu, 21 Dec 2017 13:07:44 -0500 (EST) Message-ID: <20171221.130744.1509932379900828214.davem@davemloft.net> References: <321216a522a3b46e77125a5b9df41c2b64821cf3.1513799711.git.shli@fb.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, Kernel-team@fb.com, shli@fb.com, kafai@fb.com, eric.dumazet@gmail.com, tom@quantonium.net To: shli@kernel.org Return-path: Received: from shards.monkeyblade.net ([184.105.139.130]:56414 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751808AbdLUSHq (ORCPT ); Thu, 21 Dec 2017 13:07:46 -0500 In-Reply-To: <321216a522a3b46e77125a5b9df41c2b64821cf3.1513799711.git.shli@fb.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Shaohua Li Date: Wed, 20 Dec 2017 12:10:21 -0800 > From: Shaohua Li > > sysctl.ip6.auto_flowlabels is default 1. In our hosts, we set it to 2. > If sockopt doesn't set autoflowlabel, outcome packets from the hosts are > supposed to not include flowlabel. This is true for normal packet, but > not for reset packet. > > The reason is ipv6_pinfo.autoflowlabel is set in sock creation. Later if > we change sysctl.ip6.auto_flowlabels, the ipv6_pinfo.autoflowlabel isn't > changed, so the sock will keep the old behavior in terms of auto > flowlabel. Reset packet is suffering from this problem, because reset > packet is sent from a special control socket, which is created at boot > time. Since sysctl.ipv6.auto_flowlabels is 1 by default, the control > socket will always have its ipv6_pinfo.autoflowlabel set, even after > user set sysctl.ipv6.auto_flowlabels to 1, so reset packset will always > have flowlabel. Normal sock created before sysctl setting suffers from > the same issue. We can't even turn off autoflowlabel unless we kill all > socks in the hosts. > > To fix this, if IPV6_AUTOFLOWLABEL sockopt is used, we use the > autoflowlabel setting from user, otherwise we always call > ip6_default_np_autolabel() which has the new settings of sysctl. > > Note, this changes behavior a little bit. Before commit 42240901f7c4 > (ipv6: Implement different admin modes for automatic flow labels), the > autoflowlabel behavior of a sock isn't sticky, eg, if sysctl changes, > existing connection will change autoflowlabel behavior. After that > commit, autoflowlabel behavior is sticky in the whole life of the sock. > With this patch, the behavior isn't sticky again. > > Cc: Martin KaFai Lau > Cc: Eric Dumazet > Cc: Tom Herbert > Signed-off-by: Shaohua Li This looks a lot better, applied, thanks.