VPP(Vector Packet Processing)淺析


VPP簡介

  • VPP(Vector Packet Processing)是思科旗下的一款可拓展的開源框架,提供容易使用的、高質量的交換、路由功能
  • 特點:高性能、運行在普通的cpu上。
  • 優點:高性能、技術成熟、模塊化、靈活性,有豐富的特征集。
  • 可以允許任何人插入新的結點無需改動內核代碼。

模塊化、靈活性、可延展性

  • VPP構建基於“包處理圖”,意味着可以“插入”新的結點,變得容易拓展,可以自定義一些特定的功能。
  • 插件如何運行:運行時,VPP平台從RX rings抓取所有可用包組成一個包向量,構建一個包處理圖(包括插件)。並且圖結點松耦合,使得新的插件易於使用,容易和現存圖結點結合。

包處理的革新

  • 包處理由逐個處理變為處理一批的包(向量包)

VPP使用

  • 你可以在VPP source tree上獨立地構建一個插件。
  • VPP可以用於構建各種包處理應用,可以基於負載均衡、防火牆等等,比如把負載均衡加到vSwitch上。
  • VPP引擎運行在純用戶空間上,你不需要源代碼即可擴展這個引擎的功能。
  • 新的自定義圖結點
  • 重組圖結點
  • 新的低級別APIs

傳統方法

  • 所謂VPP向量報文處理是與傳統的標量報文處理相對而言的。傳統報文處理方式,同時也是人類常用的邏輯思維方式,即:報文是按照到達先后順序來處理,第一個報文處理完,處理第二個,依次類推;A callsB calls C….return return return,函數會頻繁嵌套調用,並最終返回。
  • 簡而言之,傳統報文處理是對到來的包逐個處理,不加分類。
  • 由此可見,傳統標量報文處理有如下缺陷:
  1. I-cache 抖動(cache時間局限性和空間局限性特點)

  2. I-cache misses

  3. 除了擴大cache外,沒有變更方案。

VPP方法

  • 簡而言之,向量包處理采用了“分類”的思想,將一批報文分為一類,用一個圖結點表示。按類處理,如果cache命中,則這一批報文都命中;否則則一批都未命中。未命中時,由傳統的n個包未命中n次變為n個包未命中1次。
  • VPP把一批底層硬件隊列Rx ring收到的包,組成一個Packet Vector或者是一組包,借助於報文處理圖Packet Processing graph來實現處理流程,圖節點graph node把整個過程分解為一個個先后連接的服務node。這一組包(packet vector)被第一個graph node節點的任務處理,然后依次被第二個graph node節點的任務處理,依次類推,
  • 由於向量報文中的第一個報文packet-1為I-cache進行了熱身,向量報文中剩下報文的處理性能可以直接達到極限,I-cache 缺失的固定開銷平攤到了整個向量處理中,使單個報文的處理開銷顯著降低。
    由此可見,向量報文處理解決了標量處理的主要性能缺陷,並有具有如下優點:
  1. 緩解了I-cache抖動問題
  2. 向量報文進行預取緩解了讀時延問題,高性能並且更加穩定
為什么叫向量包
  • 這種方法解決了堆棧地址上堆棧深度/ D緩存未命中相關的問題。 它改善了“電路時間”。 “電路”是抓取來自設備RX環的所有可用分組的循環,形成由按照RX順序的分組索引組成的“幀”(矢量),通過有向圖節點運行分組,並返回到RX 環。 隨着數據包處理的繼續,電路時間基於提供的負載達到穩定的平衡。

豐富的特性

  • VPP可應用於


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM