Tharaxis
Senior Member
- Joined
- Aug 9, 2003
- Messages
- 560
In an ideal world the dialog one should have when saying what you want out of shaping should be similar to the following:
If I don't download constantly, and infrequently have a need to hit maximum speeds, then I have every right to fully expect the service I'm paying for to allow me to hit maximum speeds on the rare occasion I need it to, irrespective of what protocol I choose to use (HTTP, FTP, P2P, YouTube, etc.). Since you are selling me a 4mbit service (for example), and I'm not constantly "clogging the pipes", I have every right to expect that on the odd occasion when I want to use my line to the fullest I should be allowed to do so. I find that a fair compromise given the realities of purchasing infrastructure to service 4mbit users.
At the moment that's not the case, and users who wish to have full speed occasionally using protocols that are deemed "bad" or "non-average" are being penalized by those who are trying to push full speed constantly using those same protocols.
In my mind the ideal shaping system would be something like this:
1) Tracks bandwidth (that is how many KB/s) over time per protocol category (P2P, HTTP, Streaming, etc.) on an individual user-account basis.
2) After a certain amount of time and if a certain average bandwidth threshold has been reached during that time, that protocol category gets shaped/rate limited for that user-account. These thresholds and the rate limiting rates are defined per protocol category.
3) Rate limiting in category A does NOT have an effect on the performance of category B (so P2P rate limiting remains separate from HTTP for example).
4) After a certain amount of time (again defined within the category) the rate limiting will be lifted. This can be done gradually (over 3h after 2h of rate limiting for example) or immediately, certain categories may have more or less stringent rules.
5) Rate limiting within a certain category MUST persist across user account sessions to prevent abusers from gaming the system by disconnecting and reconnecting when they get rate limited so as to "reset" their speeds to full speed.
6) To make life easier the account must be restricted to 1 session or a hard upper limit of 4mbits (this ensures a 4mbit account can only ever at maximum use 4mbits of network traffic).
I'm sure there's plenty of fringe cases that this could end up not covering, but you get the idea.
So for example:
User A has 40 torrents he wants to download of "Pirated Software X", he's going at full tilt (400KB/s) and has been doing so for the past hour, the QoS system recognises him as having used P2P(BitTorrent) for 60 minutes at an average speed of > 300KB/s so it now rate limits him to 50KB/s for the next 2 hours. User A now sees that his torrents are going slow and becomes slightly depressed because he so wanted to install Pirated Software X that evening and now he can't. He decides he's going to browse some "late night" internet, check some mail, etc. and lo and behold he can continue to do so at the full 400KB/s, so that's not so bad, he can at least still use the internet, just not download his stuff via P2P at full speed. After 2 hours that frown turns upside down as he realises his torrents are now going at 100KB/s, the rate limiting having slightly decreased, this 100KB/s will continue for another 2 hours at which point the cycle above (full speed for an hour, etc.) will continue.
User B has 1 torrent he wants to download of UberLinux or whatever, he's going full tilt (400KB/s) and has been doing so for the past 45 minutes when the torrent completes, 30 minutes later he decides to get another file via torrent. Since in neither case does he hit > 300KB/s over 60 minutes of continuous P2P traffic, his P2P traffic never gets shaped, and to him it appears as if he has a 400KB/s line all the time (which is true - he has 400KB/s every time because he's a good bandwidth citizen), User B is all smiles all the time.
Only problem is, the above consists of a lot of work and creative thinking to implement and get right.
If I don't download constantly, and infrequently have a need to hit maximum speeds, then I have every right to fully expect the service I'm paying for to allow me to hit maximum speeds on the rare occasion I need it to, irrespective of what protocol I choose to use (HTTP, FTP, P2P, YouTube, etc.). Since you are selling me a 4mbit service (for example), and I'm not constantly "clogging the pipes", I have every right to expect that on the odd occasion when I want to use my line to the fullest I should be allowed to do so. I find that a fair compromise given the realities of purchasing infrastructure to service 4mbit users.
At the moment that's not the case, and users who wish to have full speed occasionally using protocols that are deemed "bad" or "non-average" are being penalized by those who are trying to push full speed constantly using those same protocols.
In my mind the ideal shaping system would be something like this:
1) Tracks bandwidth (that is how many KB/s) over time per protocol category (P2P, HTTP, Streaming, etc.) on an individual user-account basis.
2) After a certain amount of time and if a certain average bandwidth threshold has been reached during that time, that protocol category gets shaped/rate limited for that user-account. These thresholds and the rate limiting rates are defined per protocol category.
3) Rate limiting in category A does NOT have an effect on the performance of category B (so P2P rate limiting remains separate from HTTP for example).
4) After a certain amount of time (again defined within the category) the rate limiting will be lifted. This can be done gradually (over 3h after 2h of rate limiting for example) or immediately, certain categories may have more or less stringent rules.
5) Rate limiting within a certain category MUST persist across user account sessions to prevent abusers from gaming the system by disconnecting and reconnecting when they get rate limited so as to "reset" their speeds to full speed.
6) To make life easier the account must be restricted to 1 session or a hard upper limit of 4mbits (this ensures a 4mbit account can only ever at maximum use 4mbits of network traffic).
I'm sure there's plenty of fringe cases that this could end up not covering, but you get the idea.
So for example:
User A has 40 torrents he wants to download of "Pirated Software X", he's going at full tilt (400KB/s) and has been doing so for the past hour, the QoS system recognises him as having used P2P(BitTorrent) for 60 minutes at an average speed of > 300KB/s so it now rate limits him to 50KB/s for the next 2 hours. User A now sees that his torrents are going slow and becomes slightly depressed because he so wanted to install Pirated Software X that evening and now he can't. He decides he's going to browse some "late night" internet, check some mail, etc. and lo and behold he can continue to do so at the full 400KB/s, so that's not so bad, he can at least still use the internet, just not download his stuff via P2P at full speed. After 2 hours that frown turns upside down as he realises his torrents are now going at 100KB/s, the rate limiting having slightly decreased, this 100KB/s will continue for another 2 hours at which point the cycle above (full speed for an hour, etc.) will continue.
User B has 1 torrent he wants to download of UberLinux or whatever, he's going full tilt (400KB/s) and has been doing so for the past 45 minutes when the torrent completes, 30 minutes later he decides to get another file via torrent. Since in neither case does he hit > 300KB/s over 60 minutes of continuous P2P traffic, his P2P traffic never gets shaped, and to him it appears as if he has a 400KB/s line all the time (which is true - he has 400KB/s every time because he's a good bandwidth citizen), User B is all smiles all the time.
Only problem is, the above consists of a lot of work and creative thinking to implement and get right.