Re: #vpp-hoststack - Issue with UDP receiver application using VCL library #vpp-hoststack

Florin Coras

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?


On Jan 14, 2020, at 7:13 AM, raj.gautam25@... 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]> ldp-36646-app[shm] 0
[#0][U]> ldp-36646-app[shm] 0

[root@orc01 testcode]# VCL_DEBUG=2 LDP_DEBUG=2 LD_PRELOAD=/opt/vpp/build-root/install-vpp-native/vpp/lib/ 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 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

Join to automatically receive all group messages.