VPP编译安装及测试

news2024/11/24 8:45:58

参考:FD.io VPP环境下运行用户应用程序教程

环境

  1. 操作系统:centos7.4,且需要联网
  2. VPP版本:2009
  3. 网卡:10G

VPP编译

  1. 使用git clone VPP项目指定分支的代码(注意:不要使用VPP的release版本包,否则编译会有问题)
git clone -b stables/2009 https://github.com/FDio/vpp.git
  1. 添加yum源:epel、centos-release-scl、centos-release-scl-rh源
yum install epel-release
yum install centos-release-scl centos-release-scl-rh
#安装完成后在/etc/yum.repos.d/目录下会有相应的源文件
yum clean all
yum makecache		#重新生成缓存
  1. 编译vpp代码(会自动编译dpdk)
cd vpp
make 					#可查看支持的选项和说明
make install-deps		#安装vpp依赖
make install-ext-deps	#安装vpp额外的依赖,像dpdk

#编译的结果在build-root目录下
make build-release		#编译成可执行文件make pkg-rpm			#编译成rpm包,然后使用rpm -i *.rpm安装

运行VPP

  1. 使用dpdk接管网卡
modprobe uio_pci_generic		#linux内核加载uio_pci_generic驱动
./dpdk-devbind -s 				#查看网卡使用的驱动
ifconfig p3p2 0 up				#去掉待接管网卡的ip,否则绑定驱动可能会失败
./dpdk-devbind -b uio_pci_generic 0000:5e:00.1		#网卡绑定dpdk兼容的驱动

下图是绑定成功后结果
在这里插入图片描述

  1. 修改vpp配置文件starup.conf。vpp配置项说明
unix {
        nodaemon
        gid vpp
        cli-listen /run/vpp/cli.sock
        #vpp启动后执行的命令
        startup-config /etc/vpp/interface.txt
}
#去掉seesison会导致vcl异常,报-108不支持的应用配置
session { evt_qs_memfd_seg  }

#与vcl.conf中的socket名字对应
socksvr { socket-name /tmp/vpp-api.sock}

api-trace { on }

#cpu中的workers和调度策略会影响vcl是否会卡死
cpu {
        main-core 1
        workers 3
        scheduler-policy idle
        #scheduler-priority 50
        thread-prefix vpp
}

buffers {
        buffers-per-numa 128000
}

dpdk {
        log-level debug

        dev 0000:5e:00.1 {
                name eth1
        }
        no-multi-seg
        dev default {
                num-rx-queues 1
                num-tx-queues 1
                num-rx-desc 1024
        }
        #uio_pci_generic, igb_uio, vfio-pci,default is auto
        #uio-driver vfio-pci
        
        # socket-mem 2048,2048
        no-tx-checksum-offload
}

plugins {
        ## Adjusting the plugin path depending on where the VPP plugins are
        path /root/install-vpp-native/vpp/lib/vpp_plugins

        ## Disable all plugins by default and then selectively enable specific plugins
         plugin default { disable }
         plugin dpdk_plugin.so { enable }
         plugin acl_plugin.so { enable }

        ## Enable all plugins by default and then selectively disable specific plugins
        # plugin dpdk_plugin.so { disable }
        # plugin acl_plugin.so { disable }
 }

  1. 设置VPP启动后执行的命令,修改/etc/vpp/interface.txt如下:
#启动网卡
set interface state eth1 up
#设置网卡ip
set interface ip address eth1 172.20.10.38/24
  1. 启动VPP
./vpp -c /etc/vpp/startup.conf
  1. 另起一个终端,进入VPP控制界面
./vppctl
#控制界面常用的命令:
show int addr		#显示网卡ip
show int			#显示网卡
ip route add 10.170.7.0/24 via 10.170.7.254		#添加路由

基于VCL测试

说明:VPP网络和内核网络是独立的(不通的),有两套路由和网络

VCL:VPP Communication Library,VCL可以在不修改应用的情况下,使应用访问VPP网络。

