EDIT: I need this done sooner rather than later so I’m going to offer $100US to whoever wants to help me achieve my goal.
Hello all
I’m having a bit of trouble wrapping my head around queues and how I might achieve my end goal.
I have a network with various users all with public IP addresses (both ipv4 & ipv6). I have 200Mbps+ of bandwidth to share among them. I want each user to have access to 100Mbps however I want to progressively shape their connection in the event of sustained data transfer over a variable period of time.
Example:
User A uses his link to transfer a few moderate files, serve some websites, a for personal use with a bit of streaming, etc. He should not encounter any shaping under these circumstances.
User B uses his link to proxy large amounts of data with sustained utilization of the majority of his available bandwidth.
What I’d like to happen is for a script to run once every few minutes that calculates an average of these users bandwidth utilization. Once it identifies a bandwidth hog (User B) it applies/modifies a queue and slows him to 90Mbps. When the script runs a few minutes later, if he’s still maxing his bandwidth then he’s shaped downwards another 10Mbps and so-forth until he’s down to barely anything. At any point in the process, if the user ceases his sustained data transfer the script should see this and progressively increase his bandwidth until he’s back at 100Mbps.
Has anyone done something like this before? Any advice or pointers appreciated.