Hi Florin, Thanks! for the reply. I realized the issue with the non-connected case. For receiving datagrams, I was using recvfrom() with DONOT_WAIT flag because of that vppcom_session_recvfrom() api was failing. It expects either 0 or MSG_PEEK flag. if (flags == 0) rv = vppcom_session_read (session_handle, buffer, buflen); else if (flags & MSG_PEEK) 0x2 rv = vppcom_session_peek (session_handle, buffer, buflen); else { VDBG (0, "Unsupport flags for recvfrom %d", flags); return VPPCOM_EAFNOSUPPORT; }
I changed the flag to 0 in recvfrom() , after that UDP rx is working fine but only for IPv4. I am facing a different issue with IPv6/UDP receiver. I am getting "no listener for dst port" error. Please let me know if I am doing something wrong. Here are the traces : - [root@orc01 testcode]# VCL_DEBUG=2 LDP_DEBUG=2 LD_PRELOAD=/opt/vpp/build-root/install-vpp-native/vpp/lib/libvcl_ldpreload.so VCL_CONFIG=/etc/vpp/vcl.cfg ./udp6_rx VCL<1164>: configured VCL debug level (2) from VCL_DEBUG! VCL<1164>: allocated VCL heap = 0x7ff877439010, size 268435456 (0x10000000) VCL<1164>: configured rx_fifo_size 4000000 (0x3d0900) VCL<1164>: configured tx_fifo_size 4000000 (0x3d0900) VCL<1164>: configured app_scope_local (1) VCL<1164>: configured app_scope_global (1) VCL<1164>: configured api-socket-name (/tmp/vpp-api.sock) VCL<1164>: completed parsing vppcom config! vppcom_connect_to_vpp:549: vcl<1164:0>: app (ldp-1164-app) is connected to VPP! vppcom_app_create:1067: vcl<1164:0>: sending session enable vppcom_app_create:1075: vcl<1164:0>: sending app attach vppcom_app_create:1084: vcl<1164:0>: app_name 'ldp-1164-app', my_client_index 0 (0x0) ldp_init:209: ldp<1164>: configured LDP debug level (2) from env var LDP_DEBUG! ldp_init:282: ldp<1164>: LDP initialization: done! ldp_constructor:2490: LDP<1164>: LDP constructor: done! socket:974: ldp<1164>: calling vls_create: proto 1 (UDP), is_nonblocking 0 vppcom_session_create:1142: vcl<1164:0>: created session 0 bind:1086: ldp<1164>: fd 32: calling vls_bind: vlsh 0, addr 0x7fff9a93efe0, len 28 vppcom_session_bind:1280: vcl<1164:0>: session 0 handle 0: binding to local IPv6 address :: port 8092, proto UDP vppcom_session_listen:1312: vcl<1164:0>: session 0: sending vpp listen request... vcl_session_bound_handler:610: vcl<1164:0>: session 0 [0x1]: listen succeeded! bind:1102: ldp<1164>: fd 32: returning 0 vpp# sh app server Connection App Wrk [0:0][CT:U] :::8092->:::0 ldp-1164-app[shm] 0 [#0][U] :::8092->:::0 ldp-1164-app[shm] 0 vpp# sh err Count Node Reason 7 dpdk-input no error 2606 ip6-udp-lookup no listener for dst port 8 arp-reply ARP replies sent 1 arp-disabled ARP Disabled on this interface 13 ip6-glean neighbor solicitations sent 2606 ip6-input valid ip6 packets 4 ip6-local-hop-by-hop Unknown protocol ip6 local h-b-h packets dropped 2606 ip6-icmp-error destination unreachable response sent 40 ip6-icmp-input valid packets 1 ip6-icmp-input neighbor solicitations from source not on link 12 ip6-icmp-input neighbor solicitations for unknown targets 1 ip6-icmp-input neighbor advertisements sent 1 ip6-icmp-input neighbor advertisements received 40 ip6-icmp-input router advertisements sent 40 ip6-icmp-input router advertisements received 1 ip4-icmp-input echo replies sent 89 lldp-input lldp packets received on disabled interfaces 1328 llc-input unknown llc ssap/dsap vpp# vpp# show trace ------------------- Start of thread 0 vpp_main ------------------- Packet 1 00:23:39:401354: dpdk-input HundredGigabitEthernet12/0/0 rx queue 0 buffer 0x8894e: current data 0, length 1516, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x0 ext-hdr-valid l4-cksum-computed l4-cksum-correct PKT MBUF: port 0, nb_segs 1, pkt_len 1516 buf_len 2176, data_len 1516, ol_flags 0x180, data_off 128, phys_addr 0x75025400 packet_type 0x2e1 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 Packet Offload Flags 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_IPV6_EXT_UNKNOWN (0x00e0) IPv6 packet with or without extension headers RTE_PTYPE_L4_UDP (0x0200) UDP packet IP6: b8:83:03:79:9f:e4 -> b8:83:03:79:af:8c 802.1q vlan 2001 UDP: fd0d:edc4:ffff:2001::201 -> fd0d:edc4:ffff:2001::203 tos 0x00, flow label 0x0, hop limit 64, payload length 1458 UDP: 60593 -> 8092 length 1458, checksum 0x0964 00:23:39:401355: ethernet-input frame: flags 0x3, hw-if-index 2, sw-if-index 2 IP6: b8:83:03:79:9f:e4 -> b8:83:03:79:af:8c 802.1q vlan 2001 00:23:39:401356: ip6-input UDP: fd0d:edc4:ffff:2001::201 -> fd0d:edc4:ffff:2001::203 tos 0x00, flow label 0x0, hop limit 64, payload length 1458 UDP: 60593 -> 8092 length 1458, checksum 0x0964 00:23:39:401357: ip6-lookup fib 0 dpo-idx 5 flow hash: 0x00000000 UDP: fd0d:edc4:ffff:2001::201 -> fd0d:edc4:ffff:2001::203 tos 0x00, flow label 0x0, hop limit 64, payload length 1458 UDP: 60593 -> 8092 length 1458, checksum 0x0964 00:23:39:401361: ip6-local UDP: fd0d:edc4:ffff:2001::201 -> fd0d:edc4:ffff:2001::203 tos 0x00, flow label 0x0, hop limit 64, payload length 1458 UDP: 60593 -> 8092 length 1458, checksum 0x0964 00:23:39:401362: ip6-udp-lookup UDP: src-port 60593 dst-port 8092 (no listener) 00:23:39:401362: ip6-icmp-error UDP: fd0d:edc4:ffff:2001::201 -> fd0d:edc4:ffff:2001::203 tos 0x00, flow label 0x0, hop limit 64, payload length 1458 UDP: 60593 -> 8092 length 1458, checksum 0x0964 00:23:39:401363: error-drop rx:HundredGigabitEthernet12/0/0.2001 00:23:39:401364: drop ip6-input: valid ip6 packets vpp# Thanks, -Raj On Tue, Jan 14, 2020 at 1:44 PM Florin Coras <fcoras.li...@gmail.com> wrote: > Hi Raj, > > Session layer does support connection-less transports but udp does not > raise accept notifications to vcl. UDPC might, but we haven’t tested udpc > with vcl in a long time so it might not work properly. > > What was the problem you were hitting in the non-connected case? > > Regards, > Florin > > > On Jan 14, 2020, at 7:13 AM, raj.gauta...@gmail.com wrote: > > > > Hi , > > I am trying some host application tests ( using LD_PRELOAD) . TCP rx > and tx both work fine. UDP tx also works fine. > > The issue is only with UDP rx . In some discussion it was mentioned > that session layer does not support connection-less transports so protocols > like udp still need to accept connections and only afterwards read from the > fifos. > > So, I changed the UDP receiver application to use listen() and accept() > before read() . But , I am still having issue to make it run. > > After I started, udp traffic from other server it seems to accept the > connection but never returns from the vppcom_session_accept() function. > > VPP release is 19.08. > > > > vpp# sh app server > > Connection App Wrk > > [0:0][CT:U] 0.0.0.0:8090->0.0.0.0:0 ldp-36646-app[shm] 0 > > [#0][U] 0.0.0.0:8090->0.0.0.0:0 ldp-36646-app[shm] 0 > > vpp# > > > > > > [root@orc01 testcode]# VCL_DEBUG=2 LDP_DEBUG=2 > LD_PRELOAD=/opt/vpp/build-root/install-vpp-native/vpp/lib/libvcl_ldpreload.so > VCL_CONFIG=/etc/vpp/vcl.cfg ./udp_rx > > VCL<36646>: configured VCL debug level (2) from VCL_DEBUG! > > VCL<36646>: allocated VCL heap = 0x7f77e5309010, size 268435456 > (0x10000000) > > VCL<36646>: configured rx_fifo_size 4000000 (0x3d0900) > > VCL<36646>: configured tx_fifo_size 4000000 (0x3d0900) > > VCL<36646>: configured app_scope_local (1) > > VCL<36646>: configured app_scope_global (1) > > VCL<36646>: configured api-socket-name (/tmp/vpp-api.sock) > > VCL<36646>: completed parsing vppcom config! > > vppcom_connect_to_vpp:549: vcl<36646:0>: app (ldp-36646-app) is > connected to VPP! > > vppcom_app_create:1067: vcl<36646:0>: sending session enable > > vppcom_app_create:1075: vcl<36646:0>: sending app attach > > vppcom_app_create:1084: vcl<36646:0>: app_name 'ldp-36646-app', > my_client_index 0 (0x0) > > ldp_init:209: ldp<36646>: configured LDP debug level (2) from env var > LDP_DEBUG! > > ldp_init:282: ldp<36646>: LDP initialization: done! > > ldp_constructor:2490: LDP<36646>: LDP constructor: done! > > socket:974: ldp<36646>: calling vls_create: proto 1 (UDP), > is_nonblocking 0 > > vppcom_session_create:1142: vcl<36646:0>: created session 0 > > Socket successfully created.. > > bind:1086: ldp<36646>: fd 32: calling vls_bind: vlsh 0, addr > 0x7fff3f3c1040, len 16 > > vppcom_session_bind:1280: vcl<36646:0>: session 0 handle 0: binding to > local IPv4 address 0.0.0.0 port 8090, proto UDP > > vppcom_session_listen:1312: vcl<36646:0>: session 0: sending vpp listen > request... > > vcl_session_bound_handler:610: vcl<36646:0>: session 0 [0x1]: listen > succeeded! > > bind:1102: ldp<36646>: fd 32: returning 0 > > Socket successfully binded.. > > listen:2005: ldp<36646>: fd 32: calling vls_listen: vlsh 0, n 5 > > vppcom_session_listen:1308: vcl<36646:0>: session 0 [0x1]: already in > listen state! > > listen:2020: ldp<36646>: fd 32: returning 0 > > Server listening.. > > ldp_accept4:2043: ldp<36646>: listen fd 32: calling > vppcom_session_accept: listen sid 0, ep 0x0, flags 0x3f3c0fc0 > > vppcom_session_accept:1478: vcl<36646:0>: discarded event: 0 > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#15171): https://lists.fd.io/g/vpp-dev/message/15171 Mute This Topic: https://lists.fd.io/mt/69694900/21656 Mute #vpp-hoststack: https://lists.fd.io/mk?hashtag=vpp-hoststack&subid=1480452 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-