Initial config for a bare-bones VPP container lab image
This commit is contained in:
20
Dockerfile.bookworm
Normal file
20
Dockerfile.bookworm
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
FROM debian:bookworm
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG VPP_INSTALL_SKIP_SYSCTL=true
|
||||||
|
ARG REPO=release
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get -y install curl procps tcpdump iproute2 iptables binutils \
|
||||||
|
bridge-utils iputils-ping netcat-traditional net-tools nmap \
|
||||||
|
python3 python3-dev python3-pip
|
||||||
|
RUN mkdir -p /var/log/vpp
|
||||||
|
RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.deb.sh | bash
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get -y install vpp vpp-plugin-core
|
||||||
|
RUN apt-get -y clean
|
||||||
|
COPY startup.conf /etc/vpp/startup.conf
|
||||||
|
COPY bootstrap.vpp /etc/vpp/bootstrap.vpp
|
||||||
|
COPY manual-pre.vpp /etc/vpp/manual-pre.vpp
|
||||||
|
COPY clab.vpp /etc/vpp/clab.vpp
|
||||||
|
COPY manual-post.vpp /etc/vpp/manual-post.vpp
|
||||||
|
CMD ["/usr/bin/vpp","-c","/etc/vpp/startup.conf"]
|
||||||
|
|
46
README.md
Normal file
46
README.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# 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.
|
||||||
|
1. clab.vpp -- generated by containerlab. It will bind the vethpair interfaces
|
||||||
|
into the dataplane.
|
||||||
|
1. 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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
https://s3-docs.fd.io/vpp/22.02/usecases/vpp_testbench/index.html
|
||||||
|
https://git.ipng.ch/ipng/drone-hugo
|
||||||
|
https://github.com/ligato/vpp-base/tree/master
|
||||||
|
|
3
bootstrap.vpp
Normal file
3
bootstrap.vpp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
exec /etc/vpp/manual-pre.vpp
|
||||||
|
exec /etc/vpp/clab.vpp
|
||||||
|
exec /etc/vpp/manual-post.vpp
|
1
clab.vpp
Normal file
1
clab.vpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
comment { This file will be overwritten / generated by containerlab upon deploy }
|
1
manual-post.vpp
Normal file
1
manual-post.vpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
comment { These commands are executed after Containerlab stuff }
|
1
manual-pre.vpp
Normal file
1
manual-pre.vpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
comment { These commands are executed before Containerlab stuff }
|
39
startup.conf
Normal file
39
startup.conf
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
unix {
|
||||||
|
interactive
|
||||||
|
log /var/log/vpp/vpp.log
|
||||||
|
full-coredump
|
||||||
|
cli-listen /run/vpp/cli.sock
|
||||||
|
cli-prompt vpp-clab#
|
||||||
|
cli-no-pager
|
||||||
|
poll-sleep-usec 100
|
||||||
|
exec /etc/vpp/bootstrap.vpp
|
||||||
|
}
|
||||||
|
|
||||||
|
api-trace {
|
||||||
|
on
|
||||||
|
}
|
||||||
|
|
||||||
|
memory {
|
||||||
|
main-heap-size 512M
|
||||||
|
main-heap-page-size 4k
|
||||||
|
}
|
||||||
|
|
||||||
|
buffers {
|
||||||
|
buffers-per-numa 16000
|
||||||
|
default data-size 2048
|
||||||
|
page-size 4k
|
||||||
|
}
|
||||||
|
|
||||||
|
statseg {
|
||||||
|
size 64M
|
||||||
|
page-size 4k
|
||||||
|
per-node-counters on
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
plugin default { enable }
|
||||||
|
plugin dpdk_plugin.so { disable }
|
||||||
|
plugin linux_cp_plugin.so { enable }
|
||||||
|
plugin linux_nl_plugin.so { enable }
|
||||||
|
plugin sflow_plugin.so { enable }
|
||||||
|
}
|
Reference in New Issue
Block a user