什么是FD.IO/VPP
DPDK能干什么我们这里就不用多说了。但FD.io是什么?和DPDK又有什么关系呢?FD.io是 Fast data – Input/Output 的简称,是Cisco提供的若干数据处理的Linux Foundation下开源项目和库的集合。FD.io中包含大名鼎鼎的VPP (Vector Packet Processing) ,是一套基于DPDK的网络帧处理完整解决方案,也就是俗称的懒人包:如果你的应用需求不是特别苛刻,VPP可谓是即插即用。一个make run命令你的系统瞬间就支持以下这些让人眼花缭乱的功能,而你所要做的只是输入命令来配置即可。
图1. VPP特性列表(可滑动),图片来自https://wiki.fd.io/view/VPP/Features
VPP是个延展性很高的应用,一个应用在VPP里以连起来的若干节点 (Graph Node) 组成,每个节点包含上述的一个或多个功能。网络帧在VPP中被储存在网络帧向量Packet Vector中,它也是节点的唯一处理对象,节点也会根据处理结果来决定网络帧的下一个目的地节点。你要是觉得这些功能还不够用,你也可以开发自己的插件Plugin来增加自己的节点。VPP是Run-to-completion模式的,这样能更有效地利用Cache。哦,对了,和DPDK一样,VPP也是运行于用户态的,对虚拟化也有很好的支持。