目录

介绍

为什么称为向量处理?

用例示例:VPP作为vSwitch / vRouter

VPP的主要特征

绩效期望


介绍

VPP平台是一个可扩展的框架,可提供开箱即用的生产质量交换机/路由器功能。它是思科矢量数据包处理(VPP)技术的开源版本:一种高性能的数据包处理堆栈,可以在商用CPU上运行。

实施VPP的好处在于其高性能,经过验证的技术,其模块化和灵活性以及丰富的功能集。

VPP技术基于久经考验的技术,已帮助交付了超过10亿美元的思科产品。这是一个模块化设计。该框架允许任何人“插入”新的图形节点,而无需更改核心/内核代码。

模块化,灵活和可扩展

VPP平台建立在“数据包处理图”上。这种模块化方法意味着任何人都可以“插入”新的图节点。这使得扩展性相当简单,并且意味着可以针对特定目的自定义插件。

插件如何发挥作用?在运行时,VPP平台从RX环获取所有可用的数据包,以形成数据包向量。数据包处理图逐个节点(包括插件)应用于整个数据包向量。图节点较小且模块化。图节点是松散耦合的。这使引入新图节点变得容易。这也使得重新连接现有图形节点相对容易。

插件可以引入新的图节点或重新排列数据包处理图。您还可以独立于VPP源代码树构建插件-这意味着您可以将其视为独立组件。可以通过将插件添加到插件目录来安装插件。

VPP平台可用于构建任何类型的数据包处理应用程序。它可用作负载均衡器,防火墙,IDS或主机堆栈的基础。您也可以创建应用程序的组合。例如,您可以向vSwitch添加负载平衡。

引擎在纯用户空间中运行。这意味着插件不需要更改核心代码-您可以扩展包处理引擎的功能,而无需更改在内核级别运行的代码。通过创建插件,任何人都可以使用以下功能扩展功能:

  • 新的自定义图节点
  • 图节点的重排
  • 新的低级API

功能丰富

全套图形节点允许构建各种网络设备工作负载。从高层次上讲,该平台提供:

  • 快速查找表的路由,网桥条目
  • 任意n元组分类器
  • 开箱即用的生产质量交换机/路由器功能

以下是VPP平台提供的功能的摘要:

IPv4 / IPv6
14+ MPPS,单核数
百万个条目FIB
输入检查
    源RPF
    TTL到期
    标头校验和
    L2长度<IP长度
    ARP解析/侦听
    ARP代理
数千个VRF
    控制的交叉VRF查找
多路径– ECMP和不等成本数
百万分类器–
    任意N元组
VLAN支持–单/双标签

IPv4
GRE,MPLS-GRE,NSH-GRE,
VXLAN
IPSEC
DHCP客户端/代理

IPv6
邻居发现
路由器 公告
DHCPv6代理
L2TPv3
段路由
MAP / LW46 – IPv4aas
iOAM

MPLS
MPLS MPLS-o-以太网–
    支持深标签栈

L2
VLAN支持   通过EFP / BridgeDomain概念进行
  单/双标签
L2转发
VTR –推/弹出/翻译(1:1,1:2,2:1,2:2)
Mac学习–默认限制为50k地址
桥接–拆分- Horizo​​n Group支持/ EFP过滤
代理Arp
Arp终止
IRB –支持RouterMac分配的BVI泛

输入ACL
接口交叉连接

为什么称为向量处理?

顾名思义,VPP使用矢量处理而不是标量处理。标量数据包处理是指一次处理一个数据包。这种较旧的传统方法需要处理中断,并遍历调用堆栈(a调用b调用c ...从嵌套调用返回return ...然后从Interrupt返回)。然后,该过程将执行以下三项操作之一:平移,丢弃或重写/转发数据包。

传统的标量数据包处理的问题是:

  • 在I缓存中发生抖动
  • 每个数据包都会导致相同的I缓存未命中
  • 除了提供更大的缓存,上述方法无其他解决方法

相比之下,矢量处理一次处理一个以上的数据包。

向量方法的好处之一是它解决了I缓存抖动问题。它还缓解了相关的读取延迟问题(预取消除了延迟)。

这种方法解决了与堆栈深度/ D-cache堆栈地址未命中有关的问题。它改善了“电路时间”。“电路”是以下周期:从设备RX环中获取所有可用数据包,形成一个“帧”(向量),该帧由RX顺序的数据包索引组成,通过有向节点图运行数据包,然后返回到RX。环。随着数据包处理的继续,电路时间将根据提供的负载达到稳定的平衡。

随着向量大小的增加,每个数据包的处理成本降低,因为您要在较大的N上摊销I缓存未命中

用例示例:VPP作为vSwitch / vRouter

VPP平台的一种使用情况是将其实现为虚拟交换机或路由器。以下部分描述了可以使用VPP平台创建的可能实现的示例。有关其他可能用例的更多详细说明,请参见用例列表。

您可以使用VPP平台创建现成的虚拟交换机(vSwitch)和虚拟路由器(vRouter)。VPP平台使您可以通过命令行界面(CLI)管理这些应用程序的某些功能和配置。

交换应用程序可以创建的一些功能包括:

  • 桥域
  • 端口(包括隧道端口)
  • 将端口连接到网桥域
  • 程序ARP终止

路由应用程序可以创建的一些功能包括:

  • 虚拟路由和转发(VRF)表(以千计)
  • 路线(以百万计)

本地可编程性

一种方法是实现VPP应用程序以与本地环境(Linux主机或容器)中的外部应用程序通信。通信将通过低级API进行。这种方法提供了一个完整的,功能丰富的解决方案,既简单又高性能。例如,可以合理地预期性能产出为每秒50万条路由。

这种方法利用了共享内存/消息队列的优势。该实现在本地的盒子或容器上。所有CLI任务都可以通过API调用完成。

VPP平台的当前实现为C客户端和Java客户端生成低级绑定。将来可能会为其他编程语言的绑定提供支持。

远程可编程性

另一种方法是通过高级API使用数据平面管理代理。如图所示,数据平面管理代理可以通过低级API与VPP App(引擎)对话。它可以在一个盒子(或VM或容器)中本地运行。盒子(或容器)将通过某种形式的绑定公开更高级别的API。

这是一种特别灵活的方法,因为VPP平台不会强制使用特定的数据平面管理代理。此外,VPP平台不将通信限制为仅一个高级API。任何人都可以携带数据平面管理代理。这使您可以将高级API /数据平面管理代理和实施与VPP应用程序的特定需求进行匹配。

样本数据平面管理代理

使用高水平API的一个示例是在运行本地ODL实例(Honeycomb)的盒子上将VPP平台实现为应用程序。您可以在生成的Java绑定上使用低级API来与VPP App对话,并通过netconf / restconf NB公开Yang模型。

这将是实现网桥域的一种方法。

VPP的主要特征

一些主要特征包括:

与在内核中运行类似的数据包处理相比,提高了容错能力和ISSU:

  • 崩溃很少需要重启进程
  • 软件更新不需要重新启动系统
  • 开发环境比类似的内核代码更易于使用和执行调试
  • 用户空间调试工具(gdb,valgrind,wireshark)
  • 利用广泛可用的内核模块(uio,igb_uio):DMA安全内存

作为Linux用户空间进程运行:

  • 同一映像可在VM,Linux容器或主机内核中运行
  • KVM和ESXi:通过PCI直接映射的NIC
  • 虚拟主机用户,netmap,virtio半虚拟化NIC
  • 调整/点击驱动程序
  • DPDK轮询模式设备驱动程序

VDP与DPDK集成在一起,支持现有的NIC设备,包括:

  • 英特尔i40e,英特尔ixgbe物理和虚拟功能,英特尔e1000,virtio,虚拟主机用户,Linux TAP
  • 惠普更名为英特尔Niantic MAC / PHY
  • 思科VIC

考虑的安全性问题:

  • 思科安全团队的全面白盒测试
  • 图像段基地址随机化
  • 共享内存段基地址随机化
  • 堆栈边界检查
  • 调试CLI“ chroot”

数据包处理的矢量方法已被证明是主要体系结构上的主要平移/注入路径。

支持的架构

VPP平台支持:

  • x86 / 64

支持的包装型号

VPP平台支持在以下操作系统上安装软件包:

  • 德比安
  • Ubuntu 16.04
  • Centos的7.3

绩效期望

VPP实施的好处之一是它在相对低功耗的计算上具有高性能。如此高的性能基于以下亮点:

  • 用于商用硬件的高性能用户空间网络堆栈
  • 主机,VM,Linux容器的代码相同
  • 集成的虚拟主机用户virtio后端,可实现虚拟机到虚拟机的高速连接
  • L2和L3功能,多种封装
  • 利用同类最佳的开源驱动程序技术:DPDK
  • 通过使用插件可扩展
  • 通过基于标准的API控制平面/业务流程平面

性能指标

VPP平台已显示提供以下近似性能指标:

  • 来自单个x86_64内核的多个MPPS
  • 单个物理主机上> 100Gbps全双工
  • 多核扩展基准测试示例(在UCS-C240 M3上,3.5 gHz,转发了所有内存通道,简单的ipv4转发):
    • 1个核心:9 MPPS进出
    • 2核:13.4 MPPS进出
    • 4核:20.0 MPPS进出

2p10GE,1核,L2 NIC到NIC的NDR速率

下表显示了以下NDR速率:2p10GE,1核,L2 NIC-to_NIC。

2p10GE,1核心,L2 NIC-to-VM / VM-to-VM的NDR速率

下表显示了以下情况的NDR速率:2p10GE,1核,L2 NIC-to-VM / VM-to-VM。

注意:

  • 虚拟网络基础效能基准
  • 所有测试仅针对每个连接,单核
  • 潜在的更高性能,更多连接和更多核心
  • 最新软件:OVSDPDK 2.4.0,VPP 09/2015

NDR率VPP与OVSDPDK

