The Port Forwarding thread: Minimizing multiplayer connection issues

Viajero

Volunteer Moderator
I never said it makes no difference - I said that port forwarding does not solve the problem.
Port forwarding is a long proven method to help improving networking in many peer to peer games. That is not for debate.

Now, having said that, it will never be a complete guarantee as most of the multiplayer network is outside our local PCs and router systems, and there are as many router / ISP set ups as players, all different. It definitely does not help with CGNAT, unless you can ask your ISP to grant you a dedicated and unique external IP address. But I can say with confidence that port forwarding should resolve a significant part of the problems we often experience in many set ups.
 
Last edited:
Port forwarding is a long proven method to help improving networking in many peer to peer games. That is not for debate.

Now, having said that, it will never be a complete guarantee as most of the multiplayer network is outside our local PCs and router systems, and there are as many router / ISP set ups as players, all different. It definitely does not help with NAT, unless you can ask your ISP to grant you a dedicated and unique external IP address. But I can say with confidence that port forwarding should resolve a significant part of the problems we often experience in many set ups.
It is long proven to improve some situations - by avoiding the root cause of the problem. But the unfortunate side effect is that it has become a common misconception that it actually solves things, when it doesn't resolve anything. It's fine to use it, if it helps, I just want people to understand what it actually is, so they stop expecting unreasonable results and refusing to try anything else - every time port forwarding fails to avoid the issue facing a given user, they just insist that it's Frontier's fault, when Frontier has no way of coming to their house to fix the actual problem.

And many times, it only hides the problem from the user that implemented it, while still causing problems for other clients in the same instance (who, like Frontier, are unable to go to the actual source of the problem to do anything about it). And even if everyone in the instance sets up port forwarding, issues may still go unresolved - but if everyone believes that port forwarding is a fix, rather than a workaround, then they'll all insist it's out of their hands, and go back to blaming the wrong entity for a problem that never gets fixed.

It used to be a popular understanding that the Earth was flat, and the center of all existence - popularity doesn't mean it's right, just that's it's widespread ;)
 

Viajero

Volunteer Moderator
It is long proven to improve some situations...
I think no one disagrees here. That is the point of this thread precisely. And the caveat is clear in the OP.

... it has become a common misconception that it actually solves things
This on the other hand, contradicts your previous statement 🤷‍♂️ Port forwarding does solve things, in many situations, just not in all. No news there.
 
1692740970360.png

I do whatever they tell me
 
This on the other hand, contradicts your previous statement 🤷‍♂️ Port forwarding does solve things, in many situations, just not in all. No news there.
"Working around" is not "solving" - if you know that you only tried to avoid a problem, you're more likely to try something else when it doesn't work than if you incorrectly think you solved the probem.
Turns out that the Speedguide.net optimization tool suggested in post #232 recommends that I leave the MTU set to 1500.
That's good news to start with. Did you also let the optimizer apply the optimized settings under the general tab?
1692746926908.png

You mentioned blue cobra, so I double checked the support page about the various colorful snakes - it does sound like some form of packet loss or connection timeout:
1692747066889.png

The second piece of advice is a bit generic, since the particulars will vary by device, but searching for your specific hardware should point you in the right direction if needed
 

Viajero

Volunteer Moderator
"Working around" is not "solving"
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.
 
Last edited:
"Working around" is not "solving"
Port forwarding is not “working around”. It actually solves network connectivity issues for many peer to peer set ups.

Basically this 👆

