When All You Want is Unlimited Power

Posted December 11, 2020 by Nick Sarakas

I talked about a high-level overview of how our network was laid out in a previous post. Now for a little more in depth of 2 things that really help us accomplish making sure you have Internet for when Valve releases a CS:GO patch at 2 am. We get our connection from SLU, but we only get so much Internet. What happens if everyone tried to download something at the same time? At home, most people do not have what is called Quality of Service (QoS) turned on and tuned to what they want to happen. This is why if you have a slower Internet connection and decided to download Wikipedia, your Netflix connection may have to buffer or the quality drops down. Now with QoS, you can say that online streaming services get a bigger chunk of bandwidth or have a higher priority than the funny cat pictures you just found on imgur.

Queues, Queues, and More Queues

With QoS, we have different queues, which is like a bucket, setup that allow us to say all blank gets a total of this much bandwidth. We can also say blank gets a higher priority than something else or everything else. We combine those to try to keep things even. While watching someone on Twitch is fun, downloading that CS:GO patch that dropped the day of a tourney is more import. So, we would put Twitch in a lower priority queue than something downloading from Steam. We try to be fair and make sure that a bunch of people do not just suck up all of the bandwidth by downloading a bunch of patches or full games and thereby cause your Twitch viewing to drop to nothing. It is a never-ending game of tug-of-war and luckily, we have got things setup pretty good and have not had to touch most of it.

On the upload side, we give our guest streamers a higher priority on the upload than say someone uploading the funny cat photos they downloaded from imgur last night and have to upload them to their funny cat album. Obviously, it would be awesome if your uploading got full bandwidth, but it will hurt the Twitch streamer more with slow speeds than it would you. So we give our guest streamers priority upload to make sure when they are streaming for our twitch channel, there aren’t issues with pixilation and drop outs. All of these upload and download queues are great, but what happens when you have a bunch of people who get together and someone shares an awesome random game they found and everyone at the LAN wants to join them all of a sudden? If everyone had to download that game all at once, it would choke out our connection fairly quickly and everyone would be stuck downloading it at super slow speeds; that is where LanCache comes into play.

Cache Me Outside. How Bow Dat?

We know that there are millions of games out there in the world, but we also know that the majority of games people install come from a few different platforms (e.g. Steam, Blizzard, Epic, etc.) and that most downloads are for a handful of games. What if instead of you downloading that CS:GO patch from Steam directly to your computer, it downloaded through something else first and saved that file, so that the next person would download it from there instead of having to go out to the internet; that is how LanCache works.

On most platforms, we made a few tweaks to our router so that instead of your traffic going directly to Steam to download a game, you go through LanCache. LanCache looks at the file you want to download and sees if it has it already. If it does, you download it from LanCache; if it does not have the file, then LanCache downloads the file and while downloading it, it also sends the file to you. The first person to download a particular file, will not see any real difference in the speed of their download, but the next person will potentially see their download a close to a gigabit. So not only do you get to download at way higher speeds than you would otherwise get, we also save that bandwidth for someone else.

It’s a Wrap!

It would be awesome if we got a 10 Gig connection from SLU, but until we get a much beefier connection, we have to manage what we do get, as best as we can. By using both QoS and LanCache, for the most part, we can keep your downloads and uploads running without interfering with other people.