From 36b7a486c9388efd4989dd1b2e6ec969db4d25d5 Mon Sep 17 00:00:00 2001 From: kyechou Date: Fri, 10 Nov 2023 10:24:27 -0600 Subject: [PATCH] Update scripts to build Klint NF container images --- Dockerfiles/Makefile | 1 + Dockerfiles/dpdk/Dockerfile | 28 ++++++++++ Dockerfiles/dpdk/build-dpdk.sh | 78 +++++++++++++++++++++++++++ Dockerfiles/klint-bridge/Dockerfile | 2 +- Dockerfiles/klint-firewall/Dockerfile | 2 +- Dockerfiles/klint-maglev/Dockerfile | 2 +- Dockerfiles/klint-nat/Dockerfile | 2 +- Dockerfiles/klint-policer/Dockerfile | 2 +- scripts/build-klint-nfs.sh | 11 ++-- 9 files changed, 119 insertions(+), 9 deletions(-) create mode 100644 Dockerfiles/dpdk/Dockerfile create mode 100755 Dockerfiles/dpdk/build-dpdk.sh diff --git a/Dockerfiles/Makefile b/Dockerfiles/Makefile index 62da59e1..6967c644 100644 --- a/Dockerfiles/Makefile +++ b/Dockerfiles/Makefile @@ -1,6 +1,7 @@ TARGETS = \ iptables \ ipvs \ + dpdk \ klint-bridge \ klint-firewall \ klint-maglev \ diff --git a/Dockerfiles/dpdk/Dockerfile b/Dockerfiles/dpdk/Dockerfile new file mode 100644 index 00000000..3e8f1508 --- /dev/null +++ b/Dockerfiles/dpdk/Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:22.04 + +LABEL org.opencontainers.image.authors="kychou2@illinois.edu" +LABEL RUN docker run -it --privileged \ + -v /sys/bus/pci/devices:/sys/bus/pci/devices \ + -v /sys/bus/pci/drivers:/sys/bus/pci/drivers \ + -v /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages \ + -v /sys/devices/system/node:/sys/devices/system/node \ + -v /dev:/dev \ + --name NAME \ + IMAGE + +# Build and run-time dependencies for DPDK +# https://doc.dpdk.org/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk +RUN apt-get update && \ + apt-get install -y build-essential python3 meson ninja-build \ + python3-pyelftools libnuma-dev libarchive-dev libelf-dev \ + libhugetlbfs-dev libpcap-dev curl gcc xz-utils iproute2 make bash \ + pciutils kmod && \ + apt-get clean + +# Build DPDK +COPY build-dpdk.sh / +RUN /build-dpdk.sh + +ENV PATH "$PATH:/dpdk/build/app" + +ENTRYPOINT ["/bin/bash"] diff --git a/Dockerfiles/dpdk/build-dpdk.sh b/Dockerfiles/dpdk/build-dpdk.sh new file mode 100755 index 00000000..9b922d07 --- /dev/null +++ b/Dockerfiles/dpdk/build-dpdk.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# This script should be run within a container. + +set -euo pipefail + +msg() { + echo -e "[+] ${1-}" >&2 +} + +die() { + echo -e "[!] ${1-}" >&2 + exit 1 +} + +check_depends() { + for cmd in "$@"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + die "'$cmd' not found" + fi + done +} + +usage() { + cat <