Re: [PATCH] selftests/net: enable lo.accept_local in psock_snd test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 24, 2022 at 6:04 AM Yun Lu <luyun_611@xxxxxxx> wrote:
>
> On 2022/5/23 下午9:32, Willem de Bruijn wrote:
>
> > On Mon, May 23, 2022 at 5:25 AM Yun Lu <luyun_611@xxxxxxx> wrote:
> >> On 2022/5/20 下午9:52, Willem de Bruijn wrote:
> >>
> >>> On Fri, May 20, 2022 at 2:40 AM Yun Lu <luyun_611@xxxxxxx> wrote:
> >>>> From: luyun <luyun@xxxxxxxxxx>
> >>>>
> >>>> 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@localhost net]# sysctl net.ipv4.conf.lo.accept_local
> >> net.ipv4.conf.lo.accept_local = 0
> >> [root@localhost net]# ./psock_snd -d
> >> tx: 128
> >> rx: 142
> >> ./psock_snd: recv: Resource temporarily unavailable
> >> [root@localhost net]# sysctl -w net.ipv4.conf.lo.accept_local=1
> >> net.ipv4.conf.lo.accept_local = 1
> >> [root@localhost 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).




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux