在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的更多相关文章

  1. FD.io VPP 技术Neutron VNF vRouter 实现

    在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...

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

    Host Setting: 1.关闭power savings mode在BIOS中 2.设置 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governo ...

  3. FD.io vpp 框架转发图

    在ip4-icmp-input 与 ip4-udp-input后可以注册后续的处理函数,ip4-icmp-input根据 icmp的报文类型选择相应的处理函数,而ip4-udp-input根据端口选择 ...

  4. FD.io 社区中国行暨未来网络技术沙龙 南京站 参会小结

    FD.io 社区中国行暨未来网络技术沙龙 南京站,2018 年 3 月 17 日. 开场致辞 Ray 介绍了一些有的没的 ⁃ (Future Event)DPDK summit, FD.io summ ...

  5. FD.io社区中国行暨未来网络技术沙龙·南京站 会议小结

    What is FD.io VPP? FD.io VPP(Fast Data Input/Output Vector Packet Processing)is a new network multi- ...

  6. CNCF CloudNative Landscape

    cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...

  7. Reading Fast Packet Processing A Survey

    COMST 2018 主要内容 这是一篇有关快速包转发的综述,先介绍了包转发的有关基础知识和背景,具体介绍了包转发的主流方法,对这些方法进行了细致详尽的比较,最后介绍了最新的方法和未来的研究方向. 包 ...

  8. CNCF LandScape Summary

    CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database Vitess:itess i ...

  9. VPP(Vector Packet Processing)配置工具

    前言 VPP提供了一个配置工具,让用户可以简单快捷地配置VPP.用户可以通过一些简单的命令配置VPP,功能包括安装及一些基本配置和测试用例. 使用 先安装一个python的pip模块,使用pip安装V ...

随机推荐

  1. while循环的基本用法

    while是常用的循环结构之一 1.格式: while(条件){ } 2.基本知识点 1)puts(“字符串”).换行输出一个字符串 2)死循环.. while(1){ } 代码如下:

  2. Ubuntu 12.04(所有ubuntu发行版都适用)sudo免输入密码

    首先执行以下命令(该命令用来修改 /etc/sudoers 文件): $ sudo gedit /etc/sudoers 然后把  %sudo    ALL=(ALL:ALL) ALL  这行注释掉, ...

  3. the selected server is enabled,but is not configured properly.Deployment to it will not be permitted

    用Tomcat添加部署项目的时候报错: the selected server is enabled,but is not configured properly.Deployment to it w ...

  4. Java乔晓松-android中的帧动画FrameByFrame

    先看效果后上代码: 动画开始---- 动画切换的界面---- 动画播放完毕后的跳转界面----- 重要的方法: imageView.setBackgroundResource(R.anim.frame ...

  5. CAS-ticket not recognized

    描述:项目用单点登陆后,在页面中刷新时报错,错误信息如下: Servlet.service() for servlet default threw exception: org.jasig.cas.c ...

  6. CentOS 安装 Mogodb(在线 && 离线)

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html 先说推荐安装:在线安装,跟着官方走可以避免一些问题 新学Mon ...

  7. .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...

  8. USACO 4.2 Drainage Ditches(网络流模板题)

    Drainage DitchesHal Burch Every time it rains on Farmer John's fields, a pond forms over Bessie's fa ...

  9. freemarker 遍历 hashmap 到select option

    <select id="experience"> <option value ="">--请选择--</option> &l ...

  10. HttpURLConnection传JSON数据

    try { //创建连接 URL url = new URL(url); HttpURLConnection connection = (HttpURLConnection) url.openConn ...