16 Jun 2013, 13:55

Final Fantasy XIV - Server Locations

FFXIV Characters Selection - Beta Phase 3

This post was partially inspired by a FFXIV post from Reddit: How to check your NA server ping. My post below gives players real FFXIV servers to ping test against.

With Final Fantasy XIV: A Realm Reborn releasing in two months, and with the beta servers now online with regional servers, I figured it was time to take a peek at where the servers were located. There was some guessing in the community that the North American servers would be located in Canada, and they are correct!

When you are selecting a server to create your FFXIV character on, you have to first choose between the “JP” and “NA/EU” group. This selection determines if you will be playing on a server in Tokyo, Japan or Montreal, Canada. The selection of the server within a world group has no impact on your ping. This is important to know as you will see servers marked as (EU) in the NA/EU list. These EU servers are still hosted in the Canadian datacenter. This means no servers are hosted in Europe.

The FFXIV client gives you an indicator of your ping to the server when you are selecting a server. You can see an example of this in the 2 screenshots below:

Hovering over a JP server shows a connection of "Good" for me.

Hovering over a JP server shows a connection of “Good” for me. Results based on a ping to 124.150.157.158

Hovering over a NA server shows a connection of "Excellent" for me.

Hovering over a NA server shows a connection of “Excellent” for me. Results based on a ping to 199.91.189.74

You’ll notice the “CONNECTION” quality in the above two pictures.  The game determines this by pinging the lobby server for each world group and assigning a name to the resulting ping.  To give you an idea of what the “Excellent” vs “Good” means, I have a ping of 76ms to the excellent server and a ping of 175ms to the good server.

Server Status From SquareEnix

The “World Status” page that is shown in the launcher can be seen directly in your browser, you don’t even have to launch the game. Note that the URL has “beta3″ in it, which means it will most likely change for beta4 and release, so don’t count on it staying around forever. See here: http://frontier.ffxiv.com/beta3/world.html

There are two .json files that also provide the server status for people wanting to do a server-status page themselves, those being:

Traceroute to lobby servers

I wanted to give an example traceroute to the two lobby servers for FFXIV. This is taken from this webserver which is based in Dallas, TX.

Loss%=Percent of lost packets. Snt=Number of pings sent. Last/Avg/Best/Wrst=Ping values. StDev=Standard deviation of pings.

Traceroute to neolobby01.ffxiv.com (lobby in Japan):

HOST: nlworks.com                             Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- router2-dal.linode.com                   0.0%    10    0.6   0.5   0.4   0.6   0.1
  2.|-- xe-2-0-0.car04.dllstx2.networklayer.com  0.0%    10    0.3   1.9   0.3  16.3   5.0
  3.|-- po102.dsr02.dllstx2.networklayer.com     0.0%    10    0.6   0.5   0.5   0.6   0.0
  4.|-- po22.dsr02.dllstx3.networklayer.com      0.0%    10    0.8   0.8   0.7   1.2   0.1
  5.|-- ae17.bbr02.eq01.dal03.networklayer.com   0.0%    10    0.7   0.6   0.6   0.8   0.1
  6.|-- ae7.bbr01.eq01.dal03.networklayer.com    0.0%    10    0.8   6.9   0.7  29.9  10.9
  7.|-- ae0.bbr01.cs01.lax01.networklayer.com    0.0%    10   34.1  34.1  34.0  34.3   0.1
  8.|-- ae7.bbr02.cs01.lax01.networklayer.com    0.0%    10   31.5  31.6  31.3  32.4   0.3
  9.|-- ae0.bbr02.eq01.sjc02.networklayer.com    0.0%    10   42.0  42.0  42.0  42.2   0.1
 10.|-- ae7.bbr01.eq01.sjc02.networklayer.com    0.0%    10   41.5  42.8  41.4  54.6   4.1
 11.|-- 0-3.sw4.sjc1.asianetcom.net              0.0%    10   42.1  42.1  41.7  42.6   0.3
 12.|-- po4-0-0.cr1.nrt1.asianetcom.net          0.0%    10  143.5 143.3 143.0 143.5   0.2
 13.|-- gi1-0-0.gw1.nrt5.asianetcom.net          0.0%    10  143.4 143.5 143.3 143.7   0.1
 14.|-- squareco.asianetcom.net                  0.0%    10  146.1 146.3 146.0 147.1   0.3
 15.|-- 61.195.56.129                            0.0%    10  161.0 161.1 160.8 161.3   0.2
 16.|-- 219.117.144.70                           0.0%    10  161.2 162.3 161.0 171.9   3.4
 17.|-- 219.117.144.49                           0.0%    10  137.2 137.0 136.8 137.2   0.1
 18.|-- 219.117.144.29                           0.0%    10  139.2 139.2 138.9 140.1   0.3
 19.|-- 219.117.147.186                         10.0%    10  135.5 135.7 135.4 136.0   0.2
 20.|-- 124.150.157.158                         10.0%    10  135.3 141.8 135.3 161.6  11.2
