FD.io了解

参考文章:https://www.metaswitch.com/blog/fd.io-takes-over-vpp

FD.io旨在提供一个模块化、可扩展的用户态报文处理框架,能支持高吞吐量、低延迟、高资源利用率的IO服务。
FD.IO范围:1.基础用户态IO处理框架(DPRE)。2.报文处理编程框架及基本业务(对应SDK)。3.控制面代理。(Manage & Control)
VPP是FD.io Project的核心组件。(相当于DPRE)
VPP架构模型:VPP Plugin API+VPP
----矢量报文处理:Batch处理报文、多核并行处理
----Plugin机制:插入新node、Rearrange报文处理流程、硬件卸载
VPP运行框架——基于Node的业务运行及调度框架

Node调度框架的主要流程:1.从Input类型节点获取输入报文(采用批量收发方式)。2.每个节点进行报文处理后,将报文信息写到该worker线程的pending-frame-buff中进入下一个节点的调度。每个node节点都有一块Pending-frame-buff;3.每个Node节点完成这组packetc处理后,进入node-dispatch动作,Node节点内部可以根据报文类型代码静态制定下一个节点ID或者通过查表后获得下一个节点ID,从而完成Node有向图的串接执行。概括:Node抽象框架目的是解决业务串接;相当于是多个node节点构成一个软pipeline处理模式。

优缺点:Node抽象粒度过细,而node间都uxuyao一次出队入队动作,导致node的调度开销比较过大;
其pipeline处理模式有利于长业务流程;长业务流程采用pipeline后,可以减少node间的cache冲突导致大量的cache miss。

[A blog:FD.io Takes Over VPP and Unites with DPDK to Accelerate NFV Data Planes to Outright Nutty Speeds]
1.思科首先研究将VPP引入到开源社区并集成在DPDK加速的Open vSwitch中,OVS是大多数人在考虑NFV数据面架构时首先想到的东西。但是,FD.io不仅适用于OVS,还适用于其他的虚拟化转发引擎,如标准的linux路由器版本,Click模块化路由器。事实上,VPP也适用于许多的架构(x86,ARM和PowerPC)和部署环境(裸机,虚拟机,容器)。
2.在DPDK的轮询模式驱动程序(PMD)和环形缓冲区的支持下,VPP旨在通过减少流/转发表高速缓存中未命中率,同时使用并行方法替换标准创航数据包查寻,来提高平面吞吐量。短生命周期流以及高度动态变化的报文,会使caches变得无能、失效。
3.按照CPU的说法,这个功能可以利用信息指令缓存(i-cache),这就是VPP和FD.io在当前所有的文档中提到的。 它还提到了支持数据高速缓存(d-cache),用于存储支持i-cache所需的预取数据。 VPP主要倾向于i-cache。
4.NFV工作者对FD.IO使用的一些术语非常熟悉,首先拿VPP来说,它使用了和NFV SFC相似的命名方法。
5.由于瓶颈是高速缓存,即使在高度调优的全用户空间的DPDK加速环境中,交换机流水线以串行模式运行,每次处理一个数据包。即使有一个巨大的DPDK FIFO塞满了 数据包,它们也会通过"转发图"单独发送,在计算方面,这被称为标量处理。这是一条通往全面OVS管道的缓慢之路。
6.VPP按照一个简单的原则进行操作,这个原则有个(典型的)学名:时间局部性。具有同属性的数据包使用相同的资源,并访问相同的内存位置,VPP利用这个特性对数据包集合处理。
7.FD.io在Intel体系结构或x86环境下运行时很大程度依赖于DPDK的工具集合。DPDK PMDs定期询问其large FIFO环以等待收集数据包,这样大大减少了CPU中断的开销。VPP引擎并不是仅仅抓取线路前端的数据包,而是将大量的数据包接受到一个预定的最大值。
8.,Nx分组的“超帧”到达到第一个图节点,在该第一个图节点中,以太网报头被解码并且以太网类型被识别。 虽然我们的时间局部性理论表明,EtherType在矢量(即IPv4)中将是相同的,但自然有一组不同的数据包(即IPv6)成为超帧的机会。 如果是这种情况,则转发图叉和超帧将划分为两个“子网”,每个子网具有不同的下一跳图节点。
9.VPP技术,是一个高度模块化,能够方便快速的嵌入新节点,而不用对底层代码和内核有任何改变。这使开发人员能够轻松地构建具有不同转发图的任意数量的数据包处理设备,其中不仅包括那些支持交换机和路由器,还包括入侵检测和防御,防火墙或负载平衡器。 抛出一些OpenDaylight管理代理的本地支持,FD.io使用它的vSwitch / vRouter示例代码,并为NFV数据平面奠定了基础,能够实现一些相当疯狂的性能。

原文地址:https://www.cnblogs.com/enchel/p/8445137.html

时间: 2024-10-10 08:49:54

FD.io了解的相关文章

Linux基金会发布企业开源项目:FD.io

2016年2月11日,Linux基金会和行业合作伙伴宣布新项目:FD.io.这个新项目致力于构建下一代数据中心及服务供应商的开源技术,为网络和存储应用程序创建一个IO服务框架.IO是生态系统“软件定义一切”新兴的一部分.对于像SDN.NFV和软件定义的存储,IO旨在抽象底层基础设施的数据处理,使得应用程序更便携.更灵活.如果IO能够完美实施,它将提供显著的性能优势.          FD.io的目的是提供有助于实现高性能IO服务的源代码,特别是在网络和存储领域.项目已经发布了第一个软件平台并承

FD.io vpp 框架转发图

在ip4-icmp-input 与 ip4-udp-input后可以注册后续的处理函数,ip4-icmp-input根据 icmp的报文类型选择相应的处理函数,而ip4-udp-input根据端口选择相应的处理函数. 注册函数分别为:ip4_icmp_register_type  udp_register_dst_port L3 Featrues 的注册可以见我之前的博客:http://www.cnblogs.com/scottieyuyang/p/5911619.html

NFV FD.io VPP VM 系统性能调优

Host Setting: 1.关闭power savings mode在BIOS中 2.设置 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 为 performance 3.添加启动参数GRUB_CMDLINE_LINUX="intel_iommu=on isolcpus=1-13 nohz_full=1-13 rcu_nocbs=1-13 hugepagesz=1GB hugepages=64 default_hugepagesz=

Java问题定位方法总结

背景   "线下没问题的". "代码不可能有问题 是系统原因"."能在线上远程debug么"    线上问题不同于开发期间的bug,与运行时环境.压力.并发情况.具体的业务相关.对于线上的问题利用线上环境可用的工具,收集必要信息 对定位问题十分重要.    对于导致问题的bug.资源瓶颈很难直观取得数据,需要根据资源使用数据.日志等信息推测问题根源.并且疑难问题的定位通常需要使用不同的方法追根溯源.    这篇wiki我对自己使用过的工具做了整理

Vector Packet Processing (二)配置开发环境

本篇主要是介绍如何配置VPP的编译开发环境,具体配置请参考VPP开发文档:https://wiki.fd.io/view/VPP/Setting_Up_Your_Dev_Environment 搭建开发环境 首先我们需要在主机上安装Vagrant软件和虚拟机,并在虚拟化里面设置编译开发环境,当然也可以不在虚拟机里面直接在主机host上来配置VPP的编译开发环境也是一样的,我这里面主要是刚开始使用对VPP还不熟悉的时候还是老老实实的按照官方文档上面的步骤来吧. 默认的配置是支持VMWare和Vir

LINUX 2.6.18-238 local root exp

/* * * * 1-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=0 * 0 _ __ __ __ 1 * 1 /” \ __ /”__`\ /\ \__ /”__`\ 0 * 0 /\_, \ ___ /\_\/\_\ \ \ ___\ \ ,_\/\ \/\ \ _ ___ 1 * 1 \/_/\ \ /” _ `\ \/\ \/_/_\_<_ /''___\ \ \/\ \ \ \ \/\`''_

4.Gen_Event行为

本章应和 gen_event(3) 相结合阅读,它包含了所有接口函数和回调函数的详细说明. 事件处理原理 在OTP中, 事件管理器 (事件管理器)是一个命名对象,可以给其发送事件.一个 事件 (event)可以是诸如一个错误.一个警报或者是某种应被记录的信息. 在事件管理器中,可以安装零个.一个或者多个 事件处理器 (事件处理器).当事件管理器被通知有一个事件时,所有安装了的事件处理器都会来处理该事件.例如,一个处理错误的事件管理器可以默认安装了一个将错误消息打印到终端的处理器.如果在某个特定期

Cisco VPP简介

一.简介 VPP全称Vector Packet Processing,是Cisco2002年开发的商用代码. 2016年2月11号,Linux基金会创建FD.io项目.Cisco将VPP代码的开源版本加入该项目,目前已成为该项目的核心. VPP运行于用户空间,支持多种收包方式,常用的是DPDK. VPP主要有两个主要功能:框架可扩展:成熟的交换/路由功能. 二.扩展性 1.结点操作 VPP平台是通过graphnode串联起来处理数据包,类似于freebsd的netgraph. 通过插件的形式引入

由OpenResty粘合的企业Web架构

前言:    2012年2月章亦春(agentzh)在Tech-Club的一次线下聚会上以<由Lua 粘合的Nginx生态环境>为主题做了演讲,分析了企业Web架构的趋势,即一个看起来完整的Web应用,往往在后台被拆分成多个Service,由多个部门分别实现,而每个部门提供給其它部门的都是http协议resful形式的接口,随后介绍了一些Nginx模块,最后讲到了将Lua嵌入到Nginx,对之所以采用Nginx+Lua来构建给出了原因.相关链接:http://www.tech-club.org