As we all know, Elite Dangerous uses a peer-to-peer network architecture to dynamically instance players, akin to how certain file sharing protocols work.
There are no central servers and the instance tracker, known as the adjudicator, allocates CMDRs to instances.
However, since 2011, there is a problem that only gets worse over time: The exhaustion of IPv4 address space.
In layman terms, there are 7 billion people in the world, but only about 4 billion IPv4 addresses allocatable. As more people adopt the internet, addressing gets scarce.
In addition to IPv6, which, while not adopted by every ISP, has an astronomically larger address space than IPv4, ISPs have combated this scarcity by putting multiple customers behind one single IPv4 address, a carrier grade network address translation (or CGNAT).
This comes at a price, though: Your IPv4 address is not unique, every packet from a connection not initiated by an outgoing request from yours truly, has an ambigious destination. In a normal NAT situation with a router, you would forward ports to alleviate this issue. You do not have that option in a CGNAT environment. Every incoming packet that is not translated to an outgoing connection will get dropped.
In a peer-to-peer environment, for it to work, at least one peer has to be reachable by incoming connections. This would be the instance host.
What this means for instancing
Frontier Developments usually would use TURN servers to bridge and relay data between peers behind a CGNAT or if IPv6 support is not available, but they use this technique sparingly and only if absolutely necessary:
This is also why there is the "myth" of blocking breaking instancing. It's because players behind a CGNAT cannot instance properly anyway.
What should Frontier Developments do?
There are no central servers and the instance tracker, known as the adjudicator, allocates CMDRs to instances.
However, since 2011, there is a problem that only gets worse over time: The exhaustion of IPv4 address space.
In layman terms, there are 7 billion people in the world, but only about 4 billion IPv4 addresses allocatable. As more people adopt the internet, addressing gets scarce.
In addition to IPv6, which, while not adopted by every ISP, has an astronomically larger address space than IPv4, ISPs have combated this scarcity by putting multiple customers behind one single IPv4 address, a carrier grade network address translation (or CGNAT).
This comes at a price, though: Your IPv4 address is not unique, every packet from a connection not initiated by an outgoing request from yours truly, has an ambigious destination. In a normal NAT situation with a router, you would forward ports to alleviate this issue. You do not have that option in a CGNAT environment. Every incoming packet that is not translated to an outgoing connection will get dropped.
In a peer-to-peer environment, for it to work, at least one peer has to be reachable by incoming connections. This would be the instance host.
What this means for instancing
Frontier Developments usually would use TURN servers to bridge and relay data between peers behind a CGNAT or if IPv6 support is not available, but they use this technique sparingly and only if absolutely necessary:
- When performing multi-crew
- When playing in a wing
- When the last directly reachable peer leaves the instance to keep it connected together
This is also why there is the "myth" of blocking breaking instancing. It's because players behind a CGNAT cannot instance properly anyway.
What should Frontier Developments do?
- Use TURN servers more liberally to lessen the likelyhood of spawning in empty instances.
- At least on PC, make use of APIs given by Steam (Steam Datagram Relay) and/or Epic Games (Epic Online Services) if applicable. They offer free TURN relays and work reliably by making use of their respective networks.
- Use dedicated servers on high-traffic places such as CG locations, engineer locations and Shinrarta Dezhra. This alleviates issues with high upload usage as most consumer-grade connections are thin on that.
- Get your ISP to adopt IPv6 and configure secure usage of IPv6 in your router and on your computers.
- If you are not behind a CGNAT: Forward your ports properly. There is a sticky which explains how to do it.
- Ask your ISP for a public static or dynamic IPv4 address. Some ISPs do set it up for you for free or an often small fee. (This might not be an option on most broadcast cable based or mobile networks)
- Rent a VPS and set it up as a port forwarding VPN or use a service that offers such.
Last edited: