I tested single IPv6 route performance with two 100G NICs.
The test tool is Trex which can send packets 100Gb/s easily.
But VPP(1908.1) has a lot of tx-errors while forwarding the packets.

20 threads, 20 rx queues, 20 tx queues,  60G Hugepages.
When T-rex send 100Gb/s, VPP droped nearly 10% packets.

How can I get rid of the tx-error? Is it possible to improve the performance?
When I set 30 workers or 10 workers with same tx/rx queues, the tx-error is not 
changed.

Information

Trex's result:
Send 8.2Mpps, Recv 7.33Mpps

Global Statistitcs

connection   : localhost, Port 4501                  total_tx_L2  : 98.71 Gb/sec
version      : STL @ v2.81                           total_tx_L1  : 100.02 
Gb/sec
cpu_util.    : 5.67% @ 14 cores (14 per dual port)    total_rx     : 88.25 
Gb/sec
rx_cpu_util. : 0.0% / 0 pkt/sec                      total_pps    : 8.2 Mpkt/sec
async_util.  : 0.16% / 1.32 KB/sec                   drop_rate    : 10.46 Gb/sec
total_cps.   : 0 cps/sec                             queue_full   : 0 pkts

Port Statistics

port    |         0         |         1         |       total
-----------+-------------------+-------------------+------------------
owner      |              root |              root |
link       |                UP |                UP |
state      |      TRANSMITTING |              IDLE |
speed      |          100 Gb/s |          100 Gb/s |
CPU util.  |             5.67% |              0.0% |
--         |                   |                   |
Tx bps L2  |        98.71 Gbps |             0 bps |        98.71 Gbps
Tx bps L1  |       100.02 Gbps |             0 bps |       100.02 Gbps
Tx pps     |          8.2 Mpps |             0 pps |          8.2 Mpps
Line Util. |          100.02 % |               0 % |
---        |                   |                   |
Rx bps     |             0 bps |        88.25 Gbps |        88.25 Gbps
Rx pps     |             0 pps |         7.33 Mpps |         7.33 Mpps
----       |                   |                   |
opackets   |         223589643 |                 0 |         223589643
ipackets   |                 2 |         199741988 |         199741990
obytes     |      336278835072 |                 0 |      336278835072
ibytes     |               180 |      300411956124 |      300411956304
tx-pkts    |      223.59 Mpkts |            0 pkts |      223.59 Mpkts
rx-pkts    |            2 pkts |      199.74 Mpkts |      199.74 Mpkts
tx-bytes   |         336.28 GB |               0 B |         336.28 GB
rx-bytes   |             180 B |         300.41 GB |         30

vpp# show int
Name               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter          
Count
HundredGigabitEthernet82/0/0      1      up          9000/0/0/0     rx packets  
          5038457978
rx bytes           7557686967000
tx packets                     8
tx bytes                     752
ip6                   5038458089
rx-miss                    29522
HundredGigabitEthernet83/0/0      2      up          9000/0/0/0     tx packets  
          5038458485
tx bytes           7557687717666
tx-error               526772148
local0                            0     down          0/0/0/0

vpp# show err
Count                    Node                  Reason
14             ip6-icmp-input             router advertisements sent
32038454     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32036988     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32038478     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32027733     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32038748     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32042218     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32038604     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32029906     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32038974     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32041972     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32038119     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
32032684     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21625413     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21627658     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21627926     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21610610     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21618128     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21614224     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21615517     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)
21617616     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx 
failure)

vpp# show int addr
HundredGigabitEthernet82/0/0 (up):
L3 2d01:1111::1/64
HundredGigabitEthernet83/0/0 (up):
L3 2d02:1111::1/64
local0 (dn):
vpp#
vpp# show ip6 fib
ipv6-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ] 
locks:[src:plugin-hi:1, src:recursive-resolution:1, src:default-route:1, ]
::/0
unicast-ip6-chain
[@0]: dpo-load-balance: [proto:ip6 index:6 buckets:1 uRPF:15 
to:[6015241112:8938648292432]]
[0] [@19]: dpo-load-balance: [proto:ip6 index:19 buckets:1 uRPF:14 to:[0:0] 
via:[6015241112:8938648292432]]
[0] [@5]: ipv6 via 2d02:1111::100 HundredGigabitEthernet83/0/0: mtu:9000 
0c42a150d9860c42a150d98286dd

Hugepages:
cat /proc/meminfo | grep Hu
AnonHugePages:    114688 kB
HugePages_Total:      60
HugePages_Free:       54
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:    1048576 kB

startup.conf
unix {
nodaemon
log /var/log/vpp/vpp.log
full-coredump
cli-listen /run/vpp/cli.sock
gid vpp
}

