實驗8:數據平面可編程實踐——P4


一、實驗目的

  1. 掌握V1Model框架下P4_16的程序結構和基本語法
  2. 能夠運用 P4 進行簡單數據平面編程

二、實驗環境

  1. 下載虛擬機軟件Oracle VisualBox或VMware;
  2. 在虛擬機中安裝Ubuntu 16.04 Desktop amd64,並安裝完整Mininet和P4開發環境;
  3. 提供P4鏡像P4-Suite2018.ova,提取碼:egwf

三、實驗要求

學習P4官方示例教程,鏈接:https://github.com/p4lang/tutorials,了解P4-16版本的基本語法、基於V1Model的P4代碼結構,完成如下練習:

(一)基本要求

熟悉使用P4實現交換機IPv4的基本轉發原理,編寫P4程序,在下面的拓撲中實現IPV4 隧道轉發。

  1. 編寫補充basic_tunnel.p4中的代碼並運行

  2. 您現在應該會看到一個 Mininet 命令提示符。輸入xterm命令打開h1和h2兩個終端

  3. 先在主機2的界面輸入 ./receive.py啟動服務器以接收消息

  4. 在h1的界面輸入./send.py 10.0.2.2 "SDN last Lab"

    h2接收到h1的消息

  5. 使用隧道進行測試,在h1中發送消息給h2
    ./send.py 10.0.2.2 "byebye SDN" --dst_id 2

    使用隧道通信時根據指定的 dst_id 進行轉發

四、個人總結

  • 實驗難度:難,需要學習p4相關知識,並且要補充寫很多代碼,實驗過程中遇到了一點問題,進行地不是特別順利

  • 遇到的問題:

    • make run 運行報錯,檢查代碼后發現是代碼寫錯了,不該加參數的地方加了個參數
    • 使用隧道進行轉發時h2收不到報文,檢查時發現在更新解析器時在state parse_ethernet中忘記了添加TYPE_MYTUNNEL: parse_myTunnel;
    • make run運行失敗后一直都無法再次運行成功,需要用make stop進行失敗環境清除
  • 個人感想:
    在這次的實驗過程中學會了V1Model框架下P4_16的程序結構和基本語法,能夠運用 P4 進行簡單數據平面編程,感覺這次在閱讀文檔學習p4方面能力有所提升,也許是因為這次翻譯比較給力吧,挺到位的沒有什么障礙。只是在編寫代碼方面還是需要加強,因為在Linux環境下沒安裝IDE,代碼出錯了也不太容易找到,debug很搞心態。實驗中遇到的問題大多數都是因為basic_tunnel.p4的代碼編寫造成的問題。對於p4的編寫這次實驗還是停留在一知半解的狀態,雖然能做到基本要求,但是不能深刻理解,還需要多花點時間學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM