Instancing, CGNAT and you

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:
  1. When performing multi-crew
  2. When playing in a wing
  3. When the last directly reachable peer leaves the instance to keep it connected together
This means, you are at a disadvantage if you do not have a dedicated IPv4 address (which is an IPv4 address allocated to just you) and properly forwarded ports and are thus more likely to spawn in empty instances.
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?
  1. Use TURN servers more liberally to lessen the likelyhood of spawning in empty instances.
  2. 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.
  3. 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.
What can you as a player do?
  1. Get your ISP to adopt IPv6 and configure secure usage of IPv6 in your router and on your computers.
  2. If you are not behind a CGNAT: Forward your ports properly. There is a sticky which explains how to do it.
  3. 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)
  4. Rent a VPS and set it up as a port forwarding VPN or use a service that offers such.
So, here's my preposition: Let's improve instancing together.
 
Last edited:
I'm a bit confused here, if CGNAT precludes port forwarding, how is port forwarding something you as a player can do to deal with CGNAT?
You could still have a dedicated IPv4 address and not be reachable because you didn't forward ports. Of course, this option is not available if you are behind a CGNAT. I edited the point to clarify that.
 
Back
Top Bottom