Hi,

as you are talking about UPF, I guess this is GTP traffic? Then probably all 
packets use the same UDP encap so you basically have a single 5-tuple, and the 
default NIC RSS distribute all packets to the same queue as a result.
In this case, your options are either to change the NIC RSS so that it looks 
inside GTP (I know Intel and Mellanox have options for example), or to use some 
sort of software RSS to redistribute accross workers after RX (check VPP 
soft-rss plugin or vnet handoff feature).

best
ben

________________________________________
From: [email protected] <[email protected]> on behalf of chandra reddy via 
lists.fd.io <[email protected]>
Sent: Wednesday, April 15, 2026 8:16
To: [email protected]
Subject: [vpp-dev] Multiple RX queues not working (test-case: UPG VPP UPF)

Hi Team,
I’ve enabled Rx multi-queue, but it looks like only one Rx queue is actually 
active, even though the Tx queues are distributing fine. We are testing with 1k 
subscribers, and I see that sessions are distributed across threads. Can you 
please check the below details and see if I am missing anything?
FYI
https://github.com/travelping/upg-vpp/issues/416

vpp# show interface rx-placement
Thread 1 (vpp_wk_0):
node dpdk-input:
n4 queue 0 (polling)
n3 queue 0 (polling)
n6 queue 0 (polling)
Thread 2 (vpp_wk_1):
n4 queue 1 (polling)
n3 queue 1 (polling)
n6 queue 1 (polling)
Thread 3 (vpp_wk_2):
n4 queue 2 (polling)
n3 queue 2 (polling)
n6 queue 2 (polling)
Thread 4 (vpp_wk_3):
n4 queue 3 (polling)
n3 queue 3 (polling)
n6 queue 3 (polling)
Thread 5 (vpp_wk_4):
n4 queue 4 (polling)
n3 queue 4 (polling)
n6 queue 4 (polling)
Thread 6 (vpp_wk_5):
n4 queue 5 (polling)
n3 queue 5 (polling)
n6 queue 5 (polling)
Thread 7 (vpp_wk_6):
n4 queue 6 (polling)
n3 queue 6 (polling)
n6 queue 6 (polling)

FYI, UPF sessions distributed across all threads.
#vppctl show upf session limit 10000 > /tmp/t.1

grep "thread=1" /tmp/t.1 | wc -l
126

grep "thread=2" /tmp/t.1 | wc -l
152

grep "thread=3" /tmp/t.1 | wc -l
148

grep "thread=4" /tmp/t.1 | wc -l
144

grep "thread=5" /tmp/t.1 | wc -l
158

grep "thread=6" /tmp/t.1 | wc -l
126

grep "thread=7" /tmp/t.1 | wc -l
146

vpp# show hardware-interfaces
Name Idx Link Hardware
local0 0 down local0
Link speed: unknown
local
n3 2 up n3
Link speed: unknown
RX Queues:
queue thread mode
0 vpp_wk_0 (1) polling
1 vpp_wk_1 (2) polling
2 vpp_wk_2 (3) polling
3 vpp_wk_3 (4) polling
4 vpp_wk_4 (5) polling
5 vpp_wk_5 (6) polling
6 vpp_wk_6 (7) polling
TX Queues:
TX Hash: [name: hash-eth-l34 priority: 50 description: Hash ethernet L34 
headers]
queue shared thread(s)
0 no 0
1 no 1
2 no 2
3 no 3
4 no 4
5 no 5
6 no 6
7 no 7
Ethernet address fa:16:3e:ad:64:7a
Red Hat Virtio
carrier up full duplex max-frame-size 9022
flags: admin-up maybe-multiseg int-supported
Devargs:
rx: queues 7 (max 8), desc 256 (min 32 max 32768 align 1)
tx: queues 8 (max 8), desc 256 (min 32 max 32768 align 1)
pci: device 1af4:1000 subsystem 1af4:0001 address 0000:00:05.00 numa 0
max rx packet len: 9728
promiscuous: unicast off all-multicast on
vlan offload: strip off filter off qinq off
rx offload avail: vlan-strip udp-cksum tcp-cksum tcp-lro vlan-filter
scatter
rx offload active: scatter
tx offload avail: vlan-insert multi-segs
tx offload active: multi-segs
rss avail: none
rss active: none
tx burst function: (not available)
rx burst function: (not available)

tx frames ok                                       15889
tx bytes ok                                      1365526
rx frames ok                                      127148
rx bytes ok                                     11176301
extended stats:
  rx_good_packets                                 127148
  tx_good_packets                                  15889
  rx_good_bytes                                 11176301
  tx_good_bytes                                  1365526
  rx_q2_packets                                      191
  rx_q2_bytes                                      15096
  **rx_q3_packets                                   126957**
  rx_q3_bytes                                   11161205
  tx_q0_packets                                        1
  tx_q0_bytes                                         42
  tx_q3_packets                                       14
  tx_q3_bytes                                        784
  tx_q4_packets                                    15874
  tx_q4_bytes                                    1364700
  rx_q2_good_packets                                 191
  rx_q2_good_bytes                                 15096
  rx_q2_multicast_packets                            162
  rx_q2_undersize_packets                             29
  rx_q2_size_65_127_packets                          162
  rx_q3_good_packets                              126957
  rx_q3_good_bytes                              11161205
  rx_q3_multicast_packets                         121640
  rx_q3_broadcast_packets                           5292
  rx_q3_undersize_packets                          21177
  rx_q3_size_65_127_packets                       105780
  tx_q0_good_packets                                   1
  tx_q0_good_bytes                                    42
  tx_q0_broadcast_packets                              1
  tx_q0_undersize_packets                              1
  tx_q3_good_packets                                  14
  tx_q3_good_bytes                                   784
  tx_q3_undersize_packets                             14
  tx_q4_good_packets                               15874
  tx_q4_good_bytes                               1364700
  tx_q4_broadcast_packets                              1
  tx_q4_undersize_packets                             15
  tx_q4_size_65_127_packets                        15859

cat /etc/vpp/startup.conf
unix {
nodaemon
log /tmp/vpp.log
full-coredump
cli-listen /run/vpp/cli.sock
gid vpp
exec /etc/vpp/init.conf
}

api-trace {
on
}

api-segment {
gid vpp
}

socksvr {
default
}

memory {
main-heap-size 4G
}

cpu {
main-core 0
corelist-workers 1-7
}

buffers {
default data-size 8092
page-size default-hugepage
}

dpdk {
dev 0000:00:05.0 {
name n3
num-rx-queues 7
rss-queues 1-7
}
dev 0000:00:04.0 {
name n4
num-rx-queues 7
}
dev 0000:00:06.0 {
name n6
num-rx-queues 7
rss-queues 1-7
}
uio-driver vfio-pci
no-tx-checksum-offload
}

plugins {
path /usr/lib/x86_64-linux-gnu/vpp_plugins
plugin default { disable }
plugin dpdk_plugin.so { enable }
plugin upf_plugin.so {enable}
plugin nat_plugin.so { enable }
plugin ping_plugin.so { enable }
}

--
Thanks,
Chandra
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#26960): https://lists.fd.io/g/vpp-dev/message/26960
Mute This Topic: https://lists.fd.io/mt/118836466/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to