Question on several game servers

The Letter Mu

Reputable
Feb 17, 2014
202
0
4,760
Hey all, got another question.

Let's say I have one physical server that is capable of running 10 CS:S game servers at once. The fastest upload speed I can find in my area is 20Mbps, and that's only $70/mo. I've read that CS:S servers use about 1.5Mbps to run smoothly at 32 players. My question is, since 10 servers at 1.5Mbps each makes up 15Mbps used at most, would that extra 5Mbps be enough to keep the servers running smoothly while one of them must upload a .bsp (map file, in case custom ones are used) to each player? I want to make sure that if I will be running servers with custom maps, I want those that already have the map to not experience lag from those that don't already have it taking up bandwidth.

Thanks!
 
Solution
When you plan bandwidth you must plan for peak loads especially where you can't actually tolerate the link hitting 100%. So your worst case would be if all your servers at the same time uploaded one of these map things. You need to guess how often multiple servers would do that and then look at what your actual sustained load with all 10 servers running. You really need to get some long term graphs of a actual server that is running to make these estimates. It is very hard to say if 5m extra is enough. If a upload of a map can use 20m by itself you need to plan for that.

Now if you somehow differentiate normal traffic and these map upload...ie they run on a different port or something you can likely use QoS to do this. If...
When you plan bandwidth you must plan for peak loads especially where you can't actually tolerate the link hitting 100%. So your worst case would be if all your servers at the same time uploaded one of these map things. You need to guess how often multiple servers would do that and then look at what your actual sustained load with all 10 servers running. You really need to get some long term graphs of a actual server that is running to make these estimates. It is very hard to say if 5m extra is enough. If a upload of a map can use 20m by itself you need to plan for that.

Now if you somehow differentiate normal traffic and these map upload...ie they run on a different port or something you can likely use QoS to do this. If the end server machine itself could mark important traffic it would help too since the router would not have to be as smart to determine traffic types. What you can do then is reserve a certain fixed amount of traffic for the normal usage and let the other fight over the remaining. In your example you would reserve 15m for normal and leave the other 5m for everyone to fight over for traffic that is not normal.....The key trick is figuring out how to recognize the traffic that is normal.
 
Solution

The Letter Mu

Reputable
Feb 17, 2014
202
0
4,760
Thanks for the reply. These maps usually take up a few MB's, and they'd only need to be downloaded once per user. I'd have to see what port the game's engine uses for the map downloads and work something out. For compatibility, the server will be running Windows 7, so I'm not sure if there's any software to be found on, say, Server 2008, that would provide a good graph of usage. I've no problem with third party software for doing that, though, as well as for reserving bandwidth for specific ports. I would, however, be using several instances of the server hosting software, and would need a way to group several applications, and assign a limit on bandwidth for all of those combined. Would it be based on application, or port?
 
If you are lucky it will use a different connection to download the maps. You would have to watch it with wireshark or something unless the document how this works. Most games have udp streams that run all the time and tcp streams for other stuff. You might be able to just assume udp was one and tcp stuff is the other.
This is the hard part to figure out what the traffic looks like. It would be like you the person could sit there and sort the traffic. Once you could in theory do it then it is trivial to make a router do it. If it all runs on different ports it is pretty simple for the router. If the traffic is all mixed together on one port then only the server knows. It would have to use QoS packet markings on individual packets so when the router gets the data it can apply rules based on these markings.