protonscr

[Feature Request] Content Caching without Site Licensing Program

steamopen Feature RequestSteamCMD
ValveSoftware/steam-for-linux#5869 · opened 2018-10-31 by OlliC · updated 2018-11-04 · 4 comments · github
OOlliC 2018-10-31 github

Hi,

while looking into steam cache possibilities for a LAN party i stumbled upon a hidden feature in steamcmd which is the steam content cache functionality. Unfornately its tied to the Steam Site Licensing Program which involves becoming a Steam Partner and is only applicable for registered non-profit organisations.

I think these functions which include enabling the P2P downloading in the steam client and the content cache should be available to everybody. It would be very useful from small to big LAN parties and easier to setup than current solutions with http reverse proxies and DNS interception.

The current functionality in steamcmd for the Site Licensing Program also has some issues that limits the general use for LAN parties. For one it requieres 2FA to be enabled with the assosciated steam accounts which causes issues when running as a system service on linux or in a docker container. So ideally it would not require an extra steam login to run.
Also it apparently stops the steam clients in the network from saving login details so you have to reenter your password + 2FA everytime you login.

So without these issues and not being tied to the Site Licensing Program this would be a very cool new feature.

OOvermindDL1 2018-10-31 github

Way way back in the day we used to just reverse proxy the steam CDN's and the reverse proxy would just cache the downloaded data and re-serve it directly when requested again. Don't know if steam has made that more difficult now, but it worked really well back then considering the significantly slower internet at the time.

OOlliC 2018-10-31 github

Yes that still works. I have set this up with nginx and bind. There are also easy to setup docker containers available. But its also an unofficial solution which could stop working at any time. For example if they switch to https downloads.

Llakeman 2018-11-03 github

The game download protocol was changed to http deliberately to allow caching; https://developer.valvesoftware.com/wiki/SteamPipe

OOlliC 2018-11-04 github

Yeah maybe its not so unoffical as i thought. But its still a very hackish way of doing it. It may work well in datacenters to mirror the offiicial servers. But on LAN you still have to maintain a list of used DNS entries. At the moment this are the servers that need to be spoofed and redirected to your LAN cache:

*.content.steampowered.com
content1.steampowered.com
content2.steampowered.com
content3.steampowered.com
content4.steampowered.com
content5.steampowered.com
content6.steampowered.com
content7.steampowered.com
content8.steampowered.com
cs.steampowered.com
steamcontent.com
client-download.steampowered.com
*.hsar.steampowered.com.edgesuite.net
*.akamai.steamstatic.com
content-origin.steampowered.com
clientconfig.akamai.steamtransparent.com
steampipe.akamaized.net
edgecast.steamstatic.com
steam.apac.qtlglb.com.mwcloudcdn.com
*.cs.steampowered.com
*.edgecast.steamstatic.com
*.steamcontent.com
cdn1-sea1.valve.net
cdn2-sea1.valve.net
*.steam-content-dnld-1.apac-1-cdn.cqloud.com
steam.apac.qtlglb.com
edge.steam-dns.top.comcast.net
edge.steam-dns-2.top.comcast.net
steamcdn-a.akamaihd.net

This list changes all the time and must be manually extracted from the steam client. The content caching solution in steamcmd is much cleaner in that regard.

Nothing extracted yet.