事情的起因

  1. 實驗需要安裝 p4 環境
  2. 我考慮到我自己的電腦效能不足,因此打算在本機安裝
  3. github上官方倉庫的安裝教程老舊,都是在 ubuntu14.04或者ubuntu16.04
  4. 我長時間用的linux系統是 ubuntu20.04

鑑於以上原因,我開始自己對p4安裝的專研。。

這個是我自己寫的shell指令碼,已經在 ubuntu 20.04上測試通過


先放上官網

[p4 github](https://github.com/p4lang/)
[p4 官網](https://p4.org/)

然後是踩的坑

  1. 使用了anacond,使得後續找不到python庫,另外使用sudo或root安裝庫會導致安裝的位置混亂
  2. 按照官方教程安裝,由於版本比較舊,導致原始碼編譯不通過,通過更新編譯不通過的原始碼包會因為p4各個模組的版本之間的依賴問題使得環境檢測make check出錯
  3. 計算機效能較差,編譯卡死過很多次

解決方案

以p4c著手,倒推各個依賴原始碼的版本,當依賴的版本無法編譯時,更新原始碼和依賴該原始碼的模組

以下是我自己寫的shell指令碼對應的解釋



設定各個模組的版本(因為各個版本之間有特定的以來關係)



配置 ovs 並將安裝日誌寫入對應檔案



mininet 的安裝,最後一行是 mininet 的測試,需要啟動 ovs ( ovs-ctl start )



p4 安裝中重要的依賴關係:protobuf



p4安裝中重要的依賴關係:grpc



bmv2 和 PI 模組的重要依賴



PI 模組的編譯安裝



bmv2 模組的編譯安裝



p4c 的編譯安裝



p4 使用參考文件

至此就安裝好了,指令碼中有些 make check 可以安裝好再測試.....

因為如果之前安裝過 p4,但出現了錯,註釋掉的那些 make check 可能導致指令碼報錯停止。。。

由於時間比較匆忙,沒有做過多的 p4 介紹,,有時間再新增內容吧。。。