Re: F40 Change Proposal: Enable IPv4 Address Conflict Detection (Self-Contained)

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

 



On Thu, Dec 21, 2023 at 10:35:45AM -0600, Chris Adams wrote:
> Once upon a time, Beniamino Galvani <bgalvani@xxxxxxxxxx> said:
> > network-scripts do [1]:
> > 
> >  /sbin/arping -c 2 -w ${ARPING_WAIT:-3} -D -I ${REALDEVICE} ${ipaddr[$idx]}
> > 
> > which waits 2 seconds by default.
> 
> Ahh, sorry, that's what I get for depending on memory. :)
> 
> > In the original RFC, the duration of the ACD process is between 4 and
> > 7 seconds (depending on randomization), which is clearly too long on
> > modern hardware.
> 
> Definitely agree.
> 
> > In the Fedora change proposal, the default ACD interval in NM is set
> > to up to 3 seconds and is subject to the same randomization; in
> > practice it would be between ~1.7 and 3 seconds. Perhaps that's still
> > too much, and we can safely decrease it to e.g. 1 second max to reduce
> > the activation delay.
> 
> Yeah, I think sending 2-3 requests separated by maybe 0.2 seconds, and
> waiting another 0.2 seconds for a reply (so a total of 0.8 seconds) is
> sufficient for modern networks.

Right, by setting a maximum duration of e.g. 0.8 seconds, we get 3
probes spaced between 90ms and 270ms and a final wait time of 180ms,
according to the algorithm from RFC 5227.

> A number of DHCP servers do a ping
> before issue as well (although there's no good way for a DHCP client to
> tell), so it's just adding to the amount of time before the network
> becomes usable.

> DAD/ACD is a good thing, I'd just like to see the impact minimized.  The
> time taken at boot is not a big deal (as users have to log in and start
> applications and such), but the time taken on resume from sleep is more
> noticable (open the notebook lid, unlock, then... wait).
> 
> Thinking about servers... this would happen before network-online.target
> is triggered, right?  Any services that try to bind to configured IPs or
> the like need to still work.

The short answer is: enabling ACD will not affect services that bind
to configured IPs, because ACD is done before the connection becomes
activated, which is a pre-requisite for network-online.target.

In practice, it's a bit more complex than that. network-online.target
is emitted after all NM connections succeed. The meaning of "success"
depends on properties "ipv4.may-fail" and "ipv6.may-fail" of the
connection profile. Normally they are both set to "yes" and this means
that just one of IPv4 and IPv6 is enough to reach the activated state.

If the connection has static IPv4 addresses and "auto" IPv6
(i.e. SLAAC plus optionally DHCPv6), before enabling ACD it was
guaranteed that IPv4 addresses were added before reaching
network-online. After enabling ACD, both IPv4 ACD and IPv6 SLAAC are
started in parallel and the first that completes will make the
connection succeed. However, in practice IPv6 also requires DAD and
the timeout is longer than the IPv4 ACD timeout; so, services that
bind to static IPv4 addresses can still rely on the addresses being
present after network-online.target is reached.

Of course, in case of services that bind IPv4 to addresses, the best
solution is to set "ipv4.may-fail=no" (or for IPv6 addresses,
"ipv6.may-fail=no") in the connection profile. That is required when
using "auto" methods, in order to avoid the situation where the
connection succeeds after the "other" address family completes.

Beniamino

Attachment: signature.asc
Description: PGP signature

--
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux