Matchmaking and region assignment errors Wrong region assignment (matchmaking / GeoDNS)
Cause ID in-region-match · Primary owner Game team (Server development) · Also Game team (Client development), Infra team (Network infrastructure), External (External)
When a player lands on a server in a distant region while a closer region exists, that player’s ping stays high even though their connection is fine.
Why Bad GeoIP data, a VPN, assigning a whole party by the members’ average ping, rules that widen the search to distant regions when there aren’t enough players, assignment by DNS resolver location → Effect The player connects to a server across the ocean even though a nearby region exists → On screen In a game with servers in several regions, only you (or only your party) always have high ping, with input lag, rubber-banding, and skills that don’t go off
Primary owner Game team (Server development) · Also Game team (Client development), Infra team (Network infrastructure), External (External)
Game team action items
Server: assign by the per-region ping the client measures in place of GeoIP, cap ping in the rules that widen to distant regions, for parties check the highest member ping as well as the average, log the assigned region and the ping at that moment. Client: measure per-region ping over UDP and send it with the matchmaking request, show the connected region and ping on screen, offer a manual region choice.
Infra team action items
If DNS picks the region, confirm the authoritative DNS supports EDNS Client Subnet (if the player’s resolver doesn’t send it, assignment goes by resolver location), update the GeoIP database regularly, tag connection logs on each region’s servers with GeoIP country and ASN to find the countries and ISPs that end up in distant regions.
External action items
Tell players to turn off VPNs and game boosters and reconnect, tell players on a corporate or overseas DNS to switch to their ISP’s DNS, ask the GeoIP provider to correct wrong locations.
Ballpark numbers
A Seoul player sent to the US West region when Tokyo is available sees ping rise from about 30 ms to about 130 ms. GeoIP is about 99.8% accurate at the country level, but at the city level only about 66% of lookups fall within 50 km, even in the US, and with a VPN it returns the VPN server’s location in place of the player’s.
On the graph
Outliers only · RTT (ping) per player, distribution of assigned regions
Where to look
Tag client IPs from each region’s connection records (load balancer access logs, VPC flow logs) with GeoIP country and ASN, and count which region each country and ISP connects to. For a single player, compare the region they actually connected to with their ping to the nearest region (measured by the player, or mtr from that region’s server to the player’s IP)
Confirmed if
High-RTT players or countries are connected to a distant region even though a nearby one exists, and ping measured to the nearby region is low
Ruled out if
Correctly assigned to the nearby region but ping is still high: points to detour routing or the player’s own connection or Wi-Fi
Check with
Infra tools (no game code needed)
Learn more
Picking the region by DNS (geolocation or latency-based DNS) guesses location from the address of the player’s DNS resolver in place of the player’s own address. If the resolver doesn’t support EDNS Client Subnet, which passes along part of the player’s address, players on a corporate DNS or a distant DNS are assigned by where the resolver is. Matchmaking systems may also judge a party by the average of its members’ ping, or widen the ping limit after a long wait and assign a distant region. AWS GameLift Servers also uses the average as the default for party ping, and its example setting widens the ping cap from 50 ms to 100 ms and then 200 ms. For a player on a VPN, the extra latency of going through the relay server (“Routing through a VPN or game booster”) can overlap with a distant-region assignment; tell them apart by whether the assigned region changes when the player turns off the VPN and reconnects. Connecting to a distant region because there is no nearby region at all is covered in “Propagation delay (physical distance).”
Sources
RFC 7871: Client Subnet in DNS QueriesIETF DNS that answers differently by location guesses location from the address of the resolver sending the query, and gives inappropriate answers when the player uses a central resolver far away. EDNS Client Subnet (an optional feature) passes along part of the player’s address
How Amazon Route 53 uses EDNS0 to estimate the location of a userAWS If the resolver doesn’t support edns-client-subnet, the player’s location is guessed from the resolver’s address and the answer is based on the resolver’s location (same for geolocation and latency-based routing)
Geolocation accuracyMaxMind About 99.8% at the country level, about 66% at the US city level (within 50 km); with a VPN it gives the VPN server’s location in place of the end user’s; mobile network IPs are used across wide areas, so fine-grained location is unknown; the database needs continuous updates; corrections can be requested
FlexMatch rule typesAWS The latency rule (maxLatency) looks at player latency per location; for parties it uses the members’ average by default (partyAggregation avg); queues can place games in regions that don’t meet the latency rule
Create a player latency policyAWS Places the game at the location with the lowest average latency across all players, but players with extreme latency get placed too; example policy widens the ping cap from 50 ms to 100 ms and then 200 ms
Amazon GameLift Servers UDP ping beaconsAWS The game client measures latency to a UDP endpoint at each hosting location and uses it for placement and matchmaking; closer to real game traffic than ICMP ping