NFV 利器 FD.io VPP
在VPP中,报文以向量批处理的形式在节点之间以流水线的方式处理,可以更加高效的利用CPU的i-cache,节点可以动态生成并加入到转发图中,节点分为多种类型,如VLIB_NODE_TYPE_INPUT,为输入节点。可以按照VPP的框架自定义节点如:

其中最重要的是回调函数snat_out2in_node_fn与next_nodes数组,snat_out2in_node_fn代表当数据包进入本node中,node对于一组数据包具体的处理过程。而next_nodes数组则表示该node执行完毕后,选择执行的下一个节点,在该选择上本地node节点有绝对的控制权。于是疑问就出现了,在上述的node定义结构体中并没有选择该本地node输入节点的接口。
在vpp中的L3实现中,利用feature框架完成了一个三层转发子图。该子图的初始节点为ip4-input,终止节点为ip4-lookup,其中子图实现的功能有ip4-acl、ip4-source-check等,其作用为执行数据包进入L3 但在转发forward之前的一些列的L3动作,例如snat的功能在这个子图中完成。典型的注册如下所示:

而snat node输入node的定义则利用了L3 feature框架

最终L3 node的全貌如下:

其中runs_before表明该node的动态下一个节点,而在上述node结构体定义中的next_nodes则为该节点的静态下一个节点。而该node的输入节点则由rx_feature_out2in的值决定,而该值则是有方向的,即网卡的收报方向;换而言之只有从相应的网卡收报才会进入到本地的node处理中,于是利用该特性就可以获取到本地node的输入节点。可以用命令行vppctl show ip features显示。有了FD.io VPP这样相对成熟的框架我们就可以把Neutron中的dataplane组件用VNF来实现,不仅可以获取高性能还避免了用DPDK完全开发,大大减少了工作量,不失为一种很好的Neutron datapl
NFV 利器 FD.io VPP的更多相关文章
- FD.io VPP 技术Neutron VNF vRouter 实现
在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...
- NFV FD.io VPP VM 系统性能调优
Host Setting: 1.关闭power savings mode在BIOS中 2.设置 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governo ...
- FD.io vpp 框架转发图
在ip4-icmp-input 与 ip4-udp-input后可以注册后续的处理函数,ip4-icmp-input根据 icmp的报文类型选择相应的处理函数,而ip4-udp-input根据端口选择 ...
- FD.io 社区中国行暨未来网络技术沙龙 南京站 参会小结
FD.io 社区中国行暨未来网络技术沙龙 南京站,2018 年 3 月 17 日. 开场致辞 Ray 介绍了一些有的没的 ⁃ (Future Event)DPDK summit, FD.io summ ...
- FD.io社区中国行暨未来网络技术沙龙·南京站 会议小结
What is FD.io VPP? FD.io VPP(Fast Data Input/Output Vector Packet Processing)is a new network multi- ...
- CNCF CloudNative Landscape
cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...
- Reading Fast Packet Processing A Survey
COMST 2018 主要内容 这是一篇有关快速包转发的综述,先介绍了包转发的有关基础知识和背景,具体介绍了包转发的主流方法,对这些方法进行了细致详尽的比较,最后介绍了最新的方法和未来的研究方向. 包 ...
- CNCF LandScape Summary
CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database Vitess:itess i ...
- VPP(Vector Packet Processing)配置工具
前言 VPP提供了一个配置工具,让用户可以简单快捷地配置VPP.用户可以通过一些简单的命令配置VPP,功能包括安装及一些基本配置和测试用例. 使用 先安装一个python的pip模块,使用pip安装V ...
随机推荐
- Android While 循环导致的资源占用过高进而导致程序崩溃问题
Timeline: Activity_launch_request time:6562004-14 15:31:25.347: I/dalvikvm(3483): Total arena pages ...
- C#下丢掉.asmx文件的WebService的实现
C#下丢掉.asmx文件的WebService的实现 我在用.net实现Webservice的时候发现需要一个没有任何用处的.asmx文件,但是却没法删除,这两天我实现一个通过接口时想实现dll直接部 ...
- 把python文件编译成exe文件
我用的是py2exe. 下载地址http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 你可以根绝自己的Python版本选择适当的下载 我 ...
- jvm加载class原理
“委托机制”是指先委托父类装载器寻找目标类,只有在找不到的情况下才从自己的路径中查找并载入.这一点是从安全的方面考虑的,试想一下如果有人写了一个恶意的基础类(如java.lang.String)并加载 ...
- javascript练习题(3):基础字符串运算
用两种方法实现下列问题! 1. 把一个字符串转化为驼峰写法 需求:margin-left=>marginLeft 思路一:split 把它转化为一个数组然后修改内容 function conve ...
- 使用代码分析来分析托管代码质量 之 CA2200
vs的代码分析功能:vs菜单 “生成”下面有“对解决方案运行代码分析 Alt+F11”和“对[当前项目]运行代码分析”2个子菜单. 使用这个功能,可以对托管代码运行代码分析,发现代码中的缺陷和潜在问题 ...
- 记一次kali和win8.1的双系统修复!!
简要情况: 原来电脑存在的系统:win7和kali. 后来的系统:win8.1和原本的kali 情况描述:在我装完win8.1后就直接启动到win8.1了没有了grub2的选择启动界面,但是我还是想要 ...
- SUSE Linux 下redis 的坑
前面redis服务器安装-SuSE Linux Enterprise Server 11 SP3一章中安装好提示开放防火墙后的一些坑 前面漏了说明redis作为一个高速数据库,在互联网上,对应的安全机 ...
- Mac + nginx + lua + luasocket + cjson
1. Lua // 官方网站 http://www.lua.org/ 下载源码包// 由于配合 nginx 使用, 所以使用 5.1.X 版本 $ .tar.gz $ cd lua- $ make m ...
- JqGrid在行中自定义自己的东西
$.fn.fmatter.actions = function(cellval, opts) { function baseOption(obj) { return { url: obj.url || ...