What are LLQ (Low Latency Queuing) and CBWFQ (Class-Based Weighted Fair Queuing)? How to configure LLQ and CBWFQ?

Edgar C Francis
7 min readDec 3, 2023

--

LLQ (Low Latency Queuing)

CBWFQ (Class-Based Weighted Fair Queuing)

Cisco created CBWFQ and LLQ using some of the best concepts from legacy queuing methods. PQ and CQ as well as WFQ while adding several features.

LLQ low-latency queuing is developed by Cisco and it provides strict priority queuing to CBWFQ (class-based weighted fair queueing. Low-latency queuing provides delay-sensitive data like VoIP traffic to be given more preferential treatment over other traffic by letting the data be dequeued and sent first.

CBWFQ (Class-Based Weighted Fair Queuing) it’s a scheduling mechanism that allows a minimum bandwidth guarantee when the network congestion occurs on an interface.

CBWFQ is used to provide traffic classes during times of network congestion at an interface. Each of the CBWFQ queues is assigned a weight, and the packets are treated from the queues based upon the weight of the queue.CBWFQ and LLQ both support 64 queues/classes and also have one special queue called the class-default queue. LLQ and CBWFQ are both tools that use MQC and NBAR for configuration. there is one drawback in CBWFQ is VoIP traffic suffers an unacceptable delay.

Advantage of LLQ

LLQ provides all the benefits of CBWFQ (Class-Based Weighted Fair Queuing), including the capability of the user to queue and guarantees each queue an appropriate amount of bandwidth and to apply WRED to each of the queues (except to the strict-priority queue).

LLQ combines priority queuing and CBWFQ and provides Strict priority queueing for sensitive traffic like VoIP and video. LLQ also reduces latency/jitter for communications.

let’s see the configuration for a better understanding of LLQ and CBWFQ.

Topology:- https://qos.internetworks.in/2021/10/what-is-llq-low-latency-queuing-and.html

Goal:-

  • configure the topology as per the diagram above.
  • configure IP addresses to their ports
  • configure EIGRP AS 65120 and advertise directly connected interfaces.
  • configure CBWFQ tool on router 1
  • configure ICMP bandwidth 18 percent, FTP bandwidth 28 and HTTP bandwidth 38.
  • configure LLQ tool on router 3
  • configure VoIP priority 192, ICMP bandwidth 120, HTTP priority 10 and FTP priority 15.
  • The rest of the traffic use WFQ.

R1(config)#interface serial 4/0

R1(config-if)#ip address 192.168.10.1 255.255.255.0

R1(config-if)#no shutdown

R1(config-if)#exit

R1(config)#interface fastEthernet 0/0

R1(config-if)#ip address 10.1.1.1 255.255.255.0

R1(config-if)#no shutdown

R1(config-if)#no keepalive

R1(config-if)#exit

R2(config)#interface serial 4/0

R2(config-if)#ip address 192.168.10.2 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#interface fastEthernet 0/0

R2(config-if)#ip address 20.1.1.1 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#no keepalive

R2(config-if)#exit

R2(config)#interface serial 4/1

R2(config-if)#ip address 23.1.1.1 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R3(config)#interface serial 4/1

R3(config-if)#ip address 23.1.1.2 255.255.255.0

R3(config-if)#no shutdown

R3(config-if)#exit

R3(config)#interface fastEthernet 0/0

R3(config-if)#ip address 30.1.1.1 255.255.255.0

R3(config-if)#no keepalive

R3(config-if)#no shutdown

R3(config-if)#exit

R1(config)#router eigrp 65120

R1(config-router)#network 192.168.10.0

R1(config-router)#network 10.0.0.0

R1(config-router)#no auto-summary

R1(config-router)#exit

R2(config)#router eigrp 65120

R2(config-router)#network 192.168.10.0

R2(config-router)#network 192.168.10.0

R2(config-router)#network 20.0.0.0

R2(config-router)#network 23.1.1.0

R2(config-router)#no auto-summary

R2(config-router)#exit

R3(config)#router eigrp 65120

R3(config-router)#network 23.1.1.0

R3(config-router)#network 30.0.0.0

R3(config-router)#no auto-summary

R3(config-router)#exit

R1(config)#class-map ICMP-TRAFFIC

R1(config-cmap)#match protocol icmp

R1(config-cmap)#class-map HTTP-TRAFFIC

R1(config-cmap)#match protocol http

R1(config-cmap)#class-map FTP-TRAFFIC

R1(config-cmap)#match protocol ftp

R1(config-cmap)#exit

R1(config)#policy-map CBWFQ-QUEUE

R1(config-pmap)#class ICMP-TRAFFIC

R1(config-pmap-c)#bandwidth percent 18

R1(config-pmap-c)#class HTTP-TRAFFIC

R1(config-pmap-c)#bandwidth percent 38

R1(config-pmap-c)#exit

R1(config-pmap)#policy-map CBWFQ-QUEUE

R1(config-pmap)#class FTP-TRAFFIC

R1(config-pmap-c)#bandwidth percent 28

R1(config-pmap-c)#exit

R1(config-pmap)#class class-default

R1(config-pmap-c)#exit

R1(config-pmap)#exit

R1(config)#interface serial 4/0

R1(config-if)#service-policy output CBWFQ-QUEUE

R1(config-if)#END

R1#show policy-map interface serial 4/0

Serial4/0

Service-policy output: CBWFQ-QUEUE

Class-map: ICMP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol icmp

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 0/0

bandwidth 18% (277 kbps)

Class-map: HTTP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol http

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 0/0

bandwidth 38% (586 kbps)

Class-map: FTP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol ftp

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 0/0

bandwidth 28% (432 kbps)

Class-map: class-default (match-any)

2 packets, 48 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: any

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 2/48

R1#show run policy-map

Building configuration…

Current configuration : 185 bytes

!

policy-map CBWFQ-QUEUE

class ICMP-TRAFFIC

bandwidth percent 18

class HTTP-TRAFFIC

bandwidth percent 38

class FTP-TRAFFIC

bandwidth percent 28

class class-default

!

end

R1#show run class-map

Building configuration…

Current configuration : 168 bytes

!

class-map match-all FTP-TRAFFIC

match protocol ftp

class-map match-all ICMP-TRAFFIC

match protocol icmp

class-map match-all HTTP-TRAFFIC

match protocol http

end

FROM ROUTER 2

FROM ROUTER 1

  • configure LLQ tool on router 3

R3(config)#ip access-list extended VoIP

R3(config-ext-nacl)#permit udp any any range 16380 32770

R3(config-ext-nacl)#exit

R3(config)#class-map ICMP-TRAFFIC

R3(config-cmap)#match protocol icmp

R3(config-cmap)#exit

R3(config)#class-map HTTP-TRAFFIC

R3(config-cmap)#match protocol http

R3(config-cmap)#exit

R3(config)#class-map FTP-TRAFFIC

R3(config-cmap)#match protocol ftp

R3(config-cmap)#exit

R3(config)#class-map VoIP-TRAFFIC

R3(config-cmap)#match access-group name VoIP

R3(config-cmap)#EXIT

R3(config)#policy-map LLQ

R3(config-pmap)#class VoIP-TRAFFIC

R3(config-pmap-c)#priority 190

R3(config-pmap-c)#exit

R3(config-pmap)#class ICMP-TRAFFIC

R3(config-pmap-c)#bandwidth 120

R3(config-pmap-c)#exit

R3(config-pmap)#class HTTP-TRAFFIC

R3(config-pmap-c)#priority 10

R3(config-pmap-c)#exit

R3(config-pmap)#class FTP-TRAFFIC

R3(config-pmap-c)#priority 15

R3(config-pmap-c)#exit

R3(config-pmap)#class class-default

R3(config-pmap-c)#fair-queue

R3(config-pmap-c)#exit

R3(config-pmap)#exit

R3(config)#interface serial 4/1

R3(config-if)#service-policy output LLQ

R3(config-if)#EXIT

R3(config)#END

R3#show policy-map interface serial 4/1

Serial4/1

Service-policy output: LLQ

queue stats for all priority classes:

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 0/0

Class-map: VoIP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: access-group name VoIP

Priority: 190 kbps, burst bytes 4750, b/w exceed drops: 0

Class-map: ICMP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol icmp

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 0/0

bandwidth 120 kbps

Class-map: HTTP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol http

Priority: 10 kbps, burst bytes 1500, b/w exceed drops: 0

Class-map: FTP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol ftp

Priority: 15 kbps, burst bytes 1500, b/w exceed drops: 0

Class-map: class-default (match-any)

5 packets, 280 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: any

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0

(pkts output/bytes output) 5/280

Fair-queue: per-flow queue limit 16 packets

R3#show policy-map

Policy Map LLQ

Class VoIP-TRAFFIC

priority 190 (kbps)

Class ICMP-TRAFFIC

bandwidth 120 (kbps)

Class HTTP-TRAFFIC

priority 10 (kbps)

Class FTP-TRAFFIC

priority 15 (kbps)

Class class-default

fair-queue

R3#show run class-map

Building configuration…

Current configuration : 231 bytes

!

class-map match-all FTP-TRAFFIC

match protocol ftp

class-map match-all VoIP-TRAFFIC

match access-group name VoIP

class-map match-all ICMP-TRAFFIC

match protocol icmp

class-map match-all HTTP-TRAFFIC

match protocol http

end

R3#show run policy-map

Building configuration…

Current configuration : 197 bytes

!

policy-map LLQ

class VoIP-TRAFFIC

priority 190

class ICMP-TRAFFIC

bandwidth 120

class HTTP-TRAFFIC

priority 10

class FTP-TRAFFIC

priority 15

class class-default

fair-queue

!

end

R3#ping 10.1.1.1 source 30.1.1.1 repeat 11

Type escape sequence to abort.

Sending 11, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 30.1.1.1

!!!!!!!!!!!

Success rate is 100 percent (11/11), round-trip min/avg/max = 40/48/56 ms

R3#show policy-map interface serial 4/1

Serial4/1

Service-policy output: LLQ

queue stats for all priority classes:

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 0/0

Class-map: VoIP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: access-group name VoIP

Priority: 190 kbps, burst bytes 4750, b/w exceed drops: 0

Class-map: ICMP-TRAFFIC (match-all)

16 packets, 1664 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol icmp

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops) 0/0/0

(pkts output/bytes output) 16/1664

bandwidth 120 kbps

Class-map: HTTP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol http

Priority: 10 kbps, burst bytes 1500, b/w exceed drops: 0

Class-map: FTP-TRAFFIC (match-all)

0 packets, 0 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: protocol ftp

Priority: 15 kbps, burst bytes 1500, b/w exceed drops: 0

Class-map: class-default (match-any)

420 packets, 28159 bytes

5 minute offered rate 0000 bps, drop rate 0000 bps

Match: any

Queueing

queue limit 64 packets

(queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0

(pkts output/bytes output) 420/28159

Fair-queue: per-flow queue limit 16 packets

--

--

Edgar C Francis

I am a CCIE Technical Instructor/Network consultant. I am having experience ranging from operating and maintaining PCs and peripherals to network control