api-trace {
## This stanza controls binary API tracing. Unless there is a very strong 
reason,
## please leave this feature enabled.
on
## Additional parameters:
##
## To set the number of binary API trace records in the circular buffer, 
configure nitems
##
## nitems <nnn>
##
## To save the api message table decode tables, configure a filename. Results 
in /tmp/<filename>
## Very handy for understanding api message changes between versions, 
identifying missing
## plugins, and so forth.
##
## save-api-table <filename>
}

api-segment {
gid vpp
}

socksvr {
default
}

cpu {
## In the VPP there is one main thread and optionally the user can create 
worker(s)
## The main thread and worker thread(s) can be pinned to CPU core(s) manually 
or automatically

## Manual pinning of thread(s) to CPU core(s)

## Set logical CPU core where main thread runs, if main core is not set
## VPP will use core 1 if available
#main-core 3

## Set logical CPU core(s) where worker threads are running
#corelist-workers 5,7,9,11,13,15,17,19,21,23

## Automatic pinning of thread(s) to CPU core(s)

## Sets number of CPU core(s) to be skipped (1 ... N-1)
## Skipped CPU core(s) are not used for pinning main thread and working 
thread(s).
## The main thread is automatically pinned to the first available CPU core and 
worker(s)
## are pinned to next free CPU core(s) after core assigned to main thread
skip-cores 2

## Specify a number of workers to be created
## Workers are pinned to N consecutive CPU cores while skipping "skip-cores" 
CPU core(s)
## and main thread's CPU core
workers 20

## Set scheduling policy and priority of main and worker threads

## Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
## idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
# scheduler-policy fifo

## Scheduling priority is used only for "real-time policies (fifo and rr),
## and has to be in the range of priorities supported for a particular policy
# scheduler-priority 50
}

buffers {
## Increase number of buffers allocated, needed only in scenarios with
## large number of interfaces and worker threads. Value is per numa node.
## Default is 16384 (8192 if running unpriviledged)
buffers-per-numa 512000

## Size of buffer data area
## Default is 2048
# default data-size 2048
}

dpdk {
## Change default settings for all interfaces
dev default {
## Number of receive queues, enables RSS
## Default is 1
num-rx-queues 20

## Number of transmit queues, Default is equal
## to number of worker threads or 1 if no workers treads
num-tx-queues 20

## Number of descriptors in transmit and receive rings
## increasing or reducing number can impact performance
## Default is 1024 for both rx and tx
#num-rx-desc 2048
#num-tx-desc 2048

## VLAN strip offload mode for interface
## Default is off
# vlan-strip-offload on
}

## Whitelist specific interface by specifying PCI address
dev 0000:82:00.0
dev 0000:83:00.0
#vdev 
eth_bond0,mode=2,slave=0000:02:00.0,slave=0000:03:00.0,slave=0000:81:00.0,xmit_policy=l34
#vdev 
eth_bond1,mode=2,slave=0000:02:00.1,slave=0000:03:00.1,slave=0000:81:00.1,xmit_policy=l34

## Blacklist specific device type by specifying PCI vendor:device
## Whitelist entries take precedence
# blacklist 8086:10fb

## Set interface name
# dev 0000:02:00.1 {
#       name eth0
# }

## Whitelist specific interface by specifying PCI address and in
## addition specify custom parameters for this interface
# dev 0000:02:00.1 {
#       num-rx-queues 2
# }

## Change UIO driver used by VPP, Options are: igb_uio, vfio-pci,
## uio_pci_generic or auto (default)
# uio-driver vfio-pci

## Disable multi-segment buffers, improves performance but
## disables Jumbo MTU support
# no-multi-seg

## Change hugepages allocation per-socket, needed only if there is need for
## larger number of mbufs. Default is 256M on each detected CPU socket
socket-mem 2048,2048

## Disables UDP / TCP TX checksum offload. Typically needed for use
## faster vector PMDs (together with no-multi-seg)
# no-tx-checksum-offload
}

NICs:

Mellanox ConnectX-5 MCX555A-ECAT single port. x 2

[root@localhost v2.81]# ./dpdk_nic_bind.py  -s

Network devices using DPDK-compatible driver
============================================
0000:82:00.0 'MT27800 Family [ConnectX-5]' drv=mlx5_core unused=uio_pci_generic
0000:83:00.0 'MT27800 Family [ConnectX-5]' drv=mlx5_core unused=uio_pci_generic
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#16929): https://lists.fd.io/g/vpp-dev/message/16929
Mute This Topic: https://lists.fd.io/mt/75416173/21656
Mute #vpp: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vpp
Mute #dpdk: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/dpdk
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to