Page 1 of 1

Manual Ping Limit QoS not working as expected

Posted: Mon May 04, 2020 7:09 am
by ALK
My internet connection has recently changed from 3Mbps ADSL to 75Mbps fixed wireless NBN with more variable ping times. Therefore I am testing different settings with the ACC to try and get the most from the connection.

With Active Congestion Control turned on and Manual Ping Limit deactivated, I get the following results:
Congestion Control Status
State: IDLE
Link limit: 26706 (kbps)
Fair Link limit: 26706(kbps)
Link load: 16 (kbps)
Ping: off
Filtered/Max recent RTT: 32/311(ms)
RTT time limit: 40 (ms) [36/40]
Classes Active: 1
______________________________________________________

With a Manual Ping Limit of 60, the RTT time limit [36/40] changes to [97/178], so the minRTT increases by Manual Ping Limit and not sure what happens with the active mode:
Congestion Control Status
State: ACTIVE
Link limit: 71956(kbps)
Fair Link limit: 71956(kbps)
Link load: 44699 (kbps)
Ping: 31
Filtered/Max recent RTT: 50/392(ms)
RTT time limit: 178 (ms) [97/178]
Classes Active: 3
______________________________________________________

And to confirm, when MINRTT activates, the minRTT includes the Manual Ping Limit:
Congestion Control Status
State: MINRTT
Link limit: 58020(kbps)
Fair Link limit: 58020(kbps)
Link load: 40787(kbps)
Ping: 37
Filtered/Max recent RTT: 70/634(ms)
RTT time limit: 97(ms) [97/178]
Classes Active: 4
______________________________________________________

According to the hidden help text, minRTT should not change like it does on my router, only the activeRTT should change equal to (auto minRTT + Manual Ping Limit):
Manual Ping Limit- Round trip ping times are compared against the ping limits. ACC controls the link limit to maintain ping times under the appropriate limit. By default Gargoyle attempts to automatically select appropriate target ping limits for you based on the link speeds you entered and the performance of your link it measures during initialization. You cannot change the target ping time for the minRTT mode but by entering a manual time you can control the target ping time of the active mode. The time you enter becomes the increase in the target ping time between minRTT and active mode. You can see the limits ACC is using in the [] brackets next to ping time limits field.
I am wondering if this is a bug or if I have misunderstood something?

I am using 1.12.0 on a Linksys WRT1900ACS.

Re: Manual Ping Limit QoS not working as expected

Posted: Mon May 04, 2020 9:04 am
by Lantis
The help text does not quite match the behaviour.
Is this intentional? No idea. Would need @pbix to comment.

The coded behaviour (with your ~33ms link as an example) is...
When a ping target is entered:
1. Measure your ping, and add 10% (33+3 = 36ms)
2. Take your ping target and add your adjusted ping to it (60+36 = 96ms). This is your MinRTT limit.
3. Take your ping target, add 35%, then add your MinRTT (60+21+96 = 177ms). This is your Active limit.

The example where you don't enter a ping target (i.e. auto) is the same, but the ping target is calculated for you by:
10000/download + 15000/upload + 2.

Keep in mind that because your ping is pretty variable, these calculations will change minute by minute. Every time you hit save you might get slightly different numbers. They'll all be within a ballpark though.

So to put it succinctly, ping target affects both MinRTT and Active limits, with some extra fudge factors thrown in.

Re: Manual Ping Limit QoS not working as expected

Posted: Mon May 04, 2020 4:24 pm
by pbix
The real-time limit is measured on your link when qosmon initializes. If forces the link to be idle during this measurement. The results will be different every time it is measured because that's life. If your pings are inherently unstable then it could be more different every time its measured. The pings are measured over a 15 second interval to be more immune to unstable ping times. Your user entered value does not change this number. It the lowest practical RTT for your link.

In manual mode the second number is the first number plus 135% of your user entered number.

I recommend that users leave this setting in auto unless there is an issue.

Is there an issue?

Re: Manual Ping Limit QoS not working as expected

Posted: Mon May 04, 2020 9:08 pm
by Lantis
In the code that I was reading, the manually entered ping target gets added to the measured value.
Something like
pinglimit += fil_triptime * 1.1
Where pinglimit is already set from the command line.

Is that what you expect to happen?


Anecdotally, for my own connection I have my ping target set to 20. If I don't, I can't utilise the full throughput of my connection because the ping times float too far out.
20 gives me a good ping limit and full throughput (under nominal network conditions )

Re: Manual Ping Limit QoS not working as expected

Posted: Mon May 04, 2020 11:38 pm
by ALK
Thanks for your replies guys 👍

I've used the auto RTT for years on my adsl and works great in my opinion (the way it forces the link to idle for 15s for ping measurements). I also understand how the ping may be different each time you press save due to a range of factors.

Ideally I believe the manual ping limit setting should work as described in the UI; that when a manual ping limit is used, the minRTT remains the auto calculated value and only the activeRTT changes to (auto minRTT)+(manual ping limit). As currently minRTT can be changed by the user.

In my OP example, with a manual ping limit of 60, I would like the RTT limit to be [36/97] instead of what happens now [97/178]. I use the MINRTT for gaming so that should always be the auto minRTT value and the ACTIVE mode for general web/downloads so want to set the ping higher than what the auto mode calculates currently.

However I could see a case where the user may need to modify the minRTT (due to a unreliable connection) so maybe there could be manual 2 settings, one so a user could directly set the minRTT and another to directly set the increase for activeRTT from minRTT.

Re: Manual Ping Limit QoS not working as expected

Posted: Fri Jun 12, 2020 9:53 am
by ALK
I changed in qosmon.c the

pinglimit += fil_triptime * 1.1

line to

pinglimit = fil_triptime * 1.1

and now so far works as described in the "Manual Ping Limit" help text :D. So now I can increase the active limit and keep the MinRTT limit as the low auto calculated value. Ideally, I want ping limits of [36/60ish]. Before auto would calculate [36/40] where the active state would preform like the MinRTT state and not allow download speed to be maximised.

Thanks again for your help guys