Traceroute to neolobby02.ffxiv.com (lobby in Canada)

HOST: nlworks.com                             Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- router1-dal.linode.com                   0.0%    10    0.6   0.5   0.4   0.7   0.1
  2.|-- xe-2-0-0.car03.dllstx2.networklayer.com  0.0%    10    0.3   4.8   0.3  37.5  11.7
  3.|-- po101.dsr01.dllstx2.networklayer.com     0.0%    10    0.5   0.5   0.4   0.6   0.1
  4.|-- po21.dsr01.dllstx3.networklayer.com      0.0%    10    0.8   0.8   0.7   1.2   0.1
  5.|-- ae16.bbr02.eq01.dal03.networklayer.com   0.0%    10    0.6   0.6   0.6   0.9   0.1
  6.|-- xe-11-0-3.edge2.Dallas3.Level3.net       0.0%    10    0.7   0.8   0.6   1.7   0.3
  7.|-- ix-19-0.tcore2.DT8-Dallas.as6453.net     0.0%    10    0.8   0.8   0.7   1.8   0.3
  8.|-- if-2-2.tcore1.DT8-Dallas.as6453.net     90.0%    10   51.1  51.1  51.1  51.1   0.0
  9.|-- 64.86.78.5                               0.0%    10   61.6  51.4  47.2  61.6   5.6
 10.|-- if-22-2.tcore2.CT8-Chicago.as6453.net    0.0%    10   51.6  51.7  51.1  53.1   0.6
 11.|-- if-3-2.tcore1.W6C-Montreal.as6453.net    0.0%    10   51.0  47.6  46.5  51.0   1.6
 12.|-- 66.198.96.50                             0.0%    10   49.6  49.6  49.5  49.8   0.1
 13.|-- 192.34.76.2                              0.0%    10   51.5  54.8  51.4  73.3   7.3
 14.|-- 199.91.189.234                           0.0%    10   48.8  48.3  48.0  49.7   0.5
 15.|-- 199.91.189.74                            0.0%    10   46.7  46.7  46.7  46.9   0.1

FFXIV Server List

Now for the fun part, a list of some of the servers you interact with when launching FFXIV.

Looking at the table below, you will notice that the IP address for Leviathin and Cerberus are only 1 digit apart. This means they are in the same datacenter, possibly right near one another. So picking an EU versus a non-EU server in the NA/EU group has no impact on your ping.

Hostname IP Address Protocol Location Purpose
patch-bootver.ffxiv.com many HTTP Near you (CDN) When you first start FFXIV and it checks its launcher application version. This is hosted on a CDN (content delivery network) run by Akamai. This means patch downloading should always be fast.
patch-gamever.ffxiv.com 124.150.157.126 HTTP Japan Checks if your game version is current. If you are out-of-date, this server will tell you what the latest version is and your client will download it from a different server.
frontier.ffxiv.com 124.150.157.190 HTTP Japan When the launcher is shown, this server returns all of the “latest news” information.
secure.square-enix.com 124.150.158.110 HTTPS Japan This server gives you the login page in the top-right of the launcher. As well, when you send your username/password, it goes to this server.
patch-dl.ffxiv.com.edgesuite.net many HTTP Near you (CDN) When you download a patch for FFXIV, it is hosted on a CDN run by Akamai.
neolobby01.ffxiv.com 124.150.157.158 custom (Port: 54994) Japan The main lobby server for the Japan world group. Used for the “connection” ping test. Also handles character creation and assignment to world servers.
neolobby02.ffxiv.com 199.91.189.74 custom (Port: 54994) Canada The main lobby server for the NA/EU world group. Used for the “connection” ping test. Also handles character creation and assignment to world servers.
Unknown (Ramuh) 124.150.157.36 custom (Port: 55022) Japan Ramuh world server in Japan.
Unknown (Leviathin) 199.91.189.21 custom (Port: 55022) Canada Leviathin world server in NA/EU.
Unknown (Cerberus) 199.91.189.22 custom (Port: 55022) Canada Cerberus(EU) world server in NA/EU.

My plan is to go through all of the servers players can create a character on and match the IP address to them, but this is a time consuming process.

01 Apr 2013, 12:00

Simcity – Launching the Launcher

Encrypted Traffic

Preamble

When I first started looking at the Simcity 2013 traffic, I had hoped I could peak at all of the server communication they do.  Sadly (for me), the team at Maxis was fairly smart when it came to securing their encrypted traffic and they were able to thwart my initial attempts to man-in-the-middle (MITM) the connection between the Simcity client and their servers.  I plan on attempt that some more in the future, but for now I’m going to look at the traffic from a higher level.  I’m not entirely skilled here, but I know enough to have been able to pull it off for the Final Fantasy XIV login system (which will be its own post someday).

Note, all my data capture was from the first week of Simcity’s launch, so the behavior outlined below may have changed since then.

Initial notes

