VPP Containerlab Docker image

This docker container creates a VPP instance based on the latest release. It starts up as per normal, using /etc/vpp/startup.conf (which Containerlab will replace), and once started, it'll execute /etc/vpp/bootstrap.vpp within the dataplane. There are three relevant files:

  1. manual-pre.vpp -- can be supplied by the user, to run any configuration statements before containerlab takes control.

  2. clab.vpp -- generated by containerlab. Its purpose is to bind the vethpair interfaces into theo dataplane (see below).

  3. manual-post.vpp -- can be supplied by the user, to run any configuration statements after containerlab is finished with its per-lab statements.

Building

docker build -f Dockerfile.bookworm . -t pimvanpelt/vpp-containerlab

Starting the container

docker network create --driver=bridge network2 --subnet=172.19.1.0/24
docker rm clab-pim 
docker run --cap-add=NET_ADMIN --cap-add=SYS_NICE --cap-add=SYS_PTRACE \
           --device=/dev/net/tun:/dev/net/tun --device=/dev/vfio/vfio:/dev/vfio/vfio \
           --device=/dev/vhost-net:/dev/vhost-net \
           --privileged=True --name clab-pim \
           docker.io/pimvanpelt/vpp-containerlab
docker network connect network2 clab-pim

Configuring VPP

docker exec -it clab-pim vppctl

and then within the VPP control shell:

vpp-clab# create host-interface v2 name eth1
vpp-clab# set interface name host-eth1 eth1
vpp-clab# set interface mtu 1500 eth1
vpp-clab# set interface ip address eth1 172.19.1.2/24
vpp-clab# set interface ip address eth1 fec0::2/64
vpp-clab# set interface state eth1 up
Description
VPP Containerlab Docker image
Readme BSD-2-Clause 113 KiB
Languages
Shell 100%