The VCL echo server/client test applications, vcl_test_server and vcl_test_client, are bespoke performance test applications which support all of VPP's HostStack transport layer protocols, i.e., tcp, udp, quic and tls. They utilize VPPComsLibrary (VCL), as opposed to 'raw session layer' (see [here](view/VPP/HostStack/ExternalEchoClientServer.md)), APIs to verify performance and correct handling of connection/stream events with uni-directional and bi-directional streams of data. The apps can be found in the build tree at: ``` $ ./build-root/build-vpp[_debug]-native/vpp/bin/vcl_test_[server/client] ``` and as of VPP 20.01 they are included in the main vpp debian package (e.g. vpp_20.01-release-amd64.deb) Start vpp1 and attach the server application: ``` $ VCL_CONFIG=/path/to/vcl.conf ./build-root/build-vpp_debug-native/vpp/bin/vcl_test_server -p tcp 1234 ``` Then start vpp2 and attach the client: ``` $ VCL_CONFIG=/path/to/vcl.conf ./build-root/build-vpp_debug-native/vpp/bin/vcl_test_client -p tcp 1234 -S ``` The current command line options for vcl_test_server are: ` ``` vcl_test_server [OPTIONS] OPTIONS -h Print this message and exit. -6 Use IPv6 -w Number of workers -p Use transport layer -S Incremental stats ``` ` The current command line options for vcl_test_client are: ` ``` vcl_test_client [OPTIONS] OPTIONS -h Print this message and exit. -6 Use IPv6 -c Print test config before test. -w Write test results to . -X Exit after running test. -p Use transport layer -D Use UDP transport layer -L Use TLS transport layer -E Run Echo test. -N Test Cfg: number of writes. -R Test Cfg: rx buffer size. -T Test Cfg: tx buffer size. -U Run Uni-directional test. -B Run Bi-directional test. -V Verbose mode. -I Use N sessions. -s Use N sessions. -q QUIC : use N Ssessions on top of n Qsessions ``` ` Example vcl.conf: ` ``` vcl { app-socket-api /var/run/vpp/app_ns_sockets/001 app-scope-global app-scope-local namespace-id 001 namespace-secret 001 use-mq-eventfd } ``` ` Create socket specified by app-socket-api by issuing app ns add command in corresponding VPP instance. For example: ``` vpp# app ns add id 001 secret 001 sw_if_index 1 if eth0 ``` VPP's startup.conf should include following (even though current [configuration reference](https://s3-docs.fd.io/vpp/22.10/configuration/reference.html) doesn't show these parameters): ` ``` session { enable use-app-socket-api } ``` ` ### Out of date Out of date tutorial [here](view/VPP/VPPCommunicationsLibrary.md)