📚简介
简单部署P4-IPDK-DPDK,分成三步:
- 部署DPDK
- 提供硬件基础
- 部署P4C
- 提供P4-DPDK-target所需要的四个基本文件
- 部署P4-IPDK-DPDK
- 利用基本文件运行DPDK-Target上的P4程序
1️⃣部署DPDK
19.11:存在兼容性问题,报错implicit-fallthrough
23.07:常规下载
- 下载DPDK 23.07
wget http://static.dpdk.org/rel/dpdk-23.07.tar.gz sudo tar -xzf dpdk-23.07.tar.gz
- meson创建
cd dpdk-23.07 sudo meson build
- ninja编译
cd build sudo ninja sudo ninja install sudo ldconfig
- 验证DPDK
正常输出如下:cd ~/dpdk-23.07/examples/helloworld/build sudo ./helloworld -l 0-11 -n 4
EAL: Detected CPU lcores: 12 EAL: Detected NUMA nodes: 1 EAL: Detected shared linkage of DPDK EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: VFIO support initialized TELEMETRY: No legacy callbacks, legacy socket not created hello from core 1 hello from core 2 hello from core 3 hello from core 4 hello from core 5 hello from core 6 hello from core 7 hello from core 8 hello from core 9 hello from core 10 hello from core 11 hello from core 0
2️⃣安装P4C
部署过程
source /etc/lsb-release
echo "deb http://download.opensuse.org/repositories/home:/p4lang/xUbuntu_${DISTRIB_RELEASE}/ /" | sudo tee /etc/apt/sources.list.d/home:p4lang.list
curl -fsSL https://download.opensuse.org/repositories/home:p4lang/xUbuntu_${DISTRIB_RELEASE}/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_p4lang.gpg > /dev/null
sudo apt-get update
sudo apt install p4lang-p4c
3️⃣部署P4-IPDK-DPDK
参考以下资料:
部署过程
- 下载P4-IPDK-DPDK
sudo mkdir p4-ipdk-dpdk cd p4-ipdk-dpdk sudo git clone https://github.com/p4lang/p4-dpdk-target.git
- 下载依赖项
pip3 install distro cd p4-dpdk-target/tools/setup python3 install_dep.py
- 设置SDE与install目录
cd ~/p4-ipdk-dpdk sudo mkdir install source c/tools/setup/p4sde_env_setup.sh .
- 编译下载安装
cd $SDE/p4-dpdk-target git submodule update --init --recursive --force ./autogen.sh ./configure --prefix=$SDE_INSTALL make -j make install
- 运行测试
# 环境变量书写 export SDE_INSTALL=~/p4-dpdk-target/install export LD_LIBRARY_PATH=$SDE_INSTALL/lib:$SDE_INSTALL/lib64:$SDE_INSTALL/lib/x86_64-linux-gnu export PYTHONPATH=$SDE_INSTALL/lib/python3.8/:$SDE_INSTALL/lib/python3.8/lib-dynload:$SDE_INSTALL/lib/python3.8/site-packages export PYTHONHOME=$SDE_INSTALL/lib/python3.8 cd $SDE_INSTALL/bin # 编辑好P4-Program-File后,再执行下述命令 ./bf_switchd --install-dir $SDE_INSTALL --conf-file $SDE_INSTALL/share/dpdk/<P4 program name>/<P4 program name>.conf --init-mode=cold --status-port 7777 # 运行bfshell相关client工具,检查是否运行成功
4️⃣使用P4C-DPDK生成P4-DPDK-Target需要的文件
参考p4-dpdk-target/e2e-test/tools/compile.py at main · p4lang/p4-dpdk-target (github.com)
- 运行编译DPDK
p4c-dpdk --arch psa gtp-psa-from-vxlan.p4 \ --tdi gtp-psa-tdi.json \ --context gtp-psa-context.json \ -o gtp-psa.spec