I require the development of a script/application that will monitor bandwidth usage by IP and dynamically create/remove queues to slow down IP addresses that sustain high data transfer rates. A more verbose example follows.
The core routers are Mikrotik devices and the script should be ideally native within RouterOS or alternately be written in Python/Perl and interface directly with the routers via API or SSH. You should have a strong understanding of the above technologies including real-world experience in public address routing.
I have a network with various users all with public IP addresses. I have 200Mbps+ of bandwidth to share among them. Each user is allocated a 100Mbps network port.
User A uses his link to transfer a few moderate files, serve some websites, or for personal use (VPN) with a bit of streaming via Netflix, etc. This user should not encounter any shaping under these usage conditions.
User B uses his link to proxy large amounts of data with sustained utilization of the majority of his available bandwidth.
The required script needs to run on a regular basis (2 minutes) and record users bandwidth. If it detects sustained transfers (>50% utilization) for over a certain time (10 minutes) then it writes a queue rule to the router limiting the users available bandwidth to 90Mbps. If the script detects the user is still using >50% of his bandwidth after another 10 minutes, the users is shaped to 80Mbps and so-forth.
At any time during this process, if the script detects that the transfer has stopped and the users' bandwidth becomes idle then each 10 minutes the user's queue is increased by 10Mbps until it reaches 100Mbps again.
NOTE TO APPLICANTS:
Please provide a link or excerpt of an existing script that you have written in ROS, Python or Perl. Applications that do not include this will be ignored.
Less than 30 hrs/week
Less than 1 month< 1 monthProject LengthDuration
I am looking for a mix of experience and value