vpp专题

VPP-Agent执行

1.启动配置 启动命令 ./cmd/vpp-agent/vpp-agent -etcd-config=./examples/localclient_with_etcd/etcd.conf 或 ./cmd/vpp-agent/vpp-agent -config-dir=/etc/vpp-agent -microservice-label="00000011" 环境变量配置: export

FRR与VPP路由和转发层面流程

首先了解一下VPP和FRR结合的架构如下图所示 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TlmGafp-1590764332456)(https://turbock79.cn/wordpress/wp-content/uploads/2020/04/vpp-frr-路由流程图.png)] 参考文档: 路由平面和转发平面分离:https://wiki.

VPP中sNAT及dNAT

sNAT 范式 nat44 add address nat44 add address [- ] [tenant-vrf ] [twice-nat] [del] set interface nat44 in out [output-feature] [del] #sNat设置G0为出口nat44 add interface address G0#设置源nat的接口set

编译安装VPP及运行

1. VPP构建安装 1.1 下载VPP及编译1.2 问题排查 2. 配置运行vpp 2.1 关闭待接管网卡接口2.2 安装NIC网卡驱动模块2.3 设置大页存储(可选步骤,可后期配置)2.4 接口绑定驱动(建议执行步骤,可不选)2.5 配置vpp(建议执行步骤,可不选)2.6 启动vpp2.7 创建网卡接口及IP地址 本文基于VMware虚拟机环境,详细请参考本文源站地址。 操作系统:Ce

VPP中SRv6的多场景实验

1. 中间P节点不支持SRv6 1.1. 拓扑图及概述 VPP中基础命令参考 vpp# show sr localsids//显示SRv6的本地policyvpp# show sr policies//显示SRv6的本地steeringvpp# show sr steering-policies//删除操作sr localsid del address fc01::2//删

VPP中SRv6实验环境搭建及连通性测试

1.概述 前置条件 设置本地loop循环,并设置IPv6同localsids在同网段,一台;设置骨干网直连出口的IPv6地址(vrf默认为0),然后设置出口的IPv6静态路由,方向为对端方向;创建vrf表,客户路由表;开启并设置端口,绑定VRF以及添加IP;这步属于客户端路由表; 实现SRv6模块需要进行如下一、二、三个主要设置。 步骤一设置localsid,用于接收方向,对到达本地的报文

VPP 源码学习总结

当我们在VPP/plugins目录下注册了自己的node后, 肯定有一个node.func(), 那这个函数是如何执行到的呢: 1. 首先我们要看一下这个插件注册的时候做了什么, 假设node 如下: 编译成功后, 我们可以从函数vlib_plugin_early_init() 中分析, 初始化时,怎么把这个node加到全局链表中的。 TODO: 大概就是, 在so 目录下去遍历所有so

基于DPDK的VPP 插件demo代码

VPP的插件编写, 首先要把VPP 工程下载下来, 编译通过。 然后按照example程序的套中来编写插件。 还有一个前提, 就是测试机上已经具备了DPDK 已经可用版本。 1. 下载VPP。 可以从github上下载VPP的指定版本的zip包,  也可以用git clone的方式直接clone到linux虚拟机上。 git clone -b stable/1801 https:/

VPP添加接口IP地址

如下命令添加接口IPv4地址。 vpp# set interface ip address port6 192.168.1.11/24 配置IP地址由函数ip4_add_del_interface_address_internal处理,主要参数为接口索引,IPv4地址和掩码长度(address_length)。 clib_error_t *ip4_add_del_interface_ad

VPP学习-VPP初始化流程

概念         VPP作为一个开源的、高性能的用户态网络协议栈,以进程的形式运行于Linux或(类unix)系统下,即VPP实际是一个用户进程,VPP启动后可通过"ps -ef | grep vpp"命令查看。 VPP启动         用户态进程启动都有一个main函数即程序入口函数,VPP也不例外,VPP main函数位于/src/vpp/net/main.c中,主要做了如下工作

VPP接口二层互联xconnect

以下命令将接口设置为L2二层互联模式,如果要双向流量,需要两个口都设置成此模式。一个接口上接收到的报文将发送到另外一个接口,反之亦然。 vpp# set interface state HundredGigabitEthernet65/0/0 upvpp# set interface state HundredGigabitEthernet65/0/1 upvpp#vpp# set int

dpdk/vpp中的memif使用方法

简介 同一主机上的不同DPDK进程可以采用内存交换的方式进行报文传输,这一传输接口叫做memif(shared memory packet interface)。传输的报文是原始报文格式,可以配置为Ethernet模式,IP模式,Punt/Inject模式。目前DPDK memif只支持Ethernet模式。memif接口有两种身份,master和slave,也可以称为server和client

二、VPP启动流程分析

今天我们介绍一下VPP的启动流程。如果把vpp看成一个应用程序,那么他是怎么工作的呢: 首先,vpp有许多插件so,每个插件下面有许多node,比如我们如果要新加一个功能为ip地址过滤,那么我们其实就是加一个node,当数据经过node时,调用我们提前注册的function函数就实现了我们的功能。接下来就理一下vpp从启动后到node生效的过程是怎样的。 开始之前先说下DPDK是怎么和vpp交互的

三、VPP-添加一个自定义节点

## vpp 中的重要结构体解析 1.1 _vlib_node_registration _vlib_node_registration 结构体是 VPP(Vector Packet Processing)中的一个关键结构体,用于在系统中注册和管理节点的信息。它的主要作用如下: 节点函数和处理: _vlib_node_registration 中的 function 字段指向节点的处理函数,定

vpp中plugin的api编程

API简介 vpp其实也有自己的control-plane。它们之间的就是使用API来交互,底层是用的共享内存机制。 control-plane可以是使用不同的语言来写,支持C/python/java/go  在这里了解的是用C语言与vpp通信。如图1所示。VAT通过命令行来控制VPP。 图1,VAT(vpp api test)与vpp通信:+---------------------+

FFMPEG下利用Intel VPP_QSV插件实现基于GPU的图像缩放和色彩空间转换 (二) - C++代码实现

前面一篇文章弄清楚了VPP_QSV插件的ffmpeg命令行命令,下面开始用C++代码实现VPP_QSV插件的C++代码实现。   C++使用滤镜的流程可以参考雷神的文章 最简单的基于FFmpeg的AVfilter的例子-纯净版 基本的流程如图   网上讨论FFMPEG硬件加速滤镜编程的文章不算太多,大概是基于GPU硬件的滤镜太依赖硬件导致用的人不多,所以大多数是讨论基于软件滤镜插件

FFMPEG下利用Intel VPP_QSV插件实现基于GPU的图像缩放和色彩空间转换 (一) - 命令行模式

最近做图像预处理的工作有点多。这里记录一下最近做OpenVINO推理的端到端优化时对FFMPEG做图像预处理的一点心得。   这几天碰到的问题是在准备给mobilenet-ssd神经网络推理前需要对视频文件做解码,然后缩放到需要的分辨率再转成RGB格式的数据,这样才能丢进网络里做推理。这个解码,缩放,色彩转换的流程通常是通过FFMPEG来实现的,通常的代码实现流程是 先创建硬件设备,因为我是

VPP /什么是VPP?

https://blog.csdn.net/rong_toa/article/details/108093924?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-18&spm=1001.2101.3001.4242 https://www.yuque.com/zzqcn/opensource/vb

FD.io VPP软件架构(一):vppinfra(基础结构层)

FD.io VPP:用户文档 软件架构 vppinfra(基础结构层) RToax 2020年9月 VPP /软件架构 Software Architecture fd.io vpp实现是第三代矢量数据包处理实现。请注意,Apache-2许可证专门授予非专有的专利许可证。 为了提高性能,vpp数据平面由转发节点的有向图组成,该转发图每次调用处理多个数据包。这

VPP GTP-U隧道性能测试4---GTP-U封包解包回环测试

GTP-U封包解包回环测试 测试拓扑 按照下面的配置,反向的数据流(trex从21.173 -> 10.212.28.112 的数据包)也能够完成回环。 TREX stateless配置 同前文https://editor.csdn.net/md/?articleId=104567253 VPP1配置 配置 startup.cfg 注:vpp不会自动配置及加载dpdk网卡驱动,需要

DPDK VPP简单入门及源码plugin实例分析

一、VPP技术 大多通用操作系统的网络协议栈一直都在内核中实现。其实网络协议栈只是一个应用,而不是操作系统的范畴,没有人规定网络协议栈一定是要早内核实现的。这些操作系统的开发者们将一切和具体业务无关的东西都塞进了操作系统内核。于是出现了pfring/netmap/dpdk等机制,做法是by pass掉内核协议栈,虽然方便,但是性能很差。 所以,通用操作系统参考通信行业将数据面、控制面、管理面分

VPP源码阅读---IP报文重组和分片

1、dpdk ip报文重组及分片API及处理逻辑介绍 DPDK的分片和重组实现零拷贝,详细介绍可以参阅DPDK分片与重组用户手则 1.1相关数据结构 1.2 相关API /*NO.1 创建rte_ip_frag_tbl结构,用来暂存分片的表。其中max_cycles表示分片报文超时时间TTL*frag_cycle = (rte_get_tsc_hz()) + MS_PER_S –1)

六、vpp 流表+负载均衡

草稿!!! vpp node其实就是三个部分 1、plugin init 2、set command 3、function 实现功能,比如这里的流表 今天我们再用VPP实现一个流表的功能 一、流表 1.1流表----plugin init VLIB_REGISTER_NODE 注册流表节点 // 注册流表节点VLIB_REGISTER_NODE(flowtable_node) = {