For clients behind a NAT - Port forwarding is the solution (NOT the workaround, it's the Solution) for any P2P application being it a game or a torrent client or anything.
But since the masses are not network gurus and they're not expected to be, certain technologies to smooth out the process of connecting p2p apps/clients were developed
Like UPNP, STUN, TURN etc.
Not at last, not everyone in P2P setup is required to have port forwarding, if some members in the group have proper port forwarding (or upnp) the others that are behind NAT restricted routers can still connect to the session hosted by the "unrestricted" players. So even if you personally are behind a CG-NAT, you can still enjoy multiplayer in P2P environment if the others are not in the same situation

However, based on your experience (you being located behind a sort of 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 / NAT-devices - 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.

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

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.
 
Last edited:
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.
 
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
Again this shows a basic misunderstanding of how TCP/IP works. A machine accepting incoming connections (whether it's a dedicated server or participating in peer-to-peer) only needs to listen on a single port (hence why only one port needs to be forwarded).
Basic things like web servers, DHCP etc. all work on the concept of using a well-known pre-defined port for communication, obviously they wouldn't work very well if they could only serve one connection at a time.
 
Not only for servers but also for individual hosts such as peer to peer game player PCs
Incorrect - peer to peer communication always involves the clients soliciting communication first. There are no servers in the peer to peer part - the servers used in Elite are for tracking the shared universe, and for facilitating the instancing, establishing the peer to peer connections by introducing the peers to each other

Again this shows a basic misunderstanding of how TCP/IP works. A machine accepting incoming connections (whether it's a dedicated server or participating in peer-to-peer) only needs to listen on a single port (hence why only one port needs to be forwarded).
Basic things like web servers, DHCP etc. all work on the concept of using a well-known pre-defined port for communication, obviously they wouldn't work very well if they could only serve one connection at a time.
Your response shows why you fail to understand my explanations - and your fundamental misunderstanding of how networking works (also, the game uses UDP). Every client creates temporary opened ports by sending the initial outgoing packets, so no pre-defined forwarding is needed.

Web servers don't require the client to have a port forwarded in order for the HTML to reach your browser.

And in the event of continuous communication, the server's replies don't cause the forwarded port to be stored in the upstream router's NAT table - a different, randomly assigned port is chosen, and that establishes the channel the client uses for subsequent communication, freeing up the known port for the next client that needs to connect
What you fail to realize is that in a p2p setup, the client can become a "server". Don't get hung up on semantics, in p2p the boundaries between client and server are seberely blurred.
No, that would be client-server communication - peers are all equals in a peer to peer setup. One peer may be determined to be the authority for a given instance, but that's implemented in the game's logic, not at the networking level.
 

Viajero

Volunteer Moderator
Incorrect - peer to peer communication always involves the clients soliciting communication first. There are no servers in the peer to peer part - the servers used in Elite are for tracking the shared universe, and for facilitating the instancing, establishing the peer to peer connections by introducing the peers to each other
Seems you are confusing servers with hosts. There is no need for a server in peer to peer portforwarding, or said in a different way that may suit you better: An individual player pc acts as a host “server” in peer to peer if you wish.
 
You're willing to die on that hill, aren't you?
Of course - I'm correct. I'm not making guesses, I've studied this stuff. I understand where the confusion comes from, but there's only so much I can do to teach the basics of networking to people who don't believe I know what I'm talking about because I'm causing them cognitive dissonance by pointing out that they've been believing something that isn't true ;)
Seems you are confusing servers with hosts. There is no need for a server in peer to peer portforwarding, or said in a different way that may suit you better: An individual player pc acts as a host “server” in peer to peer if you wish.
I'm not confused - even when the game logic designates one client as the host, at the network level, all clients are still seen as equal peers. The host for that session doesn't need to manually open a port for the duration, because it happened automatically when the connections were established.

Port forwarding is for permanent, dedicated servers, period. Peers temporarily acting as a session host aren't dedicated servers - they don't accept unsolicited incoming connections, ever.
 
And in the event of continuous communication, the server's replies don't cause the forwarded port to be stored in the upstream router's NAT table - a different, randomly assigned port is chosen, and that establishes the channel the client uses for subsequent communication, freeing up the known port for the next client that needs to connect
So now you've changed to this story - "different, randomly assigned port ... for subsequent communication" - which is exactly why I said the idea of a dedicated server telling the clients which ports to use to talk to each other was nonsense (which you vigorously denied... but now at least seem to grasp the concept of).
 
It is not too uncommon that a single player becomes host for a whole instance, especially if said player has a strong connection with port forwarding enabled, and the others have weak connections without. If that host dies for some reason, the whole instance can lag heavily or even collaps. In that case, the one player was the "server" for all others, even if just temporarily, and not "dedicated".


Semantics doesn't change this.
 
Last edited:

Viajero

Volunteer Moderator
Port forwarding is for permanent, dedicated servers, period. Peers temporarily acting as a session host aren't dedicated servers - they don't accept unsolicited incoming connections, ever.
And yet port forwarding in peer to peer gaming solves many connectivity issues between pcs that are non permanent and non dedicated servers. And not just for Elite.
 
So now you've changed to this story - "different, randomly assigned port ... for subsequent communication" - which is exactly why I said the idea of a dedicated server telling the clients which ports to use to talk to each other was nonsense (which you vigorously denied... but now at least seem to grasp the concept of).
What changed? Every packet that traverses a router causes a mapping to be stored in that router's NAT, including the packets from the server back to the client. While the client's initial communication points to the predefined port, once it receives confirmation that its connection request reached the server, it starts sending replies to the server along the route the server's confirmation took - thereby using the port that was automatically opened by the server's initial confirmation packet, instead of the forwarded port used for initial contact.

Part of what the server communicates to each client is the information it needs in order to communicate with the other clients for the peer to peer part of the process - clients A and B are each given the other's public IP address and the server relays the port numbers, then the clients start spraying UDP packets at each other's designated ports until every NAT between them has the necessary mappings to allow them to communicate directly. It's a process called UDP hole-punching (it works because unlike TCP, UDP is connectionless, meaning it just sends packets and hopes they reach their destination instead of waiting for confirmation before sending the next packet.
It is not too uncommon that a single player becomes host for a whole instance, especially if said player has a strong connection with port forwarding enabled, and the others have weak connections without. If that host dies for some reason, the whole instance can lag heavily or even collaps. In that case, the one player was the "server" for all others, even if just temporarily, and not "dedicated".


Semantics doesn't change this.
And if that player implemented port forwarding because they previously had network issues, then the game will be prioritizing as host a client that does not have the strongest connection, and everyone in that instance sees issues, like rubberbanding, braben tunnels, and colorful snakes ;)
And yet port forwarding in peer to peer gaming solves many connectivity issues between pcs that are non permanent and non dedicated servers. And not just for Elite.
"Solves" is not the same as "avoids" - we've gone over this ad naseum. I've already explained how the myth of the port forwarding solution became common amongst gamers who don't understand networking and just want the game to work in the moment.
 
Back
Top Bottom