本文參照了sdnlab上相關文章的搭建推薦。 使用的系統環境為ubuntu 18.04
組件介紹
主要安裝五個組件:
- BMv2:是一款支持P4編程的軟件交換機
- p4c:是一款P4的編譯器
- PI:是P4 runtime的實現,用於控制平面對數據平面的控制。
- mininet:這個之前用過,是一個虛擬的網絡拓撲搭建軟件。
- p4 tutorials :提供了用於學習的示例代碼。例如負載均衡,簡單的隧道機制以及源路由等。
額外說一個
- scapy:一個python庫,提供構建數據包,抓包,解析包等的功能。
開始搭建
這里介紹一個個組件安裝的搭建,然后最后會有一個一鍵安裝的腳本。
搭建前的准備
這里我們先創建一個P4的目錄,然后加入一下環境變量
1 //創建一個p4的文件夾目錄 2 mkdir ~/P4 3 //進入目錄 4 cd ~/P4 5 //寫入環境變量 6 echo "P4_HOME=$(pwd)" >> ~/.bashrc 7 //更新環境變量 8 source ~/.bashrc
安裝Protocol
1 sudo apt-get install autoconf automake libtool curl make g++ unzip 2 git clone https://github.com/google/protobuf.git 3 ./autogen.sh 4 ./configure 5 make 6 make check 7 sudo make install 8 sudo ldconfig
這里比較比較建議加上git checkout v3.2.0
安裝bmv2
在p4目錄中
1 git clone https://github.com/p4lang/behavioral-model.git bmv2 2 cd ~/P4/bmv2 3 //安裝依賴 4 ./install_deps.sh 5 //編譯bmv2 6 ./autogen.sh 7 ./configure 8 make 9 //安裝bmv2 10 sudo make install 11 //更新共享庫 12 sudo idconfig 13 //測試 14 sudo make check
安裝p4c
這里從陳翔學長哪里剽到了一個直接安裝p4c的腳本 installp4c.sh
原來的安裝方法
1 git clone --recursive https://github.com/p4lang/p4c.git 2 //安裝依賴 3 sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev pkg-config python python-scapy python-ipaddr tcpdump cmake 4 //用於生成文檔 5 sudo apt-get install -y doxygen graphhviz texlive-full 6 //構建 7 mkdir build 8 cd build 9 cmake .. [-DCMAKE_BUILD_TYPE=RELEASE|DEBUG] [-DCMAKE_INSTALL_PREFIX=<path>] [-DENABLE_DOCS=ON (default off)] [-DENABLE_P4RUNTIME_TO_PD=OFF (default on)] 10 //安裝 11 sudo make install
安裝PI
1 git clone git@github.com:p4lang/PI.git 2 //安裝依賴 3 sudo apt-get install libjudy-dev libreadline-dev 4 git submodule update --init --recursive 5 //配置 6 ./autogen.sh 7 ./configure [--with-bmv2] [--with-proto] 8 9 make
關於這個參數,可以去原庫中看readme
安裝mininet
這個可以參考以前源碼安裝mininet的blog 源碼安裝mininet
安裝p4-tutorials
1 git clone https://github.com/p4lang/tutorials
這里大致的組件就安裝完了。
一鍵安裝
這里是sdnlab上P4編程理論與實踐提供的一鍵配置。 p4-quick 先安裝依賴
sudo apt-get update sudo apt-get install automake cmake libjudy-dev libpcap-dev libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libevent-dev libtool flex bison pkg-config g++ libssl-dev -y sudo apt-get install cmake g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev libboost-graph-dev llvm pkg-config python python-scapy python-ipaddr python-ply tcpdump curl -y sudo apt-get install libreadline6 libreadline6-dev python-pip -y 這里如果提示廢棄就 sudo apt install libreadline-dev sudo pip install psutil sudo pip install crcmod
其中部分倉庫克隆非常的慢,建議搞個梯子會快很多。
然后運行上述那個p4-quick的env_up.sh腳本,就可以搭建完成了。
其實在安裝過程中有許多與上述內容有所出入的修改,在后續在一一說明。