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