Actions

Elite Dangerous Mission Board Server Issue

From Rabbi Blog

First and foremost, no one should have to know this stuff to get the game to work in a reasonable fashion. Full stop.

However like many things within the game that takes time to figure out how to do, this just ends up being another game puzzle... albeit outside of the game. If this helps other commanders enjoy the game, then +1 to karma.

If any commanders have questions, feel free to contact me (@rabbibob or @betamountain on Twitter) or on the Loose Screws Network Discord. I'm happy to assist as I can with any of the below, including the new wave of console players that have migrated into the PC realm.

Background

Sometime around Update 14, some commanders began having issues checking out and cashing in missions in Elite:Dangerous. This resulted in frustration, especially when earnings were lost due to missions timing out without the ability to turn them into completed missions.

You can see the post on the FDev forums here where I finally hit the nail on the head.

Primary and Mission Servers

The following is derived solely from trial & error and looking at the netlog generated from the game. When starting a session Elite reaches out to Elite servers hosted at Amazon AWS and seeks to contact a primary server. This server acts the over-arching go to for the session for various items. Upon receiving a primary server, the game then establishes contact with one of the MissionManager servers. As you jump between systems, it is normal to see new MissionManager server elections routinely.

The game client will reach out to a server in 15 second intervals and for three tries, if a connection is not made it will attempt to elect a new server. One can assume there is a load balancing operation behind the scenes orchestrating the servers that get handed out.

When Mission Boards Fail

If you get a bad mission board, especially when cashing in, we should try to see if we can get to a different server. Many attempt relogging, jiggling the router handle, etc. however if the load balancer hands out the same server, you get that server.

Consider if a server connection fails three times you get a new server, maybe we can look at causing that connection to fail.

How do we do that?

Outbound Firewall Rules

I'm going to use this Microsoft article as the basis for the steps below.

  1. Use the Windows bar to search for and open: Windows Defender Firewall
  2. Select Advanced Settings (a new window opens)
  3. Right Click Outbound Rules and select New Rule
    1. What Type of Rule? Custom
    2. What Does This Rule Apply To? All programs
    3. Protocol: Any
    4. What local IP? Any
    5. What remote IP? Add the IP address of the failed MissionManager (see below)
    6. What Action? Block the connection
    7. When does this rule apply? Check all three
    8. Name: EDServers
    9. Description: Bad Mission Board Servers


You've created an outbound block firewall rule! At any time you can right click the rule to Enable or Disable it. If you want to add\remove servers to it, right click it for Properties and go to the Scope tab.

How Do I Know The Server?

The main login screen shows you connection attempts to the primary session server, but you'll need to look at the netlog for the mission server. The logs are found in the game install directory:

  • <gamedir>EliteDangerous\Products\elite-dangerous-odyssey-64\Logs\



Open up the latest netlog directory and look towards the end of the file for the latest mention of a mission server.

  • Example: MissionManager disconnecting from server EDServer#1952



The start from the top of the file and search for the EDServer that was shown. That will get you the line with the IP address of the server in question.

  • Example search: ))EDServer#1952
  • Result: {00:42:50GMT 105.447s} AddSession: 0x0000096c5090e2b6: 17198922774039 x 8 [0/2]((34.243.214.8:19364))EDServer#1952



The IP to block in this example is 34.243.214.8.

That Is A Lot Of Work

Yes, it is. I ran the powershell script below in "Real Time View" when the game was running to see the servers change throughout the game. It can be used to assist in finding the bad server IP, often even if it is started after awhile in game. If not, log to desktop, log back into the game and start a session, then start the script. It will show you the most recent servers in question and if your mission board is broken, you have the IP right there. Log to desktop, block it, log back in and play.


Real Time View

You can view this in real time by monitoring the newest netlog that is in the game's log directory (this is not the commander's journal directory). If you are aware of how to run a powershell script, here is some code to get you started:

## Start this script after you are in game
## Set the directory of the log output location
$dir = "D:\Games\EliteDangerous\Products\elite-dangerous-odyssey-64\Logs\"
## Grab the newest file in that directory for monitoring
$latest = Get-ChildItem -Path $dir | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$fullpath = $dir+$latest.name
Get-Content $fullpath -wait -tail 500 | Select-String -pattern "MissionManager","System:","Primary Server:"," AddSession:"



ED-Servers.png



That's It

Again, no one should have to know this... but if you have a few hundred million in missions that you're about to lose it could be worth the hassle figuring it out!