摘要
本文将详细介绍如何在 Ubuntu 系统上安装、编译并使用 VPP(Vector Packet Processing)创建一个完整的 VPP 开发环境。通过阅读本文,您将学会设置 VPP 开发环境并熟悉其基本操作。
vpp简介
fd.io(Fast Data Project)中的VPP(Vector Packet Processing)。fd.io 是一个开源项目,旨在创建一个高性能、灵活且可扩展的数据平面框架。VPP 是 fd.io 项目的关键组件之一,是一个高性能、模块化的网络数据包处理平台,适用于各种网络设备,如交换机、路由器和网络功能虚拟化(NFV)设备。
VPP 的核心特性如下:
- 高性能:VPP 利用了 CPU 的多核和多线程能力,提供了与硬件转发设备相当的高性能,可以在 commodity 硬件上达到数百万甚至数千万的数据包每秒转发速率。
- 可扩展性:VPP 的设计采用了模块化架构,可以很容易地为其添加新的网络协议和功能。这使得它能够适应不断变化的网络需求,并快速实现新的功能。
- 灵活性:VPP 提供了丰富的 API,支持各种编程语言和框架,使开发者可以方便地创建和集成自定义的网络功能和服务。
- 开源:VPP 是 fd.io 项目的一部分,遵循 Apache 2.0 许可协议,可以自由地使用、修改和分发。
VPP 在多个领域中得到了广泛应用,包括云计算、边缘计算、数据中心网络、SD-WAN 和 5G 网络等。这些领域对高性能、可扩展性和灵活性的需求与 VPP 的特点非常契合。
环境搭建步骤
- 系统要求
- 操作系统:Ubuntu 18.04 或更高版本
- 内存:至少 2GB RAM(建议 4GB 或更高)
- 处理器:支持 Intel VT-x 或 AMD-V 虚拟化技术的 CPU
- 安装依赖库和工具 在安装 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
- 安装 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
- 克隆 VPP 仓库 接下来,克隆 VPP 项目的 GitHub 仓库到本地:
git clone https://github.com/FDio/vpp.git
cd vpp
- 编译 VPP 执行以下命令开始编译 VPP。请注意,这个过程可能需要一些时间。
make install-deps
make build
- 安装 VPP 编译完成后,执行以下命令以安装 VPP。
sudo make install
配置相关
- 配置 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
}
- 绑定网卡到 DPDK
使用lspci
命令查找要绑定到 DPDK 的以太网设备:
lspci | grep Ethernet
将输出的设备 PCI 地址记下(例如,01:00.0
和 01: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
- 启动 VPP 执行以下命令启动 VPP:
sudo vpp -c /etc/vpp/startup.conf
- 使用 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等技术内容,点击立即学习: 链接.