maybe I don't know something about simple queues and their parents, but I thought it's the same as in queue tree, and ordering of simple queues was due to hidden mangle rules created by simple queues...and Parent that doesn't need to capture all the traffic for children first is very nice queue tree feature
as far as I (I hope) can (still) understand, Simple Queue with parent=none creates up to three hidden queues of queue tree with parent=global (well, according to this topic, simple queues are now completely separated from queue tree, so let's call it one more queue tree with the name 'global-2' )Can anyone explain to me what's the meaning of the priority parameter in Simple Queues. I do understand what this parameters does when specified on the child queues in a Queue Tree, but that does not quite seem to apply to Simple Queues... Or does it? Any thoughts?
In simple queues you can also make queue structures, with parent and child queues. In that case priority will halp to distribute parents traffic - similar to queue tree. In case you have all your simple queues in same level (no parent queues) you will not be able to see priority in action - as from simple queue perspective there is no bottleneck and no need to drop anything more than its max-limit.Can anyone explain to me what's the meaning of the priority parameter in Simple Queues. I do understand what this parameters does when specified on the child queues in a Queue Tree, but that does not quite seem to apply to Simple Queues... Or does it? Any thoughts?
when I change max-limit in Queue Tree, the queue catches no more packets, but some 'hidden' queue with old parameters is still working disabling/enabling the queue did not solve the issue, only reboot helpsGuys, can you test the new queues in the new rc3 on your development download page? Todays build
My understanding is that simple queues are ordered, therefore evaluated one by one. This is less efficient than queue tree, which is evaluated by packet mark from firewall mangle. Therefore in a very complex setup queue trees are more efficient. Also in lab testing it appears simple queues don't adhere strictly to HTB rules for bandwidth re-distributionone global (well, not about global queues, but about ideology ) question: do we still need queue tree at all?
in the light of kernel-level optimizations of Simple Queues and remembering Occam's razor to make queues more homogeneous, maybe it worths to transform Queue Tree to another set of Simple Queues (like Queues Step 1 and Step 2, or something)
currently simple queues are smart enough to install only necessary part of its subqueues (upload/download), so theoretically it won't affect performance. moreover, it will simplify understanding of queueing ("what should I use - queue tree or simple queues?") and you can use all delights of simple queues (like built-in Graphing, so you won't need some dedicated MRTG machine to draw some part of your queues unaffected by standard tools)
have you seen v6 presentation from MUM? they redesigned simple queues, so now thousands of simple queues are not problem. and if that new "Ex-Tree Simple" queues will create just hidden queue tree queues, without performance loss, it will be more obvoius than having two separate interfaces. that's itMy understanding is that simple queues are ordered, therefore evaluated one by one. This is less efficient than queue tree, which is evaluated by packet mark from firewall mangle. Therefore in a very complex setup queue trees are more efficient. Also in lab testing it appears simple queues don't adhere strictly to HTB rules for bandwidth re-distribution
1. I want to shape uplink/downlink traffic, and doesn't want to shape local traffic - simple queue shape all traffic going to/from interface and don't look it if local (low-price) or external (expensive).one global (well, not about global queues, but about ideology ) question: do we still need queue tree at all?
isn't it possible with simple queues?1. I want to shape uplink/downlink traffic, and doesn't want to shape local traffic - simple queue shape all traffic going to/from interface and don't look it if local (low-price) or external (expensive).
/queue type add kind=pcq name=up-1m pcq-classifier=src-address pcq-rate=1M add kind=pcq name=down-1m pcq-classifier=dst-address pcq-rate=1M /queue simple add name=queue1 target=LAN dst=WAN queue=up-1m/down-1m
do you know that simple queues do have 'parent' property? it's for hierarchy creation2. I want use all features of HTB and hierarchical queues is one of them. For example I want to make 2 groups of users and give for 1st group guaranteed bandwidth and for 2nd all other bandwidth. Usually it help us in critical situations then one of uplinks is down.
Simple queues are simple only for simple tasks. It is difficult for me to understand if this code solves my problem.isn't it possible with simple queues?1. I want to shape uplink/downlink traffic, and doesn't want to shape local traffic - simple queue shape all traffic going to/from interface and don't look it if local (low-price) or external (expensive).ros code
/queue type add kind=pcq name=up-1m pcq-classifier=src-address pcq-rate=1M add kind=pcq name=down-1m pcq-classifier=dst-address pcq-rate=1M /queue simple add name=queue1 target=LAN dst=WAN queue=up-1m/down-1m
this is fixed in the new rc3 buildwhen I change max-limit in Queue Tree, the queue catches no more packets, but some 'hidden' queue with old parameters is still working disabling/enabling the queue did not solve the issue, only reboot helpsGuys, can you test the new queues in the new rc3 on your development download page? Todays build
simple queues are named this way due to historic reasons, at the start they where simple, but now, these can be considered simple only because you look at the name and if you use only basic features - set target and upload/download limit. And now here are so much more options what can be done with simple queues.
Simple queues are simple only for simple tasks.
yep, now both are completely separate things.From looking at the diagram it appears that Queue Trees hit first, then simple queues are applied?
Excellent!yep, now both are completely separate things.From looking at the diagram it appears that Queue Trees hit first, then simple queues are applied?
I usually do double qos by prioritizing traffic in prerouting section and shape in postrouting.Thanks to your feedback in v6.0RC3 we will have some changes in QoS features.
We made simple queues completely independent from "Global" queue tree. Now simple queues will happen after "Global" queue tree:
So there is no more need to remember who will get traffic first - simple queues or queues in "Global" queue tree. Now traffic can be captured by both separately and independently. This also give you possibility to implement Double QoS again.
1) mark traffic by type in mangle, and apply limitations by traffic type in "Global" queue tree
2) use dynamic simple queues from ppp servers or RADIUS or create simple queues manually and use PCQ for limiting traffic per user, "target" and "dst" options should allow us to make per-user-limitation without any problems
customers' upload when using WebProxy?What's the reason for having SQ and QTree on INPUT? DDoS? VPN Tunnel shaping?
i think you Talk about cause of Change in QOS Packet Flow ( Flowchart ) ( Queue in Input Direction ) This is True ?customers' upload when using WebProxy?What's the reason for having SQ and QTree on INPUT? DDoS? VPN Tunnel shaping?
sure. when I limit customer's upload and download speed, I want it to be limited even in case of WebProxy usage
That would be a useful feature indeed. I would really like to see it.Please add the parameter "address-list" for the simple queue in ROS v6 ! it is not a dificult, but very usefull for many users
thanks ;p
Yes of course. But wouldn't be better to not have mangle rules at all? Simpler configuration.you just mark necessary address-list in Mangle, then set packet-mark in Simple Queue
however, it makes the rules itselve "a bit" harder to implement. and, less transparent.Yes of course. But wouldn't be better to not have mangle rules at all? Simpler configuration.you just mark necessary address-list in Mangle, then set packet-mark in Simple Queue
but then you can't build double queueing ;p ...you just mark necessary address-list in Mangle, then set packet-mark in Simple Queue
abandonment idea of double qos by mikrotik in v6 is very failed me....Hello,
Yes, we know about this feature request, but currently we don't have a way to do
it without slowing down performance significantly. Using mangle and packet mark
will be much faster than direct address-list approach. That is the only reason we
are not implementing this feature.
Regards,
Janis Megis
I dont understand... so I have to manualy create parent for group of users (group of simple queues) ... what about automatic creates simple queue... (for example from pppoe) I cant change the parent... so I have to create this queue manualy..Dynamic rates? Setting another queue as the parent of a simple queue will not work for you ?
yep, but you need to remember: first queue tree, then simple queuesSo there is no more need to remember who will get traffic first - simple queues or queues in "Global" queue tree. Now traffic can be captured by both separately and independently.
as far as I (I hope) can (still) understand, Simple Queue with parent=none creates up to three hidden queues of queue tree with parent=global (well, according to this topic, simple queues are now completely separated from queue tree, so let's call it one more queue tree with the name 'global-2' )Can anyone explain to me what's the meaning of the priority parameter in Simple Queues. I do understand what this parameters does when specified on the child queues in a Queue Tree, but that does not quite seem to apply to Simple Queues... Or does it? Any thoughts?
why dont you use this script to move the desired queue to topno, no problem at all with that, just need get used to think it other way.
anyway is working now with simple queues.
my last question is about the priority in queue list, i mean, the dynamic ones always are in top of the list.
how works the execution order in simple queue list? by order list? or by priority?
no, it's notisn't a packet in v6 now pulled though 'global' queue twice?
I exactly have a scenario like this.Can someone please clarify this for me. I'm trialing ROS 6.x and got confused regarding QoS.
I was running double QoS on 5.x
- mangle prerouting + global-in to prioritise traffic
- mangle forwarding + global-out for PCQ to give each client equal bw
Just like found on many MT presentations and documents..
Now in 6.x there's no global-in/out but only 'global'.
The first post here suggests that double QoS can be achieved by combining simple queues and qtree.
That's fine, but isn't a packet in v6 now pulled though 'global' queue twice? Can't I reuse the principle from before v6 by using only 'global' for both prioritising and shaping?
If a packet gets marked differently before each pass through 'global', isn't that the same as if going first through 'global-in' and then 'global-out'?
Am I missing something?
Thanks!
I have the same problem with 6.7, I use global-in to prioritise traffic and global-out for PCQ to give each client equal bwCan someone please clarify this for me. I'm trialing ROS 6.x and got confused regarding QoS.
I was running double QoS on 5.x
- mangle prerouting + global-in to prioritise traffic
- mangle forwarding + global-out for PCQ to give each client equal bw
Just like found on many MT presentations and documents..
Now in 6.x there's no global-in/out but only 'global'.
The first post here suggests that double QoS can be achieved by combining simple queues and qtree.
That's fine, but isn't a packet in v6 now pulled though 'global' queue twice? Can't I reuse the principle from before v6 by using only 'global' for both prioritising and shaping?
If a packet gets marked differently before each pass through 'global', isn't that the same as if going first through 'global-in' and then 'global-out'?
Maybe my configuration can help you to resolve this problem:You can give only one mangle exemple for the two tables (double WAN with QOS HTB) in version 6.7 ?
Interface Ether 1 = WAN-A ( IP-1 10.10.10.10 ) <-Default Route.
Interface Ether 2 = WAN-B ( IP-2 20.20.20.20 ) <-Second Link (With LOAD BALANCE WEB CONN PORT 80)
Interface Ether 3, 4 , 5 = (LAN Bridged and NATed).
I need after all mangle marked set those on QOS HTB with exemples to upload e download. You can exemplify?
#================================================ # For RB750GL and ROS v6.x # WAN connect to Internet: # - eth1-ISP1 from ISP1 (FE:Down-100Mbps/Up-100Mbps/static IP) # - eth1-ISP2 from ISP2 (DOCSIS3.0>GE:Down-150Mbps/Up-5Mbps/dynamic IP) # LAN switch: # - eth3-LAN-master # - eth4-LAN-slave # - eth5-LAN-slave # Address List: # - LAN - define IP ranges for Local network # - to-ISP1 - Addresses accessible through ISP1 # - to-ISP2 - Addresses accessible through ISP2 #================================================ /ip firewall mangle add chain=prerouting action=jump jump-target=in-ISP1 in-interface=eth1-ISP1 \ comment="Trafic incoming ISP1" add chain=prerouting action=jump jump-target=in-ISP2 in-interface=eth2-ISP2 \ comment="Trafic incoming ISP2" add chain=prerouting action=jump jump-target=connect-new connection-state=new \ comment="Call mark 'new-connection' for prerouting" add chain=prerouting action=jump jump-target=connect-related connection-state=related \ comment="Call mark 'related-connection' for prerouting" add chain=output action=jump jump-target=connect-new connection-state=new \ comment="Call mark 'new-connection' for output" add chain=output action=jump jump-target=connect-related connection-state=related \ comment="Call mark 'related-connection' for output" add chain=prerouting action=mark-routing new-routing-mark=R:balans-ISP1 connection-mark=C:balans-ISP1 \ passthrough=no comment="Routing balanced ISP1" add chain=prerouting action=mark-routing new-routing-mark=R:balans-ISP2 connection-mark=C:balans-ISP2 \ passthrough=no comment="Routing balanced ISP2" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:Admin \ passthrough=no comment="Routing outgoing-Admin packets to ISP1" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:WebSurf \ passthrough=no comment="Routing outgoing-WebSurf packets to ISP1" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:static-ISP1 \ passthrough=no comment="Routing packet statically outgoing ISP1" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP2 connection-mark=C:static-ISP2 \ passthrough=no comment="Routing packet statically outgoing ISP2" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:in-ISP1-Admin \ passthrough=no comment="Routing Admin-packet returning to ISP1 from LAN" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP2 connection-mark=C:in-ISP2-Admin \ passthrough=no comment="Routing Admin-packet returning to ISP2 from LAN" add chain=output action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:in-ISP1-Admin \ passthrough=no comment="Routing Admin-packet returning to ISP1 from ROS" add chain=output action=mark-routing new-routing-mark=R:static-ISP2 connection-mark=C:in-ISP2-Admin \ passthrough=no comment="Routing Admin-packet returning to ISP2 from ROS" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:in-ISP1 \ passthrough=no comment="Routing packet returning to ISP1 from LAN" add chain=prerouting action=mark-routing new-routing-mark=R:static-ISP2 connection-mark=C:in-ISP2 \ passthrough=no comment="Routing packet returning to ISP2 from LAN" add chain=output action=mark-routing new-routing-mark=R:static-ISP1 connection-mark=C:in-ISP1 \ passthrough=no comment="Routing packet returning to ISP1 from ROS" add chain=output action=mark-routing new-routing-mark=R:static-ISP2 connection-mark=C:in-ISP2 \ passthrough=no comment="Routing packet returning to ISP2 from ROS" add chain=in-ISP1 connection-mark=!no-mark comment="Accept marked connection incoming ISP1" add chain=in-ISP1 action=mark-connection new-connection-mark=C:in-ISP1-Admin connection-state=new \ protocol=tcp dst-port=22,3389,8291 \ passthrough=no comment="New Admin (SSH/RDP/WinBox) connection incoming ISP1" add chain=in-ISP1 action=mark-connection new-connection-mark=C:in-ISP1 connection-state=new \ passthrough=no comment="New connection incoming ISP1" \ add chain=in-ISP1 action=mark-connection new-connection-mark=C:in-ISP1 connection-state=related \ passthrough=no comment="Related connection incoming ISP1" \ add chain=in-ISP2 connection-mark=!no-mark comment="Accept marked connection incoming ISP2" add chain=in-ISP2 action=mark-connection new-connection-mark=C:in-ISP2-Admin connection-state=new \ protocol=tcp dst-port=22,3389,8291 \ passthrough=no comment="New Admin (SSH/RDP/WinBox) connection incoming ISP2" add chain=in-ISP2 action=mark-connection new-connection-mark=C:in-ISP2 connection-state=new \ passthrough=no comment="New connection incoming ISP2" add chain=in-ISP2 action=mark-connection new-connection-mark=C:in-ISP2 connection-state=related \ passthrough=no comment="Related connection incoming ISP2" add chain=connect-new action=mark-connection new-connection-mark=C:LAN-ROS src-address-list=LAN dst-address-type=local \ passthrough=no comment="New connection from LAN to ROS" add chain=connect-related action=mark-connection new-connection-mark=C:LAN-ROS src-address-list=LAN dst-address-type=local \ passthrough=no comment="Related connection from LAN to ROS" add chain=connect-new action=mark-connection new-connection-mark=C:ROS-LAN src-address-type=local dst-address-list=LAN \ passthrough=no comment="New connection from ROS to LAN" add chain=connect-related action=mark-connection new-connection-mark=C:ROS-LAN src-address-type=local dst-address-list=LAN \ passthrough=no comment="Related connection from ROS to LAN" add chain=connect-new action=mark-connection new-connection-mark=C:ROS-WAN src-address-type=local dst-address-list=!LAN \ passthrough=no comment="New connection from ROS to WAN" add chain=connect-related action=mark-connection new-connection-mark=C:ROS-WAN src-address-type=local dst-address-list=!LAN \ passthrough=no comment="Related connection from ROS to WAN" add chain=connect-new action=mark-connection new-connection-mark=C:Admin \ src-address-list=LAN protocol=tcp dst-port=22,3389,8291 \ comment="New connection Admin (SSH/RDP/WinBox) LAN>WAN" add chain=connect-new action=mark-connection new-connection-mark=C:WebSurf \ src-address-list=LAN protocol=tcp dst-port=80,443 \ comment="New connection WebSurf (HTTP/HTTPS) LAN>WAN" add chain=connect-new action=mark-connection new-connection-mark=C:static-ISP1 connection-mark=no-mark \ dst-address-list=to-ISP1 src-address-list=LAN \ comment="New connection LAN>AdrList:to-ISP1" add chain=connect-new action=mark-connection new-connection-mark=C:static-ISP2 connection-mark=no-mark \ dst-address-list=to-ISP2 src-address-list=LAN \ comment="New connection LAN>AdrList:to-ISP2" add chain=connect-related action=mark-connection new-connection-mark=C:static-ISP1 connection-mark=no-mark \ dst-address-list=to-ISP1 src-address-list=LAN \ comment="Related connection LAN>AdrList:to-ISP1" add chain=connect-related action=mark-connection new-connection-mark=C:static-ISP2 connection-mark=no-mark \ dst-address-list=to-ISP2 src-address-list=LAN \ comment="Related connection LAN>AdrList:to-ISP2" add chain=connect-new action=mark-connection new-connection-mark=C:balans-ISP1 connection-mark=no-mark src-address-list=LAN \ comment="New connection to WAN with balancing PCC-2/1" per-connection-classifier=both-addresses:2/0 add chain=connect-new action=mark-connection new-connection-mark=C:balans-ISP2 connection-mark=no-mark src-address-list=LAN \ comment="New connection to WAN with balancing PCC-2/2" per-connection-classifier=both-addresses:2/1 add chain=connect-related action=mark-connection new-connection-mark=C:balans-ISP1 connection-mark=no-mark src-address-list=LAN \ comment="Related connection to WAN with balancing PCC-2/1" per-connection-classifier=both-addresses:2/0 add chain=connect-related action=mark-connection new-connection-mark=C:balans-ISP2 connection-mark=no-mark src-address-list=LAN \ comment="Related connection to WAN with balancing PCC-2/2" per-connection-classifier=both-addresses:2/1 add chain=postrouting action=mark-packet new-packet-mark=P:LAN-WAN-Admin_out connection-mark=C:Admin src-address-list=LAN \ passthrough=no comment="Packet-out Admin LAN>WAN" add chain=postrouting action=mark-packet new-packet-mark=P:LAN-WAN-Admin_in connection-mark=C:Admin dst-address-list=LAN \ passthrough=no comment="Packet-in Admin LAN>WAN" add chain=input action=mark-packet new-packet-mark=P:ISP1-ROS-Admin_in connection-mark=C:in-ISP1-Admin dst-address-type=local \ passthrough=no comment="Packet-in Admin via ISP1>ROS" add chain=postrouting action=mark-packet new-packet-mark=P:ISP1-ROS-Admin_out connection-mark=C:in-ISP1-Admin src-address-type=local \ passthrough=no comment="Packet-out Admin via ISP1>ROS" add chain=postrouting action=mark-packet new-packet-mark=P:ISP1-LAN-Admin_in connection-mark=C:in-ISP1-Admin dst-address-list=LAN \ passthrough=no comment="Packet-in Admin via ISP1>LAN" add chain=postrouting action=mark-packet new-packet-mark=P:ISP1-LAN-Admin_out connection-mark=C:in-ISP1-Admin src-address-type=local \ passthrough=no comment="Packet-out Admin via ISP1>LAN" add chain=input action=mark-packet new-packet-mark=P:ISP2-ROS-Admin_in connection-mark=C:in-ISP2-Admin dst-address-type=local \ passthrough=no comment="Packet-in Admin via ISP2>ROS" add chain=postrouting action=mark-packet new-packet-mark=P:ISP2-ROS-Admin_out connection-mark=C:in-ISP2-Admin src-address-type=local \ passthrough=no comment="Packet-out Admin via ISP2>ROS" add chain=postrouting action=mark-packet new-packet-mark=P:ISP2-LAN-Admin_in connection-mark=C:in-ISP2-Admin dst-address-list=LAN \ passthrough=no comment="Packet-in Admin via ISP2>LAN" add chain=postrouting action=mark-packet new-packet-mark=P:ISP2-LAN-Admin_out connection-mark=C:in-ISP2-Admin src-address-list=LAN \ passthrough=no comment="Packet-out Admin via ISP2>LAN" add chain=postrouting action=mark-packet new-packet-mark=P:LAN-WAN-WebSurf_out connection-mark=C:WebSurf src-address-list=LAN \ passthrough=no comment="Packet-out WebSurf LAN>WAN" add chain=postrouting action=mark-packet new-packet-mark=P:LAN-WAN-WebSurf_in connection-mark=C:WebSurf dst-address-list=LAN \ passthrough=no comment="Packet-in WebSurf LAN>WAN"
+1 for that!Please add the parameter "address-list" for the simple queue in ROS v6 ! it is not a dificult, but very usefull for many users
thanks ;p