ACC: more ramp down logics
Posted: Tue Dec 17, 2013 8:50 am
As a happy user of Gargoyle, I've of course enabled this great Active Congestion Control since my connection speed, like most, isn't constant throughout the day.
I've noticed that most of the time, the Link limit is much lower than my real connection speed at that exact time.
If I run an FTP download for some time, it slowly increases to reach more than 80% the initial speed.
Here's an example :
Total Download Bandwidth: 6000 kbps
Initial Link limit: 5400 kbps
Link limit after some time unattended: 2446 kbps
Link limit after 5 minutes of FTP download: about 4400 kbps
The Link limit can easily get wrongly ramped down by 1000 kbps in one hour.
So, I was wondering why my Link limit was often getting so low after some time.
I was first thinking my ISP was at fault, but then I found the explanation:
When the Link load reaches 30% of the Link limit, the ACC starts pinging.
Then each time the Filtered ping gets temporarily higher than the Ping time limit, the Link limit is ramped down.
The problem is that since the Link load isn't at more than 95% of the Link limit, the Link limit doesn't get ramped up when the ping gets lower than the low Ping time limit.
So, to resume, if the Link load isn't near the Link limit, it can just go (slowly) down. Then we need a long download using up all bandwidth to get back our full connection speed. Not really the intended purpose of the ACC, right?
Now, what's the point of slowly ramping down the Link limit when we're far from it? Is it to ensure the ACC will keep pinging in case the Link limit is actually much overestimated (which could prevent the Link load to reach the 30%, making the ACC blind) ?
Here's a suggestion for the ramp down logic:
- When we are at low monitoring speed (>30% but <95%): no slow ramp down
-- At lms, if the ping average stays up for say 10 seconds, use the average speed during these 10 seconds as the new Link limit
Then:
- When we are at high link load (near 95%), slowly ramp down the Link limit
This would also reduce the time needed to get a Link limit that prevents high pings, in cases where the connection capacity has decreased a lot after some time without being used.
I've noticed that most of the time, the Link limit is much lower than my real connection speed at that exact time.
If I run an FTP download for some time, it slowly increases to reach more than 80% the initial speed.
Here's an example :
Total Download Bandwidth: 6000 kbps
Initial Link limit: 5400 kbps
Link limit after some time unattended: 2446 kbps
Link limit after 5 minutes of FTP download: about 4400 kbps
The Link limit can easily get wrongly ramped down by 1000 kbps in one hour.
So, I was wondering why my Link limit was often getting so low after some time.
I was first thinking my ISP was at fault, but then I found the explanation:
When the Link load reaches 30% of the Link limit, the ACC starts pinging.
Then each time the Filtered ping gets temporarily higher than the Ping time limit, the Link limit is ramped down.
The problem is that since the Link load isn't at more than 95% of the Link limit, the Link limit doesn't get ramped up when the ping gets lower than the low Ping time limit.
So, to resume, if the Link load isn't near the Link limit, it can just go (slowly) down. Then we need a long download using up all bandwidth to get back our full connection speed. Not really the intended purpose of the ACC, right?
Now, what's the point of slowly ramping down the Link limit when we're far from it? Is it to ensure the ACC will keep pinging in case the Link limit is actually much overestimated (which could prevent the Link load to reach the 30%, making the ACC blind) ?
Here's a suggestion for the ramp down logic:
- When we are at low monitoring speed (>30% but <95%): no slow ramp down
-- At lms, if the ping average stays up for say 10 seconds, use the average speed during these 10 seconds as the new Link limit
Then:
- When we are at high link load (near 95%), slowly ramp down the Link limit
This would also reduce the time needed to get a Link limit that prevents high pings, in cases where the connection capacity has decreased a lot after some time without being used.