One thing you need to do is switch your CAKE to Layered CAKE because it’s more geared toward prioritizing VoIP over other flows but not allowing the priority traffic to cannibalize the entire bandwidth.
You have very little bandwidth to play with. Layered CAKE allocates 25% to the priority queue. You barely have enough bandwidth for two calls if you want CAKE to manage your queues.
Another thing you need to do is to make sure that the IP phones mark their packets correctly with DSCP 46 (EF), and if you have other equipment between the IP phones and the OpenWRT router, you need to make sure that the equipment doesn’t zero out or otherwise modify the IP Phone QOS DSCP markings.
So, if you are going to get the “IP PBX in the cloud” kind of service, which is what I believe you are planning to do, you have two choices:
- The VoIP provider that ships pre-configured IP phones to you. Usually, you can’t reconfigure these IP phones. In this case, you must make sure that the IP phones are marking voice packets with DSCP 46 (EF). So, talk to the provider to make sure this is the case before you buy their service.
- The VoIP provider that allows BYOD (bring your own device). In this case, you must make sure that the IP phones or (ATAs - analog telephone adapters) you select are capable of being configured to mark voice packets with DSCP 46 (EF). And when you configure them, you must make sure that you tell them to mark voice packets with DSCP 46 (EF).
The third choice is for you to have a small PBX on premise and purchase a SIP trunk from an ITSP (Internet Telephony Service Provider). This is usually a more complicated route but it provides significant savings. However, with only two phones, the savings may not be worth the effort.
Also, you mentioned that the guaranteed upstream bandwidth is 700 Kbps. Layered CAKE polices the priority queue at 25% of the configured bandwidth.
700 Kbps * 0.25 = 175 Mbps. One G.711 call consumes 80 Kbps (RTP payload + IP header + RTP header + UDP header) without factoring in any Layer-2 overhead. So, without the L2 overhead, you barely have enough Layered Cake priority queue bandwidth for two G.711 calls. You have fewer than 20 bytes of available L2 overhead left in each RTP packet before you hit the 175 Kbps of the bandwidth limit in the priority queue. Once that limit is exceeded, CAKE will start tail-dropping packets out of the priority queue, and people on the other end of the phone call will experience dropped sounds or even dropped syllables.
Cisco recommends to set the priority queue to no more than 33% of the total bandwidth. If we could do this in CAKE, you would have 231 Kbps limit in the upstream priority queue, which would give you 88 bytes per packet available for the L2 overhead in each of the two simultaneous calls before you would hit the priority queue bandwidth limit of 231 Kbps. The 88 bytes of L2 overhead per packet is sufficient for any L2 protocol, including your flavor of DSL with PPPOE. Unfortunately, to the best of my knowledge, the 25% reservation of the total bandwidth as the priority queue bandwidth limit cannot be modified in CAKE.
Chances are that CAKE would be dropping voice packets if both G.711 calls are active in your environment. Therefore, you should also inquire about the availability of the G.729 codec with the VoIP provider, as it may be necessary to run one or both phones at G.729 instead of G.711. The selection of the codec (G.711 vs G.729) would have to be decided on the empirical basis (aka trial and error).