Page 1 of 1

VoIP QoS not working correctly

Posted: Mon Jul 07, 2014 4:37 pm
by demetri90
We have a queue tree set up to prioritize traffic coming from our PBX, however, even if we slam the downstream connection with a steam download, calls will break up pretty bad. Marked the connection and packets in the firewall. Are we doing this right?

Screenshot in link below.

http://1drv.ms/1n7IXbU

Re: VoIP QoS not working correctly

Posted: Mon Jul 14, 2014 10:19 pm
by demetri90
Has anyone successfully implemented solid QoS in these routers? Can't seem to find anyone who's got a working setup.

Re: VoIP QoS not working correctly

Posted: Mon Jul 14, 2014 11:33 pm
by DLNoah
Well, what jumps out to me from the screenshot is that nothing is hitting the SIP_IN and SIP_OUT queues for your queue tree. Can you post the results of /ip firewall mangle export compact and /queue tree export compact?

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 3:21 am
by demetri90
This is not from the same router as above, but one of our clients, we generally use the same setup for everyone.
# jul/14/2014 20:17:32 by RouterOS 5.25
# software id = ABL4-APBE
#
/ip firewall mangle
add action=mark-connection chain=forward dst-address=192.168.100.4 \
    new-connection-mark=sip_providers_in
add action=mark-connection chain=forward dst-address=192.168.100.220 \
    new-connection-mark=server220_in
add action=mark-connection chain=forward dst-address=192.168.100.223 \
    new-connection-mark=server223_in
add action=mark-connection chain=forward dst-address=192.168.100.224 \
    new-connection-mark=server224_in
add action=mark-connection chain=forward new-connection-mark=sip_providers_out \
    src-address=192.168.100.4
add action=mark-connection chain=forward new-connection-mark=server220_out \
    src-address=192.168.100.220
add action=mark-connection chain=forward new-connection-mark=server223_out \
    src-address=192.168.100.223
add action=mark-connection chain=forward new-connection-mark=server224_out \
    src-address=192.168.100.224
add action=mark-packet chain=forward connection-mark=sip_providers_in \
    new-packet-mark=sip_providers_traffic_in passthrough=no
add action=mark-packet chain=forward connection-mark=server220_in \
    new-packet-mark=server220_in_traffic passthrough=no
add action=mark-packet chain=forward connection-mark=server223_in \
    new-packet-mark=server223_in_traffic passthrough=no
add action=mark-packet chain=forward connection-mark=server224_in \
    new-packet-mark=server224_in_traffic passthrough=no
add action=mark-packet chain=forward connection-mark=sip_providers_out \
    new-packet-mark=sip_providers_traffic_out passthrough=no
add action=mark-packet chain=forward connection-mark=server220_out \
    new-packet-mark=server220_out_traffic passthrough=no
add action=mark-packet chain=forward connection-mark=server223_out \
    new-packet-mark=server223_out_traffic passthrough=no
add action=mark-packet chain=forward connection-mark=server224_out \
    new-packet-mark=server224_out_traffic passthrough=no
# jul/14/2014 20:18:20 by RouterOS 5.25
# software id = ABL4-APBE
#
/queue tree
add name=IN parent=global-in priority=1
add name=REST_IN packet-mark=no-mark parent=IN
add name=OUT parent=global-out priority=1
add name=REST_OUT packet-mark=no-mark parent=OUT
add name=SIP_IN packet-mark=sip_providers_traffic_in parent=IN priority=2
add name=SIP_OUT packet-mark=sip_providers_traffic_out parent=OUT priority=2
add name=SERVER220_IN packet-mark=server220_in_traffic parent=IN
add name=SERVER220_OUT packet-mark=server220_out_traffic parent=OUT
add name=SERVER223_IN packet-mark=server223_in_traffic parent=IN
add name=SERVER224_IN packet-mark=server224_in_traffic parent=IN
add name=SERVER223_OUT packet-mark=server223_out_traffic parent=OUT
add name=SERVER224_OUT packet-mark=server224_out_traffic parent=OUT

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 3:56 am
by IntrusDave
I can't speak for simple queues, but I use DSCP for my ShoreTel VoIP system and it works perfectly.

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 4:10 am
by demetri90
I can't speak for simple queues, but I use DSCP for my ShoreTel VoIP system and it works perfectly.
Can you post an example? I'm willing to try anything at this point.

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 4:17 am
by IntrusDave
Here is my queue:
/queue tree
add max-limit=5242880 name=qos_ether1 parent=ether1 priority=1
add name=netcon_ether1 parent=qos_ether1 priority=1 queue=ethernet-default
add name=netcon_ether1_0 packet-mark=dscp_63 parent=netcon_ether1 priority=1 queue=ethernet-default
add name=netcon_ether1_1 packet-mark=dscp_62 parent=netcon_ether1 priority=2 queue=ethernet-default
add name=netcon_ether1_2 packet-mark=dscp_61 parent=netcon_ether1 priority=3 queue=ethernet-default
add name=netcon_ether1_3 packet-mark=dscp_60 parent=netcon_ether1 priority=4 queue=ethernet-default
add name=netcon_ether1_4 packet-mark=dscp_59 parent=netcon_ether1 priority=5 queue=ethernet-default
add name=netcon_ether1_5 packet-mark=dscp_58 parent=netcon_ether1 priority=6 queue=ethernet-default
add name=netcon_ether1_6 packet-mark=dscp_57 parent=netcon_ether1 priority=7 queue=ethernet-default
add name=netcon_ether1_7 packet-mark=dscp_56 parent=netcon_ether1 queue=ethernet-default
add name=intercon_ether1 parent=qos_ether1 priority=2 queue=ethernet-default
add name=intercon_ether1_0 packet-mark=dscp_55 parent=intercon_ether1 priority=1 queue=ethernet-default
add name=intercon_ether1_1 packet-mark=dscp_54 parent=intercon_ether1 priority=2 queue=ethernet-default
add name=intercon_ether1_2 packet-mark=dscp_53 parent=intercon_ether1 priority=3 queue=ethernet-default
add name=intercon_ether1_3 packet-mark=dscp_52 parent=intercon_ether1 priority=4 queue=ethernet-default
add name=intercon_ether1_4 packet-mark=dscp_51 parent=intercon_ether1 priority=5 queue=ethernet-default
add name=intercon_ether1_5 packet-mark=dscp_50 parent=intercon_ether1 priority=6 queue=ethernet-default
add name=intercon_ether1_6 packet-mark=dscp_49 parent=intercon_ether1 priority=7 queue=ethernet-default
add name=intercon_ether1_7 packet-mark=dscp_48 parent=intercon_ether1 queue=ethernet-default
add name=critical_ether1 parent=qos_ether1 priority=3 queue=ethernet-default
add name=critical_ether1_0 packet-mark=dscp_47 parent=critical_ether1 priority=1 queue=ethernet-default
add name=critical_ether1_1 packet-mark=dscp_46 parent=critical_ether1 priority=2 queue=ethernet-default
add name=critical_ether1_2 packet-mark=dscp_45 parent=critical_ether1 priority=3 queue=ethernet-default
add name=critical_ether1_3 packet-mark=dscp_44 parent=critical_ether1 priority=4 queue=ethernet-default
add name=critical_ether1_4 packet-mark=dscp_43 parent=critical_ether1 priority=5 queue=ethernet-default
add name=critical_ether1_5 packet-mark=dscp_42 parent=critical_ether1 priority=6 queue=ethernet-default
add name=critical_ether1_6 packet-mark=dscp_41 parent=critical_ether1 priority=7 queue=ethernet-default
add name=critical_ether1_7 packet-mark=dscp_40 parent=critical_ether1 queue=ethernet-default
add name=flash_override_ether1 parent=qos_ether1 priority=4 queue=ethernet-default
add name=flash_override_ether1_0 packet-mark=dscp_39 parent=flash_override_ether1 priority=1 queue=ethernet-default
add name=flash_override_ether1_1 packet-mark=dscp_38 parent=flash_override_ether1 priority=2 queue=ethernet-default
add name=flash_override_ether1_2 packet-mark=dscp_37 parent=flash_override_ether1 priority=3 queue=ethernet-default
add name=flash_override_ether1_3 packet-mark=dscp_36 parent=flash_override_ether1 priority=4 queue=ethernet-default
add name=flash_override_ether1_4 packet-mark=dscp_35 parent=flash_override_ether1 priority=5 queue=ethernet-default
add name=flash_override_ether1_5 packet-mark=dscp_34 parent=flash_override_ether1 priority=6 queue=ethernet-default
add name=flash_override_ether1_6 packet-mark=dscp_33 parent=flash_override_ether1 priority=7 queue=ethernet-default
add name=flash_override_ether1_7 packet-mark=dscp_32 parent=flash_override_ether1 queue=ethernet-default
add name=flash_ether1 parent=qos_ether1 priority=5 queue=ethernet-default
add name=flash_ether1_0 packet-mark=dscp_31 parent=flash_ether1 priority=1 queue=ethernet-default
add name=flash_ether1_1 packet-mark=dscp_30 parent=flash_ether1 priority=2 queue=ethernet-default
add name=flash_ether1_2 packet-mark=dscp_29 parent=flash_ether1 priority=3 queue=ethernet-default
add name=flash_ether1_3 packet-mark=dscp_28 parent=flash_ether1 priority=4 queue=ethernet-default
add name=flash_ether1_4 packet-mark=dscp_27 parent=flash_ether1 priority=5 queue=ethernet-default
add name=flash_ether1_5 packet-mark=dscp_26 parent=flash_ether1 priority=6 queue=ethernet-default
add name=flash_ether1_6 packet-mark=dscp_25 parent=flash_ether1 priority=7 queue=ethernet-default
add name=flash_ether1_7 packet-mark=dscp_24 parent=flash_ether1 queue=ethernet-default
add name=immedate_ether1 parent=qos_ether1 priority=6 queue=ethernet-default
add name=immedate_ether1_0 packet-mark=dscp_23 parent=immedate_ether1 priority=1 queue=ethernet-default
add name=immedate_ether1_1 packet-mark=dscp_22 parent=immedate_ether1 priority=2 queue=ethernet-default
add name=immedate_ether1_2 packet-mark=dscp_21 parent=immedate_ether1 priority=3 queue=ethernet-default
add name=immedate_ether1_3 packet-mark=dscp_20 parent=immedate_ether1 priority=4 queue=ethernet-default
add name=immedate_ether1_4 packet-mark=dscp_19 parent=immedate_ether1 priority=5 queue=ethernet-default
add name=immedate_ether1_5 packet-mark=dscp_18 parent=immedate_ether1 priority=6 queue=ethernet-default
add name=immedate_ether1_6 packet-mark=dscp_17 parent=immedate_ether1 priority=7 queue=ethernet-default
add name=immedate_ether1_7 packet-mark=dscp_16 parent=immedate_ether1 queue=ethernet-default
add name=priority_ether1 parent=qos_ether1 priority=7 queue=ethernet-default
add name=priority_ether1_0 packet-mark=dscp_15 parent=priority_ether1 priority=1 queue=ethernet-default
add name=priority_ether1_1 packet-mark=dscp_14 parent=priority_ether1 priority=2 queue=ethernet-default
add name=priority_ether1_2 packet-mark=dscp_13 parent=priority_ether1 priority=3 queue=ethernet-default
add name=priority_ether1_3 packet-mark=dscp_12 parent=priority_ether1 priority=4 queue=ethernet-default
add name=priority_ether1_4 packet-mark=dscp_11 parent=priority_ether1 priority=5 queue=ethernet-default
add name=priority_ether1_5 packet-mark=dscp_10 parent=priority_ether1 priority=6 queue=ethernet-default
add name=priority_ether1_6 packet-mark=dscp_9 parent=priority_ether1 priority=7 queue=ethernet-default
add name=priority_ether1_7 packet-mark=dscp_8 parent=priority_ether1 queue=ethernet-default
add name=routine_ether1 parent=qos_ether1 queue=ethernet-default
add name=routine_ether1_0 packet-mark=dscp_7 parent=routine_ether1 priority=1 queue=ethernet-default
add name=routine_ether1_1 packet-mark=dscp_6 parent=routine_ether1 priority=2 queue=ethernet-default
add name=routine_ether1_2 packet-mark=dscp_5 parent=routine_ether1 priority=3 queue=ethernet-default
add name=routine_ether1_3 packet-mark=dscp_4 parent=routine_ether1 priority=4 queue=ethernet-default
add name=routine_ether1_4 packet-mark=dscp_3 parent=routine_ether1 priority=5 queue=ethernet-default
add name=routine_ether1_5 packet-mark=dscp_2 parent=routine_ether1 priority=6 queue=ethernet-default
add name=routine_ether1_6 packet-mark=dscp_1 parent=routine_ether1 priority=7 queue=ethernet-default
add name=routine_ether1_7 packet-mark=dscp_0 parent=routine_ether1 queue=ethernet-default
and the mangle to tag the packets:
/ip firewall mangle
add action=mark-packet chain=postrouting comment=ACK new-packet-mark=dscp_20 packet-size=0-123 passthrough=no protocol=tcp tcp-flags=ack
add action=mark-packet chain=postrouting layer7-protocol=bittorrent new-packet-mark=dscp_0 passthrough=no
add action=mark-packet chain=postrouting dst-port=80,443 new-packet-mark=dscp_5 passthrough=no protocol=tcp
add action=mark-packet chain=postrouting layer7-protocol=http new-packet-mark=dscp_5 passthrough=no
add action=mark-packet chain=postrouting layer7-protocol=ssl new-packet-mark=dscp_5 passthrough=no
add action=mark-packet chain=postrouting dst-port=22,2414 new-packet-mark=dscp_20 passthrough=no protocol=tcp
add action=mark-packet chain=postrouting dst-port=995,993,465,578,110,25,143 new-packet-mark=dscp_15 passthrough=no protocol=tcp
add action=mark-packet chain=postrouting dst-port=123 new-packet-mark=dscp_40 passthrough=no protocol=udp
add action=mark-packet chain=postrouting comment=dscp_63 dscp=63 new-packet-mark=dscp_63 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_62 dscp=62 new-packet-mark=dscp_62 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_61 dscp=61 new-packet-mark=dscp_61 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_60 dscp=60 new-packet-mark=dscp_60 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_59 dscp=59 new-packet-mark=dscp_59 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_58 dscp=58 new-packet-mark=dscp_58 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_57 dscp=57 new-packet-mark=dscp_57 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_56 dscp=56 new-packet-mark=dscp_56 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_55 dscp=55 new-packet-mark=dscp_55 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_54 dscp=54 new-packet-mark=dscp_54 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_53 dscp=53 new-packet-mark=dscp_53 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_52 dscp=52 new-packet-mark=dscp_52 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_51 dscp=51 new-packet-mark=dscp_51 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_50 dscp=50 new-packet-mark=dscp_50 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_49 dscp=49 new-packet-mark=dscp_49 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_48 dscp=48 new-packet-mark=dscp_48 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_47 dscp=47 new-packet-mark=dscp_47 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_46 dscp=46 new-packet-mark=dscp_46 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_45 dscp=45 new-packet-mark=dscp_45 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_44 dscp=44 new-packet-mark=dscp_44 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_43 dscp=43 new-packet-mark=dscp_43 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_42 dscp=42 new-packet-mark=dscp_42 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_41 dscp=41 new-packet-mark=dscp_41 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_40 dscp=40 new-packet-mark=dscp_40 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_39 dscp=39 new-packet-mark=dscp_39 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_38 dscp=38 new-packet-mark=dscp_38 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_37 dscp=37 new-packet-mark=dscp_37 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_36 dscp=36 new-packet-mark=dscp_36 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_35 dscp=35 new-packet-mark=dscp_35 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_34 dscp=34 new-packet-mark=dscp_34 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_33 dscp=33 new-packet-mark=dscp_33 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_32 dscp=32 new-packet-mark=dscp_32 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_31 dscp=31 new-packet-mark=dscp_31 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_30 dscp=30 new-packet-mark=dscp_30 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_29 dscp=29 new-packet-mark=dscp_29 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_28 dscp=28 new-packet-mark=dscp_28 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_27 dscp=27 new-packet-mark=dscp_27 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_26 dscp=26 new-packet-mark=dscp_26 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_25 dscp=25 new-packet-mark=dscp_25 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_24 dscp=24 new-packet-mark=dscp_24 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_23 dscp=23 new-packet-mark=dscp_23 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_22 dscp=22 new-packet-mark=dscp_22 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_21 dscp=21 new-packet-mark=dscp_21 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_20 dscp=20 new-packet-mark=dscp_20 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_19 dscp=19 new-packet-mark=dscp_19 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_18 dscp=18 new-packet-mark=dscp_18 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_17 dscp=17 new-packet-mark=dscp_17 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_16 dscp=16 new-packet-mark=dscp_16 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_15 dscp=15 new-packet-mark=dscp_15 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_14 dscp=14 new-packet-mark=dscp_14 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_13 dscp=13 new-packet-mark=dscp_13 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_12 dscp=12 new-packet-mark=dscp_12 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_11 dscp=11 new-packet-mark=dscp_11 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_10 dscp=10 new-packet-mark=dscp_10 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_09 dscp=9 new-packet-mark=dscp_9 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_08 dscp=8 new-packet-mark=dscp_8 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_07 dscp=7 new-packet-mark=dscp_7 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_06 dscp=6 new-packet-mark=dscp_6 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_05 dscp=5 new-packet-mark=dscp_5 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_04 dscp=4 new-packet-mark=dscp_4 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_03 dscp=3 new-packet-mark=dscp_3 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_02 dscp=2 new-packet-mark=dscp_2 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_01 dscp=1 new-packet-mark=dscp_1 passthrough=no
add action=mark-packet chain=postrouting comment=dscp_00 dscp=0 new-packet-mark=dscp_0 passthrough=no
my phones and voice switches tag voice packets with dscp_46, and SIP with dscp_26.

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 5:25 am
by jkarras
Are you hitting 100% CPU at these times? It may just be that you are exceeding the limits of the device. If there isn't overhead available there will be issues.

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 5:30 am
by demetri90
Are you hitting 100% CPU at these times? It may just be that you are exceeding the limits of the device. If there isn't overhead available there will be issues.
I wouldn't think so with an RB2011.

Re: VoIP QoS not working correctly

Posted: Tue Jul 15, 2014 5:49 am
by jkarras
Worth checking Steam is basically a flood of UDP packets. So its much harder on the connection tracking and will come closer to the 64-byte speed measurements Mikrotik publishes.

Also check that your buffers of any parent queues that steam and VoIP packets share.