测试环境:主机1(172.20.10.37/24) 和 主机2(172.20.10.38/24)各使用VPP接管10G网卡,两网卡通过光纤直连。(注:上述ip是在VPP网络下的)

  1. 修改vcl配置文件/etc/vpp/vcl.conf,内容如下:
vcl {
    rx-fifo-size 4000000
    tx-fifo-size 4000000
    app-scope-local
    app-scope-global
    api-socket-name /tmp/vpp-api.sock
    use-mq-eventfd
}
  1. 设置VCL相关的环境变量(设置完毕后,该终端就接入VPP网络了)
export VCL_CONFIG=/etc/vpp/vcl.conf
export LD_PRELOAD=/root/install-vpp-native/vpp/lib/libvcl_ldpreload.so
  1. 使用iperf3进行测试(两终端均需接入VPP网络,连接时需要使用VPP网络下的ip)
#在主机2执行下述命令启动服务端
iperf3 -s --bind 172.20.10.38

#在主机1执行下述命令启动客户端进行连接
iperf3 -c 172.20.10.38 --bind 172.20.10.37
  1. 测试结果:

客户端:

服务端:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/785659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-职责链模式在Java中使用示例-采购审批系统

场景 采购单分级审批 采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元) 的采购单,副董事长可以审批5万元至10万元(不包括10万元)的…

基于C语言的哈夫曼转化软件

完整资料进入【数字空间】查看——baidu搜索"writebug" 该软件可实现如下功能: 用户可以通过点击“打开文件”按钮打开本地计算机中任意一个文本文件,点击确认将其文本导入到程序输入文本框中,也可以直接在文本框中通过键盘键入文…

502 Bad GateWay报错的解决方法

什么是502 bad gateway 报错 简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。 产生错误的原因 1.连接超时 我们向服务器发送请求 由于服务器当前链接太多&am…

js设置一个定时器,定时发送请求

1.setTimeout方式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…

整流电路设计

一、交直流电区别 交流电&#xff1a;一般指大小和方向都随时间作周期性变化的电压或电流。交流电的极性在一个周期内变换多次&#xff0c;而直流电则保持恒定。 直流电&#xff08;电压或电流&#xff09;&#xff1a;直流电的方向不随时间而变化。直流电通常又分为恒定电压…

【Linux命令200例】chmod设置文件或目录的访问权限

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

Python获取接口数据

首先我们需要下载python&#xff0c;我下载的是官方最新的版本 3.8.3 其次我们需要一个运行Python的环境&#xff0c;我用的是pychram&#xff0c;需要库的话我们可以直接在setting里面安装 代码&#xff1a; # -*- codeing utf-8 -*- from bs4 import BeautifulSoup # 网页…

Stable Diffusion生成艺术二维码

Stable Diffusion生成艺术二维码 文章会有浏览问题&#xff0c;点击此处查看原文 首先需要一个Stable Diffusion服务环境&#xff0c;《Stable Diffusion服务环境搭建&#xff08;远程服务版&#xff09;》如果你已经有了那就忽略 一、准备一个比较好的二维码底图 首先解析二…

第一章 介绍 对 HL7 版本 2 的支持

文章目录 第一章 介绍InterSystems 对 HL7 版本 2 的支持HL7 版本 2 路由生成 第一章 介绍 InterSystems 对 HL7 版本 2 的支持 InterSystems 产品支持 HL7 版本 2 消息作为虚拟文档。虚拟文档是 InterSystems 产品仅部分解析的一种消息。这种消息具有标准的production 消息头…

微信朋友圈推广优势有哪些?

你知道的朋友圈推广效果有哪些 1、定向精准触达 在朋友圈广告推广中&#xff0c;人群的性别、年龄、兴趣爱好、活动范围、学历、手机型号、推广时段等&#xff0c;这些都是可以进行精准定向。通过精准定向&#xff0c;可以找到企业想找到的人群。 2、用户高活跃度 大家平均每…

