What's new

Adaptive QOS and voip not working so well together (and high ping)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

psyc0ld

Occasional Visitor
Hi everyone,

I just bought a RT-AC87u and trying to configure the adaptive QOS to make sure my voip is always prioritized but I can't make it right.
I've set voip on top of the list, then gaming, streaming, web surfing, File transferring and others. I even configure my Obi to highest in the bandwidth monitor with apps analysis on.

I'm currently doing an online backup that max out my upload speed and my ping goes up to 400ms. So that makes calls impossible and even my browsing is slower.

For now, I've set up traditional QOS (highest priority for my obi) and everything works fine. My ping is low and calls are clear, but I was wondering if this is normal behaviour for adaptive QOS or if I've done something wrong.

Also, when I was configuring QOS with Safari, once I set up my customizable list, it's then going to the limiter bandwidth. And in the traditional QOS, once activated the option menu up right doesn't appear. I had to configure this with chrome.

Thanks.
Edit: I'm using 380.59 alpha2, but having these issues with 380.58.
 
Last edited:
I don't know if this is a good idea, but I'll try.
Merlin said in the 380.59 beta thread:
These are the currently known issues.

  • Traditionnal QoS is broken on most of the ARM models (Asus issue)
  • No firmware available for the RT-N66U and RT-AC56U (missing GPL components for these two)
 
I just bought a RT-AC87u and trying to configure the adaptive QOS to make sure my voip is always prioritized but I can't make it right.
I've set voip on top of the list, then gaming, streaming, web surfing, File transferring and others. I even configure my Obi to highest in the bandwidth monitor with apps analysis on.

Most folks get QoS backwards - it's not about rate limiting, it's about committing resources towards a service...

When running Adaptive QoS/Traffic Shaping - what's the more important service - for you it seems like VOIP...

Ok, set Voice as the primary QoS target - that writes a $20 check against a $100 bandwidth budget - the rest is still in the bank - so no matter - if you're using 100 percent of BW for gaming, the Router side will check to see if a Voice application flow is requesting traffic - and if so, it'll debit the bandwidth the 20 buck, and leave the rest for the other traffic...

Throw too many parameters at QoS, and all of a sudden, their too many checks, and not enough balance - and one finds themselves over committed, and nothing works...
 
it'll debit the bandwidth the 20 buck, and leave the rest for the other traffic...

While the voice app is in use, when the app finishes the session, it returns the 20 bucks back to the account until it's needed again.

Most folks try to get overly granular with QoS, and esp. Adaptive QoS and they get themselves into trouble like you describe above...

Adaptive tries to solve those problems to some extent, but one can still find themselves overcommitted...
 
I know how QOS works. I've set up voice on top of the list but I can't have proper quality while calling when I uploading a backup. Which should be at low priority as is the before last in the list.
That's why I'm asking if adaptive can handle it right or not or if I'm better with traditional QOS. But what's the point of adaptive then.
 
I know how QOS works. I've set up voice on top of the list but I can't have proper quality while calling when I uploading a backup. Which should be at low priority as is the before last in the list.
That's why I'm asking if adaptive can handle it right or not or if I'm better with traditional QOS. But what's the point of adaptive then.

Ping (in this case) will not give you useful information, unless you prioritize pings. A 400ms ping is completely normal because it is just another unclassified, unprioritized packet that is queued into the ~400ms deep network queue. The only traffic that will not see a 400ms latency will be the prioritized VOIP traffic.

QoS does not globally improve network latency during congestion, that is what an AQM does. I think fq_CoDel (an AQM) was recently added to AsusWRT-merlin, but I dunno if it works with Adaptive QoS.



Either prioritize pings or if your VOIP devices have some sort of diagnostic check, use that to see if QoS is functioning properly.
 
Ping (in this case) will not give you useful information, unless you prioritize pings. A 400ms ping is completely normal because it is just another unclassified, unprioritized packet that is queued into the ~400ms deep network queue. The only traffic that will not see a 400ms latency will be the prioritized VOIP traffic.

