目錄

在2016年時,P4這個語言才剛出爐不久,直到最近,才有愈來愈多的中文資料出現,也有比較完整的實作資料可以參考。

由於論文需要使用P4這個語言作為我的實作工具,因此整理了一些資料和筆記下來,紀錄於此處。

P4是什麼

  • P4是一種「特定域」程式語言,和C或JAVA這種「通用」程式語言不同。
  • P4得名於一篇2014年在SIGCOMM CCR(Computer Communication Review)發布的論文:"Programming Protocol-Independent Packet Processors",取四個P開頭,而有P4之名。

簡單來說,在現今的網路中,有許多的通訊協定(Protocol),例如arp或者http,而市面上販售的網通產品(如:路由器或者交換器),之所以能夠轉送arp、http或者更多不同通訊協定的封包,是因為那些網通產品已經將功能實作在晶片上,若遇到新的或不認得的通訊協定,則會產生無法預期的行為。

而P4恰好就是拿來處理這樣的情況,在使用者想要實作新的Protocol時,只需要使用P4語言撰寫並將程式部署到實體或虛擬的交換器(Switch)上,便可以讓該Switch認得使用者實作的Protocol。

更具體來說,將Switch想像成海關,而一般的海關可以認得台灣人和美國人,卻無法讓外星人和火星人通行,而P4卻可以透過寫好的程式讓海關能夠辨認外星人和火星人,讓其能夠快速通關。

P4演進

P414和P416分別於2014和2016開始制定,現今主流為P416,和P414有許多的不同點:

  • 保留字:P416刪去了一些P414的保留字(約70多個),並留下了36個保留字,如下所示

  • 架構:P416將P414中經常使用到的功能變成library,也就是下圖中的core.p4

  • 語法

一些重要的參考資料

最後修改日期: 2019 年 7 月 15 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。