Disappointing bufferbloat

Report issues relating to bandwith monitoring, bandwidth quotas or QoS in this forum.

Moderator: Moderators

old-hacker
Posts: 10
Joined: Sat Sep 19, 2015 4:52 pm

Re: Disappointing bufferbloat

Post by old-hacker »

orangetek wrote:It works because anything other than important packets (0-512 bytes) go to the default service class. You could set the percentages 50/50 and it would work the same because the packets in the classification rule would never use 50% of your bandwidth. Understanding what those packets are and why they need to be prioritized first is another story. Google TCP ACK and go from there. Just remember, whatever classification rules you create, the default service class catches everything that doesn't match and should always be set to your slowest service class.

I run a wisp in Cyprus with 400+ customers connected. Without proper qos i would not have a business.
Thanks, orangetek. I've been doing a lot of reading about both QoS and networking lately, including the Gargoyle docs on the QoS. I understand it a lot better now, especially how the logic works on what gets chosen. So, I've figured out what your suggestion did, although I'm not knowledgeable enough to know the exact implications of prioritizing the ACKs. Hopefully, it's not simply increasing the score on the test instead of increasing performance. :-)

I'm slowly adding in new rules, always going back and testing to make sure I don't break anything. I want to make sure VOIP works well, and Netflix, both of which are not used often. I think I'm understanding how to do it better now, although I still have a lot to learn.

Volaris
Posts: 177
Joined: Thu May 01, 2014 1:02 pm

Re: Disappointing bufferbloat

Post by Volaris »

orangetek wrote:Do the following, and test again. Make sure you change your total upload/download bandwidth accordingly.

Step 1.
https://www.dropbox.com/s/gsnyhwzk5f2s8 ... 2.JPG?dl=0

Step 2.
https://www.dropbox.com/s/v6lo03f105dxn ... 1.JPG?dl=0

Step 3.
https://www.dropbox.com/s/hm0k9hsgi98ba ... 2.JPG?dl=0

Step 4.
https://www.dropbox.com/s/cgiku87hzuhuf ... 1.JPG?dl=0
This is amazing! I applied it to my QoS and browsing seems faster. Not only that, but I can fully max upload on my laptop and continue browsing on it with no noticeable lags (or any special QoS settings that would discriminate between different traffic). Thanks for this suggestion! Also, the Buffetfloat rating on DSLReports speed test went from an F to an A.
pbix wrote:If you can build your own version of Gargoyle here is something you can try.

The ACC function is contained in the file qosmon.c. Locate this file and search for the following lines of code:

Code: Select all

   

    while (!sigterm) {
        int len = sizeof (packet);
        socklen_t fromlen = sizeof (from);
        int cc;
        u_char chill;
        struct timeval timeout;
        fd_set fdmask;
        FD_ZERO(&fdmask);
        FD_SET(s , &fdmask);

        //This variable will be set in pr_pack() if we get a pong that matched
        //our ping, but in case we don't get we initialize to the period.
        rawfltime=period;
and change to this.

Code: Select all

 
   //Initialize plimit to a sane value.
    plimit = period*1000;
	
    while (!sigterm) {
        int len = sizeof (packet);
        socklen_t fromlen = sizeof (from);
        int cc;
        u_char chill;
        struct timeval timeout;
        fd_set fdmask;
        FD_ZERO(&fdmask);
        FD_SET(s , &fdmask);

        //This variable will be set in pr_pack() if we get a pong that matched
        //our ping, but in case we don't get we initialize to the current plimit * 2
        rawfltime=plimit/500;
Dropped ICMP packets are strong indication of a saturated link and it does not seem correct to me to do nothing in response. The new code will more gradually drop the link limit in response to dropped packets.

Please report on your results in a new thread.
Hopefully that works. I have family in Mexico who I installed a Gargoyle router, thinking ACC would be a perfect fit for them because they use a WISP (variable internet speeds; no set speed/plan), but ACC didn't work because during peak times there would be random ping drops.
old-hacker wrote:I'm slowly adding in new rules, always going back and testing to make sure I don't break anything. I want to make sure VOIP works well, and Netflix, both of which are not used often. I think I'm understanding how to do it better now, although I still have a lot to learn.
Remember that unlike other firmwares, Gargoyle doesn't need many QoS rules because it has per IP sharing. The rules orangetek showed should work for most because of this (unless you have a slower or easily congested connection). Basically, Gargoyle equally divides the available bandwidth between current users so one user won't hog it all. So if one user starts maxing the connection with a torrent download or HD stream, Gargoyle will automatically make bandwidth available to another user... keeping everyone's speeds and pings quite good. One way to test is to start a large download on one laptop (say, a Linux distribution image) then on another device start a speed test. If those are the only two devices downloading, they should both get about 50% of bandwidth during the speed test. As soon as the speed test is over, the PC doing the download will get all the bandwidth back again. Basically it's dynamic according to demand and how much bandwidth is available.
QoS Tip: Don't complicate your QoS settings. Gargoyle evenly splits available bandwidth between active devices as needed. Just delete all your classification rules and leave only one normal service class and you're done. No more arguing over bandwidth.

old-hacker
Posts: 10
Joined: Sat Sep 19, 2015 4:52 pm

Re: Disappointing bufferbloat

Post by old-hacker »

Volaris wrote: . . .
Remember that unlike other firmwares, Gargoyle doesn't need many QoS rules because it has per IP sharing. The rules orangetek showed should work for most because of this (unless you have a slower or easily congested connection). Basically, Gargoyle equally divides the available bandwidth between current users so one user won't hog it all. So if one user starts maxing the connection with a torrent download or HD stream, Gargoyle will automatically make bandwidth available to another user... keeping everyone's speeds and pings quite good. One way to test is to start a large download on one laptop (say, a Linux distribution image) then on another device start a speed test. If those are the only two devices downloading, they should both get about 50% of bandwidth during the speed test. As soon as the speed test is over, the PC doing the download will get all the bandwidth back again. Basically it's dynamic according to demand and how much bandwidth is available.
Thanks, I'm not adding much. I basically added one for VOIP (the default that comes with the software), and I created another class for streaming video to/from my TV. I tested and it's working very well. Did a speedtest while streaming, and it was slower, but not that slow, and the video had no problems. Same for VOIP calling. I think I understand things pretty well now.

User avatar
mckman
Posts: 21
Joined: Sun Jun 15, 2014 7:38 am

Re: Disappointing bufferbloat

Post by mckman »

Hello,

I would love to improve my bufferbloat issues but when I click on the dropbox links, they say that that're no longer available. Can someone repost the settings?

Thanks in advance.
Netgear WNDR3700 v1
Netgear WNDRMAC v2
TP-Link MR3020 v1.8
TP-Link WR743ND v1

Volaris
Posts: 177
Joined: Thu May 01, 2014 1:02 pm

Re: Disappointing bufferbloat

Post by Volaris »

mckman wrote:Hello,

I would love to improve my bufferbloat issues but when I click on the dropbox links, they say that that're no longer available. Can someone repost the settings?

Thanks in advance.
See following image:
https://snapr.pw/i/29cca34693.png

His had Fast set to 70% and Normal to 30%. I kept it 50/50... either should work because Fast bandwidth will never reach that (since it's just for <512 byte traffic). Same setup for Upload and Download QoS, just make sure your upload/download bandwidth at bottom is set to accommodate your Internet connection speeds. With those settings Gargoyle will automatically and dynamically split available bandwidth between devices.
QoS Tip: Don't complicate your QoS settings. Gargoyle evenly splits available bandwidth between active devices as needed. Just delete all your classification rules and leave only one normal service class and you're done. No more arguing over bandwidth.

User avatar
mckman
Posts: 21
Joined: Sun Jun 15, 2014 7:38 am

Re: Disappointing bufferbloat

Post by mckman »

Volaris wrote:
mckman wrote:Hello,

I would love to improve my bufferbloat issues but when I click on the dropbox links, they say that that're no longer available. Can someone repost the settings?

Thanks in advance.
See following image:
https://snapr.pw/i/29cca34693.png

His had Fast set to 70% and Normal to 30%. I kept it 50/50... either should work because Fast bandwidth will never reach that (since it's just for <512 byte traffic). Same setup for Upload and Download QoS, just make sure your upload/download bandwidth at bottom is set to accommodate your Internet connection speeds. With those settings Gargoyle will automatically and dynamically split available bandwidth between devices.
Much appreciated. Thank you. This works Excellently! I went from a D to an A with Bufferbloat and the quality went from a B to an A. Very Nice.
Image
Netgear WNDR3700 v1
Netgear WNDRMAC v2
TP-Link MR3020 v1.8
TP-Link WR743ND v1

orangetek
Posts: 20
Joined: Wed Nov 28, 2012 9:45 am

Re: Disappointing bufferbloat

Post by orangetek »

Well i finally got around to recompiling gargoyle with a modification to ACC. After much testing i went with completely ignoring ping timeouts by replacing the timeout value with the ping limit. Got up this morning and my max limit is almost where it was last night which means its working :) The original code would have brought my max limit down from 120M to 30M even though traffic on my network at that time was low and capacity was high. For my ISP, this modification is a life saver. I might try and implement this as an option in the GUI along with a few other options so that we can tweak things depending on the situation.

Lantis
Moderator
Posts: 6735
Joined: Mon Jan 05, 2015 5:33 am
Location: Australia

Re: Disappointing bufferbloat

Post by Lantis »

Cool :)
Keep us informed :)
http://lantisproject.com/downloads/gargoyle_ispyisail.php for the latest releases
Please be respectful when posting. I do this in my free time on a volunteer basis.

tapper
Moderator
Posts: 1076
Joined: Sun Oct 13, 2013 5:49 pm
Location: Stoke-on-trent UK

Re: Disappointing bufferbloat

Post by tapper »

orangetek wrote:Well i finally got around to recompiling gargoyle with a modification to ACC. After much testing i went with completely ignoring ping timeouts by replacing the timeout value with the ping limit. Got up this morning and my max limit is almost where it was last night which means its working :) The original code would have brought my max limit down from 120M to 30M even though traffic on my network at that time was low and capacity was high. For my ISP, this modification is a life saver. I might try and implement this as an option in the GUI along with a few other options so that we can tweak things depending on the situation.
Pachs and tweaks are always welcome :)
Linksys WRT3200ACM
NETGEAR Nighthawk R7800
NETGEAR R6260

User avatar
mckman
Posts: 21
Joined: Sun Jun 15, 2014 7:38 am

Re: Disappointing bufferbloat

Post by mckman »

orangetek wrote:Well i finally got around to recompiling gargoyle with a modification to ACC. After much testing i went with completely ignoring ping timeouts by replacing the timeout value with the ping limit. Got up this morning and my max limit is almost where it was last night which means its working :) The original code would have brought my max limit down from 120M to 30M even though traffic on my network at that time was low and capacity was high. For my ISP, this modification is a life saver. I might try and implement this as an option in the GUI along with a few other options so that we can tweak things depending on the situation.
This would be a great option as I am experiencing the same issue. For now, I've been working around this issue by setting up a cron job that restarts QOS once a week.
Netgear WNDR3700 v1
Netgear WNDRMAC v2
TP-Link MR3020 v1.8
TP-Link WR743ND v1

Post Reply