Netgate SG-1000 microFirewall

Author Topic: Best way to reduce game latency  (Read 796 times)

0 Members and 1 Guest are viewing this topic.

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Best way to reduce game latency
« on: January 05, 2018, 07:54:59 am »
Right now I have a 15/3mb cable connection and would like to keep my latency low while playing world of warcraft and other people watching netflix at the same time.  I set up HFSC with the wizard and the game runs smooth but suffer from occasional lagspikes (not as many as I had before setting TS though).

My question is...
-if using HFSC, how do I inform the shaper which rule has a higher priority in the scale so I can put netflix in the back.
-should I use some other scheduler to achieve this?

thanks in advance.

Offline Harvy66

  • Hero Member
  • *****
  • Posts: 2318
  • Karma: +213/-12
    • View Profile
Re: Best way to reduce game latency
« Reply #1 on: January 05, 2018, 09:16:26 am »
HFSC does not have a notion of priority. The question is are the lag spikes a cause of misconfiguration or not being aggressive enough with limiting bandwidth.

If HFSC is too difficult to figure out the problem yourself, you may be better off with fq_Codel and this lost discussion shows how to set it up with 2.4.x nearer the end https://forum.pfsense.org/index.php?topic=126637.0

It is turn-key easy, just set your bandwidth. I actually plan on going this route in the near-ish future. But HFSC has been working near perfectly for me for a long while.

Offline KOM

  • Hero Member
  • *****
  • Posts: 5591
  • Karma: +688/-23
    • View Profile
Re: Best way to reduce game latency
« Reply #2 on: January 05, 2018, 09:32:37 am »
Which of the 15 pages in that thread is 'near the end'??  ;D  Every page is crammed with tech jargon & CLI incantations with every Tom, Dick & Harry chiming in.

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #3 on: January 05, 2018, 06:33:46 pm »
HFSC does not have a notion of priority.

ok i understand this now.

The question is are the lag spikes a cause of misconfiguration or not being aggressive enough with limiting bandwidth.

I wish I knew if it was either one of those, Im not an expert at TS so I didnt really fiddle that much with the queues, theyre all set to whatever values the wizard set them, I only copied the floating rules to adapt to the different games I play.

Thanks for the suggestion, Ill read that topic you linked.

Offline tman222

  • Jr. Member
  • **
  • Posts: 76
  • Karma: +11/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #4 on: January 06, 2018, 11:41:15 am »
Yes, it is true that the thread on fq_codel has gotten quite long.  However, most of those posts are us trying to figure out how to make the deployment simple (since it's not in the GUI yet) and how to properly tweak the algorithm's parameters.

Having said that, here is the basic implementation in a few steps:

1)  Setup limiters - at minimum you'll need to create two root limiters and then create one queue under reach root limiter.  You can setup more queues if it's required/desired.   This is also where you set your bandwidth limits.
2)  Apply the queues to the necessary firewall rules (e.g. to the LAN rule(s) that allows your outbound traffic in the "In/Out Pipe" section).
3)  Enable fq_codel via the command line (can SSH into the firewall for that):  Issue the following command:

Code: [Select]
ipfw sched 1 config pipe 1 type fq_codel && ipfw sched 2 config pipe 2 type fq_codel

To validate that the command has indeed enabled fq_codel, issue this command:

Code: [Select]
ipfw sched show

If all looks good (you should now see fq_codel listed in the output), go ahead and test to see if performance is acceptable.   If not, you can make changes by tweaking the algorithm's default parameters and/or your bandwidth limits.  For instance, you may have to increase the algorithm's target latency if you have a connection with slower upload speed, or decrease your bandwidth limits if e.g. your upload/download speeds aren't stable.

4)  To make sure that your settings stick between reboots, install the ShellCmd add on package in pfSense.  Once you have done that make sure you add the command in step 3 to ShellCmd.

Some additional notes:
1)  On setting up limiters:   See post #121 in the thread:   https://forum.pfsense.org/index.php?topic=126637.msg754199#msg754199
2)  On tweaking algorithm parameters:  See post #198 (and following) in the thread:  https://forum.pfsense.org/index.php?topic=126637.msg769665#msg769665

Hope this helps.
« Last Edit: January 06, 2018, 11:54:54 am by tman222 »

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #5 on: January 14, 2018, 06:46:24 pm »
Thank you so much mr tman22, this has solved 50% of my problems... now my question is... how do I set up ts so I can prioritize games over netflix?

