This is an experimental integration of Envoy with VPP done through a VPP Comms Library (VCL) custom Envoy socket interface.
To build the Envoy static binary with a dynamically linked VCL library:
git submodule update --init
cd vpp; make install-dep; make build-release; cd ..
bazel build //:envoy
For more information on Envoy build requirements check here. This was tested with prebuilt clang-11 packages from LLVM official site and after:
export CC=/path/to/clang
export CXX=/path/to/clang++
If step 2 above fails, check VPP's developer documentation here.
After updating VPP's example startup configuration, to start Envoy as a HTTP proxy using VPP's user space networking stack:
sudo ./vpp/build-root/install-vpp-native/vpp/bin/vpp -c configs/vpp_startup.conf
./start_envoy.sh
To check that everything started successfuly show session verbose
in VPP's cli should return one listening session on the proxy port configured in proxy.yaml (default 10001). Both the address and the port of the proxy service should be updated to those of the actual HTTP server.
VPP's example startup configuration assumes only one physical interface and a tap interface to be used to communicate with a local HTTP server using the Linux network stack.