VPP/VPPCommunicationsLibrary

From fd.io
< VPP
Revision as of 22:23, 30 August 2017 by Alagalah (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

High Speed container communications using VPP Communications Library (VCL)

Using the VPP Communications Library and an LD_PRELOAD library for standard POSIX sockets, VPP can demonstrate a 2.75x speed improvement over traditional Linux bridge.


HowTo

Prequisites

  • docker (Version: 17.05)
  • iperf3 (3.0.11)

Environment Setup and Building

  • Clone VPP and the VPPSB projects.
  • Edit vppsb/vcl-ldpreload/env.sh
    • Set VCL_BASE to directory above VPP and VPPSB source. Leave all other env vars in this file alone.
 source ./env.sh
  • Change to VPP source directory and build
 cd $VPP_DIR
  • Modify uri.am to enable socket_test program
 perl -pi -e 's/noinst_PROGRAMS/bin_PROGRAMS/g' $VPP_DIR/src/uri.am
  • Build VPP release
 make install-dep wipe-release bootstrap dpdk-install-dev build-release
  • Build LD_PRELOAD library against VPP build above.

This does not install the LD_PRELOAD library in your system. Instead it will be referenced from the build directory set in VCL_LDPRELOAD_LIB

 cd $LDP_DIR/vcl-ldpreload/src
 autoreconf -i -f
 ./configure VPP_DIR=$VPP_DIR
 make


Running the demo

  • Run test script without parameters to see help menu:
 cd $VPP_DIR/test/scripts
 ./socket_test.sh

Docker iPerf examples

These demos launch xterms, and have been tested on Ubuntu16.04. To quit, close xterms and run following docker kill command

WARNING: This will kill all docker containers on your system. The command below is deliberately commented out to protect the innocent, and copypasta-happy.

 #docker kill $(docker ps -q)


  • Docker iPerf using default Linux Bridge
 ./socket_test.sh -bi docker-kernel
  • Docker iPerf using VPP
 ./socket_test.sh -bi docker-preload