Bufferbloat when downloading Steam games
-
Hello,
I'm using pfSense 2.7.2 with limiters configured according to this guide: Configuring CoDel Limiters for Bufferbloat. I have set the limiter bandwidth to 95% percentage of my WAN bandwidth, and enabled ECN and FQ_CODEL on both limiters.
The limiters work great and I have no bufferbloat even when downloading large files from other sources. However, when I download Steam games, everything starts being slow and videos are buffering for all clients. My Steam download speed is always lower than my WAN download bandwidth.
I have tried lowering the limiter bandwidth, but the problem continues no matter how low I set it. I have also checked the firewall logs and rules, but I didn't see anything unusual or blocking.
Does anyone have any idea why this is happening and how to fix it? Is there something special about Steam downloads that causes bufferbloat? Any help or suggestions would be appreciated. Thank you.
-
Understanding what happens isn't necessarily related to fixing it.
What is the "traffic" ? If your limiters are "TCP" and IPv4 only, and your LAN device, and Steam use UDP and IPv6 then, ..... no need to continue my phrase, right ;)
The most obvious one is of course this : what if ..... you were working for your ISP ? What would you do ? .... Get it ?
You would be 'filtering' with limiters the most favorite user destinations, like Windows update, Steam, etc, so that the overall available bandwidth stays 'correct' for all their clients. ISPs are also using limiters, and putting a limiter after a limiter, and, without going for the details : the effect will be the inverse : packets get stock in the ISP limiter queue, TCP windows sizing start to happen (== generating a lot more resend traffic, so both your filter and the ISP filter fill up with actually delivering traffic) and for your whole network the overall throughput becomes bad.
I actually tend to advise you : filter out the 'steam' traffic so it doesn't make use of your limiter.Btw : I'm not a limiter expert.
I've been playing with the Codel stuff in the past when I had an asymmetrical ADSL 25/2 Mbits connection. -
@repinget Maybe you have Dual Stack and made your ipv6 rule wrong.
-
-
@repinget Show the rules by picture.
-
-
To make the limiters work, weren't there also 'floating' (or not) firewall 'policy' rules ?
And again : If bloating happens with or without your local limiters : you're hitting upstream (ISP) limiters. Nothing you can do about that (except : choosing an ISP that doesn't "limit" you ^^ )
-
@repinget Your rules are looking good.
Now for testing you need to reset the firewall state table but maybe you already did. So I have no clue why it is not working for your steam. -
@Gertjan
I have floating rules, look at the pictures I sent.
I have tried lowering the limiter bandwidth to as low as 20 Mbps, but the problem still persists. Steam downloads at 20 Mbps, which shows that the limiter works, but there is still bufferbloat and everything else is slow.@Bob-Dig
Yes, I have tried resetting the firewall state table. Thank you for your help. -
@repinget said in Bufferbloat when downloading Steam games:
I have floating rules, look at the pictures I sent.
I saw them (now) : thanks.
These rules capture everything, so you get what you asked for.
All traffic is placed in a buffer, and slowly (your ISP speed is way slower as your LAN speed, and slower as the speed of the steam server) buffers on both sides fill up.
Everybody on your LAN will share with you the same limiter (same buffer).What's I've found out by reading this forum and elsewhere) : create limiters per 'application'.
A first firewall rule set with limiter to filter out 'steam' traffic and assign that a (example) 10 Mbit limiter.
Then a second rules set that handles 'everything - except the steam traffic'.Now your co-LAN users won't really notice that you are downloading a huge pile of data, they will have their own slot of data (limiter) reserved.
You get the point ? -
@Gertjan
Thank you for your help. I will try to create separate limiters for different types of traffic, such as Steam and non-Steam, and see if that solves the problem.But I'm still worried that there might be other programs that cause the same problem as Steam, and I can't create limiters for all of them, because I don't know all of them. What if there is another program that uses a lot of bandwidth and causes bufferbloat, and I don't have a limiter for it? How can I prevent that from happening?
-
@repinget said in Bufferbloat when downloading Steam games:
How can I prevent that from happening?
You've chosen to dig out the rabbit hole ^^
You want to have control over "bufferbloat", and you start to understand why it happens.
Controlling the traffic is the solution. You make as much limiters as posible, assign ports, IPs to several type of limiters, and keep on checking what type of traffic needs to be shaped/limited etc. This job will never stop, as people continue to use the Internet differently.Check for yourself : pfSense has a nice demo : Firewall > Traffic Shaper > Wizards : start the wizard, both of them, just walk through the pages and you'll see that "types of traffic" is separated over "types of limiters".
Now you know also why Windows, when you check the Update pages, has 'limiter' parameters for every device.
And wait : even the steam PC app has settings so you don't saturate your 'connection'. But, if you have multiple users you (all of you) will still saturate the pipe.At then end, when your fed up with digging, you do what we all do : get that symmetrical 1Gbit connection (or stop sharing 'your' connection ^^)
-
@Gertjan
I'll see if it works. 1Gbit connection would be nice, but I don't have that option here haha. -
@Gertjan said in Bufferbloat when downloading Steam games:
I've been playing with the Codel stuff in the past when I had an asymmetrical ADSL 25/2 Mbits connection.
This was the best time, i think))
-
Use Floating with Match for Limiters and no quick.
Try codel instead of tail drop in the Limiter itself.