Allow users to limit global or per application download and upload speed using a GUI application

Registered by Savvas Radevic

The main ideas are:
- Allow users to limit global download / upload speed.
- Allow users to limit per application download / upload speed (such as apt-get or update-manager).
- Allow users to schedule (globally or per app) Full speed / Low speed (specifically set by the user) / Disable during specific hours of the day or days of the week.
- To set these through a simple graphical user interface.

It would be best to have one application for all of these.
This blueprint was created as a sum of several ideas and bug reports:
http://brainstorm.ubuntu.com/idea/3951/
http://brainstorm.ubuntu.com/idea/74/
https://bugs.launchpad.net/bugs/196439
https://bugs.launchpad.net/bugs/145496
https://bugs.launchpad.net/bugs/217936

I was (and still am) having personal trouble while updating or installing packages in Ubuntu hardy heron 8.04. For example, while downloading packages, my IRC (Internet relay chat) becomes inresponsive and cannot connect to IRC servers, or when I try to browse some websites in Mozilla Firefox I can't and I get an "Address not found" since the bandwidth is used up by some application.
Another example would be when I try to upload a 100mb file, my internet becomes inresponsive again and most parts of my network are unreachable. A third and final example is when I want to use ssh to control remotely other machines, which again faces network reachability problems.
Desktop users will probably like this addition, since they will be able to enable full speed throttle or set a "low speed" at the speed they like, when they want it to be that way. This means that users will be able to schedule the use of bandwidth globally or for each application. A worked example for this one is the great plugin for deluge-torrent called "Scheduler", which has this implemented perfectly: http://img146.imageshack.us/my.php?image=scheduleindelugetorrentpi7.png
They developers have a high limit and a low limit, both set by the user.

A GUI network stack control with a schedule option of high and low limit would be perfect for a desktop users such as:
- Persons that are multifunctional in Internet.
- Persons that have cheaper bandwidth rates during the nights.
- Persons that want to schedule updates and downloads during the nights.
- Persons that don't want their IRC or Internet experience to be interrupted or limited to one application every time.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
milestone icon later

Related branches

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.