前一屆的 P4 developer day 提供了實用的 P4-16 小抄讓參與實作的會眾能夠更輕鬆的撰寫 P4 程式。
官方的 cheat sheet 網址如下:
https://p4.org/assets/P4WS_2018/p4-cheat-sheet.pdf
P4 語言相關研究及推廣
前一屆的 P4 developer day 提供了實用的 P4-16 小抄讓參與實作的會眾能夠更輕鬆的撰寫 P4 程式。
官方的 cheat sheet 網址如下:
https://p4.org/assets/P4WS_2018/p4-cheat-sheet.pdf
去年年底的 ONF Connect 活動投影片以及影片已釋出
Next-Gen SDN 議程軌中包含了與 P4, Stratum 以及 UPAN 有關的議程
點擊下列網址獲得更多資訊:
https://www.opennetworking.org/onf-connect-2018-collateral/
上一篇講述了 P4 IR 以及 Visitor 是如何運作的,本篇將講述如何把 Midend compiler 加入到自訂的 Compiler 當中。
在講 Midend 之前,首先要先講一下 IR 大致的架構,以及目前 P4 Copmiler 處理 IR 的方式。
本文是基於 p4c 中的 compiler-design.pptx 文件所撰寫。
上回提到了如何新增一個 P4 Compiler 專案,但卻未在主程式(main.cpp)中新增任何相關的程式
這一偏要說明如何在 main 中產生 IR 並以 JSON 格式輸出 IR 內容。
閱讀全文〈P4 Compiler 系列 – Options, Parsers 以及 Frontend〉
p4c (https://github.com/p4lang/p4c) 提供了 P4 Compiler 基本需要的函式庫如 IR, Frontend 及 Midend 等。
若要自行撰寫一個 Backend compiler,則只需要引用 p4c 中提供的函式庫即可。
閱讀全文〈P4 Compiler 系列 – 建立一個 backend compiler〉
這邊先回顧一下編譯一個 P4-16 程式時所需要的大略步驟:
已目前普遍 bmv2 simple_switch 為例,在主程式最前方會先引用 core.p4 以及 v1model.p4 這兩個檔案
core.p4 包含了一些 P4 常用的核心功能,舉例來說他定義了 Parser & Deparser 參數的格式(packet_in, packet_out),或是常用的 Error 類型等等。
基本上,並沒硬性規定一定要引用 core.p4,例如目標並不支援可編程的 Parser/Deparser,則可以不用引用。
接下來幾個章節會簡介目前 P4 Compiler 的設計,以及如何從頭開始撰寫一個新的 P4-16 package 並搭配自己寫的 P4 backend compiler 以及自己定義的 target binary。
最新版的 P4 Compiler 可以至 https://github.com/p4lang/p4c 下載,該 Compiler 支援了 bmv2 (v1model + simple switch), ebpf, graph(Pipeline 視覺化用) 以及一個測試用的 Compiler。
閱讀全文〈P4 Compiler 系列 – 簡介 Compiler 架構〉
這一篇要說明 P4-16 是如何將原有 P4-14 許多預設的功能拆出來透過像是 library 的方式打包,以及一個 P4-16 的主要的骨架/藍圖是如何去撰寫的。
在設計好 Table 以及 Action 之後,需要將它們放於 Control block 當中。
閱讀全文〈P4-16 系列 – Control block〉