QoS does not globally improve network latency during congestion, that is what an AQM does. I think fq_CoDel (an AQM) was recently added to AsusWRT-merlin, but I dunno if it works with Adaptive QoS.



Either prioritize pings or if your VOIP devices have some sort of diagnostic check, use that to see if QoS is functioning properly.

Well i don't know if this would be possible with Adaptive QoS, but if it's. I hope Merlin could add this, as currently Adaptive QoS is useless. If you think it will help limit things, while prioritizing keeping latency low. This is one reason i have always liked firmware's like tomato with there style of QoS setup.

So with my AC3100, currently there's no real way to use something to prioritize keeping latency low, for certain devices/services, when using higher rates of data. With Bandwidth Limiter, you might be able to greatly reduce your overall data rate limit's, and maybe keep latency from spiking to much. With all this said, i would love for Asus to have a QoS system with a AQM option in place, in the future.

Because Adaptive QoS usefulness is taking a set of download/upload limits set by you. Then making sure higher priority devices/services you set, get bandwidth they require. However in no way does prioritizing something within Adaptive QoS, keep latency low to it. Btw this reply is for the OP of this thread, not who I'm commenting on. Reason i replied to who i did, was because i would love a QoS on these Asus router's, with a AQM option. As to some of us, keeping latency as low as possible, for certain services. While still being able to use high data rates, would be great. Very good chance i would try tomato firmware on my AC3100, if it ever becomes available.
 
I don't know if this is a good idea, but I'll try.
Merlin said in the 380.59 beta thread:
These are the currently known issues.

  • Traditionnal QoS is broken on most of the ARM models (Asus issue)

It's just as broken in 380.58, and in all the latest official firmwares from Asus. The issue isn't new in 380.59.
 
I know how QOS works. I've set up voice on top of the list but I can't have proper quality while calling when I uploading a backup. Which should be at low priority as is the before last in the list.
That's why I'm asking if adaptive can handle it right or not or if I'm better with traditional QOS. But what's the point of adaptive then.

Make sure you set upload/download speed to about 90% of your maximum rates, otherwise the upload will starve your download by not being able to send ACK packets back.
 
QoS does not globally improve network latency during congestion, that is what an AQM does. I think fq_CoDel (an AQM) was recently added to AsusWRT-merlin, but I dunno if it works with Adaptive QoS.

It's not part of any released build, it's just experimental code in a separate code branch.
 
I've been using an Obi for VOIP, too. I found that traditional QOS sort of works, adaptive less so. But I've never really had adequate out-going audio. Issue may be the inherent issues with Comcast. But can anyone advise how the signaling packets should be prioritized for VOIP? Thanks.

RT-AC68u and RMerlin 380.58
 
I've been using an Obi for VOIP, too. I found that traditional QOS sort of works, adaptive less so. But I've never really had adequate out-going audio. Issue may be the inherent issues with Comcast. But can anyone advise how the signaling packets should be prioritized for VOIP? Thanks.

RT-AC68u and RMerlin 380.58

