From: Hangbin Liu <hangbin.liu@linux.dev>
To: Pin-yen Lin <treapking@google.com>
Cc: Jay Vosburgh <jv@jvosburgh.net>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@kernel.org>,
Bjoern Doebel <doebel@amazon.de>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Shuah Khan <shuah@kernel.org>,
netdev@vger.kernel.org, Matthieu Baerts <matttbe@kernel.org>,
linux-kernel@vger.kernel.org,
Jonathan Toppins <jon.toppins+linux@gmail.com>,
linux-kselftest@vger.kernel.org,
Hangbin Liu <liuhangbin@gmail.com>
Subject: Re: [PATCH net] selftests: bonding: fix failover race in bond_options.sh prio test
Date: Fri, 13 Nov 2026 13:59:50 +0800 [thread overview]
Message-ID: <avanVkILHDYdpond@fedora> (raw)
In-Reply-To: <avaewOJD7tX1UYfE@fedora>
On Fri, Nov 13, 2026 at 01:23:40PM +0800, Hangbin Liu wrote:
> Hi Pin-yen,
> On Wed, Nov 11, 2026 at 05:46:18PM -0800, Pin-yen Lin wrote:
> > The prio test intermittently fails in the arp_ip_target and
> > ns_ip6_target variants:
> >
> > TEST: prio (active-backup ns_ip6_target primary_reselect 1) [FAIL]
> > Current active slave is eth0 but not eth2
> >
> > The ARP/NS monitor marks a slave down when it has received nothing for
> > too long. With arp_interval 100 and the default arp_missed_max, that is
> > about 250ms for the active slave (eth1) and 350ms for a backup slave
> > (eth0, eth2). Every 100ms, eth1 sends a probe: eth1 receives the reply,
> > and eth0/eth2 receive a copy forwarded by the gateway bridge. Once eth1
> > is down, its probes reach no one and no slave receives anything, so
> > eth1 normally times out first and the new active slave is picked by
> > prio:
> >
> > t=0 probe: eth1 gets the reply, eth0/eth2 get a copy
> > t=10 test sets eth1 down
> > t=300 monitor: eth1 idle 300ms -> down
> > eth0/eth2 idle 300ms -> up, eth2 picked by prio
> >
> > But the test takes eth1 down right after bond_check_connection(), whose
> > ping replies only arrive on eth1:
> >
> > t=0 probe: eth1 gets the reply, eth0/eth2 get a copy
> > t=70 ping reply on eth1 only
> > t=85 test sets eth1 down
> > t=300 monitor: eth1 idle 230ms -> still up
> > t=400 monitor: eth1 idle 330ms -> down
> > eth2 idle 400ms -> down too
> >
> > eth2 can then no longer be picked. eth0 becomes the active slave if it
> > happened to receive some other packet (e.g. an MLD report), otherwise
> > whichever slave comes back first does. With primary_reselect 1 or 2,
> > the bond keeps eth0 even after eth2 comes back.
> >
> > Before taking the active slave down, wait two monitor intervals
> > (200ms), so that at least one more probe is sent after the last ping
> > reply and all slaves last received that probe. The miimon variants do
> > not need the wait, but the extra delay is negligible.
>
> I'm afraid the waiting time is too strict, especially with a debug kernel
> since delays can happen.
>
> Bjoern is also fixing[1] this issue by pinging a non-existent neighbor to
> keep traffic flowing. Would you like to test whether that works for you?
>
> [1] https://lore.kernel.org/netdev/20261104142018.552135-1-doebel@amazon.de/
BTW, using ping may not able to triger the arp request in time. You can try
arping instead.
Thanks
Hangbin
prev parent reply other threads:[~2026-11-13 6:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-12 1:46 [PATCH net] selftests: bonding: fix failover race in bond_options.sh prio test Pin-yen Lin
2026-11-12 7:57 ` Xia Yan
2026-11-13 5:23 ` Hangbin Liu
2026-11-13 5:59 ` Hangbin Liu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=avanVkILHDYdpond@fedora \
--to=hangbin.liu@linux.dev \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=doebel@amazon.de \
--cc=edumazet@kernel.org \
--cc=jon.toppins+linux@gmail.com \
--cc=jv@jvosburgh.net \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=liuhangbin@gmail.com \
--cc=matttbe@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
--cc=treapking@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.