P4 compiler(p4factory) 的安裝和使用

最近在研究SDN P4 的編譯器(p4factory),以下是關於P4的安裝和簡要使用。

p4factory安裝

1.下載P4源碼
github上(https://github.com/p4lang/p4factory) 有開源的P4源碼下載,在這裏,我採用的是ssh的下載方式。

git clone git@github.com:p4lang/p4factory.git

記得此步驟需要在自己電腦上設置ssh key,不然會提示no RSA,具體設置比較簡單,自行百度。

2.安裝git submodules

cd p4factory
git submodule update –init –recursive

3.下載安裝依賴 (以下命令均在…/p4factory下執行)

./install_deps.sh

這一步要注意了:
1.官方readme上的運行環境明確寫明是Ubuntu 14.04,親測12.04不能使用(apt-get install thrift-compiler會失敗),更高版本的Ubuntu應該也能用;
2.關於在虛擬機安裝的,最重要的一點,內存一定要夠大,不然這步會失敗(因爲宿主機的系統是Ubuntu12.04,由於種種原因沒有升級系統,於是在虛擬機上裝了個Ubuntu14.04,分配1G內存,重複多次Readme上的安裝步驟,都沒有成功,居然也沒有提示是內存不夠0.0,後來在google上才發現了這個困擾已久的問題,於是果斷跑去服務器虛擬機上裝了個8G的Ubuntu14.04,內存大,任性,終於運行成功了。

4.設定veth和makefile,安裝完畢
第3步通過之後,接下來應該沒什麼問題了。

sudo ./tools/veth_setup.sh
./autogen.sh
./configure

5.啓動
接下來進入p4factory/target,target裏面的便是完整的model了,隨便選擇一個編譯就可以了,下面選擇的是simple_router

  cd p4factory/targets/simple_router/
  make bm
  sudo ./behavioral-model

啓動如下:

p4@ubuntu:~/p4factory/targets/simple_router$ sudo ./behavioral-model 
[sudo] password for p4: 
No PD RPC server address specified, using 127.0.0.1:9090
No listener specified, switch will run in standalone mode

P4 Program:  simple_router

Starting RPC server on port 9090

至此,p4factory安裝完畢了。

p4factory的簡單使用

下面簡要介紹一下p4 compiler的使用,compiler一般分爲前端(front)和後端(back),p4–>target switch的編譯器也是,這裏的前端主要是生成P4的依賴關係圖(TDG),有利於分析流水線的步驟和挖掘流水線的併發性,而後端主要就是做映射了,把流表映射到各個流水級裏。這裏主要是簡單使用p4factory生成TDG。
其實很簡單,我們選擇一個完整的P4程序(p4factory/target裏面的每一個model就是完整的p4程序裏),這裏,我們採用上述的simple_router。

cd p4factory/targets/simple_router/p4src
p4-graphs simple_router.p4

就會在 …/simple_router的文件夾上生成3個png文件了:
simple_router.parser.png simple_router.ingress.tables_dep.png simple_router.tables.png

具體的代碼和關係依賴接下來再分析。

參考鏈接:
1 https://github.com/p4lang/p4factory
2 https://takeshi.tw/%E6%9E%B6%E8%A8%AD-p4-%E6%A8%A1%E6%93%AC%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章