Port forwarding is not “working around”. It actually solves network connectivity issues for many peer to peer set ups. Just not all cases. Much like 3g is not a workaround either and it solves internet access for many people without access to regular lines, just not all cases.
If you want to discuss absolute final solutions to networking and connectivity issues, this is probably not the thread for it, but if you get a final complete solution, please feel free to apply to the Nobel price.
Port forwarding is designed to allow remote access to a
server behind a router or firewall. None of the servers involved in Elite are running on client machines, so none of us have any need to hold ports open.
Besides, we would need to forward a port for each peer in order for port forwarding to address anything in the peer to peer side of the networking, because a port can only be used by one connection at a time - it is most likely that Elite is (mis)using the port forward for communication with the servers, not the peers. And since our game clients always contact the servers first, that outgoing communication automatically opens a port for the replies, rendering port forwarding unneccessary. And all of the peer to peer communication is still using randomly assigned ports as intended.
The sort of issues that port forwarding addresses are also not intermittent - if you're having frequent disconnects, instancing issues, etc, then you're still connecting some of the time, which means that ports are being opened automatically as designed. Something else is interfering with
some of the connections (a closed port would stop
all communication).
When a client sends out a connection request, each router that it traverses will record an entry in its Network Address Translation (NAT) table that stores which IP and port that packet came from, from the perspective of that router. This creates a trail of breadcrumbs that the server's reply packets will follow to get back to the client - as the packet arrives at each router, that router checks its NAT table, and if it has an entry matching the destination in the packet's header, it knows where to send the packet, either to the next router in the path, or to the client machine if the router in question is the client's router. Once the client receives this confirmation, it has established a communication channel with the server - no port forwarding required on the client side. With multiple clients, each one will have established its own unique route, and the server will know how to reach each client using that information.
If an entry gets dropped from any of the NATs along the route, it can disrupt communication, and a new channel will need to be established (which the client will do once the existing connection times out). But this shouldn't happen in a properly configured network - whichever router is dropping entries too aggressively may be misconfigured, or the link to that router may have been interrupted long enough for the router to assume the communication was finished (they close the ports as soon as possible, because open ports can be exploited by hackers - that's why we don't just leave all of our ports open).
It seems most likely that the game is using client-side port forwarding as a
shortcut to re-establish communication around sub-par networking - in other words, working
around the problem because that's simpler than trying to solve it. That's what I've been saying all along. It's like telling your friend to just reboot their computer every time a recurring issue pops up, instead of diagnosing the cause and addressing it. Or duct taping a leaking fuel line to get your car back on the road, but then never replacing the line with an undamaged part.
However, based on your experience (you being located behind a CG-NAT setup) - for you Port Forwarding does nothing (same for UPNP) since you dont have access to the router that has the external IP address.
Also, because you are in a CG-NAT setup and because you are actually behind several routers - for you adjusting the MTU (lowering it from the standard values) will solve some potential issues that arise from packet fragmentation when you connect to P2P sessions hosted by players that are able to use port forwarding or UPNP.
My MTU works great at the default of 1500 - my experience with troubleshooting and adjusting MTU size comes from assisting friends, family, and business clients over the past decade. I have seen people on Elite struggling, with port forwarding enabled, then convinced them to test their MTU, adjust it (commonly needed for ADSL connections and other uplinks involving PPPoE protocol, for example), then disable port forwarding, and have much more stable connections (with two machines in the same house playing Elite at the same time). I've seen it work.
And every single communication across the internet goes through multiple routers/firewalls - do a tracert to google and you'll see around 10 hops if not more. None of those routers need to have port forwarding set up in order to facilitate your communication, for all of the reasons I have repeatedly tried to explain here. The only router on your path to any given server that needs to forward a port is the router at the public IP address you connect to - and from there, you have no idea how many subnets your communication might be traversing within that organization's private network.
So, based on your limited experience, it is ABSOLUTELY wrong to tell anyone (especially people that are not behind a CG-NAT) that port forwading is useless or that is an workaround or stuff like this, while telling everyone that MTU adjustments is the universal panacea that will sort out any connectivity issues in a P2P environment.
It's plain wrong
I apologize for not explaining the scope of my experience, but it is far from limited. Clearly, even after demonstrating in-depth knowledge of several networking concepts, it seems many people wouldn't believe me anyway, so simply stating that I've built entire networks for professional businesses, as well as home networks for multiple clients, probably wouldn't have done anything to break through that resistance. But it is absolutely correct to say that port forwarding is only meant for allowing unexpected remote connections to a dedicated server behind the router that does the port forwarding.
Port forwarding (and the rest of technologies that help unsolicited data packets to reach a client behind a NAT) and MTU adjustments are completely different things and they help solve completely different issues.
You're correct - MTU adjustments actually fix one common cause of packet loss. And literally every device on the internet is behind multiple NATs (one at every router) - but client-side, there is no such thing as unsolicited data packets; we solicit them as soon as we establish the outgoing connections. The server is the only part of the equation that should receive unsolicited communication.