實驗8:數據平面可編程實踐——P4
基礎要求
首先進入/P4/tutorials/exercises/basic_tunnel
在basic_tunnel.p4
中補全代碼,make run
運行,之后可以看到啟動mininet
輸入xterm h1 h2
,啟動命令行
在h2中運行./receive.py
在h1中輸入./send.py 10.0.2.2 "P4 is cool"
,此時沒有采用隧道轉發
可以看到,沒有采用隧道轉發的情況下,由h1向h2發送"P4 is awesome"消息,h3處並不能收到,反之亦然。
采用隧道轉發進行嘗試,在h1處輸入:./send.py 10.0.2.2 "P4 is cool" --dst_id 2
可以看到h2收到消息,這在h1處修改目的IP為10.0.3.3
:
看到雖然IP改變,但是經過隧道轉發,交換機仍然將該報文發送給h2
總結
本次實驗接觸到了P4編程語言,並嘗試進行編寫,但是難度上不是很難,在實驗過程中,遇到如下問題,記錄如下:
- P4版本問題:起初在官方github上克隆了倉庫到本地進行運行,但是在運行的過程中,發現編譯失敗,詢問同學之后發現是由於虛擬機安裝的P4版本過低,導致不能成功運行,需要更換最新的版本,之后發現用戶目錄下已有P4示例倉庫,故暫時不需要更新版本,可以繼續實驗。
- 代碼編寫:填充的代碼參考官方教程,但是發現由於前面的P4版本問題,一個函數的傳參發生改變,故參考同學的解決方案,修改傳參,最終解決問題。
經過這次實驗,感受到自己對P4還不是很了解,計划之后進行更深層次的學習。