So far I have seen more name changes due to systemd updates than due to kernel updates, that's the point.
Eh, I have definitely seen the opposite. Machines (routers) with multiple identical NICs have not had deterministic startup order in my experience. This was 'fixed' at some point with the previous persistence hacks, but it is definitely a problem. In addition to the unpredictability with adding/removing NICs and iding the ports.
The systemd policies have changed over time, generally to add granularity where collisions are possible, but I have not seen them actually have an impact on real systems. You have multiple options to address this, if you deem it to be a problem. There are no ways to address the issues with the kernel ordering.
- Use the MAC naming policy
- Fix the naming scheme based on whatever version of systemd you set the system up with
- Define custom links for your interfaces and name them whatever you want, predictably based on whatever match parameters you want (path, driver, whatever)
See the wiki somebody linked. They say that MAC addresses are not used by default. Now, apparently they are, perhaps as a fallback when all else fails. Next year, an update will come which fill find some "clever" name for RPi's built-in NICs and the name will change once again...
The defaults from systemd don't use the MAC at all. But the 'default' is just shipped as a default policy '99-default.link' and gets included in the link policy at runtime. The distribution may change this shipped policy or add rules (e.g. debian adds 73-usb-net-by-mac.link which always uses the MAC policy for USB devices only, since many RPi boards have USB NICs, I assume that's what's happening here).
If this policy changes frequently, you can take it up with your distribution. I'd expect enterprise-oriented distros might fix the default naming policy, at least within a major distro release, but I can't be bothered to check. If you really care, you can do this manually in your kernel command line, though.
Canonical:
https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html (the other link above is deprecated).