Building P4 Control Plane for the ACC
This document explains how to build P4 Control Plane for the ARM Compute Complex (ACC) of the Intel® IPU E2100.
Prepare the System
There are several things to do before you can build P4 Control Plane.
Install CMake 3.15 or above
Avoid versions 3.24 and 3.25. They cause the dependencies build to fail.
Install OpenSSL 3.x
Note that P4 Control Plane is not compatible with BoringSSL.
Install the ACC SDK
See Installing the ACC SDK for instructions.
Install the Stratum Dependencies
See Building Stratum Dependencies for the ACC for instructions.
You will need the Host dependencies, Target dependencies, and Build environment setup file, in order to cross-compile P4 Control Plane for the ACC.
Fetch the Source Code
If you have not already done so, you will need to get a copy of the IPDK networking-recipe repository and its submodules:
git clone --recursive https://github.com/ipdk-io/networking-recipe.git p4cp.recipe
You may substitute your own local directory name for p4cp.recipe
.
Define the Environment
First, change to the source directory:
cd p4cp.recipe
Source the file that defines the target build environment variables. For example:
source SETUPFILE
where SETUPFILE
is the path to the file you created when you built the
Stratum dependencies (for example, setup/es2k-setup.env
).
Build with OVS
Building OVS
The distribution includes a helper script (make-cross-ovs.sh
) that can be
used to build OVS for P4 Control Plane.
The
--help
(-h
) option lists the parameters the helper script supports.
To build OVS and install it in the sysroot directory under /opt/ipdk/ovs
:
./scripts/es2k/make-cross-ovs.sh --prefix=//opt/ipdk/ovs
Options:
--prefix=PREFIX
- where to install OVS
The //
at the beginning of the prefix path is a shortcut provided by
the helper script. It will be replaced with the sysroot directory path.
To do a clean build, issue the command rm -fr ovs/build
before running
make-cross-ovs.sh
. You may also want to remove the installation
directory from the previous build.
Configuring P4 Control Plane
The distribution includes a helper script (config-cross-deps.sh
) that
can be used to configure CMake to build P4 Control Plane.
The
--help
(-h
) option lists the parameters the helper script supports.
To configure CMake to build P4 Control Plane and install it in the sysroot
directory under /opt/ipdk/p4cp
:
./scripts/es2k/config-cross-recipe.sh \
--host=../hostdeps --deps=//opt/ipdk/deps \
--ovs=//opt/ipdk/ovs --sde=//opt/p4/p4sde \
--prefix=//opt/ipdk/p4cp
Options:
--host=HOST
- path to the Host dependencies--deps=DEPS
- path to the Target dependencies--ovs=OVS
- path to the OVS installation--sde=SDE
- path to the SDE installation--prefix=PREFIX
- where to install P4 control plane
The //
at the beginning of the prefix path is a shortcut provided by
the helper script. It will be replaced with the sysroot directory path.
To do a clean build, issue the command rm -fr build
before running
config-cross-recipe.sh
. You may also want to remove the installation
directory from the previous build.
Building P4 Control Plane
Now use CMake to build and install P4 Control Plane:
cmake --build build -j8 --target install
Build without OVS
To build P4 Control Plane without OVS:
./scripts/es2k/config-cross-recipe.sh \
--host=../hostdeps --deps=//opt/ipdk/deps \
--no-ovs --sde=//opt/p4/p4sde \
--prefix=//opt/ipdk/p4cp
cmake --build build -j8 --target install
The --no-ovs
option excludes OVS support.
Build with Stratum Only
To build P4 Control Plane without OVS or the Kernel Monitor:
./scripts/es2k/config-cross-recipe.sh \
--host=../hostdeps --deps=//opt/ipdk/deps \
--no-ovs --no-krnlmon --sde=//opt/p4/p4sde \
--prefix=//opt/ipdk/p4cp
cmake --build build -j8 --target install