Looking at the Simcity traffic, the first and most obvious point is that all communications with their servers is done over either HTTP or HTTPS using standard ports.

Starting the Simcity Launcher

Wow, talk about a busy client.  In starting up the Simcity launcher, there are a total of 12 DNS lookups.  This whole process includes checking for updates, authenticating, and loading news/ads.  Below I outline what I’m able to see and guess about the traffic that the Simcity launcher does out to their servers.

Hosts

Below is a list of all the DNS lookups the Simcity launcher does at startup.  I also looked at some of its traffic to try and guess what each server is used for.

Hostname Lookups Protocol Data
novafusion.ea.com HTTP Client tries to connect a few times, but the server never responds. Ends up falling back to proxy.novafusion.ea.com
achievements.gameservices.ea.com HTTPS Achievement tracking
loginregistration.dm.origin.com HTTPS Origin service.  Used for registration/account verification.
proxy.novafusion.ea.com HTTPS Origin service.  Seems to be related to logging into the game and verifying you have an Origin account.
telemetry.simcity.com HTTP & HTTPS A central simcity services (not region specific).
api.simcity.com HTTPS Another central simcity service.
api.p04.simcity.com HTTPS Simcity API specific for a reason (US East 2 in this case).  Lots of connections opened to this server.
socket.p04.simcity.com HTTPS Second region-specific Simcity service.  More likely used for region chat communications and more immediate events.
update.prod.simcity.com HTTP Update server.  Handles fetching game updates and scripts related to the game.  Also responsible for serving up some static images for the launcher. (learn more graphic, game scripts html, UpdaterControl.bin)
scprod04servicenews.s3.amazonaws.com HTTP Does a GET on “/en_US/announcement.json“, which report status information (Currently this is the “Welcome to Simcity!” message)
adsrv-dummy.ea.com none Not a valid DNS entry.  Looks like a place-holder until they get a real ad system setup.
static.prod.simcity.com HTTP Same IP addresses as update.prod.simcity.com, though the server distinguishes the hostname when handling GET requests.

Conclusions

There isn’t anything all too surprising with the list of servers the launcher connects to. I would say the number of servers that it connects to are pretty surprising, it goes to show they are doing a lot with just the launcher. As well, much of the traffic is over HTTPS, so without getting around the SSL encryption, it will be hard to know exactly what each server is used for.

The two “p04” servers, which are the region specific servers (NA East 2 in this case) are a bit interesting, as it means the game is fetching region specific data before the game even launches.  This could be just simple checks to see if the server is busy.

Another interesting piece about the launcher is the User-Agent it reports itself as:

User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.3 (KHTML, like Gecko) Safari/535.3 EAWebKit/12.4.2.2.0

It looks like the Simcity launcher is using Webkit as its rendering engine for HTML.  That definitely will make it easier for them to have the game on OSX.  For those that are unfamiliar with Windows gave development, many developers tend to use Internet Explorer on Windows as it is fairly painless to embed in an application.  Choosing to use Webkit was definitely more work for them, but makes cross-platform a lot easier.

10 Mar 2013, 14:00

SimCity Network Traffic – World List

Like many other who have tried playing Simcity since it’s launch, I’ve had time wasted fighting with their servers trying to get online.  This motivated me to start looking at the game’s network traffic to see what I could find.

Simcity Launcher

When you initially start up the game, the launcher connects to a number of different servers; this includes the advertisement area (the newsletter in the above screenshot) and recent news.  If you click the “SELECT SERVER” button, it does a GET on this URL:
http://worlds.simcity.com/parallelworlds.json

If you capture the data yourself you’ll see it actually tacks a “?###” on the URL, with ### being an 18-digit number.  This number does not seem to change between views of the server list, restarts of Simcity, or restarting Origin.  Though, launching the game on another computer behaves similarly, the number is slightly different (first 9-digits were the same). I would guess this is either a unique ID for users, or a “last changed” time, but I’m not sure yet.

World List Data

{
  "version": 4,
  "hosts": [
    {
      "Desc": "Antarctica",
      "name": "0x0f3b425d",
      "url": "api.p21.simcity.com",
      "game": "api.p21.simcity.com",
      "websocket": "socket.p21.simcity.com",
      "telemetry": "http://telemetry.simcity.com",
      "news": "api.p21.simcity.com",
      "statuses": [
        {
          "status": "available"
        }
      ],
      "id": 999143101,
      "sort": 0
    }]}

(all but 1 server has been trimmed for space reasons)

What’s listed here:

  • Name of each host.
  • 5 different servers entries per host, only 3 of them having unique DNS names.
  • A name and id that are key values for the host.
  • Status information, which is interesting on servers when they are full, as they contain both the “full” and “available” values as seen below.  It seems the client will only use the first status entry it hits.
"statuses":[{"status":"full"},{"status":"available"}],

What’s not listed here:

  • Which servers you have regions/cities on. This functionality was added with patch 1.4, but it seems it’s tracked through other means.

I’ll be writing up more on this information later, but this is a start.