目前 P4 團隊主要著重於 P4-16,然而 P4-16 目前只有釋出 pre-release 版而已,未來是否會有更改還不確定。
因此多數人所撰寫的 P4 程式都是基於 P4-14 標準,但是若有一天 P4-16 正是釋出之後,就需要將之前所寫的 P4-14 程式都轉換成 P4-16 的規格。
官方目前所釋出的 P4-16 編譯器就提供了快速轉換的功能,主要的原理是透過將 P4-14 先編譯成 HLIR,在將 HLIR 在反向轉換成 P4-16。
轉換方法:
首先需要先安裝 p4c(https://github.com/p4lang/p4c/),依據官方所提供的安裝教學,很快的就可以安裝起來。
補充一下,在編譯完(make check -j4
)之後,可以在執行 sudo make install
讓他安裝到可執行路徑上。
安裝完編譯器之後,即可使用 p4c-bm2-ss
轉換。
p4c-bm2-ss --p4v 14 --pp [輸出檔案] [輸入的檔案]
輸入的檔案請使用最主要的檔案,包含 control 以及 table 等,他會自動去找尋有 include 的檔案加以編譯。
輸出僅會有一個檔案,裡面包含了所有從 P4-14 檔案轉換後的內容(Header~Control Blocks)
轉換好的檔案一樣可以直接使用 p4c-bm2-ss 編譯成 bmv2 simple-switch 這個模擬器去執行。