Hi,
I've rewritten my QoS from Traffic Shaping to Advanced Queue. It took a quite long time to see that traffic limiting seems not to work with FQDel, so I needed to use HFQ for this. I mostly took this as a template: https://community.ubnt.com/t5/EdgeMAX/EdgeMAX-Advanced-queue-CLI-examples/m-p/1566384
I've these subnets which are using different VLANs in my network:
10.0.0.0/12: Core Subnet
10.32.0.0/24: Prio Subnet (IP-PBX, Phones, CCTV, TV/Mediaserver)
10.50.0.0/22: Guest Subnet
My Internet WAN connection is 50MBit down / 10MBit up.
This is how my configuration looks like:
traffic-control { advanced-queue { branch { queue 10 { bandwidth 50mbit description "Internet Download" parent 1 } queue 20 { bandwidth 10mbit description "Internet Upload" parent 1 } } filters { match 2 { attach-to 1 description Lan/LAN ip { destination { address 10.50.0.0/16 } source { address 10.0.0.0/12 } } target 2 } match 3 { attach-to 1 description LAN/LAN ip { destination { address 10.0.0.0/12 } source { address 10.50.0.0/16 } } target 2 } match 4 { attach-to 1 description LAN/LAN ip { destination { address 10.32.0.0/16 } source { address 10.0.0.0/12 } } target 2 } match 5 { attach-to 1 description LAN/LAN ip { destination { address 10.0.0.0/12 } source { address 10.32.0.0/16 } } target 2 } match 10 { attach-to 1 description "WAN Download" target 10 } match 20 { attach-to 1 description "WAN Upload" target 20 } match 100 { attach-to 10 description "Gast Download" ip { destination { address 10.50.0.0/16 } } target 100 } match 110 { attach-to 10 description "Prio Traffic Down" ip { destination { address 10.32.0.0/16 } } target 110 } match 199 { attach-to 10 description "Core Down Default" ip { destination { address 10.0.0.1/12 } } target 199 } match 200 { attach-to 20 description "Gastnetz Upload" ip { source { address 10.50.0.0/22 } } target 200 } match 210 { attach-to 20 description "Prio Up" ip { source { address 10.32.0.0/16 } } target 210 } match 299 { attach-to 20 description "Core Up" ip { source { address 10.0.0.0/12 } } target 299 } } leaf { queue 2 { bandwidth 1000mbit description LAN/LAN parent 1 } queue 100 { bandwidth 2mbit ceiling 25mbit description "Gastnetz Download" parent 10 priority 7 queue-type HFQ_Gast_Down } queue 110 { bandwidth 5mbit ceiling 50mbit description "Prio-Traffic Down" parent 10 priority 1 queue-type FQ_Down } queue 199 { bandwidth 10mbit ceiling 50mbit description "Core Down" parent 10 priority 4 queue-type FQ_Down } queue 200 { bandwidth 500kbit ceiling 5mbit description "Gastnetz Upload" parent 20 priority 7 queue-type HFQ_Gast_Up } queue 210 { bandwidth 1mbit ceiling 10mbit description "Prio Traffic Up" parent 20 priority 1 queue-type FQ_Up } queue 299 { bandwidth 5mbit ceiling 10mbit description "Core Up" parent 20
priority 4 queue-type FQ_Up } } queue-type { fq-codel FQ_COD1 { ecn enable } fq-codel FQ_Down { ecn enable } fq-codel FQ_Up { ecn enable } hfq HFQ_Gast_Down { description "Download-Limit Gastnetz" host-identifier dip max-rate 15mbit subnet 10.50.0.0/22 } hfq HFQ_Gast_Up { description "Gastnetz Upload" host-identifier sip max-rate 3mbit subnet 10.50.0.0/22 } } root { queue 1 { attach-to global bandwidth 1000mbit description "WAN QOS" } } } }
My Question: On each branch (Upload and Download) the "Core Network" and "Prio-Network" Leaf are using FQDel, but the Guest Network Leaf is using HFQ as the main task here is to limit the bandwith for the guest network and its hosts.
Prio Network is priority 1, Core is Prio 4, Guest is prio 7.
Will the priorization completely work correct although the Guest leaf is using a different Queue type than the other two?
The last thing which is needed: I'd like to give the VoIP traffic of my PBX the very highest priority (0). In what order are the filters processed, I can't change the order.
Background: These packets are marked with DSCP 46, but the IP is in the Prio VLAN. So basically it's covered by the Prio queue above (10.32.0.0/16) so that gives it a prio 1.
Can I add a 4th leaf which triggers on DSCP 46? Of course I can - but then we have two filter rules matching for these in the branch: One filter matches for the 10.32.x.x Ip address and assigns the Queue with Prio 1, what happened if a second filter matches the Queue with Prio 0 via DSCO marking? Will the "best prio" win here?
Thanks for your suggestions.