[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+FuTScW3TekvnLnm=R9JvibOfPXRBP0O_3AuCmo4z=d3fP3fA@mail.gmail.com>
Date: Tue, 24 May 2022 09:33:15 -0400
From: Willem de Bruijn <willemdebruijn.kernel@...il.com>
To: Yun Lu <luyun_611@....com>
Cc: Willem de Bruijn <willemdebruijn.kernel@...il.com>,
davem@...emloft.net, edumazet@...gle.com, netdev@...r.kernel.org,
linux-kselftest@...r.kernel.org
Subject: Re: [PATCH] selftests/net: enable lo.accept_local in psock_snd test
On Tue, May 24, 2022 at 6:04 AM Yun Lu <luyun_611@....com> wrote:
>
> On 2022/5/23 下午9:32, Willem de Bruijn wrote:
>
> > On Mon, May 23, 2022 at 5:25 AM Yun Lu <luyun_611@....com> wrote:
> >> On 2022/5/20 下午9:52, Willem de Bruijn wrote:
> >>
> >>> On Fri, May 20, 2022 at 2:40 AM Yun Lu <luyun_611@....com> wrote:
> >>>> From: luyun <luyun@...inos.cn>
> >>>>
> >>>> The psock_snd test sends and recievs packets over loopback, but the
> >>>> parameter lo.accept_local is disabled by default, this test will
> >>>> fail with Resource temporarily unavailable:
> >>>> sudo ./psock_snd.sh
> >>>> dgram
> >>>> tx: 128
> >>>> rx: 142
> >>>> ./psock_snd: recv: Resource temporarily unavailable
> >>> I cannot reproduce this failure.
> >>>
> >>> Passes on a machine with accept_local 0.
> >>>
> >>> accept_local is defined as
> >>>
> >>> "
> >>> accept_local - BOOLEAN
> >>> Accept packets with local source addresses. In combination
> >>> with suitable routing, this can be used to direct packets
> >>> between two local interfaces over the wire and have them
> >>> accepted properly.
> >>> "
> >> I did this test on my system(Centos 8.3 X86_64):
> >>
> >> [root@...alhost net]# sysctl net.ipv4.conf.lo.accept_local
> >> net.ipv4.conf.lo.accept_local = 0
> >> [root@...alhost net]# ./psock_snd -d
> >> tx: 128
> >> rx: 142
> >> ./psock_snd: recv: Resource temporarily unavailable
> >> [root@...alhost net]# sysctl -w net.ipv4.conf.lo.accept_local=1
> >> net.ipv4.conf.lo.accept_local = 1
> >> [root@...alhost net]# ./psock_snd -d
> >> tx: 128
> >> rx: 142
> >> rx: 100
> >> OK
> >>
> >> This failure does seem to be related to accept_local.
> >>
> >> Also, it's reported on Ubuntu:
> >> https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/1812618
> > That is an old kernel, 4.18 derived.
> >
> > I simply am unable to reproduce this on an upstream v4.18 or v5.18.
> > Likely something with either the distro kernel release, or another
> > distro feature that interacts with this. Can you try v5.18 or another
> > clean upstream kernel?
> >
> > Else it requires instrumenting IN_DEV_ACCEPT_LOCAL tests to understand
> > where this sysctl makes a meaningful change for you when running this
> > test.
>
> I found another parameter rp_filter which interacts with this test:
>
> Set rp_filter = 0, the psock_snd test OK.
>
> Or set rp_filter = 1 and accept_local=1, the psock_snd test OK.
>
> I get the same test results on kernel v5.10 or v5.15. Analysis from
> source code, this two parameters
>
> will change the result of fib_validate_source when running this test.
> For most distro kernel releases,
>
> rp_filter is enabled by default, so this test will fail when
> accept_local is kept to be zero.
That explains.
Since this test runs inside a netns, changing a sysctl is fine.
Can you resubmit with a more detailed description now that the exact
check is more clear, as well as interplay with rp_filter, and the
default config of these two parameters configured by distros? Thanks.
Please double check typos (s/recievs/receives).
Powered by blists - more mailing lists