On a low end Scale you cant, but you can control it wholesale. when you buy it wholesale its not contended, and there is a SLA agreement, on a low end scale its shared and your probly in a base QoS pool. We so it all the time, We call them POIIf you are the DSL provider, you typically control from the customer all the way to the upstream. You can engineer your network (hopefully) for VoIP and do QoS etc etc.
If you buy DSL from someone else, you have no control over how they handle the packets and your latency and jitter can be unpredictable.
/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=850k max-limit=850k name="Outbound Centurylink - 12mbit down 896kbit up" \ packet-mark="" parent=CENTURYLINK priority=1 add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=6M max-limit=6M name="Outbound Comcast - 30mbit down 6mbit up" packet-mark="" \ parent="Ethernet 2" priority=1 /queue type set 0 kind=pfifo name=default pfifo-limit=50 set 1 kind=pfifo name=ethernet-default pfifo-limit=50 set 2 kind=sfq name=wireless-default sfq-allot=1514 sfq-perturb=5 set 3 kind=red name=synchronous-default red-avg-packet=1000 red-burst=20 red-limit=60 red-max-threshold=50 red-min-threshold=10 set 4 kind=sfq name=hotspot-default sfq-allot=1514 sfq-perturb=5 add kind=red name="random early detect - 100 deep" red-avg-packet=1000 red-burst=10 red-limit=100 red-max-threshold=100 red-min-threshold=10 set 6 kind=none name=only-hardware-queue set 7 kind=mq-pfifo mq-pfifo-limit=50 name=multi-queue-ethernet-default set 8 kind=pfifo name=default-small pfifo-limit=10 /queue tree add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS7 outbound traffic - Centurylink" packet-mark="DSCP CS7" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=1 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS6 outbound traffic - Centurylink" packet-mark="DSCP CS6" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=2 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS5 outbound traffic - Centurylink" packet-mark="DSCP CS5" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=3 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS4 outbound traffic - Centurylink" packet-mark="DSCP CS4" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=4 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS3 outbound traffic - Centurylink" packet-mark="DSCP CS3" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=5 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS2 outbound traffic - Centurylink" packet-mark="DSCP CS2" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=6 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS1 outbound traffic - Centurylink" packet-mark="DSCP CS1" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=7 queue="random early detect - 100 deep" add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="BE outbound traffic - Centurylink" packet-mark="DSCP BE" \ parent="Outbound Centurylink - 12mbit down 896kbit up" priority=8 queue="random early detect - 100 deep" add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS7 outbound traffic - Comcast" packet-mark="DSCP CS7" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=1 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS6 outbound traffic - Comcast" packet-mark="DSCP CS6" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=2 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS5 outbound traffic - Comcast" packet-mark="DSCP CS5" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=3 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS4 outbound traffic - Comcast" packet-mark="DSCP CS4" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=4 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS3 outbound traffic - Comcast" packet-mark="DSCP CS3" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=5 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS2 outbound traffic - Comcast" packet-mark="DSCP CS2" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=6 queue=default-small add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="CS1 outbound traffic - Comcast" packet-mark="DSCP CS1" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=7 queue="random early detect - 100 deep" add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name="BE outbound traffic - Comcast" packet-mark="DSCP BE" parent=\ "Outbound Comcast - 30mbit down 6mbit up" priority=8 queue="random early detect - 100 deep" /queue interface set "Ethernet 1" queue=only-hardware-queue set "Ethernet 2" queue=only-hardware-queue set "Ethernet 3" queue=only-hardware-queue set "Ethernet 4" queue=only-hardware-queue set "Ethernet 5" queue=only-hardware-queueMarked with the following:
ip firewall mangle add action=passthrough chain=prerouting comment="DSCP Bittorrent Classification - Incoming from Ethernet 5" dscp=1 in-interface="Ethernet 5" add action=mark-packet chain=prerouting comment="DSCP BE Classification - Incoming from Ethernet 5" dscp=0 in-interface="Ethernet 5" new-packet-mark=\ "DSCP BE" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS1 Classification - Incoming from Ethernet 5" dscp=8 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS1" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS2 Classification - Incoming from Ethernet 5" dscp=16 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS2" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS3 Classification - Incoming from Ethernet 5" dscp=24 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS3" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS4 Classification - Incoming from Ethernet 5" dscp=32 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS4" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS5 Classification - Incoming from Ethernet 5" dscp=40 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS5" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS6 Classification - Incoming from Ethernet 5" dscp=48 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS6" passthrough=no add action=mark-packet chain=prerouting comment="DSCP CS7 Classification - Incoming from Ethernet 5" dscp=56 in-interface="Ethernet 5" new-packet-mark=\ "DSCP CS7" passthrough=noEthernet 5 is my edge routers' port facing my core which is a Cisco 4503. The 4503 is doing all of my tagging of traffic and whatnot and this SEEMS to work well in a priority queuing kind of fashion. I am not sure if it'll work right or not, but wouldn't this theoretically simulate a pseudo-LLQ like setup?
Priority
We already know that limit-at (CIR) to all queues will be given out no matter what.
Priority is responsible for distribution of remaining parent queues traffic to child queues so that they are able to reach max-limit
Queue with higher priority will reach its max-limit before the queue with lower priority. 8 is the lowest priority, 1 is the highest.
Make a note that priority only works:
for leaf queues - priority in inner queue have no meaning.
if max-limit is specified (not 0)
priority (1..8) : Prioritize one child queue over other child queue. Does not work on parent queues (if queue has at least one child). One is the highest, eight is the lowest priority. Child queue with higher priority will have chance to reach its limit-at before child with lower priority and after that child queue with higher priority will have chance to reach its max-limit before child with lower priority. Priority have nothing to do with bursts.
/queue tree add limit-at=850k max-limit=850k name="Outbound Centurylink - 12mbit down 896kbit up" parent=CENTURYLINK priority=1 add limit-at=850k max-limit=850k name="CS7 outbound traffic - Centurylink" packet-mark="DSCP CS7" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=1 add limit-at=850k max-limit=850k name="CS6 outbound traffic - Centurylink" packet-mark="DSCP CS6" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=2 add limit-at=850k max-limit=850k name="CS5 outbound traffic - Centurylink" packet-mark="DSCP CS5" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=3 add limit-at=850k max-limit=850k name="CS4 outbound traffic - Centurylink" packet-mark="DSCP CS4" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=4 add limit-at=850k max-limit=850k name="CS3 outbound traffic - Centurylink" packet-mark="DSCP CS3" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=5 add limit-at=850k max-limit=850k name="CS2 outbound traffic - Centurylink" packet-mark="DSCP CS2" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=6 add limit-at=850k max-limit=850k name="CS1 outbound traffic - Centurylink" packet-mark="DSCP CS1" parent="Outbound Centurylink - 12mbit down 896kbit up" priority=7 add limit-at=850k max-limit=850k name="BE outbound traffic - Centurylink" packet-mark="DSCP BE" parent="Outbound Centurylink - 12mbit down 896kbit up" add limit-at=6M max-limit=6M name="Outbound Comcast - 30mbit down 6mbit up" parent="Ethernet 2" priority=1 add limit-at=6M max-limit=6M name="CS7 outbound traffic - Comcast" packet-mark="DSCP CS7" parent="Outbound Comcast - 30mbit down 6mbit up" priority=1 add limit-at=6M max-limit=6M name="CS6 outbound traffic - Comcast" packet-mark="DSCP CS6" parent="Outbound Comcast - 30mbit down 6mbit up" priority=2 add limit-at=6M max-limit=6M name="CS5 outbound traffic - Comcast" packet-mark="DSCP CS5" parent="Outbound Comcast - 30mbit down 6mbit up" priority=3 add limit-at=6M max-limit=6M name="CS4 outbound traffic - Comcast" packet-mark="DSCP CS4" parent="Outbound Comcast - 30mbit down 6mbit up" priority=4 add limit-at=6M max-limit=6M name="CS3 outbound traffic - Comcast" packet-mark="DSCP CS3" parent="Outbound Comcast - 30mbit down 6mbit up" priority=5 add limit-at=6M max-limit=6M name="CS2 outbound traffic - Comcast" packet-mark="DSCP CS2" parent="Outbound Comcast - 30mbit down 6mbit up" priority=6 add limit-at=6M max-limit=6M name="CS1 outbound traffic - Comcast" packet-mark="DSCP CS1" parent="Outbound Comcast - 30mbit down 6mbit up" priority=7 add limit-at=6M max-limit=6M name="BE outbound traffic - Comcast" packet-mark="DSCP BE" parent="Outbound Comcast - 30mbit down 6mbit up"
Bump!This is what we use. But we found that the speeds don't actually match what they have. For example: If the customer has 50Mbps down and i put that in the parent rule, they will not get even close to 50, more like 16. If i turn off that rule or change it to 200M then they get the 50. Am i doing something wrong here?
#Packet Marks for Media Server
/ip firewall mangle
add action=mark-packet chain=prerouting dst-address="voip media server IP" in-interface=bridge-local new-packet-mark="VOIP UP"
add action=mark-packet chain=prerouting dst-address=!"voip media server IP" in-interface=bridge-local new-packet-mark="Data UP"
add action=mark-packet chain=postrouting new-packet-mark="VOIP DL" out-interface=bridge-local src-address="voip media server IP"
add action=mark-packet chain=postrouting new-packet-mark="Data DL" out-interface=bridge-local src-address=!"voip media server IP"
#QoS Setup. Please Do a speed test to verify Upload/Download Speeds and then adjust the following rules to match
/queue simple
add comment="Reconfigure to match actual total Up/Dn speeds" max-limit=10M/40M name=Parent target=bridge-local
add comment="Configure Up/Dn speeds in this rule by multipling the amount of phones x 100k" max-limit=768k/768k name="VOIP UL" packet-marks="VOIP UL" parent=Parent priority=1/1 target=192.168.88.0/24
add comment="Configure Up/Dn speeds in this rule by multipling the amount of phones x 100k" max-limit=768k/768k name="VOIP DL" packet-marks="VOIP DL" parent=Parent priority=1/1 target=bridge-local
add comment="Configure this rule with your Up/Dn speeds minus the bandwith you put for the VOIP rules." max-limit=9M/39M name="Data UP" packet-marks="Data UP" parent=Parent target=192.168.88.0/24
add comment="Configure this rule with your Up/Dn speeds minus the bandwith you put for the VOIP rules." max-limit=9M/39M name="Data DL" packet-marks="Data DL" parent=Parent target=bridge-local
Let me know what you think.
thanks