Has anyone QoS'ed Steam downloads?

I have QoS in place and I’d like to set Steam downloads to have lower priority from the rest of the traffic. Now I am scratching my head trying figure it out how do I do it.

One option would be to get list of Steam IPs. Another option - list of domains and add them to RouterOS addresses list.

Has anyone managed to do it and can share how did they do it? I already have QoS, just want to hear how anyone else did this (using ips? domains? other methods?).

Steam use various CDN, is near impossible to catch all connections…

Some games use it’s own CDN despite are on Steam (like recent Mortal Kombat 1 update)

You can lower the priority of large downloads with mangle rules. It would be for all downloads using the same protocol and the same port, however. This is explained in the QoS guide that you can find in the forums.

sometimes this serves to identify steam downloads

/ip firewall mangle
add action=mark-connection log-prefix=-steam-tls-host- new-connection-mark=STEAM protocol=tcp tls-host=*steam*
add action=mark-connection log-prefix=-steam-content- new-connection-mark=STEAM content=steam

yeah but sometimes steam open so many connections and so frecuently, that makes it hard to catch steam with that method without colateral damage to another traffic

bonus track

/ip firewall mangle
add action=mark-connection log-prefix=-bliz-tls-host- new-connection-mark=BLIZ protocol=tcp tls-host=*blizzard*
add action=mark-connection log-prefix=-bliz-tls-host- new-connection-mark=BLIZ protocol=tcp tls-host=*battle*
add action=mark-connection log-prefix=-bliz-content- new-connection-mark=BLIZ content=blizzard
add action=mark-connection log-prefix=-bliz-content- new-connection-mark=BLIZ content=battle

If you know what device is running Steam and if you’re running Steam on linux, have you considered marking the packets directly on the device ?

You could do it in different ways:

  • start Steam process in a specific network namespace, then using an iptables prerouting mangle rule to mark packets coming from this namespace.
  • without namespaces: execute the Steam process as a specific group (using ‘sg ’) then use iptables’ ‘-m owner --gid-owner ’ filter to only mark packets sent by a process owned by ‘’