Hi,

Why do you receive those packets on different workers? I would expect all the 
IKE packets to use the same source/dest IP and ports hence arriving in the same 
worker. Is it not the case?

Best
ben

> -----Original Message-----
> From: zhangguangm...@baicells.com <zhangguangm...@baicells.com>
> Sent: mardi 2 novembre 2021 10:15
> To: Damjan Marion (damarion) <damar...@cisco.com>; Filip Tehlar -X
> (ftehlar - PANTHEON TECH SRO at Cisco) <fteh...@cisco.com>; nranns
> <nra...@cisco.com>; Benoit Ganne (bganne) <bga...@cisco.com>
> Subject: Is there a bug in IKEv2 when enable multithread ?
> 
> 
> 
> 
> ________________________________
> 
> zhangguangm...@baicells.com
> 
> 
>       From: zhangguangm...@baicells.com
> <mailto:zhangguangm...@baicells.com>
>       Date: 2021-11-02 17:01
>       To: vpp-dev <mailto:vpp-dev@lists.fd.io>
>       CC: ftehlar <mailto:fteh...@cisco.com>
>       Subject: Is there a bug in IKEv2 when enable multithread ?
>       Hi,
> 
>            When I test IKEv2,   i found when enable multithread ,  the ike
> sa will be detelte quickly after IKE negotiation complete.
>       The root casue is the inti and auth packet handle by one worker
> thread ,but the  informational packet was handled by the other thread.
>       RSS is enable.
> 
> 
>       The follow is my configuration
> 
> 
> 
>       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 1
> 
> 
>       ## Set logical CPU core(s) where worker threads are running
>       # corelist-workers 2-3,18-19
>       corelist-workers 2-3,4-5
> 
> 
>       ## 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 4
> 
> 
>       ## 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 2
> 
> 
>       ## 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
>       }
> 
> 
> 
> 
>       dpdk {
>       ## Change default settings for all interfaces
>       dev default {
>       ## Number of receive queues, enables RSS
>       ## Default is 1
>       num-rx-queues 4
> 
> 
>       ## Number of transmit queues, Default is equal
>       ## to number of worker threads or 1 if no workers treads
>              num-tx-queues 4
> 
> 
>       ## 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 512
>       # num-tx-desc 512
> 
> 
>       ## VLAN strip offload mode for interface
>       ## Default is off
>       # vlan-strip-offload on
> 
> 
>       ## TCP Segment Offload
>       ## Default is off
>       ## To enable TSO, 'enable-tcp-udp-checksum' must be set
>       # tso on
> 
> 
>       ## Devargs
>                       ## device specific init args
>                       ## Default is NULL
>       # devargs safe-mode-support=1,pipeline-mode-support=1
> 
>                       #rss 3
>       ## rss-queues
>       ## set valid rss steering queues
>       # rss-queues 0,2,5-7
>       #rss-queues 0,1
>       }
> 
> 
>       ## Whitelist specific interface by specifying PCI address
>       # dev 0000:02:00.0
> 
>               dev 0000:00:14.0
>               dev 0000:00:15.0
>               dev 0000:00:10.0
>               dev 0000:00:11.0
>               #vdev crypto_aesni_mb0,socket_id=1
>               #vdev crypto_aesni_mb1,socket_id=1
> 
>       ## 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
>               #uio-driver igb_uio
> 
> 
>       ## 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
> 
> 
>       ## Enable UDP / TCP TX checksum offload
>       ## This is the reversed option of 'no-tx-checksum-offload'
>       # enable-tcp-udp-checksum
> 
> 
>       ## Enable/Disable AVX-512 vPMDs
>       # max-simd-bitwidth <256|512>
>        }
> 
>       DBGvpp# show threads
>       ID     Name                Type        LWP     Sched Policy
> (Priority)  lcore  Core   Socket State
>       0      vpp_main                        2306    other (0)
> 1      1      0
>       1      vpp_wk_0            workers     2308    other (0)
> 2      2      0
>       2      vpp_wk_1            workers     2309    other (0)
> 3      3      0
>       3      vpp_wk_2            workers     2310    other (0)
> 4      4      0
>       4      vpp_wk_3            workers     2311    other (0)
> 5      5      0
>       DBGvpp#
>       DBGvpp# show hardware-interfaces
>                     Name                Idx   Link  Hardware
>       0: format_dpdk_device:598: rte_eth_dev_rss_hash_conf_get returned -
> 95
>       GigabitEthernet0/14/0              1     up   GigabitEthernet0/14/0
>         Link speed: 4294 Gbps
>         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
>         Ethernet address 5a:9b:03:80:93:cf
>         Red Hat Virtio
>           carrier up full duplex mtu 9206
>           flags: admin-up pmd maybe-multiseg int-supported
>           Devargs:
>           rx: queues 4 (max 4), desc 256 (min 0 max 65535 align 1)
>           tx: queues 4 (max 4), desc 256 (min 0 max 65535 align 1)
>           pci: device 1af4:1000 subsystem 1af4:0001 address 0000:00:14.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
>                              jumbo-frame scatter
>           rx offload active: jumbo-frame scatter
>           tx offload avail:  vlan-insert udp-cksum tcp-cksum tcp-tso
> multi-segs
>           tx offload active: multi-segs
>           rss avail:         none
>           rss active:        none
>           tx burst function: virtio_xmit_pkts
>           rx burst function: virtio_recv_mergeable_pkts
> 
>       DBGvpp# show ikev2 profile
>       profile profile1
>         auth-method shared-key-mic auth data foobarblah
>         local id-type ip4-addr data 10.10.10.15
>         remote id-type ip4-addr data 10.10.10.2
>         local traffic-selector addr 10.10.20.0 - 10.10.20.255 port 0 -
> 65535 protocol 0
>         remote traffic-selector addr 172.16.2.0 - 172.16.2.255 port 0 -
> 65535 protocol 0
>         lifetime 0 jitter 0 handover 0 maxdata 0
> 
>       DBGvpp# show interface addr
>       GigabitEthernet0/14/0 (up):
>         L3 10.10.10.15/24
>       GigabitEthernet0/15/0 (up):
>         L3 10.10.20.15/24
>       local0 (dn):
> 
> 
> 
>       I  also config a flow with rss
> 
>       DBGvpp# show flow entry
>       flow-index 0 type ipv4 active 0
>         match: src_addr any, dst_addr any, protocol UDP
>         action: rss
>           rss function default, rss types ipv4-udp
> 
>       Is it a bug or my wrong configure ?
> 
>       Thanks
>       guangming
> 
> ________________________________
> 
> 
>       zhangguangm...@baicells.com

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#20420): https://lists.fd.io/g/vpp-dev/message/20420
Mute This Topic: https://lists.fd.io/mt/86821392/21656
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