All practical solutions for p2p these days require NAT hole punching through STUN and signaling servers anyway, so even p2p has to be bootstrapped via client/server. Easier to just keep the protocol client/server then.
I have been told in many HN discussions that IPv4 is good enough and that IPv6 doesn't solve any problems. ¯\_(ツ)_/¯
The problem is, and has always been, that NAT doesn't solve the IPv4 exhaustion problem. It took a long time before I understood this due to all the noise IPv6 people make, but newer ISPs don't have enough IPv4 addresses to give every household its own address, so they use CGNAT for residential Internet access. This is what people should be focusing on, but it's not. All arguments for IPv6 are irrelevant drivel about how bad NAT is.
The length of Tailscale's 2020 weblog post "How NAT traversal works":
* https://tailscale.com/blog/how-nat-traversal-works
and their 2025 "NAT traversal, and how we're improving it (pt. 1)"
* https://tailscale.com/blog/nat-traversal-improvements-pt-1
indicates the opposite to me.
Certainly there are still (SPI) firewalls with IPv6, but at least with CPEs things are limited to 'only' hole punching with PCP (or UPnP) as opposed to all the ICE/TURN/STUN layers (and heaven help you if you're behind CG-NAT).
> The problem is, and has always been, that NAT doesn't solve the IPv4 exhaustion problem.
NAT was intended to be a "short-term solution" as noted in the NAT RFC (from 1994):