Now that my ISP has finally enabled IPv6, I’ve gone back and redone my mangles/queues so that IPv4 and IPv6 both work correctly with DSCP. Here is my config for that. The only things anyone should need to change is the WAN interface name and the WAN upload speed. For coax ISP’s, they normally give you a 10% burst bonus. So a 20M upload should burst to 22M. Spectrum in Southern California on the 400/20 tier, realistic speeds are 450/30. That said, I set my max-limit for the queue at 30M.
This code will add the queue tree, IPv4 Mangles and IPv6 mangles. The Mangles will match the DSCP value to the correct priority and mark the packet as such. TCP ACK’s do not normally have a DSCP, I like them prioritized on asymmetrical links, so I set their DSCP to 34. I’ve also included a sample for Blizzard’s Battle.Net games to set them to DSCP 30. (This keeps my daughter’s video uploads from killing me during a raid)
Oh yeah, I DO NOT recommend using this many mangles on a low end router. inspecting and marking every packet on a mmips box will eat more CPU than it’s worth and end up slowing your overall speed.
#### Please set the Upload Link "max-limit" to your Upload BURST speed. This is normally 10% higher than your upload speed.
#### Please set the Upload Link "parent" to your WAN interface name. (Mine is "external")
#### Use the "Battel.Net" mangle rule as an example for your own DSCP adjustments.
/queue tree
add comment="Upload Link" max-limit=30M name=DSCP->Priority parent=external priority=1 queue=pcq-upload-default
add comment="DSCP 00-07 (Priority 8 - Lowest)" name="8. Routine" packet-mark=priority_8 parent=DSCP->Priority queue=pcq-upload-default
add comment="DSCP 08-15 (Priority 7)" name="7. Priority" packet-mark=priority_7 parent=DSCP->Priority priority=7 queue=pcq-upload-default
add comment="DSCP 16-23 (Priority 6)" name="6. Immedate" packet-mark=priority_6 parent=DSCP->Priority priority=6 queue=pcq-upload-default
add comment="DSCP 24-31 (Priority 5)" name="5. Flash" packet-mark=priority_5 parent=DSCP->Priority priority=5 queue=pcq-upload-default
add comment="DSCP 32-39 (Priority 4)" name="4. Flash Override" packet-mark=priority_4 parent=DSCP->Priority priority=4 queue=pcq-upload-default
add comment="DSCP 40-47 (Priority 3)" name="3. Critical" packet-mark=priority_3 parent=DSCP->Priority priority=3 queue=pcq-upload-default
add comment="DSCP 48-55 (Priority 2)" name="2. Internetwork Control" packet-mark=priority_2 parent=DSCP->Priority priority=2 queue=pcq-upload-default
add comment="DSCP 56-63 (Priority 1 - Highest)" name="1. Network Control" packet-mark=priority_1 parent=DSCP->Priority priority=1 queue=pcq-upload-default
/ip firewall mangle
add action=change-dscp chain=postrouting comment="ACK -> DSCP 34" new-dscp=34 packet-size=0-123 passthrough=no protocol=tcp tcp-flags=ack
add action=change-dscp chain=postrouting comment="Battle.Net -> DSCP 30" dst-port=1119,3724,6724 new-dscp=30 passthrough=yes protocol=tcp
add action=mark-packet chain=postrouting comment="DSCP 63 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 62 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 61 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 60 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 59 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 58 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 57 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 56 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 55 -> PRI 2" dscp=55 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 54 -> PRI 2" dscp=54 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 53 -> PRI 2" dscp=53 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 52 -> PRI 2" dscp=52 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 51 -> PRI 2" dscp=51 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 50 -> PRI 2" dscp=50 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 49 -> PRI 2" dscp=49 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 48 -> PRI 2" dscp=48 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 47 -> PRI 3" dscp=47 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 46 -> PRI 3" dscp=46 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 45 -> PRI 3" dscp=45 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 44 -> PRI 3" dscp=44 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 43 -> PRI 3" dscp=43 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 42 -> PRI 3" dscp=42 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 41 -> PRI 3" dscp=41 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 40 -> PRI 3" dscp=40 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 39 -> PRI 4" dscp=39 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 38 -> PRI 4" dscp=38 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 37 -> PRI 4" dscp=37 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 36 -> PRI 4" dscp=36 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 35 -> PRI 4" dscp=35 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 34 -> PRI 4" dscp=34 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 33 -> PRI 4" dscp=33 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 32 -> PRI 4" dscp=32 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 31 -> PRI 5" dscp=31 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 30 -> PRI 5" dscp=30 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 29 -> PRI 5" dscp=29 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 28 -> PRI 5" dscp=28 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 27 -> PRI 5" dscp=27 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 26 -> PRI 5" dscp=26 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 25 -> PRI 5" dscp=25 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 24 -> PRI 5" dscp=24 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 23 -> PRI 6" dscp=23 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 22 -> PRI 6" dscp=22 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 21 -> PRI 6" dscp=21 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 20 -> PRI 6" dscp=20 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 19 -> PRI 6" dscp=19 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 18 -> PRI 6" dscp=18 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 17 -> PRI 6" dscp=17 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 16 -> PRI 6" dscp=16 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 15 -> PRI 7" dscp=15 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 14 -> PRI 7" dscp=14 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 13 -> PRI 7" dscp=13 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 12 -> PRI 7" dscp=12 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 11 -> PRI 7" dscp=11 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 10 -> PRI 7" dscp=10 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 09 -> PRI 7" dscp=9 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 08 -> PRI 7" dscp=8 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 07 -> PRI 8" dscp=7 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 06 -> PRI 8" dscp=6 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 05 -> PRI 8" dscp=5 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 04 -> PRI 8" dscp=4 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 03 -> PRI 8" dscp=3 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 02 -> PRI 8" dscp=2 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 01 -> PRI 8" dscp=1 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 00 -> PRI 8" dscp=0 new-packet-mark=priority_8 passthrough=no
/ipv6 firewall mangle
add action=change-dscp chain=postrouting comment="ACK -> DSCP 34" new-dscp=34 packet-size=0-123 passthrough=no protocol=tcp tcp-flags=ack
add action=change-dscp chain=postrouting comment="Battle.Net -> DSCP 30" dst-port=1119,3724,6724 new-dscp=30 passthrough=yes protocol=tcp
add action=mark-packet chain=postrouting comment="DSCP 63 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 62 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 61 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 60 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 59 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 58 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 57 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 56 -> PRI 1" dscp=56 new-packet-mark=priority_1 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 55 -> PRI 2" dscp=55 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 54 -> PRI 2" dscp=54 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 53 -> PRI 2" dscp=53 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 52 -> PRI 2" dscp=52 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 51 -> PRI 2" dscp=51 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 50 -> PRI 2" dscp=50 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 49 -> PRI 2" dscp=49 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 48 -> PRI 2" dscp=48 new-packet-mark=priority_2 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 47 -> PRI 3" dscp=47 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 46 -> PRI 3" dscp=46 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 45 -> PRI 3" dscp=45 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 44 -> PRI 3" dscp=44 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 43 -> PRI 3" dscp=43 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 42 -> PRI 3" dscp=42 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 41 -> PRI 3" dscp=41 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 40 -> PRI 3" dscp=40 new-packet-mark=priority_3 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 39 -> PRI 4" dscp=39 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 38 -> PRI 4" dscp=38 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 37 -> PRI 4" dscp=37 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 36 -> PRI 4" dscp=36 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 35 -> PRI 4" dscp=35 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 34 -> PRI 4" dscp=34 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 33 -> PRI 4" dscp=33 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 32 -> PRI 4" dscp=32 new-packet-mark=priority_4 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 31 -> PRI 5" dscp=31 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 30 -> PRI 5" dscp=30 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 29 -> PRI 5" dscp=29 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 28 -> PRI 5" dscp=28 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 27 -> PRI 5" dscp=27 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 26 -> PRI 5" dscp=26 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 25 -> PRI 5" dscp=25 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 24 -> PRI 5" dscp=24 new-packet-mark=priority_5 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 23 -> PRI 6" dscp=23 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 22 -> PRI 6" dscp=22 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 21 -> PRI 6" dscp=21 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 20 -> PRI 6" dscp=20 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 19 -> PRI 6" dscp=19 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 18 -> PRI 6" dscp=18 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 17 -> PRI 6" dscp=17 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 16 -> PRI 6" dscp=16 new-packet-mark=priority_6 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 15 -> PRI 7" dscp=15 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 14 -> PRI 7" dscp=14 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 13 -> PRI 7" dscp=13 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 12 -> PRI 7" dscp=12 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 11 -> PRI 7" dscp=11 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 10 -> PRI 7" dscp=10 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 09 -> PRI 7" dscp=9 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 08 -> PRI 7" dscp=8 new-packet-mark=priority_7 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 07 -> PRI 8" dscp=7 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 06 -> PRI 8" dscp=6 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 05 -> PRI 8" dscp=5 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 04 -> PRI 8" dscp=4 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 03 -> PRI 8" dscp=3 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 02 -> PRI 8" dscp=2 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 01 -> PRI 8" dscp=1 new-packet-mark=priority_8 passthrough=no
add action=mark-packet chain=postrouting comment="DSCP 00 -> PRI 8" dscp=0 new-packet-mark=priority_8 passthrough=no