手把手搭建VPP开发环境

摘要

本文将详细介绍如何在 Ubuntu 系统上安装、编译并使用 VPP(Vector Packet Processing)创建一个完整的 VPP 开发环境。通过阅读本文,您将学会设置 VPP 开发环境并熟悉其基本操作。

vpp简介

fd.io(Fast Data Project)中的VPP(Vector Packet Processing)。fd.io 是一个开源项目,旨在创建一个高性能、灵活且可扩展的数据平面框架。VPP 是 fd.io 项目的关键组件之一,是一个高性能、模块化的网络数据包处理平台,适用于各种网络设备,如交换机、路由器和网络功能虚拟化(NFV)设备。

VPP 的核心特性如下:

  1. 高性能:VPP 利用了 CPU 的多核和多线程能力,提供了与硬件转发设备相当的高性能,可以在 commodity 硬件上达到数百万甚至数千万的数据包每秒转发速率。
  2. 可扩展性:VPP 的设计采用了模块化架构,可以很容易地为其添加新的网络协议和功能。这使得它能够适应不断变化的网络需求,并快速实现新的功能。
  3. 灵活性:VPP 提供了丰富的 API,支持各种编程语言和框架,使开发者可以方便地创建和集成自定义的网络功能和服务。
  4. 开源:VPP 是 fd.io 项目的一部分,遵循 Apache 2.0 许可协议,可以自由地使用、修改和分发。

VPP 在多个领域中得到了广泛应用,包括云计算、边缘计算、数据中心网络、SD-WAN 和 5G 网络等。这些领域对高性能、可扩展性和灵活性的需求与 VPP 的特点非常契合。

环境搭建步骤

  1. 系统要求
  • 操作系统:Ubuntu 18.04 或更高版本
  • 内存:至少 2GB RAM(建议 4GB 或更高)
  • 处理器:支持 Intel VT-x 或 AMD-V 虚拟化技术的 CPU
  1. 安装依赖库和工具 在安装 VPP 之前,请确保安装以下依赖库和工具。打开终端,执行以下命令:
sudo apt-get update
sudo apt-get install -y git build-essential curl unzip docker.io docker-compose
sudo apt-get install -y libssl-dev libelf-dev libmnl-dev libc-ares-dev libedit-dev libatomic1
  1. 安装 DPDK 安装 DPDK 所需依赖库:
sudo apt-get install -y libnuma-dev libpcap-dev

获取并安装 DPDK:

git clone http://dpdk.org/git/dpdk
cd dpdk
git checkout v21.08
make install T=x86_64-native-linuxapp-gcc DESTDIR=install

设置 DPDK 环境变量:

export RTE_SDK=$(pwd)
export RTE_TARGET=x86_64-native-linuxapp-gcc
echo 'export RTE_SDK=$(pwd)' >> ~/.bashrc
echo 'export RTE_TARGET=x86_64-native-linuxapp-gcc' >> ~/.bashrc
  1. 克隆 VPP 仓库 接下来,克隆 VPP 项目的 GitHub 仓库到本地:
git clone https://github.com/FDio/vpp.git
cd vpp
  1. 编译 VPP 执行以下命令开始编译 VPP。请注意,这个过程可能需要一些时间。
make install-deps
make build
  1. 安装 VPP 编译完成后,执行以下命令以安装 VPP。
sudo make install

配置相关

  1. 配置 VPP 首先创建 VPP 配置文件目录:
sudo mkdir -p /etc/vpp/

然后创建 VPP 配置文件 startup.conf

sudo touch /etc/vpp/startup.conf

用文本编辑器打开 /etc/vpp/startup.conf 文件,粘贴以下内容:

unix {
    
    
  nodaemon
  log /tmp/vpp.log
  full-coredump
  cli-listen localhost:5002
}
api-trace {
    
    
  on
}
api-segment {
    
    
  gid vpp
}
cpu {
    
    
  main-core 1
  corelist-workers 2-3
  scheduler-policy fifo
  scheduler-priority 50
}
dpdk {
    
    
  socket-mem 64,64
  no-multi-seg
  no-tx-checksum-offload
}
  1. 绑定网卡到 DPDK

使用lspci命令查找要绑定到 DPDK 的以太网设备:

lspci | grep Ethernet

将输出的设备 PCI 地址记下(例如,01:00.001:00.1)。然后,执行以下命令安装 DPDK 工具:

sudo pip3 install dpdk

接下来,将以太网设备绑定到 DPDK:

sudo dpdk-devbind.py --bind=vfio-pci 01:00.0
sudo dpdk-devbind.py --bind=vfio-pci 01:00.1

您可以使用以下命令查看绑定状态:

sudo dpdk-devbind.py --status
  1. 启动 VPP 执行以下命令启动 VPP:
sudo vpp -c /etc/vpp/startup.conf
  1. 使用 VPP CLI 在另一个终端中,执行以下命令连接到 VPP CLI:
vppctl

您现在可以使用 VPP CLI 进行各种操作,例如查看接口信息、配置接口等。要查看接口列表,输入:

show interface

常见问题及解决方法

  • 编译失败:确保您已安装所有依赖库,并设置正确的 DPDK 环境变量。如有错误提示,请仔细阅读并按照提示修复问题。
  • 绑定网卡失败:确保您的网卡支持 DPDK,并使用正确的 PCI 地址进行绑定。如有错误提示,请检查是否有其他程序正在使用该网卡,或尝试重新启动系统。
  • VPP 启动失败:请检查 /etc/vpp/startup.conf 配置文件是否正确,并查看日志文件(/tmp/vpp.log)以获取更多信息。

总结

至此,您已成功安装、编译并使用 VPP,包括安装与绑定 DPDK。现在,您可以探索 VPP 的强大功能并尝试开发自定义的网络功能和服务。如有任何问题,请查阅 VPP 和 DPDK 的官方文档,或在社区寻求帮助。

另外推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家,有兴趣可以去看看:[Linux,Nginx,DPDK等技术内容,点击立即学习: 链接.

猜你喜欢

转载自blog.csdn.net/weixin_36184908/article/details/130556081