CBWFQ Used for Voice Instead of LLQ — Voice Quality Poor
Presenting Symptom
Voice calls experience poor quality with jitter and delay, despite QoS being configured on the WAN router.
Network Context
A small branch office with a Cisco 4321 router running IOS XE 16.9 connects to the HQ via a 10 Mbps leased line. Voice traffic from IP phones is marked with DSCP EF, but the router uses CBWFQ instead of LLQ for the voice class. The network has about 50 users and 20 IP phones.
Diagnostic Steps
Check the current QoS policy applied to the WAN interface
show policy-map interface serial0/0/0Serial0/0/0: output policy: QOS-POLICY
Class-map: VOICE (match-any)
0 packets, 0 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: ip dscp ef (46)
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
Class-map: class-default (match-any)
0 packets, 0 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: anyThe policy shows a VOICE class matching DSCP EF, but no priority or bandwidth statement is visible. This indicates CBWFQ is used (default queueing) rather than LLQ. The drop rate may be zero because the link is not congested yet, but during congestion, voice packets will compete with other traffic.
Examine the class-map and policy-map configuration
show running-config | section policy-mappolicy-map QOS-POLICY class VOICE bandwidth 256 class class-default fair-queue
The VOICE class uses 'bandwidth 256' instead of 'priority 256'. This is the root cause: CBWFQ guarantees bandwidth but does not provide strict priority queueing, so voice packets can be delayed by other traffic during congestion.
Simulate congestion to observe voice packet drops
show policy-map interface serial0/0/0Serial0/0/0: output policy: QOS-POLICY
Class-map: VOICE (match-any)
1000 packets, 64000 bytes
5 minute offered rate 256000 bps, drop rate 0 bps
Class-map: class-default (match-any)
5000 packets, 4000000 bytes
5 minute offered rate 2000000 bps, drop rate 100000 bpsEven though the VOICE class has bandwidth guarantee, during congestion the class-default may drop packets, but voice packets are not prioritized and may experience queuing delay. The absence of priority queueing causes jitter.
Check for any priority queueing configuration elsewhere
show running-config | include priorityNo output (no priority command configured)
Confirms that no priority queueing is configured anywhere. The fix is to change the VOICE class to use 'priority' instead of 'bandwidth'.
Root Cause
The QoS policy-map uses the 'bandwidth' command for the voice class instead of 'priority'. CBWFQ with bandwidth guarantee does not provide strict priority queuing, so voice packets experience variable delay (jitter) during congestion, degrading voice quality.
Resolution
Verification
Run 'show policy-map interface serial0/0/0' and verify the VOICE class shows 'Strict Priority' and 'priority 256' in the output. Also run 'show running-config | section policy-map' to confirm the priority command is present. During congestion, voice packets should have zero drops and minimal delay.
Prevention
1. Always use 'priority' for real-time traffic (voice/video) to ensure strict priority queuing. 2. Reserve adequate bandwidth for priority queues (e.g., 256 kbps for voice). 3. Use AutoQoS to automatically configure LLQ for voice traffic.
CCNA Exam Relevance
On the CCNA 200-301 exam, this scenario tests understanding of QoS queueing mechanisms. Questions may present a troubleshooting scenario where voice quality is poor and ask to identify the misconfiguration (CBWFQ vs LLQ). The exam expects candidates to know that 'priority' provides strict priority queuing, while 'bandwidth' only guarantees minimum bandwidth.
Exam Tips
Memorize that LLQ uses the 'priority' command and provides strict priority queuing for real-time traffic.
In exam simulations, look for 'bandwidth' under a voice class as a common misconfiguration.
Know that 'show policy-map interface' is the key command to verify QoS queueing behavior.
Commands Used in This Scenario
show policy-map interface
Displays the current QoS policy applied to an interface, including per-class statistics such as packets matched, bytes, and actions taken, used to verify and troubleshoot QoS configurations.
show running-config
Displays the current active configuration in DRAM, showing all non-default settings.
Test Your CCNA Knowledge
Practice with scenario-based questions to prepare for the CCNA 200-301 exam.
Practice CCNA Questions