Merlin mentions (at post #10) that *.58 & *.59 have a broken implementation of Traditional QoS.


Assuming that your QoS implementation is functioning properly, the best fundamental QoS tutorial I know of is http://www.linksysinfo.org/index.php?threads/qos-tutorial.68795 (a tutorial by toastman, a respected "real world" QoS guru). Sadly, this is literally the minimum amount of knowledge needed to understand how both uplooad & download QoS works, at the simplest level.
 
Well i don't know if this would be possible with Adaptive QoS, but if it's. I hope Merlin could add this, as currently Adaptive QoS is useless.

Being both a Adaptive QoS (i.e. BWDPI by Trend Micro) and HW NAT (i.e. CTF by Broadcom) user for sometime, I would assert Adaptive QoS (and the bigger feature set BWDPI) is far above being useless..

I've been consistently delighted by BWDPI. From time to time upset by Broadcom's CTF due to its lack of solid stability. To me, Trend Micro produces much higher quality software than Broadcom.

Adaptive QoS by TrendMicro

Back to Adaptive QoS, sadly it's not well documented anywhere. Nor Asus has fully implemented its configurability IMHO! Look at this NVRAM variable:

bwdpi_app_rulelist=9,20<0,5,6,15,17<4<13,24<1,3,14<7,10,11,21,23<8<<

This rulelist defines the packet/app priority for Adaptive QoS. Roughly you can work out a mapping between the numbers and app/packet categories. Some of them are configurable through WebUI. So you can play thru WebUI and see how this rule list changes.

Note that some categories are consistently on top priority which aren't even changeable from WebUI. Also note what numbers (i.e rules) are skipped/missing from the rulelist. I'm sure someone with curiosity, time and need can reverse engineer something useful for the community.
 
My own experience with Adaptive QoS were less than stellar. It is a fact that the BWDPI (short for the adaptive QoS) is the only one that works with CTF enabled (NAT hardware acceleration) so if your line is fast enough to need it you do not have a choice in the matter.

But when you do have a choice plus some skills BWDPI loses badly to a more classic linux QoS. I have switched to the Traditional QoS for a while now but I am not using it as it is, rather I have heavily modified via the provided user scripts in Merlin's fork to use HFSC instead of the HTB packet scheduler. Also, I've been testing the experimental FQ_CODEL support @RMerlin has added in his git repository and it improves things even further.

The caveat is, you need to know how QoS works in Linux to make your own script. I've been perfecting mine for months now, to the point that now I always get an A or A+ on the DSL Reports buffer bloat tests! Having said that, this is not a generic solution that can work for everyone out of the box, I am not sure if there's a generic script somewhere that uses HFSC + FQ_CODEL that fits all cases.
 
One limitation of Traditional QoS is that it only lets you configure rules based on tcp/ip parameters (port, protocol and IP). BWDPI's big advantage is its engine can classify traffic at an L7 level.

In an ideal world, we'd be able to tap into BWDPI's classification engine, and tie it to our own tc qdisc configuration.

Someone who truly wanted to do it could do so using a wrapper script around tc, or by plugging itself in the firmware after each call that stops/starts bwdpi's qos. It's technically doable.
 
One limitation of Traditional QoS is that it only lets you configure rules based on tcp/ip parameters (port, protocol and IP). BWDPI's big advantage is its engine can classify traffic at an L7 level.

In an ideal world, we'd be able to tap into BWDPI's classification engine, and tie it to our own tc qdisc configuration.

Someone who truly wanted to do it could do so using a wrapper script around tc, or by plugging itself in the firmware after each call that stops/starts bwdpi's qos. It's technically doable.
I suppose it could be done but it takes a lot of work, and it's not simple either, all the firmware calls to tc must be modified, I am not use that BWDPI uses a fixed amount of classes/qdiscs, I think those could be dynamic. But for me the biggest issue with BWDPI is that its layer7 detection is far from adequate. Users with fat pipes won't notice it as much, but users with low bandwidth are much more affected. Until recently (like few months ago) I only had an ADSL2+ link limited to 1020Kbps upload so I have noticed it myself. I can for sure tell you that it failed to detect my torrent client traffic classifying it as generic traffic, because all torrents use encryption these days. It also fails to detect Skype, Google Hangouts and Viber, popular messaging apps here with VoIP abilities. Not very useful like this.

But to play the devil's advocate, traditional QoS can't detect those either but if you fully control your network you can configure everything else like the torrent client for example to use specific ports and/or ToS bits to create mangle rules to detect all that bulk traffic and put it in lower priority, which is in the end what I do.

Yes I know, it's too damn technical for the average Jo which is why BWDPI is the holy grail after all, but it's far from perfect. Well, nothing is after all but there are better QoS solutions in the works from other manufacturers that rely in FQ_Codel in order to be generic enough and not to rely so much on L7 detection.

EDIT: found this thread in our forums here http://www.snbforums.com/threads/does-qualcomms-streamboost-really-work-article.14732/ Qualcomm is using similar tech plus others.
 
Last edited:
More on Adaptive QoS

BWDPI as a DPI (deep packet inspection) engine is fairly capable, especially for a consumer router. More than 700 types of common applications are identified based on counting the number app icons TrendMicro/Asus have prepared for their routers.

It includes both WhatsApp and Skype. So kinda surprise if BWDPI can't properly prioritise voice calls from such apps. Sometimes I wonder if turning on "App Analysis" is required for Adaptive QoS to work better. People would normally assume DPI is performed always regardless of this knob...

Also worth checking during a VoIP call to see what type of app is the traffic identified. I've been using "WiFi Call" on iPhone at home where cellular signal is usually one bar or two. BWDPI identifies WiFi Call as "General" which I take it as unable to identify...as WiFI Calls are all encrypted through a dedicated IPsec tunnel.
  • If people could figure out the rule number corresponding to "General". Then simply put that number in highest priority category through bwdpi_app_rulelist. That could be one preferred workaround.
  • Assigning the iPhone/Android device doing VoIP the highest priority (the red color button on Bandwidth Monitor page) may also improve the latency situation..
  • I would bet "General" is part of "Others" on Adaptive QoS customisation page. Giving "Others" a higher priority maybe below VoIP will help too...but risk propping up other unrelated "Others" traffic..
Quite a few workarounds are there worth trying before getting hands wet into nitty gritty of traditional QoS IMO. But really DPI based QoS shall be made more configurable (for people who prefer to)...

I've never noticed a dropped WiFi call as-is. Thus I never experimented with the above suggestions. Would like to hear feedback from people who tried and see improvements.
 
Well not to jump to much off topic.. I have tried out Bandwidth Limiter a bit on my AC3100 this week. I have noticed a couple things, and I wonder with bandwidth Limiter enabled, and CTF disabled what kind of max speed this router can handle. On to what I have noticed. I currently get 330/33 from my isp. Well I took every device connected to my network currently, and gave them speed's of 264/26.5. Which is about 80% of what my max is.

Well I noticed when I was doing some P2P downloading, and things were maxing out around 15/16MB's. But oddly while the P2P download was going on, ping level's starting at the router level went up a good amount which I found odd. But I need to do a bit more digging to see if that was bandwidth limiter doing its job, and only pings were affected on that device. Or is it somehow the bandwidth limiter causing an issue. As I do think I looked at the router's gui while the P2P download was going, and it showed CPU core 1 maxing out at 100%. What's odd about that.. is the P2P download was only thing using bandwidth, and only at 15-16MB's. Which is only 152-160mbps, and should be no where near maxing the cpu even with CTF disabled.

I also tested doing a couple speedtest, and download result's would hit the low 200mbps range. Ping level's would stay rather normal, and cpu core 1 load would stay much lower then 100% maxed out. So even with the P2P traffic, it shouldn't be in my honest opinion no where near maxing the cpu out at about 1/3 of the max speed I have seen this router handle without CTF. I have seen it easily hit around 450mbps, or so without CTF, and cpu maxing out at 100%. Also I noticed running a couple IPv6 speedtest with bandwidth limiter enabled, it doesn't limit ipv6 traffic currently. So someone could still rekt your connection with ipv6 traffic, even with bandwidth limiter enabled.

Anyways enough of my yapping.. I know QoS is a closed source feature from Asus. But if Merlin happens to read this post, I would love for him to comment on what he thinks about this, and if this kind of stuff is normal, and I'm just expecting the wrong kind of results. As to me.. things seem a bit off, and maybe a little bugged out currently. Which I don't mind bringing to Asus attention, if it isn't working properly. By the way I'm currently using Merlin's .59 beta 1 on my AC3100, if that matters.
 

Similar threads

Latest threads

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top