P4 簡介


P4 的簡介

接下來,我們將通過回答問題的方式來介紹P4。

1. P4 是什么?

  • P4是一門編程語言,用於控制網絡設備中的數據包轉發平面。它與C語言、Python等編程語言相比,更加擅長於控制網絡數據的轉發。

2. P4 的特點是什么?

2.1 目標獨立
  • 解釋:P4可以在不同類型的機器上編譯和運行,比如CPU、FPGA、片上系統、網絡處理器和 ASIC。
  • 額外補充:P4交換機稱呼的來源,P4常用於數據包的轉發;
2.2 協議獨立
  • 解釋:P4 甚至不原生的支持 IP、Ethernet、TCP、VxLAN 或MPLS等常見協議。
  • 實際處理:P4 程序員需要描述所需協議的標題格式字段名稱,這些協議編譯好后,在目標設備進行執行。
2.3 可重新配置
  • 解釋:P4 能夠在部署后更改處理數據包的方式(也許多次);

3. 組成部分

3.1 解析邏輯
  • 解釋:P4 支持定制數據包頭的分析邏輯,比如 TCP/IP協議中使用的典型頭部和應用程序中的特定頭部
3.2 標題
  • 解釋:標題定義描述數據包格式並為數據包中的字段提供名稱。該語言允許自定義的標題名稱和任意長度的字段,
  • 舉例:典型的標題格式,802.3以太網標題定義可能稱為"以太網",由名為"dest"的 48 位字段組成,然后是 48 位"src"字段,然后是16 位"type"字段。
3.3 解析器
  • 解釋:P4 解析器是一種有限的狀態機器,可走入的分節流,並根據編程解析圖提取headers
  • 舉例:提取以太網的源、目的地、類型字段,並根據類型字段中的價值執行進一步提取,比如 ipv4、ipv6 或 MPLS。
3.4 狀態處理
  • P4 支持程序員以 registerscountersmeters 的形式保持狀態;
3.5 通用匹配操作表
  • P4 的關鍵組件是一組用戶定義的 match-action 表。P4 將所有匹配操作表視為通用,讓用戶通過控制平面添加匹配操作規則。
3.6 匹配操作處理
  • P4的基礎是匹配動作管道的概念。從概念上講,轉發網絡數據包或幀可以分解為一系列表查找和相應的頭操作。在 P4 中,這些操作稱為操作,通常包括諸如根據所學轉發狀態的查找結果將字節字段從一個位置復制到另一個位置等內容。P4 僅處理數據包轉發設備的數據平面。它沒有指定控制平面,也沒有指定控制平面和數據平面之間通信狀態的任何確切協議。相反,P4 使用表的概念來表示轉發平面狀態。必須提供控制平面和各種 P4 表之間的界面,以便控制平面在程序中注入/修改狀態。此接口通常稱為程序 API。
3.7 表
  • 解釋:P4 表包含用於轉發數據包的狀態。表由查找鍵和相應的一組操作及其參數組成。
  • 舉例:將一組目標 MAC 地址存儲為查找鍵,相應的操作可能會在設備上設置輸出端口,並/或增加計數器。表及其關聯操作幾乎總是按順序鏈接在一起,以實現完整的數據包轉發邏輯,盡管抽象地,可以構建一個包含所有查找關鍵信息和完整輸出操作集的單個表。
3.8 操作
  • 解釋:P4 中的操作描述數據包字段和元數據操作。在 P4 上下文中,元數據是關於一個未直接從解析器中提取的包的信息;
  • 舉例:幀到達的輸入界面,示例操作的英文描述可能是"逐個減損 IPv4 TTL字段"或"將輸出端口表中的 MAC 地址復制到傳出的包頭中"。 P4 定義所有目標必須提供的標准元數據以及由特定目標的作者提供的目標特定元數據。

4. 幾種典型芯片

4.1 FPGA
  • 簡單理解:怎么鍛造怎么做,出廠后,還可以靈活鍛造;

  • 解釋:FPGA (Field Programmable Gate Array,現場可編程門陣列),FPGA工程師的任務就是通過改變物理上的連接關系,實現各種邏輯和運算功能;

  • 優點:FPGA最強大的地方在於,可以靈活實現各種結構,對事件進行即時響應,可以靈活的支持不同的功能;

  • 缺點:不可能對每個門電路進行優化,用戶連接只在一定顆粒度上是可行的。比起專用芯片來,速度慢、功耗大。

    受工藝限制,比起專用芯片來,量產成本高很多。

4.2 CPU
  • 簡單理解:怎么編程,怎么做;

  • 解釋:CPU(Central Processing Unit,中央處理器),它在電路板上的地位是配置和控制其它所有設備;

4.3 ASIC
  • 簡單理解:讓你怎么用,你就怎么用;
  • 解釋:ASIC(Application Specific Integrated Circuit,專用集成電路),為了應對某一特定領域大量的需求,優化到每一個門電路,在性能上做到極致;
  • 好處:好處是批量生產成本低、速度快(比FPGA更迅速)、能耗低;
  • 缺點:犧牲了通用性,主要功能無法更改;
4.2 GPU
  • 解釋:GPU(Graphic Processing Unit,圖形處理器),用於分擔CPU對顯示部分主要的工作量;
  • 好處:比較靈活的配置多進程,並行計算能力比CPU有數十倍的提升;
  • 缺點:順序運算能力遠不如CPU;
  • 應用:通常用於並行計算加速,跟圖形已經沒有關系了;
4.3 TPU
  • 解釋:TPU(Tensor Processing Unit,張量處理器),谷歌為了深度學習開發的芯片;
  • 優點:對矩陣的運算做了優化,適配自己的深度學習軟件框架TensorFlow;
  • 缺點:由於深度學習的算法目前還處於迅速演進過程中,對深度學習ASIC的高度定制,比如針對某種神經網絡的定制,是件高風險的事情。也許上午花了上千萬定制的ASIC剛剛問世,下午就出現一種效率提高10倍的算法,那這塊ASIC也就幾乎沒有什么價值了;

參考文獻

  • Programming Protocol-Independent Packet Processors, SIGCOMM, 2014.


免責聲明!

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



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