Re: Problem with IPv6 privacy addresses in 7.0
Fernando Fernandez Mancera <[email protected]>
| Newsgroups | dev.linux.lists.regressions,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 5/28/26 7:21 PM, Stefano Brivio wrote: > On Thu, 28 May 2026 18:01:27 +0200 Beniamino Galvani > <[email protected]> wrote: > >> On Thu, May 28, 2026 at 05:24:28PM +0200, Íñigo Huguet wrote: >>> On Thu, May 28, 2026 at 4:53 PM Stefano Brivio >>> <[email protected]> wrote: >>>> I think what's considered UAPI in this case isn't so clear- >>>> cut. I guess it would have been pretty hard for anybody not >>>> familiar with NetworkManager's codebase to imagine that an >>>> application would rely on IPv6 addresses (and only IPv6) to be >>>> returned in the reverse order. >>> >>> IMHO it's not because an application would rely on the order. >>> It's because the order matters, as the first one is considered >>> the primary. > > Yes, that's also the case, but: > >>> This is not NetworkManager specific. Or I am mistaken? I'm >>> speaking by memory > > ...from what I understood of the issue at hand there's a part that's > specific to NetworkManager here, because NetworkManager replaces / > deletes the Privacy Extensions addresses, instead of different > addresses, because it relies on that specific (reversed) order. > > Anyway, yes, I see your point about UAPI now. > >> Yes, exactly. If you do: >> >> ip addr add dev X 3fff::1/64 ip addr dev dev X 3fff::2/64 >> >> then the old kernel chooses the address that was added last as >> source address for outgoing communications. With the new kernel it >> chooses the address that was added first. >> >> I think that any script or network management tool that cares >> about the source address selection is impacted. Indeed, the commit >> had effects on one of the selftests, which had to be modified to >> change the order of iproute2 invocations. >> >>>>> If the fix must be in NetworkManager, we only need to parse >>>>> them in non-reverse order like IPv4, I guess. >>>> >>>> But that would then require some form of detection, and, at >>>> least according to Fernando, isn't the most robust option >>>> anyway, as ideally NetworkManager shouldn't rely on the order >>>> at all. >>> >>> True >> >> Correct, if the new behavior is considered better, there should be >> a way to detect which order must be used. Otherwise userspace >> tools won't be able to maintain the same behavior with different >> kernels. > > My remark here is about whether NetworkManager needs to detect this > at all. If it used timestamps to detect recent / older addresses, as > Fernando mentioned, then you wouldn't need any detection at all, > right? Or is there something else we're missing? > Ohno. Now that Beniamino and Iñigo mentioned it, this will likely break many other environments. In essence, many tools relies on the previous ordering to identify which address is the primary one. E.g cloud tooling communicating with the metadata server via IMDS(v2) to configure IPv6 primary and secondary addresses. They are likely relying on the ordering for that. So maybe we could fix whatever is wrong with NetworkManager and temporary addresses order but I don't think this will scale for the cloud tooling with the primary/secondary issue. > By the way, if really needed, one could detect that with the > equivalent of: > > ip a a ::2 dev lo && ip a a ::3 dev lo && [ $(ip -6 -j a | jq -rM '. > [] .addr_info[0].local') = ::3 ] && echo wrong || echo right > > ...depending on the application, that's not necessarily practical, > but so far we have no evidence of any application needing to do that > at all. > Plenty of tools (NetworkManager included) uses netlink so this isn't useful for them. For now I am more in favor of the revert and to look for an alternative for pasta situation (like using a flag or something). But I am not a maintainer so it isn't my call :)