VPP Agent examples
This folder contains several examples that illustrate various aspects of
VPP Agent's functionality. Each example is structured as an individual
executable with its own main.go
file. Each example focuses on a very
simple use case. All examples use ETCD, GOVPP and Kafka, so please make
sure there are running instances of ETCD, Kafka and VPP before starting
an example.
Current examples:
-
govpp_call is an example of a plugin with a
configurator and a channel to send/receive data to VPP. The example
shows how to transform northbound model data to VPP binary API calls.
-
idx_mapping_lookup shows the usage
of the name-to-index mapping (registration, read by name/index,
un-registration)
-
idx_mapping_watcher shows how to
watch on changes in a name-to-index mapping
-
localclient_vpp demonstrates how to use
the localclient package to push example configuration into VPP plugins
that run in the same agent instance (i.e. in the same OS process).
Behind the scenes, configuration data is transported via go channels.
-
localclient_linux demonstrates how to
use the localclient package to push example configuration into linux and
VPP plugins running within the same agent instance (i.e. within the same
OS process). Behind the scenes the configuration data is transported via
go channels.
-
CN-Infra examples demonstrate how to use the CN-Infra platform
plugins.
How to run an example
1. Start the ETCD server on localhost
sudo docker run -p 2379:2379 --name etcd --rm
quay.io/coreos/etcd:v3.1.0 /usr/local/bin/etcd \
-advertise-client-urls http://0.0.0.0:2379 \
-listen-client-urls http://0.0.0.0:2379
2. Start Kafka on localhost
sudo docker run -p 2181:2181 -p 9092:9092 --name kafka --rm \
--env ADVERTISED_HOST=172.17.0.1 --env ADVERTISED_PORT=9092 spotify/kafka
3. Start VPP
vpp unix { interactive } plugins { plugin dpdk_plugin.so { disable } }
4. Start desired example
Example can be started now from particular directory.
go run main.go \
--etcdv3-config=/opt/vpp-agent/dev/etcd.conf \
--kafka-config=/opt/vpp-agent/dev/kafka.conf