下表显示了VPP与开源报告和商业报告相比的性能。

速率反映了在具有E5-2698v3 2x16C 2.3GHz的Haswell x86平台上测试的VPP和OVSDPDK性能。该图显示了12端口10GE,16核心,IPv4的NDR速率。

https://wiki.fd.io/view/VPP/What_is_VPP%3F#:~:text=Sample%20Data%20Plane%20Management%20Agent.%20One%20example%20of,App%2C%20and%20expose%20Yang%20Models%20over%20netconf%2Frestconf%20NB.

VPP /什么是VPP?读这篇文章就够了相关推荐

  1. 对于驱动TFTLCD,读这篇文章就够了!

    首先在明白操作LCD真正用到的引脚有: 1)数据或命令 RS 2)数据传输线: D0-D15 3)写信号: WR 4)读信号: RD 5)片选信号: CS LCD的操作时序与SRAM控制类似,唯一不同 ...

  2. Maven入门,读这篇文章就够了

    一年前,当我和小伙伴小龙一起做一个外包项目的时候,受到了严重的鄙视.我那时候还不知道 Maven,所以搭建项目用的还是最原始的方式,小龙不得已在导入项目的时候花了很长时间去下载项目依赖的开源类库. 出 ...

  3. 递归算法,读这篇文章或许更有启发

    递归是一种算法技巧,它允许在函数内部调用自己.递归算法通常用于解决分治问题,即将大问题分解为若干个小问题,然后递归地解决这些小问题.最后将所有小问题的答案合并得到大问题的答案.递归算法需要确定一个终止 ...

  4. 十年后2023年再读这篇文章,看看我将会怎么样?

    看到一篇文章不错[清华差生10年奋斗经历] ,写给将要工作的自己,十年后2023年再读这篇文章,看看我将会怎么样? 在2012年收关时刻,看到如此激励的文章,实在是我的幸运.文章讲述了所谓清华差生的奋 ...

  5. 十年后2023年再读这篇文章,看看我将会怎么样

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 看到一篇 ...

  6. Android 8.0新特性(看这篇文章就够了)

    2019独角兽企业重金招聘Python工程师标准>>> 在刚结束不久的谷歌 I/O2017开发者大会上发布的第二个Android O(安卓8.0)开发者预览,并且向普通用户开放了第二 ...

  7. MySQL事务,这篇文章就够了

    原文链接:https://blog.ouyangsihai.cn/ >> MySQL事务,这篇文章就够了 在看这篇文章之前,我们回顾一下前面的几篇关于MySQL的系列文章,应该对你读下面的 ...

  8. 万字心得,PMP学习考试那些事儿,看这篇文章就够了

    声明:文章为原创,首发于知乎,链接:万字长文!PMP考试那些事儿,看这篇文章就够了 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/524966002 以下内 ...

  9. Python-Excel 零基础学习xlwings,看这篇文章就够了

    零基础学习xlwings,看这篇文章就够了 | 一起大数据-技术文章心得 (17bigdata.com) 1.xlwings是什么 2.xlwings安装更新与卸载 3.xlwings详细使用 4.案 ...

最新文章

  1. ARouter::Compiler No module name, for more information, look at gradle log
  2. 实现网页中增加刷新按钮、链接的方法 搜集
  3. 大数运算(2)——大数加法
  4. 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代
  5. vmware的win98安装声音驱动
  6. C#中使用SendMessage进行进程通信,可发送字符串,结构体(不能发送类类型)。
  7. Midway Serverless 发布 2.0,一体化让前端研发再次提效
  8. ExtJs2.0学习系列(1)--Ext.MessageBox
  9. python爬虫微博图片,pyhton爬虫爬取微博某个用户所有微博配图
  10. Python网络爬虫学习笔记(十):PyQuery库的使用
  11. c语言 long 用法,C语言中long long的用法
  12. centos7下安装oracle11gR2
  13. 博客园博客美化相关文章目录
  14. CSS3属性——(二)
  15. 古琴入门-古琴十大名曲-古琴教学——唐畅古琴
  16. 慕课网翁恺老师《面向对象程序设计——Java语言》第一周课程笔记及作业题(设计一个表示分数的Fraction类)
  17. 积分-钉钉考勤-加分
  18. phpmywind 查询结果生成csv文件并下载到本地
  19. Tcl/Tk string详解
  20. 在Linux平台上搭建EasyDarwin,编译代码并简单部署

热门文章

  1. 基于 HTML5 WebGL 的民航客机飞行监控系统
  2. Oier's little dream
  3. 【神经网络与深度学习】CIFAR-10数据集介绍
  4. nginx+uwsgi 部署
  5. ERP-非财务人员的财务培训教(四)------公司/部门的成本与费用控制
  6. Python CGI 编程 | 类FieldStorage的使用
  7. C语言程序设计 认识函数
  8. php模板怎么导入服务器_php项目怎么放到服务器
  9. mysql group by 查询慢_MySQL慢查询优化(线上案例调优)
  10. 动画片动漫迷<未来的未来>高清图片壁纸