hello
is there a way to solve QoS for a Skype app? I cant find anything while googling as they say skype doesnt reserve specific ports... these ports can change all the time.
thanks
hello
is there a way to solve QoS for a Skype app? I cant find anything while googling as they say skype doesnt reserve specific ports... these ports can change all the time.
thanks
Did you try SQM? Basically automatic QoS
not really, i think you have to setup it somehow and target it to skype protocol/ ports?
Yep, Skype since version 8 doesn't use dedicated ports. Although, it does appear to use UDP ports in the ephemeral range.
I also observed it will use tunnels and private networks like Wireguard to attempt to reach the far end.
That is the beauty of SQM, you do not need to do it. SQM does it for you. It should solve 99% of bufferbloat cases.
@Bartvz so SQM can handle "somehow" skype etc?
Well, SQM by default will use flow-fair queueing, so as long as you do not have to many concurrent flows most things simply work. In addition, it also allows per-internal-IP-fairness which often works even better in spite of flow-heavy applications like bit-torrent, as long as the bit-torrent client is not run on the same computer as skype
SQM does not guarantee to solve all your QoS problems, but typically it should improve things such that you have more time and calm to research your optimal solution (and for a number of users it works/behaves "good enough" so that they do not bother). Have look at https://openwrt.org/docs/guide-user/network/traffic-shaping/sqm for first steps and for the details (including the per-internal-IP-fairness).
thank you, will check!
@moeller0 i set it by the howto and speed (download) was reduced from 250mbit to 60mbit on client ... bit odd ;-(
what device are you using? some older devices have limited CPU speed, SQM requires a fair amount of CPU, and is limited by the one-core speed, can't use multiple cores.
Could you please post the output of the following commands run on the router via ssh:
cat /proc/cpu
cat /etc/openwrt_release
ifstatus wan | grep device
cat /etc/config/sqm
tc -s qdisc
SQM_DEBUG=1 SQM_VERBOSITY_MAX=8 /etc/init.d/sqm stop
SQM_DEBUG=1 SQM_VERBOSITY_MAX=8 /etc/init.d/sqm start
That should help in figuring out what is going on
sure, thanks
root@LEDE:~# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 25.00
Features : half thumb fastmult vfp edsp vfpv3 tls idiva idivt vfpd32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x584
CPU revision : 2
processor : 1
model name : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 25.00
Features : half thumb fastmult vfp edsp vfpv3 tls idiva idivt vfpd32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x584
CPU revision : 2
Hardware : Marvell Armada 370/XP (Device Tree)
Revision : 0000
Serial : 0000000000000000
root@LEDE:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='19.07.3'
DISTRIB_REVISION='r11063-85e04e9f46'
DISTRIB_TARGET='mvebu/cortexa9'
DISTRIB_ARCH='arm_cortex-a9_vfpv3-d16'
DISTRIB_DESCRIPTION='OpenWrt 19.07.3 r11063-85e04e9f46'
DISTRIB_TAINTS=''
root@LEDE:~# ifstatus wan | grep device
"l3_device": "eth1",
"device": "eth1",
root@LEDE:~# cat /etc/config/sqm
config queue 'eth1'
option interface 'eth1'
option qdisc_advanced '0'
option enabled '1'
option upload '30000'
option debug_logging '0'
option verbosity '5'
option qdisc 'cake'
option script 'piece_of_cake.qos'
option overhead '44'
option linklayer 'ethernet'
option download '280000'
tc -s qdisc
qdisc noqueue 0: dev lo root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc mq 0: dev eth0 root
Sent 10396940502 bytes 9338647 pkt (dropped 1, overlimits 0 requeues 889)
backlog 0b 0p requeues 889
qdisc fq_codel 0: dev eth0 parent :8 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :7 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :6 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :5 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :4 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :3 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :2 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc fq_codel 0: dev eth0 parent :1 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 10396940502 bytes 9338647 pkt (dropped 1, overlimits 0 requeues 889)
backlog 0b 0p requeues 889
maxpacket 26532 drop_overlimit 0 new_flow_count 899 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc cake 800f: dev eth1 root refcnt 9 bandwidth 30Mbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100.0ms noatm overhe
ad 44
Sent 3512688140 bytes 4674771 pkt (dropped 7331, overlimits 7496663 requeues 15)
backlog 0b 0p requeues 15
memory used: 937216b of 4Mb
capacity estimate: 30Mbit
min/max network layer size: 28 / 1500
min/max overhead-adjusted size: 72 / 1544
average network hdr offset: 14
Tin 0
thresh 30Mbit
target 5.0ms
interval 100.0ms
pk_delay 20.7ms
av_delay 8.9ms
sp_delay 67us
backlog 0b
pkts 4682102
bytes 3523435297
way_inds 371116
way_miss 128151
way_cols 0
drops 7331
marks 0
ack_drop 0
sp_flows 3
bk_flows 1
un_flows 0
max_len 19162
quantum 915
qdisc ingress ffff: dev eth1 parent ffff:fff1 ----------------
Sent 7333614932 bytes 7054007 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev br-lan root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc fq_codel 0: dev tun0 root refcnt 2 limit 10240p flows 1024 quantum 1500 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
Sent 4724 bytes 89 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
qdisc cake 8010: dev ifb4eth1 root refcnt 2 bandwidth 280Mbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100.0ms noatm ove
rhead 44
Sent 7530125148 bytes 7053511 pkt (dropped 496, overlimits 4765267 requeues 0)
backlog 0b 0p requeues 0
memory used: 6508112b of 14000000b
capacity estimate: 280Mbit
min/max network layer size: 46 / 1480
min/max overhead-adjusted size: 90 / 1524
average network hdr offset: 14
Tin 0
thresh 280Mbit
target 5.0ms
interval 100.0ms
pk_delay 53us
av_delay 17us
sp_delay 4us
backlog 0b
pkts 7054007
bytes 7530851634
way_inds 293062
way_miss 123973
way_cols 0
drops 496
marks 0
ack_drop 0
sp_flows 3
bk_flows 1
un_flows 0
max_len 67804
quantum 1514
~
root@LEDE:~# SQM_DEBUG=1 SQM_VERBOSITY_MAX=8 /etc/init.d/sqm stop
/usr/lib/sqm/run.sh: line 57: can't create : nonexistent directory
SQM: Stopping SQM on eth1
root@LEDE:~#
SQM: sqm_start_default: Starting piece_of_cake.qos
SQM: ifb associated with interface eth1:
SQM: Currently no ifb is associated with eth1, this is normal during starting of the sqm system.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name ifb4eth1 type ifb
SQM: fn_exists: function candidate name: egress
SQM: fn_exists: TYPE_OUTPUT: egress is a function
SQM: fn_exists: return value: 0
SQM: egress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth1 root
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cake link layer adjustments: overhead 44 mpu 0
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth1 root cake bandwidth 30000kbit overhead 44 mpu 0 besteffort
SQM: sqm_start_default: egress shaping activated
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM ingress
SQM: QDISC ingress is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: fn_exists: function candidate name: ingress
SQM: fn_exists: TYPE_OUTPUT: ingress is a function
SQM: fn_exists: return value: 0
SQM: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth1 handle ffff: ingress
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: Invalid argument
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth1 handle ffff: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev ifb4eth1 root
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cake link layer adjustments: overhead 44 mpu 0
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev ifb4eth1 root cake bandwidth 280000kbit overhead 44 mpu 0 besteffort wash
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4eth1 up
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth1 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth1
SQM: sqm_start_default: ingress shaping activated
SQM: piece_of_cake.qos was started on eth1 successfully
There is one more strange thing, my main router has 500/30 connection, from that router i have direct eth link to that openwrt router, and on openwrt router on eth ports i am getting 250/30 max... strange
Thanks for the data, no smoking gun in there...
Could you perform and post a dslreports speedtest from a machine connected via ethernet to the OpenWrt router both with SQM disabled and with SQM enabled please? Recommendations for configuraing and reporting/linking the test result are here.
That indeed is strange. I assume that happens with SQM disabled?