Offline Harvy66

  • Hero Member
  • *****
  • Posts: 2318
  • Karma: +213/-12
    • View Profile
Re: Best way to reduce game latency
« Reply #6 on: January 14, 2018, 10:39:15 pm »
Are you seeing an issue that you need to use priorities?

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #7 on: January 15, 2018, 05:02:14 am »
Are you seeing an issue that you need to use priorities?

even though i can tell bufferbloat is almost gone through dslreports tests, I can still see increased latency when someone is downloading a big file or watching netflix

Offline Harvy66

  • Hero Member
  • *****
  • Posts: 2318
  • Karma: +213/-12
    • View Profile
Re: Best way to reduce game latency
« Reply #8 on: January 15, 2018, 08:27:03 am »
Have you tried further reducing your provisioned bandwidth just to see if it helps? In theory, fq_Codel properly configured should pretty much keep your latency of other flows to within a few milliseconds, except if two flows get assigned to the same bucket.

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #9 on: January 15, 2018, 03:46:45 pm »
...except if two flows get assigned to the same bucket.

howcan I monitor buckets???

Offline tman222

  • Jr. Member
  • **
  • Posts: 76
  • Karma: +11/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #10 on: January 16, 2018, 05:43:57 pm »
Are you seeing an issue that you need to use priorities?

even though i can tell bufferbloat is almost gone through dslreports tests, I can still see increased latency when someone is downloading a big file or watching netflix

There are a few more things you can try before considering moving on to a different scheduling algorithm:

1)  As Harvy66 already mentioned, you can try to reduce your bandwidth limits further (especially if your upload/download speeds aren't very stable).
2)  To favor interactive flows, try reducing the quantum parameter from the default.  Start reading here for more details on how to go about this:  https://forum.pfsense.org/index.php?topic=126637.msg769665#msg769665
3)  One last thing you could to is create multiple queues under your limiter and assign each of them weights.  For instance, let's assume you had two queues under each limiter with weight 50.  This would ensure that each queue is guaranteed at least 50% of the bandwidth, and more (up to full) if the other queue does not have any traffic in it.  Once you have those queues created, you'd have to create the relevant firewall rules to match your game traffic, assign one set of queues to it, and then assign the other set of queues to your rule that handles the remaining traffic (e.g. web traffic, netflix, etc.).   This is a little bit more tricky to setup, so I would recommend trying 1) and 2) first.

Hope this helps.

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #11 on: January 17, 2018, 04:49:58 am »
thank you so much for helping me... I will be trying all of these options and will let you know how it went =)

Offline areynot

  • Newbie
  • *
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #12 on: January 27, 2018, 05:14:27 am »
Are you seeing an issue that you need to use priorities?

even though i can tell bufferbloat is almost gone through dslreports tests, I can still see increased latency when someone is downloading a big file or watching netflix
3)  One last thing you could to is create multiple queues under your limiter and assign each of them weights.  For instance, let's assume you had two queues under each limiter with weight 50.  This would ensure that each queue is guaranteed at least 50% of the bandwidth, and more (up to full) if the other queue does not have any traffic in it.  Once you have those queues created, you'd have to create the relevant firewall rules to match your game traffic, assign one set of queues to it, and then assign the other set of queues to your rule that handles the remaining traffic (e.g. web traffic, netflix, etc.).   This is a little bit more tricky to setup, so I would recommend trying 1) and 2) first.


Can you please give me a hand with this?

Do i create a floating rule for games and assign one of the two 50/50 pipes to it and let the other one in the default LAN rule?

thanks so much mr tman

Offline necroxix

  • Newbie
  • *
  • Posts: 1
  • Karma: +0/-0
    • View Profile
Re: Best way to reduce game latency
« Reply #13 on: January 28, 2018, 11:47:19 pm »
I have similar needs, except I'm trying to make a second set of queues for my twitch stream traffic so that I don't drop RTMP packets but the weight settings don't seem to do anything different. If I stream and do a speedtest, a consistent number of stream packets get dropped. Chances are, I got something misconfigured but it's at least easy for me to reproduce the test to know if I get it working, so if I figure it out I'll chime in because if I did the same with my game traffic, it wouldn't work any differently.