searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

虚机中编译运行vpp

2024-04-08 07:15:27
66
0

VPP 是一个开源的软件项目,由 Cisco 发起,用于高性能网络数据包处理。它提供了一个模块化的、可扩展的网络数据平面框架,支持各种网络功能虚拟化(NFV)和软件定义网络(SDN)应用。VPP 使用向量化和并行处理技术,能够在普通的通用处理器上实现高吞吐量和低延迟的数据包处理。

1. 编译

分支切换成stable/2302,否则由于libc的原因,无法在centos7上编译。

git checkout stable/2302

打上相关patch

1.1. llvm编译过程

extra库中的xdp需要使用到llvm编译器,其编译过程如下:

llvm编译过程 
yum install -y epel-release
yum groupinstall -y "Development tools"
yum install -y elfutils-libelf-devel cmake3 git bison flex ncurses-devel
yum install -y devtoolset-8
  
git clone ccc://github.com/llvm/llvm-project.git
  
source /opt/rh/devtoolset-8/enable
  
  
cd llvm-project
mkdir build
cd build
  
cmake3 -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release
make -j
make install


1.2.  MLX驱动

如果需要mlx驱动的话,需要编译mlx相关的驱动

 

1.3.  Vpp编译

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:$PKG_CONFIG_PATH

make install-dep

make install-ext-deps DPDK_MLX5_PMD=y DPDK_MLX4_PMD=n DPDK_MLX_IBV_LINK=dlopen

make build  vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX_IBV_LINK=dlopen

#RPM包

make pkg-rpm  vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX_IBV_LINK=dlopen -j4

make install-ext-deps会去下载以下外部依赖源码包。

如(meson、xdp-tools、rdma-core、quickly、dpdk)

 

1.4.  问题列表

问题1: 会有个getrandom的依赖问题,与libc相关

    解决: spec中加 . /opt/rh/devtoolset-9/enable

问题2:类型不对, error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1

     解决: 将i32替换成u32

问题3:recvmmsg重复定义

+#ifndef _GNU_SOURCE

问题4: rpm打包时会遇到dwarf5与rpmbuild的dwarf4不匹配问题,是因为vpp编译使用的是clang工具,clang工具默认是使用dwarf5,而gcc默认的是dwarf4.

spec中加

+export CFLAGS="-g -gdwarf-4"
+export CXXFLAGS="-g -gdwarf-4"
+export LDFLAGS="-Wl,--build-id"

 

2. 安装

rpm -ivh vpp-selinux-policy.rpm

rpm -ivh vpp-lib-xxx.rpm 

rpm -ivh vpp-xx.rpm

rpm -ivh vpp-plugins-xxx.rpm

 

3. 配置启动

相应的插件对应的相应的配置。

vppctl命令:FD.io VPP: Interface

vim /etc/vpp/startup.conf

 


#!/bin/bash


#bind nic
modprobe uio_pci_generic
dpdk-devbind.py -b uio_pci_generic 0000:03:00.0


#set memory
#/etc/sysctl.d/80-vpp.conf


#modify startup.conf


#run
vpp -c $PWD/startup_vm.conf

0条评论
0 / 1000
李****佳
5文章数
0粉丝数
李****佳
5 文章 | 0 粉丝
李****佳
5文章数
0粉丝数
李****佳
5 文章 | 0 粉丝
原创

虚机中编译运行vpp

2024-04-08 07:15:27
66
0

VPP 是一个开源的软件项目,由 Cisco 发起,用于高性能网络数据包处理。它提供了一个模块化的、可扩展的网络数据平面框架,支持各种网络功能虚拟化(NFV)和软件定义网络(SDN)应用。VPP 使用向量化和并行处理技术,能够在普通的通用处理器上实现高吞吐量和低延迟的数据包处理。

1. 编译

分支切换成stable/2302,否则由于libc的原因,无法在centos7上编译。

git checkout stable/2302

打上相关patch

1.1. llvm编译过程

extra库中的xdp需要使用到llvm编译器,其编译过程如下:

llvm编译过程 
yum install -y epel-release
yum groupinstall -y "Development tools"
yum install -y elfutils-libelf-devel cmake3 git bison flex ncurses-devel
yum install -y devtoolset-8
  
git clone ccc://github.com/llvm/llvm-project.git
  
source /opt/rh/devtoolset-8/enable
  
  
cd llvm-project
mkdir build
cd build
  
cmake3 -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release
make -j
make install


1.2.  MLX驱动

如果需要mlx驱动的话,需要编译mlx相关的驱动

 

1.3.  Vpp编译

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:$PKG_CONFIG_PATH

make install-dep

make install-ext-deps DPDK_MLX5_PMD=y DPDK_MLX4_PMD=n DPDK_MLX_IBV_LINK=dlopen

make build  vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX_IBV_LINK=dlopen

#RPM包

make pkg-rpm  vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX_IBV_LINK=dlopen -j4

make install-ext-deps会去下载以下外部依赖源码包。

如(meson、xdp-tools、rdma-core、quickly、dpdk)

 

1.4.  问题列表

问题1: 会有个getrandom的依赖问题,与libc相关

    解决: spec中加 . /opt/rh/devtoolset-9/enable

问题2:类型不对, error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1

     解决: 将i32替换成u32

问题3:recvmmsg重复定义

+#ifndef _GNU_SOURCE

问题4: rpm打包时会遇到dwarf5与rpmbuild的dwarf4不匹配问题,是因为vpp编译使用的是clang工具,clang工具默认是使用dwarf5,而gcc默认的是dwarf4.

spec中加

+export CFLAGS="-g -gdwarf-4"
+export CXXFLAGS="-g -gdwarf-4"
+export LDFLAGS="-Wl,--build-id"

 

2. 安装

rpm -ivh vpp-selinux-policy.rpm

rpm -ivh vpp-lib-xxx.rpm 

rpm -ivh vpp-xx.rpm

rpm -ivh vpp-plugins-xxx.rpm

 

3. 配置启动

相应的插件对应的相应的配置。

vppctl命令:FD.io VPP: Interface

vim /etc/vpp/startup.conf

 


#!/bin/bash


#bind nic
modprobe uio_pci_generic
dpdk-devbind.py -b uio_pci_generic 0000:03:00.0


#set memory
#/etc/sysctl.d/80-vpp.conf


#modify startup.conf


#run
vpp -c $PWD/startup_vm.conf

文章来自个人专栏
我的网络1
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0