VPP学习-startup.conf配置文件

背景

        VPP(Vector Packet Processing,矢量报文处理),作为一个开源的高性能数据包处理框架,旨在提供可扩展、灵活且高效的网络数据包处理能力;由于传统Linux 内核协议栈整体网络吞吐性能的局限性,目前VPP已被广泛运用于路由器、防火墙等网络设备上,因此,作为网络开发工程师,在熟悉Linux内核协议栈的同时,有必要对VPP用户态协议栈有所了解,了解其实现原理、编码特点,报文处理方式以及通过何种方式实现性能提升,从今天开始希望和大家一起研究学习。

概念

         VPP启动需配置特定的选项参数,有两种方式:1.通过命令行的形式直接下发;2.通过配置文件设定,通过配置文件的好处是使得配置信息具有很好的可读性。

        VPP启动时通过-c选项加载配置文件,示例如下:

sudo /usr/bin/vpp -c /etc/vpp/startup.conf

        当VPP 服务启动时,则通过另外一个安装文件vpp.service 使用此选型启动,查看ExecStart参数信息如下:

        这里我们着重了解学习下配置文件的相关内容。 

配置文件

        配置文件信息示例如下:

        由文件内容可知,通过配置文件可以配置多种参数;VPP配置参数分为两类:1)基本配置参数 2)高级配置参数

基本参数

        基本参数包含如下几类:unix、dpdk、cpu

unix

        unix 用于配置VPP启动和行为类型属性,或其他任何基于操作系统的属性;

        interactive:将CLI连接到标准输入/输出,并提供调试命令行界面,意味着:nodaemon

        nodaemon:不要fork/后台 vpp进程,默认startup.conf会配置

        log:指定log文件路径,记录vpp启动配置以及后续所有CLI,默认startup.conf设置为 var/log/vpp/vpp.log,示例:log /var/log/vpp/vpp.log

        full-coredump:要求Linux 转储所有内存映射区域,而不仅仅是text+data+bss段。

        cli-prompt <string>:将命令行提示符配置为string所指示的字符串,示例:cli-prompt vpp-2

        runtime-dir <dir>:设置运行目录,这是特定文件(如socket 文件)的固定位置,默认为/run/vpp

        pidfile <filename>:将主线程pid写入指定文件

dpdk

        dpdk配置控制许多参数,包括设备白名单、可用于启动dpdk-eal控制线程的CPU数量、I/O缓冲区数据以及进程关联掩码。

        常用选项参数包括:

        dev <pci-dev> :将特定PCI设备列入白名单,pci-dev是一个"DDDD:BB:SS.F"格式的字符串,其中,DDDD = Domain, BB = Bus Number(总线号),SS = Slot number(槽位号),F = Function,示例:dev 0000:02:00.0

        dev <pci-dev> {...} :在将指定PCI设备列入白名单时,还可指定其他参数,有效选项包括:

                1)num-rx-queues <n> 接收队列数量,同时启用RSS,默认值为1

                2)num-tx-queues <n> 传输队列数量,默认等于工作线程数,如果没有工作线程,默认为1 

                3)num-rx-desc <n> ring-buffer接收缓冲区描述符数量,默认为1024,增加或减少数量会影响性能,默认为1024.

                4)num-tx-desc <n> ring-buffer接收缓冲区描述符数量,默认为1024,增加或减少数量会影响性能,默认为1024

                5) vlan-strip-offload on|off 接口的VLAN strip offload模式,对于除VIC之外的所有NIC, VLAN剥离默认处于关闭状态,使用ENIC驱动程序,该驱动程序默认启动VLAN剥离。

       num-mbufs <n>:增加分配的缓冲区数量,在接口和工作线程数量较多,或物理接口较多且有多个RSS队列的场景中可能需要,n代表每个CPU的数量,默认为16384。

        no-pci:当VPP启动时,如果接口不属于Linux内核(接口处于Down状态),VPP将尝试管理该接口."no-pci"表示VPP不应该遍历PCI表来寻找接口。

        kni <n>:KNI接口数量,依据DPDK文档。示例 kni 2

        uio-driver uio_pci_generic | igb_uio | auto :改变被VPP使用的UIO驱动,默认是auto。

cpu

        cpu配置控制命名线程类型的创建及其CPU的关联性,在VPP中,有一个主线程,用户可以选择创建工作线程,主线程和工作线程可以自动或手动固定到CPU核心。

        自动固定:

        workers <n> :创建n个工作线程

        io <n>:创建n个 <i/o>线程

        main-thread-io:通过线程0处理i/o设备,将流量移交给工作线程,要求 "workers n"

        skip-cores <n>:设置要跳过的CPU核心数(1..N-1),跳过的核心不用于绑定主线程或工作线程,主线程自动固定到第一个可用的CPU核心,并且在核心分配给主线程后,工作线程会绑定到下一个可用的CPU核上,将进程亲和性掩码的低nn位清除。

        手动固定:

        main-core <n> :将主线程绑定到特定核上,示例:main-core 1

        coremask-workers <hex-mask>:依据hex-mask绑定工作线程到特定核.

        corelist-workers <list> :功能和coremask-workers一样,但接收core list代替bitmap。

高级参数

        高级参数有很多,这里简单列举几项。

acl-plugin

        acl-plugin参数更改ACL插件的配置,例如ACL双哈希表的初始化方式,通常只能由熟悉VPP和ACL插件交互的人员来设置。

        connection hash buckets <n> :设置两个双哈希表中每个哈希桶的数量,默认为64 * 1024(65536)

        connection hash memory <n> :为双哈希表中的每一个分配内存大小,默认为1073741824个字节

        connection count max <n>:设置连接会话池的最大池元素个数,默认为:500000个元素

        main heap size <n> G | M| K | <n> :设置保存所有ACL模块相关分配的主内存堆大小

buffers

        控制缓冲区管理

        memory-size-in-mb <n>:配置缓冲区内存大小,如果没有设置,VPP默认为32MB

ip

        ipv4堆配置,堆大小是在启动序列的早期配置的,在加载插件或执行其他任何操作之前。

        heap-size <n> G | <n> M | <n> K | <n> :设置ipv4 mtrie堆大小,即专门用于目的IP查找表的的大小。

plugins

        默认情况下可以禁用插件,比如某个插件还处于实验阶段,可以在startup.conf中明确启用该插件,此外,默认启用的插件可以在startup.conf中明确禁用。

        此部分的另一个有用用途是禁用所有插件,然后仅启用所需插件。

        想要了解更多参数配置、含义及作用,请参考官方文档:VPP startup.conf配置文件及参数配置

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

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

相关文章

【Linux】环境基础开发工具的使用之gcc详解(二)

前言&#xff1a;上一篇文章中我们讲解了Linux下的vim和yum的工具的使用&#xff0c;今天我们将在上一次的基础上进一步的讲解开放工具的时候。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:Linux的深度刨析 &#x1f448; &#x1f4a…

ESU毅速丨为什么增材制造广受关注?

随着科技的飞速发展&#xff0c;增材制造3D打印技术逐渐成为制造业的新宠。包括航空航天、汽车、家电、电子等各行业都在积极拥抱3D打印&#xff0c;为什么3D打印能引起制造业广泛关注与应用&#xff1f;它的主要优势有哪些&#xff1f; 首先&#xff0c;3D打印减少浪费。3D打印…

【Linux】 Linux编译器-gcc/g++使用

&#x1f497;个人主页&#x1f497; ⭐个人专栏——Linux学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. Linux编译器-gcc/g使用1.1 引入1.2 初识gcc/g1.3 程序运行的四个阶段1.3.1 预处理1.3.2 编译1.3.3 汇编1.3.4 链接 1.…

【2024.2.1练习】岛屿个数(15分)

题目描述 题目思路 题目乍一看类似于“水坑个数问题”&#xff0c;是对陆地块进行DFS,上下左右4个方向分别对应了四种状态转移&#xff0c;每块陆地进行搜索后变成海洋&#xff0c;最终搜索次数就是岛屿个数。 但在子岛屿存在的情况下&#xff0c;需要先对海洋块进行DFS,由于…

binder android

文心一言的回答 Binder驱动是Android操作系统中用于进程间通信&#xff08;IPC&#xff09;的机制。它提供了一种高效、跨进程的数据传输方式&#xff0c;使得应用程序的不同组件可以在Android系统上互相通信。 Binder驱动基于Linux内核&#xff0c;其核心组件是一个称为Bind…

基于最新koa的Node.js后端API架构与MVC模式

Koa 是一个由 Express 原班人马打造的现代 Web 框架&#xff0c;用于 Node.js。它旨在提供一个更小、更富有表现力和更强大的基础&#xff0c;用于 Web 应用和 API 开发。Koa 不捆绑任何中间件&#xff0c;它提供了一个优雅的方法以组合不同的中间件来处理请求和响应。 Koa 的核…

2024年哪款便签软件是手机电脑同步的?

在繁忙的生活、工作和学习中&#xff0c;我们时常面临各种琐事和任务&#xff0c;需要随时记录、提醒&#xff0c;以保持高效的生活节奏。比如&#xff0c;突然想到的灵感、重要的工作计划、紧急的购物清单&#xff0c;都需要一个便利的便签工具来随手记录。特别是在多终端使用…

