[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <754c0cd5-2289-3887-e7d2-71ff87e59afd@163.com>
Date: Tue, 24 May 2022 18:03:36 +0800
From: Yun Lu <luyun_611@....com>
To: Willem de Bruijn <willemdebruijn.kernel@...il.com>
Cc: 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 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.
I am looking forward to your better advice on this problem.
Powered by blists - more mailing lists