I set it up almost without thinking because I was using it before I got fiber service.@Esteban did you set up the port forwarding because of issues with the new connection, or have you always kept it configured?
Try turning it off. Port forwarding keeps a port open to allow incoming connections without prior invitation, which is unneccessary if you're not hosting a dedicated server. An outgoing packet of data will also open a port on the way out, so that the reply can actually get back to you (the entire internet only works because of this - otherwise, you'd request a web page and be unable to receive the data, for example). Our clients always send an outgoing communication first, so there is no reason to have a port open preemptively.I set it up almost without thinking because I was using it before I got fiber service.
ping -f -l 1472 google.com
That analogy only applies when the server is dedicated e.g. a web server.An outgoing packet of data will also open a port on the way out, so that the reply can actually get back to you (the entire internet only works because of this - otherwise, you'd request a web page and be unable to receive the data, for example). Our clients always send an outgoing communication first, so there is no reason to have a port open preemptively.
Correct - port forwarding in general only applies to situations involving a dedicated server. In the case of Elite, Frontier's servers have ports opened to receive connection requests from all of the clients. The server then tells the peers where to go from there, and that's how all of the peers know to send an outgoing packet (opening a port) every time it's needed.That analogy only applies when the server is dedicated e.g. a web server.
Think about how it works with ED's peer-to-peer model - one side initiates by making an outgoing connection, but where is it going? To another peer which has no previous contact/existing connection with that IP and will simply drop any packets from it (unless there is a forwarding rule set up).
You've missed the point completely because you're focused only on the machine initiating the connection and not the one receiving.Correct - port forwarding in general only applies to situations involving a dedicated server. In the case of Elite, Frontier's servers have ports opened to receive connection requests from all of the clients. The server then tells the peers where to go from there, and that's how all of the peers know to send an outgoing packet (opening a port) every time it's needed.
Remember that Elite isn't a pure peer to peer system - there are still dedicated servers involved, but none of the players are hosting them![]()
Except that they do initiate communication with each other simultaneously, when instructed to do so by the frontier server. The port forwarding is set up on the frontier server, because it is a dedicated server. Neither client is a dedicated server, so port forwarding is unneccessary at best, and could cause people to believe they've solved a problem when they haven't.You've missed the point completely because you're focused only on the machine initiating the connection and not the one receiving.
The peers need to be able to communicate directly with each other. It is impossible for them to both initiate a connection to each other at the same time - one of them will always be first - and may be unable to reach each other because the receiving router will not have a NAT entry associating the IP+port of the incoming packet with any local machine IP+port. This is why port forwarding needs to be active, so the router will unconditionally forward those packets to the right machine.
Unless the clients somehow have their NICs (and routers) synchronized to the same clock, such a thing is impossible.Except that they do initiate communication with each other simultaneously, when instructed to do so by the frontier server. The port forwarding is set up on the frontier server, because it is a dedicated server. Neither client is a dedicated server, so port forwarding is unneccessary at best, and could cause people to believe they've solved a problem when they haven't.
The server can't know which ports to direct each client to, because the router allocates outgoing ports (and creates a NAT table entry) as connections are attempted, based on the source IP+port and destination IP+port pair. There is no way for the local machine to communicate to the server in advance which port the router is going to assign.Essentially, the frontier server acts as an introducer, telling each of the clients how to reach the other. Both clients then begin sending UDP packets to each other, and while the first burst of packets might be rejected, it won't take long for each client to have established open ports due to their respective outgoing packets, allowing the incoming packets to get through, without holding a port open 24/7. It's a process sometimes called UDP hole punching, and it's a common technique used for peer to peer communication when there is a dedicated server that both clients can reach to do the initial introductions.
Not all routers act the same - some are more insecure than others and will only associate an external port with an internal IP+port, rather an requiring a full external IP+port match. ED also falls back to using TURN if direct connections are unavailable.If port forwarding was required, I simply would not be able to connect
They don't need to be synchronized - each client fires packets at the other, expecting the first few to get dropped. Those outgoing packets open a return path at each node they traverse, and when both clients have successfully opened a path all the way to their respective public-facing IP addresses, the next incoming packets to arrive will make it all the way to their intended recipient. Like I said, google "UDP hole punching" - it's not just a theory, it's a technique that has been used for decades at this point.Unless the clients somehow have their NICs (and routers) synchronized to the same clock, such a thing is impossible.
The local machines don't communicate which port they're assigned in advance - they communicate that info after the port has been assigned, via the packet headers, as is the norm in IP protocol. And since both clients know about and initially communicate with the server, that's the mutual connection point where the port assignement info is exchanged between clients. The server initially only needs each client to have established a connection with the server, through which it is able to send them replies without knowledge of which ports are used at each node along the return path.The server can't know which ports to direct each client to, because the router allocates outgoing ports (and creates a NAT table entry) as connections are attempted, based on the source IP+port and destination IP+port pair. There is no way for the local machine to communicate to the server in advance which port the router is going to assign.
Every single router that has ever been, assigns an external port for replies to come back through. They would be unable to hear replies, otherwise. They would, for example, send a request to a web server for a given webpage, and never receive the page data because there would be no path for the data to reach them. It's a fundamental component of the way IPv4 functions.Not all routers act the same - some are more insecure than others and will only associate an external port with an internal IP+port, rather an requiring a full external IP+port match. ED also falls back to using TURN if direct connections are unavailable.
Every single router that has ever been, assigns an external port for replies to come back through. They would be unable to hear replies, otherwise. They would, for example, send a request to a web server for a given webpage, and never receive the page data because there would be no path for the data to reach them. It's a fundamental component of the way IPv4 functions.
If Ned is right, then I have been hallucinating almost 5k hours of Elite play, because I can't open ports on my connection - the public facing IP address belongs to a router upstream from my house, and is shared by all of my neighbors who have the same ISP (I've had opportunies to confirm this while working on neighbors' networks).Ned is right.
IF the ED client does not have Port Forward or UPNP active, it wont be able to allow incoming connections (non-initiated locally in advance) from other ED clients
In which case it will be able only to connect to a session made available by an ED client that has working upnp or port forwarding
(OR to use FDev Turn servers to connect to sessions from other "closed" ED Clients with the added implied overhead)
That's not the fundamental component of the way IPV4 functions.
That's how NATTING works. The NAT performed by the router will know how to match the outgoing session with the response from the destination and will make sure that response reaches the initiator located behind the NAT.
If Ned is right, then I have been hallucinating almost 5k hours of Elite play, because I can't open ports on my connection - the public facing IP address belongs to a router upstream from my house, and is shared by all of my neighbors who have the same ISP (I've had opportunies to confirm this while working on neighbors' networks).
The clients do not have public-facing IP addresses, nor public ports. Their routers do, but the clients don't know anything about those.They don't need to be synchronized - each client fires packets at the other, expecting the first few to get dropped. Those outgoing packets open a return path at each node they traverse, and when both clients have successfully opened a path all the way to their respective public-facing IP addresses, the next incoming packets to arrive will make it all the way to their intended recipient. Like I said, google "UDP hole punching" - it's not just a theory, it's a technique that has been used for decades at this point.
The port that the clients use to communicate with the server will not be the same one used when they try to communicate with each other (see below), so this method is doomed to fail.The local machines don't communicate which port they're assigned in advance - they communicate that info after the port has been assigned, via the packet headers, as is the norm in IP protocol.
And since both clients know about and initially communicate with the server, that's the mutual connection point where the port assignement info is exchanged between clients. The server initially only needs each client to have established a connection with the server, through which it is able to send them replies without knowledge of which ports are used at each node along the return path.
The router associates an external port with a local IP+port and a remote IP+port. If a non-matching remote IP tries to send a packet to that port, it will be rejected (ICMP destination unreachable).Every single router that has ever been, assigns an external port for replies to come back through. They would be unable to hear replies, otherwise. They would, for example, send a request to a web server for a given webpage, and never receive the page data because there would be no path for the data to reach them. It's a fundamental component of the way IPv4 functions.
And this is exactly what happens when a router implements port-restricted NAT, which is the most common type because it's cheap and nasty / the most basic to implement.Regardless, port forwarding only does one thing - keeps a port on your router open. The intended purpose is to allow unsolicited incoming connections through, which is to say, connections that might come at any time without prior notice.
I've watched your streams, and indeed the amount of issues you experience when trying to play with others is far worse than most people. And if you're behind a CG-NAT with no control over the public interface, it's any wonder you think port-forwarding makes no difference - because in your case it won't.If Ned is right, then I have been hallucinating almost 5k hours of Elite play, because I can't open ports on my connection - the public facing IP address belongs to a router upstream from my house, and is shared by all of my neighbors who have the same ISP (I've had opportunies to confirm this while working on neighbors' networks).
Port forwarding keeps a port open to allow incoming connections without prior invitation, which is unneccessary if you're not hosting a dedicated server.
Elite Dangerous only uses TURN relays if you are in a wing or multicrew session or if it has to to keep the current instance consistent because the only directly reachable peer left the instance.
Yeah, this can occur if all relay servers are in use. FDev is cheap in this regard, sadly.OR you get a colored snake error when the only peer that had proper upnp/port-forwarding leaves the building
(FDev TURN servers do exist, but they are not that many nor that reliable)
Yeah, this can occur if all relay servers are in use. FDev is cheap in this regard, sadly.
Or they could have implemented Steam Datagram Relay to try and peer Steam users together or Epic Online Services and use its TURN relays. Both services are free to use. (Even an open source project named OpenTTD considered SDR but then chose to implement their own solution that even asks for consent)I dont blame them - that the price we pay for a fully free game with no subs and no micro-transactions (and no, i dont count cosmetics as microtransactions since they're really not required)