vue2 el-form 两个时间框(第一个时间框是只能选择当前时间,之前的是不允许选择,第二个时间框是第一个时间的当前的时间后30天后可以选择的)

<template><div id"app"><el-form :model"form"><el-form-item label"预签时间"><el-date-picker v-model"form.t2" type"date" placeholder"选择预签时间" changepreSigning/><…

RT-DETR算法优化改进:上采样算子 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测

💡💡💡本文独家改进:一种超轻量高效动态上采样DySample, 具有更少的参数、FLOPs,效果秒杀CAFFE和YOLOv8网络中的nn.Upsample 💡💡💡在多个数据集下验证能够涨点,尤其在小目标检测领域涨点显著。 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/…

C++ 音视频流媒体浅谈

C流媒体开发 今天就浅浅聊一下C流媒体开发 流媒体开发中最常见的是FFmpeg&#xff08;编解码器&#xff09; 业务逻辑主要是播放器了&#xff08;如腾旭视频 爱奇艺等等&#xff09; FFmpeg是一个开源的音视频处理工具集&#xff0c;可以用于处理、转换和流媒体传输音视频…

广州标点医药信息-米内网数据及咨询服务企业全方位解析!

米内网&#xff08;MENET&#xff09;原名中国医药经济信息网&#xff0c;由广州标点医药信息股份有限公司主办&#xff0c;2010年10月28日更名为“米内网”&#xff0c;上线初始主打医药销售数据库&#xff0c;经过十余年的迭代发展&#xff0c;现已成为国内主要的医药健康信息…

计网——应用层

应用层 应用层协议原理 网络应用的体系结构 客户-服务器&#xff08;C/S&#xff09;体系结构 对等体&#xff08;P2P&#xff09;体系结构 C/S和P2P体系结构的混合体 客户-服务器&#xff08;C/S&#xff09;体系结构 服务器 服务器是一台一直运行的主机&#xff0c;需…

数据结构·复杂度讲解

1. 什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。 数据结构是用来在内存中管理数据的&#xff0c;类似的&#xff0c;我们熟悉的文件或数据库是在硬盘中管理数据的。内存中的数据是带点…

【2024美赛】B题(中英文):搜寻潜水器Problem B: Searching for Submersibles

【2024美赛】B题&#xff08;中英文&#xff09;&#xff1a;搜寻潜水器Problem B: Searching for Submersibles 写在最前面2024美赛翻译 —— 跳转链接 中文赛题问题B&#xff1a;搜寻潜水器你的任务是&#xff1a; 词汇表 英文赛题Problem B: Searching for SubmersiblesYour…

基于VMware和Unbuntu18.04编译 嘉立创·泰山派 Linux SDK

主机硬件要求 内存最少32G 硬盘腾出200-500G&#xff0c;虽然编译最终占了73G&#xff0c;但富余一些以后可以搞别的方便 操作系统win7/10/11 VMware 安装 1.去vmware官网下载&#xff1a;https://customerconnect.vmware.com/cn/downloads/info/slug/desktop_end_user_comp…

小红书种草商品笔记违规,有哪些原因?

发布小红书笔记之后迟迟没有流量&#xff0c;内容过关但是浏览量突然变低是什么原因?如果出现上述情况&#xff0c;就可能是商品笔记被限制了。那么该如何重新获得流量呢?今天我们就来分享下小红书种草商品笔记违规&#xff0c;有哪些原因&#xff1f; 一、怎样判断被限流了 …

网络原理-TCP/IP(4)

TCP原理 滑动窗口 之前我们讲过了确认应答策略,对发送的每一个数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段. 确认应答,超时重传,连接管理这样的特性都是为了保证可靠运输,但就是付出了传输效率(单位时间能传输数据的多少)的代价,因为确认应答机制导致了时间大…

Qt实现类似ToDesk顶层窗口 不规则按钮

先看效果&#xff1a; 在进行多进程开发时&#xff0c;可能会遇到需要进行全局弹窗的需求。 因为平时会使用ToDesk进行远程桌面控制&#xff0c;在电脑被控时&#xff0c;ToDesk会在右下角进行一个顶层窗口的提示&#xff0c;效果如下&#xff1a; 其实要实现顶层窗口&#xf…

计算机设计大赛 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

力扣hot100 对称二叉树 递归

Problem: 101. 对称二叉树 文章目录 思路Code 思路 &#x1f468;‍&#x1f3eb; 参考 Code 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …