I have a 16mbps/1mbps speed for Internet access. When a user downloads a file at full speed or torrent, other users can't browse because connections time out.

Is it possible to share bandwidth dynamically, like if both users download then speed to be half for both? I don't care about QoS, etc.; just to avoid timeouts.

4 Answers 4


You can use something like PCQ to assign traffic limits.


Mikrotik has a feature called Bandwidth control.
On this page you will find examples you need.

Look for: Equal bandwidth sharing among users


The only real control over traffic that you have is traffic on your network, or the traffic leaving your network. You don't have any real control over how fast an outside server sends traffic to your network. That's why DoS attacks work. By the time the traffic reaches your network the WAN bandwidth is already used.

There are ways to try to mitigate this:

  • As JoeriBe pointed out, MikroTik has a was to prevent the incoming traffic from being delivered to a user, but that doesn't directly prevent the WAN bandwidth from be monopolized by the incoming traffic, it just prevents the user from receiving all of it. This may or may not have any effect. If the incoming traffic is TCP, it can have the effect of changing the TCP window size, and that can slow down the server to a degree. If the traffic is UDP, it may not have any effect at all, except to create problems for the user.
  • You can also come to an agreement with your ISP to limit incoming traffic from a single source to a certain percentage of your WAN bandwidth. This way, the traffic from a single source cannot overwhelm your incoming bandwidth. This is the only sure way, but it may cost some money, and you have to decide if it is worth it to your business.
/ip firewall mangle
add chain=prerouting action=mark-connection new-connection-mark=conn-download passthrough=yes protocol=tcp dst-port=80 connection-bytes=1000000-0 comment="CONN-DOWNLOAD"
add chain=prerouting action=mark-packet new-packet-mark=download-packet passthrough=no connection-mark=conn-download
add chain=prerouting action=mark-connection new-connection-mark=conn-browsing passthrough=yes protocol=tcp dst-port=80 connection-bytes=0-1000000 comment="CONN-BROWSING"
add chain=prerouting action=mark-packet new-packet-mark=browsing-packet passthrough=no connection-mark=conn-browsing

/queue tree
add name="paket browsing" parent=global-in packet-mark=browsing-packet limit-at=0 queue=default priority=1 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s
add name="paket download" parent=global-in packet-mark=download-packet limit-at=0 queue=default priority=8 max-limit=0 burst-limit=0 burst-threshold=0 burst-time=0s 
  • 2
    Please consider adding some details on what these commands do.
    – Teun Vink
    Sep 4, 2016 at 13:11

Not the answer you're looking for? Browse other questions tagged or ask your own question.