一、簡單介紹
VPP全稱Vector Packet Processing。是Cisco2002年開發的商用代碼。
2016年2月11號,Linux基金會創建FD.io項目。Cisco將VPP代碼的開源版本號加入該項目。眼下已成為該項目的核心。
VPP執行於用戶空間,支持多種收包方式,經常使用的是DPDK。
VPP主要有兩個主要功能:框架可擴展;成熟的交換/路由功能。
二、擴展性
1、結點操作
VPP平台是通過graphnode串聯起來處理數據包。相似於freebsd的netgraph。
通過插件的形式引入新的graph node或者又一次排列數據包的gpragh node。將插件加入到插件文件夾中,執行程序的時候就會自己主動載入插件。
另外插件也能夠依據硬件情況通過某個node直接連接硬件進行加速。
VPP平台能夠用於構建不論什么類型的數據包處理應用。比方負載均衡、防火牆、IDS、主機棧。也能夠是一個組合,比方給負載均衡加入一個vSwitch。
通過創建插件。能夠隨意擴展例如以下功能:
• 自己定義新的圖結點
• 又一次排列圖結點
• 加入底層API
加入插件例如以下圖所看到的:
2、可編程能力
VPP還提供了基於共享內存或者消息隊列的高性能內部API。眼下VPP平台支持C和JAVAclient進行內部API綁定。
例如以下圖所以,我們完畢一個外部應用對VPP進行操作:

以上的編程能力是針對內部API的調用,另外還能夠支持遠程可編程能力。
遠程可編程能力能夠通過Data Plane Management Agent來實現。
通過外部API與Data Plane Management Agent進行通信。
Data Plane Management Agent通過內部API與VPP應用(引擎)進行通信。
這是一個很靈活的方法,不論什么人能夠加入,可是須要外部API和Data Plane Management Agent匹配。以實現特定需求的VPP應用。
下圖展示Agent對接VPP和外部程序:

案例Honeycomb Agent:
HoneycombAgent通過netconf和restconf公布了yang模型的VPP功能。 像OpenDaylight 這樣支持netconf/yang的控制器能夠掛載Honeycomb 管理代理來工作。而OpenDaylight支持OpenStack Neutron。所以例如以下圖所看到的OpenStack Neutron能夠集成到vpp來:

三、網絡功能
1、網絡特性
VPP擁有的網絡特性例如以下:
• 高速查找路由表、CAM表
• 隨意n元組分類
• 商用級別的交換/路由功能
VPP能提供的全部功能例如以下:

2、網絡性能
多核基准性能樣例 (UCS-C240 M3, 3.5gHz,全部內存通道轉發ipv4):
• 1 core: 9 MPPS in+out
• 2 cores: 13.4 MPPS in+out
• 4 cores: 20.0 MPPS in+out
以下幾個圖展示的是和OVS+DPDK的性能對照:

下圖是在Haswell x86 架構的E5-2698v3 2x16C 2.3GHz上測試,圖中顯示了12口10GE,16核。ipv4轉發:

資料來源於:https://fd.io/
歡迎加入VPP討論群:417538415