Are there any services for reducing network delay/latency?

Started by
20 comments, last by hplus0603 7 years, 10 months ago

I am looking for services that can help me reduce network latency between my gameservers and gamers. Is there any utility/api/service for that?

Advertisement
What's your budget?

It's quite likely easier for you to increase your packet send rate (and thus reduce the overall command latency) than start putting servers in edge centers, like Netflix does.
But, if you have a Netflix-like budget, yes, there are things you can do.
enum Bool { True, False, FileNotFound };

But, if you have a Netflix-like budget, yes, there are things you can do.

Well, one thing, really.

Only effective way to reduce latency between server and client is to move the server closer to the client. Services like OnLive/Gaikai with strong latency requirements mostly solve this by placing datacenters near each major population center they served. Blizzard splits all their online games into geographical regions for the same reason, placing a datacenter in each of US East, US West, Europe, and Asia (possibly others).

Of course, most small companies don't have the resources to run their own datacentre, let alone many datacentres. In which case your best option is likely to lease servers from a company that operates such datacentres for you. For example, here at AWS, we offer a pretty good spread of datacentres, with more coming in the near future.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

Well, one thing, really.


Actually: Two!
You are right that locating server capacity close to the various edges is the most common option.
You can also run dedicated, non-routed, fiber between a number of POPs and your actual data center. That will cut down on back-haul routing latency, and make sure you take the most direct physical path.
I think some trading markets in Chicago vs New York interconnect this way, for example.

For a mere mortal game developer, here's the cookbook:
1. Make sure to set your graphics card to not queue more than one frame before displaying.
2. Build and design your game to tolerate and mask latency as much as possible.
3. Increase the rate at which you send packets. (50-60 Hz)
4. Increase the rate at which you simulate your game. (100-180 Hz)

#1 is easily the most-overlooked cause of latency.
#3 and #4 have obvious resource usage draw-backs, and thus many developers choose to focus a lot of time and effort on #2.
enum Bool { True, False, FileNotFound };

It's quite likely easier for you to increase your packet send rate (and thus reduce the overall command latency) than start putting servers in edge centers, like Netflix does.
But, if you have a Netflix-like budget, yes, there are things you can do.

But in NetFlix's case, they have static content to deliver, right? Its more like a CDN, similar to Youtube? For games, we have to transfer the state between multiple players's machines. I was looking for something along the lines of what Riot did for LoL.

Only effective way to reduce latency between server and client is to move the server closer to the client. Services like OnLive/Gaikai with strong latency requirements mostly solve this by placing datacenters near each major population center they served. Blizzard splits all their online games into geographical regions for the same reason, placing a datacenter in each of US East, US West, Europe, and Asia (possibly others).

Thanks for the pointers. I'll check Gaikai and OnLive out. And ofcourse, AWS is the king :)

I've never heard of any companies that offer these kinds of services as a general product, especially not for small time players (e.g. games that aren't making 10's of millions of dollars already).
Usually you've got to work with many, many different ISP's and data-centers directly, making lots of deals to get them all to route your traffic the way you want it to be routed... which is an extremely expensive endeavour. It's much cheaper to just put more servers in more geographically diverse data-centers, so that there's likely one nearby each player :lol:

In finance, people will literally put down hundreds of millions of dollars to reduce their latency by a few milliseconds:
http://www.forbes.com/forbes/2010/0927/outfront-netscape-jim-barksdale-daniel-spivey-wall-street-speed-war.html
http://www.popularmechanics.com/technology/infrastructure/a7274/a-transatlantic-cable-to-shave-5-milliseconds-off-stock-trades/

AWS is the king


No, it's not. It has a few large data centers in a few large metro areas, but it's not optimized for edge delivery of real-time traffic.
Also, AWS is a virtualization based hosting provider, which does not guarantee any particular scheduling latency. Real time applications may find that they suddenly see unexplainable jitter on the server, which would be caused by "noisy neighbors" or the virtualization platform itself.
For low-latency games, you want bare metal hosting.

in NetFlix's case, they have static content to deliver


Yes, and from what I understand, the NetFlix "edge appliances" do more than just serve static files; there are active services on them.


Another thing that you probably also will want to do, on the cookbook list:

5. Match players from the same general Internet area to each other
This is especially important if you use player-hosted sessions rather than your own servers running the authoritative simulation.
enum Bool { True, False, FileNotFound };

Also, AWS is a virtualization based hosting provider, which does not guarantee any particular scheduling latency. Real time applications may find that they suddenly see unexplainable jitter on the server, which would be caused by "noisy neighbors" or the virtualization platform itself.

To some extent you can buy your way out of this issue by forking over for dedicated hosts. Doesn't get the virtualisation overhead out of the way, but you can guarantee dedicated access to hardware resources.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

Yes! And once you pay that price, you should really compare the cost of hosts+network traffic to what you'd pay in your own co-location facilities. Or for "root servers" from some other provider.
Btw: Where Amazon really gets you is traffic charges. They charge a lot more than you'd pay from a straight back-haul provider for transit.
enum Bool { True, False, FileNotFound };

I've never heard of any companies that offer these kinds of services as a general product, especially not for small time players (e.g. games that aren't making 10's of millions of dollars already).
Usually you've got to work with many, many different ISP's and data-centers directly, making lots of deals to get them all to route your traffic the way you want it to be routed... which is an extremely expensive endeavour. It's much cheaper to just put more servers in more geographically diverse data-centers, so that there's likely one nearby each player :lol:

Sounds strange given the number of games and all the rage about latency issues. Is there any specific reason for something like this to not exist?

No, it's not. It has a few large data centers in a few large metro areas, but it's not optimized for edge delivery of real-time traffic.

Didn't know that! So is there any provider that *is* optimized for edge delivery like DO/Softlayer/Linode?


Btw: Where Amazon really gets you is traffic charges. They charge a lot more than you'd pay from a straight back-haul provider for transit.

Cant agree more.

This topic is closed to new replies.

Advertisement