Hi Florin,

Thanks for the clarification about the TCP changes b/w the 2 releases

I will use your patch, hopefully I will catch the issue about where the
drops are. I will try to debug further.
I will revert back if required.


Regards.

On Wed, Mar 16, 2022 at 11:12 AM Florin Coras <fcoras.li...@gmail.com>
wrote:

> Hi Vijay,
>
> On Mar 15, 2022, at 9:58 PM, Vijay Kumar <vjkumar2...@gmail.com> wrote:
>
> Hi florin,
>
> Thanks a lot for helping me out. I will try your patch and update you with
> the result.
>
>
> Thanks!
>
>
>
> A general observation
> ======================
> In my setup, I think the SYN pkt is dropped much before the SYNS_RCVD
> counter is incremented.
>
>
> That’s what I’d expect as well.
>
>
> I have seen a lot of changes b/w 20.05 and 21.06 code, like in the graph
> node tcp46_listen_inline() of VPP 20.05 the SYN  pkt trace function is
> called towards the end i.e. after calling tcp_send_synack() but in 21.06
> code, the tcp46_listen_trace_frame() is called at the very beginning
> of tcp46_listen_inline() graph node.
>
> I think moving the pkt trace macro to the end of the function is good
> (placing it close to the line that calls tcp_send_synack), otherwise it can
> mislead us and will not help debugging.
>
>
> Most of the changes were code refactoring/cleanup and buffer handling
> optimizations, not protocol related. TCP tracing, at least as it is now,
> doesn’t provide info about the errors hit, instead it reports the
> connections hit and the reporting of errors is done through node and
> session counters (see show session verbose 2). Obviously that didn’t work
> properly for the listen node.
>
> Regards,
> Florin
>
>
>
> On Wed, Mar 16, 2022 at 10:22 AM Florin Coras <fcoras.li...@gmail.com>
> wrote:
>
>> Hi Vijay,
>>
>> That’s probably because packets are hitting an actual error and it seems
>> the listen node is not reporting anything but syns received. Here’s a patch
>> that might help [1]. It might not cherry-pick cleanly on 21.06.
>>
>> Regards,
>> Florin
>>
>> [1] https://gerrit.fd.io/r/c/vpp/+/35654
>>
>> On Mar 15, 2022, at 7:54 PM, Vijay Kumar <vjkumar2...@gmail.com> wrote:
>>
>> Hi Florin,
>>
>> I have the output of show node counters (show errors) taken on both 20.05
>> and 21.06 vpp. In 21.06 I don't see any counters in tcp4-listen or
>> tcp4-output etc.
>>
>> Please let me know why SYN rcvd counter itself is not incremented but in
>> the earlier reply I already pasted the show trace ouput where we saw the
>> SYN pkt was landed on tcp4-litsen node.
>>
>> VPP 20.05
>> ===========
>> pp# show node counters
>>    Count                    Node                  Reason
>>          3               memif-input              not ip packet
>>      10259             an_ppe_wfectrl             wfectrl packets received
>>      10259             an_ppe_wfectrl             wfectrl replies sent
>>          1             an_ppe_wfectrl             wfectrl packet
>> processing failed
>>       8123             an_ppe_wfectrl             session stat request
>> received
>>          1             an_ppe_wfectrl             service construct
>> config request received
>>          1             an_ppe_wfectrl             service construct
>> config request success
>>          1             an_ppe_wfectrl             service config request
>> received
>>          1             an_ppe_wfectrl             service config request
>> success
>>       1686             an_ppe_wfectrl             dpi stats request
>> received
>>       1686             an_ppe_wfectrl             dpi stats request
>> success
>>         70             an_ppe_wfectrl             nat stats request
>> received
>>         70             an_ppe_wfectrl             nat stats request
>> success
>>         70             an_ppe_wfectrl             vpp stats request
>> received
>>         70             an_ppe_wfectrl             vpp stats request
>> success
>>          1             an_ppe_wfectrl             udp tunnel resource
>> block add request received
>>          1             an_ppe_wfectrl             udp tunnel resource
>> block add request success
>>          1             an_ppe_wfectrl             l3rm resource block
>> update request received
>>          1             an_ppe_wfectrl             l3rm resource block
>> update request success
>>          1             an_ppe_wfectrl             ue registration request
>> received
>>         17             an_ppe_wfectrl             ike msg received from
>> ikemgr
>>         17             an_ppe_wfectrl             ike msg send to network
>> success
>>          3             an_ppe_wfectrl             ipsec sa install msg
>> received from ikemgr
>>          3             an_ppe_wfectrl             ipsec sa install msg
>> processed successfully
>>          1          an_ppe_vppctrl_input          Success in insert in
>> ueidentifier
>>          1          an_ppe_vppctrl_input          Success  in insert in
>> uecontext
>>          2          an_ppe_vppctrl_input          Downlink message sent
>> to UE successfully
>>          1          an_ppe_vppctrl_input          TCP ESTABLISHMENT
>> message received
>>          1          an_ppe_vppctrl_input          UPLINK NAS message
>> received
>>          1          an_ppe_vppctrl_input          NAS TCP CLOSE message
>> received
>>          7           an_ppe_router_input          packets received in rtr
>>          7           an_ppe_router_input          packets dropped to
>> host. no tacptcp session found
>>         17          an-ppe-isakmp4-output         Total IKEV4 packets
>> dispatched to network
>>         17         an-ppe-isakmpmgr-input         packets processed by
>> isakmpmgr input plugin
>>         17         an-ppe-isakmpmgr-input         Received IKE packets
>>         17         an-ppe-isakmpmgr-input         Successfully sent ike
>> message to Session Manager
>>          5         an-ppe-isakmpmgr-input         Received ike exchange
>> AUTH packet
>>          4         an-ppe-isakmpmgr-input         Received ike exchange
>> CREATE CHILD SA packet
>>          1         an-ppe-isakmpmgr-input         Received ike exchange
>> SA INIT packet
>>          7         an-ppe-isakmpmgr-input         Received ike exchange
>> INFORMATIONAL packet
>>          5                arp-reply               ARP replies sent
>>          4              session-queue             Packets transmitted
>>         17             ip4-udp-lookup             No error
>>          1               tcp4-listen              SYNs received
>>          2            tcp4-rcv-process            Pure ACKs received
>>          1            tcp4-established            Packets pushed into rx
>> fifo
>>          2            tcp4-established            Pure ACKs received
>>          1            tcp4-established            FINs received
>>          5               tcp4-output              Packets sent
>>          7            esp4-decrypt-tun            ESP pkts received
>>          5            esp4-encrypt-tun            ESP pkts received
>>          5            esp4-encrypt-tun            total control pkts
>> received
>>          7            ipsec4-tun-input            good packets received
>>          2                ip4-local               unknown ip protocol
>>          5             ethernet-input             unknown vlan
>> vpp#
>> vpp#
>>
>>
>>
>>
>>
>> VPP 21.06 output
>> ===============
>> vpp#
>> vpp# show version
>> vpp v21.06.0-3~g2a4af2b5d-dirty built by an-vijay_kumar on 500aaad2d090
>> at 2022-03-15T01:16:27
>> vpp#
>> vpp#
>> vpp# show node counters
>>    Count                  Node
>>  Reason                         Severity
>>          1             null-node
>>  blackholed packets                     error
>>       6690           an_ppe_wfectrl                          wfectrl
>> packets received                  error
>>       6690           an_ppe_wfectrl                            wfectrl
>> replies sent                    error
>>          1           an_ppe_wfectrl                      wfectrl packet
>> processing failed              error
>>       5329           an_ppe_wfectrl                       session stat
>> request received                error
>>          1           an_ppe_wfectrl                 service construct
>> config request received          error
>>          1           an_ppe_wfectrl                  service construct
>> config request success          error
>>          1           an_ppe_wfectrl                      service config
>> request received               error
>>          1           an_ppe_wfectrl                       service config
>> request success               error
>>       1068           an_ppe_wfectrl                         dpi stats
>> request received                 error
>>       1068           an_ppe_wfectrl                         dpi stats
>> request success                  error
>>         44           an_ppe_wfectrl                         nat stats
>> request received                 error
>>         44           an_ppe_wfectrl                         nat stats
>> request success                  error
>>         44           an_ppe_wfectrl                         vpp stats
>> request received                 error
>>         44           an_ppe_wfectrl                         vpp stats
>> request success                  error
>>          1           an_ppe_wfectrl               udp tunnel resource
>> block add request received       error
>>          1           an_ppe_wfectrl               udp tunnel resource
>> block add request success        error
>>          1           an_ppe_wfectrl                l3rm resource block
>> update request received         error
>>          1           an_ppe_wfectrl                 l3rm resource block
>> update request success         error
>>          1           an_ppe_wfectrl                      ue registration
>> request received              error
>>          1           an_ppe_wfectrl                     ue deregistration
>> request received             error
>>         14           an_ppe_wfectrl                        ike msg
>> received from ikemgr                error
>>         14           an_ppe_wfectrl                      ike msg send to
>> network success               error
>>          3           an_ppe_wfectrl                 ipsec sa install msg
>> received from ikemgr          error
>>          3           an_ppe_wfectrl                  ipsec sa delete msg
>> received from ikemgr          error
>>          3           an_ppe_wfectrl                ipsec sa install msg
>> processed successfully         error
>>          3           an_ppe_wfectrl                 ipsec sa delete msg
>> processed successfully         error
>>          1        an_ppe_vppctrl_input                  Success in delete
>>  in ueidentifier             error
>>          1        an_ppe_vppctrl_input                  Success in insert
>> in ueidentifier              error
>>          1        an_ppe_vppctrl_input                   Success  in
>> insert in uecontext               error
>>          1        an_ppe_vppctrl_input                   Success  in
>> delete in uecontext               error
>>          5        an_ppe_router_input                        packets
>> received in rtr                   error
>>          5        an_ppe_router_input           packets dropped to host.
>> no tacptcp session found      error
>>         14       an-ppe-isakmp4-output              Total IKEV4 packets
>> dispatched to network          error
>>         14       an-ppe-isakmpmgr-input            packets processed by
>> isakmpmgr input plugin         error
>>         14       an-ppe-isakmpmgr-input                        Received
>> IKE packets                    error
>>         14       an-ppe-isakmpmgr-input          Successfully sent ike
>> message to Session Manager      error
>>          5       an-ppe-isakmpmgr-input                 Received ike
>> exchange AUTH packet              error
>>          4       an-ppe-isakmpmgr-input            Received ike exchange
>> CREATE CHILD SA packet        error
>>          1       an-ppe-isakmpmgr-input                Received ike
>> exchange SA INIT packet            error
>>          4       an-ppe-isakmpmgr-input             Received ike exchange
>> INFORMATIONAL packet         error
>>          3             arp-reply                                 ARP
>> replies sent                      error
>>         14           ip4-udp-lookup                                  No
>> error                          error
>>          5          esp4-decrypt-tun                            ESP pkts
>> received                      error
>>          5          ipsec4-tun-input                          good
>> packets received                    error
>>          1             ip4-input                                   ip4
>> ttl <= 1                        error
>>          1           ip4-icmp-error                      hop limit
>> exceeded response sent              error
>>      27628           ethernet-input
>>  unknown vlan                        error
>> vpp#
>> vpp#
>>
>>
>>
>>
>> On Wed, Mar 16, 2022 at 6:52 AM Florin Coras <fcoras.li...@gmail.com>
>> wrote:
>>
>>> Hi Vijay,
>>>
>>> You won’t see the syn/syn-acks in traces because of the way they are
>>> generated. Nonetheless, you can verify that the syns were received with
>>> “show error” and check that the syn-acks were actually generated with a
>>> pcap trace rxtx <output interface>
>>>
>>> Previously tracing worked because buffers were re-used and incoming
>>> packets were directly sent to output. More recently we’ve started
>>> dispatching syn-acks through the session layer in order to minimize size of
>>> tx bursts per dispatch.
>>>
>>> Regards,
>>> Florin
>>>
>>> On Mar 15, 2022, at 6:08 PM, Vijay Kumar <vjkumar2...@gmail.com> wrote:
>>>
>>> Hi Florin,
>>>
>>> Thanks for the quick response.
>>>
>>> It means it is expected to see the SYN pkts getting dropped after it is
>>> terminated but I was not able to see any SYN-ACK going out of VPP.
>>>
>>> In both, "show trace" cmd output and also the pcap taken at dspatch
>>> graph node level, I was not able to see the SYN-ACK going out.  The route
>>> to the SYN-ACK destination (which is the original source that started SYN)
>>> is also present in the ip fib output. The configuration is the same that
>>> was working fine for me in vp 20.05.
>>>
>>> Is there anything that I can look at for the SYN-ACK not sending issue?
>>>
>>>
>>>
>>> On Wed, 16 Mar 2022, 00:40 Florin Coras, <fcoras.li...@gmail.com> wrote:
>>>
>>>> Hi Vijay,
>>>>
>>>> I see an_ppe_router_input forwards syns to tcp-input and those packets
>>>> are delivered to tcp-listen, i.e., you’ve created a listener that’s matched
>>>> by the incoming traffic.
>>>>
>>>> The thing to keep in mind is that tcp terminates incoming flows and it
>>>> does not reuse buffers. That is, the syn hits the listen node and a syn-ack
>>>> is programmed for this new connection that still needs to complete the
>>>> handshake. The original syn packet is discarded and therefore you see it as
>>>> a drop.
>>>>
>>>> Regards,
>>>> Florin
>>>>
>>>> On Mar 15, 2022, at 3:50 AM, Vijay Kumar <vjkumar2...@gmail.com> wrote:
>>>>
>>>> The is the output of show trace and show interface
>>>> ============================================
>>>>
>>>> Packet 36
>>>>
>>>> 00:03:26:875694: dpdk-input
>>>>   VirtualFuncEthernet0/7/0 rx queue 0
>>>>   buffer 0x4c1b21: current data 0, length 138, buffer-pool 0, ref-count
>>>> 1, totlen-nifb 0, trace handle 0x1000023
>>>>                    ext-hdr-valid
>>>>                    l4-cksum-computed l4-cksum-correct
>>>>   PKT MBUF: port 0, nb_segs 1, pkt_len 138
>>>>     buf_len 2176, data_len 138, ol_flags 0x182, data_off 128, phys_addr
>>>> 0xc266c8c0
>>>>     packet_type 0x691 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
>>>>     rss 0xde0c21da fdir.hi 0x0 fdir.lo 0xde0c21da
>>>>     Packet Offload Flags
>>>>       PKT_RX_RSS_HASH (0x0002) RX packet with RSS hash result
>>>>       PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
>>>>       PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
>>>>     Packet Types
>>>>       RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
>>>>       RTE_PTYPE_L3_IPV4_EXT_UNKNOWN (0x0090) IPv4 packet with or
>>>> without extension headers
>>>>       RTE_PTYPE_L4_NONFRAG (0x0600) Non-fragmented IP packet
>>>>   IP4: fa:16:3e:4b:6b:42 -> fa:16:3e:97:04:19 802.1q vlan 1556
>>>>   IPSEC_ESP: 20.20.99.215 -> 80.80.80.80
>>>>     tos 0x00, ttl 64, length 120, checksum 0x21c9 dscp CS0 ecn NON_ECN
>>>>     fragment id 0x0000, flags DONT_FRAGMENT
>>>> 00:03:26:875702: ethernet-input
>>>>   frame: flags 0x3, hw-if-index 3, sw-if-index 3
>>>>   IP4: fa:16:3e:4b:6b:42 -> fa:16:3e:97:04:19 802.1q vlan 1556
>>>> 00:03:26:875708: ip4-input
>>>>   IPSEC_ESP: 20.20.99.215 -> 80.80.80.80
>>>>     tos 0x00, ttl 64, length 120, checksum 0x21c9 dscp CS0 ecn NON_ECN
>>>>     fragment id 0x0000, flags DONT_FRAGMENT
>>>> 00:03:26:875714: ip4-lookup
>>>>   fib 2 dpo-idx 27 flow hash: 0x00000000
>>>>   IPSEC_ESP: 20.20.99.215 -> 80.80.80.80
>>>>     tos 0x00, ttl 64, length 120, checksum 0x21c9 dscp CS0 ecn NON_ECN
>>>>     fragment id 0x0000, flags DONT_FRAGMENT
>>>> 00:03:26:875715: ip4-local
>>>>     IPSEC_ESP: 20.20.99.215 -> 80.80.80.80
>>>>       tos 0x00, ttl 64, length 120, checksum 0x21c9 dscp CS0 ecn NON_ECN
>>>>       fragment id 0x0000, flags DONT_FRAGMENT
>>>> 00:03:26:875717: ipsec4-tun-input
>>>>   IPSec: remote:20.20.99.215 spi:4213 (0x00001075) sa:1 tun:0 seq 1 sa
>>>> -2029505104
>>>> 00:03:26:875719: esp4-decrypt-tun
>>>>   esp: crypto aes-cbc-256 integrity sha1-96 pkt-seq 1 sa-seq 1
>>>> sa-seq-hi 0
>>>> 00:03:26:875801: ip4-input-no-checksum
>>>>   TCP: 44.44.44.44 -> 30.30.30.30
>>>>     tos 0x00, ttl 64, length 60, checksum 0x3cfa dscp CS0 ecn NON_ECN
>>>>     fragment id 0x692e, flags DONT_FRAGMENT
>>>>   TCP: 45723 -> 1234
>>>>     seq. 0x119d35d0 ack 0x00000000
>>>>     flags 0x02 SYN, tcp header: 40 bytes
>>>>     window 64240, checksum 0xd6be
>>>> 00:03:26:875803: ip4-lookup
>>>>   fib 2 dpo-idx 25 flow hash: 0x00000000
>>>>   TCP: 44.44.44.44 -> 30.30.30.30
>>>>     tos 0x00, ttl 64, length 60, checksum 0x3cfa dscp CS0 ecn NON_ECN
>>>>     fragment id 0x692e, flags DONT_FRAGMENT
>>>>   TCP: 45723 -> 1234
>>>>     seq. 0x119d35d0 ack 0x00000000
>>>>     flags 0x02 SYN, tcp header: 40 bytes
>>>>     window 64240, checksum 0xd6be
>>>> 00:03:26:875803: ip4-local
>>>>     TCP: 44.44.44.44 -> 30.30.30.30
>>>>       tos 0x00, ttl 64, length 60, checksum 0x3cfa dscp CS0 ecn NON_ECN
>>>>       fragment id 0x692e, flags DONT_FRAGMENT
>>>>     TCP: 45723 -> 1234
>>>>       seq. 0x119d35d0 ack 0x00000000
>>>>       flags 0x02 SYN, tcp header: 40 bytes
>>>>       window 64240, checksum 0xd6be
>>>> 00:03:26:875805: an_ppe_router_input
>>>>   AN_PPE_ROUTER_INPUT: sw_if_index 1, next index 3
>>>>
>>>> 00:03:26:875819: tcp4-input
>>>>   [0:0][T] :::0->:::0 state CLOSED
>>>>   TCP: 45723 -> 1234
>>>>     seq. 0x119d35d0 ack 0x00000000
>>>>     flags 0x02 SYN, tcp header: 40 bytes
>>>>     window 64240, checksum 0xd6be
>>>> 00:03:26:875826: tcp4-listen
>>>>   1234 -> 45723 (LISTEN)
>>>>
>>>>
>>>> Interface details
>>>> ====================
>>>> vpp# show interface
>>>>               Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
>>>>   Counter          Count
>>>> VirtualFuncEthernet0/7/0          3      up          1500/0/0/0     rx
>>>> packets                  3922
>>>>                                                                     rx
>>>> bytes                  239610
>>>>                                                                     tx
>>>> packets                    17
>>>>                                                                     tx
>>>> bytes                    6704
>>>>
>>>> drops                       3914
>>>> VirtualFuncEthernet0/7/0.1557     13     up          1500/0/0/0
>>>> VirtualFuncEthernet0/7/0.1556     14     up          1500/0/0/0     rx
>>>> packets                    22
>>>>                                                                     rx
>>>> bytes                    5130
>>>>                                                                     tx
>>>> packets                    17
>>>>                                                                     tx
>>>> bytes                    6704
>>>>
>>>> drops                         14
>>>>                                                                     ip4
>>>>                           19
>>>> VirtualFuncEthernet0/8/0          4     down         9000/0/0/0
>>>> gre1                              2      up          9000/0/0/0
>>>> ipip0                             1      up          9000/0/0/0     rx
>>>> packets                     5
>>>>                                                                     rx
>>>> bytes                     500
>>>>                                                                     ip4
>>>>                            5
>>>> local0                            0     down          0/0/0/0
>>>> loop2                             8      up          9000/0/0/0
>>>> loop3                             9      up          9000/0/0/0
>>>> loop4                             10     up          9000/0/0/0
>>>> loop5                             11     up          9000/0/0/0
>>>> loop6                             12     up          9000/0/0/0
>>>> memif0/0                          5      up         0/65535/0/0     rx
>>>> packets                  1036
>>>>                                                                     rx
>>>> bytes                67766832
>>>>                                                                     tx
>>>> packets                  1049
>>>>                                                                     tx
>>>> bytes                67822842
>>>>
>>>> drops                          2
>>>>                                                                     ip4
>>>>                         1036
>>>> memif128/0                        6      up         0/65535/0/0
>>>> memif192/0                        7      up         0/65535/0/0
>>>> memif210/0                        15     up         0/65535/0/0
>>>> memif210/1                        16     up         0/65535/0/0
>>>> vpp#
>>>> vpp#
>>>>
>>>> On Tue, Mar 15, 2022 at 2:32 PM Vijay Kumar via lists.fd.io
>>>> <vjkumar2003=gmail....@lists.fd.io> wrote:
>>>>
>>>>> Hi experts,
>>>>>
>>>>> I recently integrated vpp stack 21.06 and am running my NAS TCP
>>>>> protocol test cases. The pcap dispatch trace that I captured shows  the 
>>>>> TCP
>>>>> SYN packets are coming to tcp-input() and then to tcp-listen() but from
>>>>> here pkts are dropped instead of going to tcp-output() graph nodes for
>>>>> sending the SYN-ACK
>>>>>
>>>>> NOTE
>>>>> =========
>>>>> The session layer is enabled and the TCP listen IP/port is also
>>>>> showing in the session verbose command.
>>>>>
>>>>> The same test case used to work fine in the VPP 20.05. Am I missing
>>>>> anything?
>>>>> Let me know if there is anything I need to look at.
>>>>>
>>>>> vpp# show session verbose
>>>>> Connection                                                  State
>>>>>      Rx-f      Tx-f
>>>>> [0:0][T] 30.30.30.30:1234->0.0.0.0:0                        LISTEN
>>>>>       0         0
>>>>> Thread 0: active sessions 1
>>>>> Thread 1: no sessions
>>>>>
>>>>>
>>>>>
>>>>>
>>>> 
>>>>
>>>>
>>>>
>>>
>>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#21036): https://lists.fd.io/g/vpp-dev/message/21036
Mute This Topic: https://lists.fd.io/mt/89793823/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