亿发数字化生产工厂MES管理系统,助力云南工厂实现智能制造

近年来&#xff0c;云南省将制造业数字化作为“工业强省”战略的关键和打造现代产业体系的重中之重&#xff0c;而随着工业4.0时代的来临&#xff0c;数字化转型已成为制造企业企业蓬勃发展之路。在这个过程中&#xff0c;MES精益制造管理系统显露出潜力&#xff0c;成为云南省…

前端生成批量二维码,并且下载到本地

Ⅰ- 壹 - 功能展示和使用需求 需求描述 前端生成批量二维码&#xff0c;并且下载&#xff0c;本项目使用了 vue3. 功能展示 Ⅱ - 贰 - 封装代码 需要的库 yanr add qrcodejs2-fix // 生成二维码 yarn add html2canvas // 转图片 yarn add jszip// 压缩包 yarn add file-sa…

25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)

1.简述 插值法 插值法又称“内插法”&#xff0c;是利用函数f (x)在某区间中已知的若干点的函数值&#xff0c;作出适当的特定函数&#xff0c;在区间的其他点上用这特定函数的值作为函数f (x)的近似值&#xff0c;这种方法称为插值法。如果这特定函数是多项式&#xff0c;就称…

(css)列表点击前后样式

(css)列表点击前后样式 效果&#xff1a; html <ul v-show"rightOne" class"one-content"><liv-for"(item,index) in exampleList":key"index"click"searchHandle(item,index)"class"liClass":class&qu…

Linux基本指令操作

登陆指令&#xff08;云服务器版&#xff09; 当我们获取公网IP地址后&#xff0c;我们就可以打开xshell。 此时会有这样的界面&#xff0c;我们若是想的登陆&#xff0c;则需要输入以下的指令 ssh 用户名公网IP地址 然后会跳出以下的窗口 接着输入密码——密码便是先前定好…

ArcGIS Engine 与 Visual Studio版本对照表

通过C#对于Arcgis的二次开发&#xff0c;需要Visual Studio版本需要与ArcGIS Engine对应&#xff0c;Visual Studio版本的或高或低都不能使ArcObjects SDK for microsoft.Net framework安装成功。下面是各个版本的对照表。 序号ArcEngine版本visual Studio版本Network版本110.…

React Native实现理想的震动效果

React Native实现理想的震动效果 一、背景说明 业务开发中&#xff0c;总会用到一些和用户反馈的效果&#xff0c;用来提升用户对于某个事件或者操作的重要程度&#xff0c;比如常见的就是 长按复制、滑动或点击图表、点击底部TabBar时的反馈等操作。 二、构思实现及过程 2.…

微信小游戏个人开发者上架:从注册到上线的详细步骤

微信小游戏个人开发者上架&#xff1a;从注册到上线的详细步骤 一&#xff0c;注册小程序账号1.1 微信公众平台1.2 填写信息1.3 绑定管理 二&#xff0c;打包步骤2.1 工具准备2.2 关于Unity版本2.3 打包详解 三&#xff0c;提包步骤3.1 填写用户隐私3.2 完善开发者自查3.3 游戏…

《向量数据库指南》:向量数据库Pinecone使用命名空间

目录 创建命名空间 创建多个命名空间 跨所有命名空间的操作 Pinecone允许您将索引中的向量划分为命名空间。然后,查询和其他操作仅限于一个命名空间,因此不同的请求可以搜索索引的不同子集。 例如,您可能想为按内容索引的文章定义一个命名空间,为按标题索引的文章定义另…

内存条的故障修复方法分享

你知道电脑的内存条遇到故障要怎么修复吗&#xff1f;可能很多小伙伴都是直接说&#xff1a;“找电脑维修师傅就好。”那当只有你自己的时候怎么办呢&#xff1f;今天我就跟你分享几个电脑常见的故障以及修复的方法吧。 1、开机无显示。此类故障通常是由于内存条与主板内存插槽…