# P4 03 ## F74089020 龍帆軒 ### OVS Controller OVS全名 Openvswitch,是一個開源的交換器,也是實現網路虛擬化 SDN 的重要基礎,設計 OpenvSwitch 的目的是為了解決實體交換器存在的局限性,比實體交換器更低的成本和更高的工作效率,而 Openvswitch 本身佔用的資源也非常小,可以根據自己的選擇靈活的配置,可以對封包進行接收分析處理同時還支援標準的管理介面和協議,如 NetFlow,sFlow,SPAN,RSPAN 等。而OVS controller可以控制多個都是openflow協議下的交換器。 **Netflo**w: 一種網路監測功能,可以收集進入及離開網路界面的IP封包的數量及資訊。 **sFlow**: 運用取樣通訊協定並著重於處理個別資料封包,因此可以識別個別檔案是否已損壞或包含惡意程式碼。 **SPAN**:全名The Switched Port Analyzer,獲得了源埠的MAC位址後,會將流經該MAC位址的所有資料直接發往目標埠。 **RSPAN**:Remote SPAN,當某些源口做為目標口出現時,不處於同一交換機上  圖(一) : OVS 模組架構圖  圖(二) : ICMP protocol ICMP 全名 Internet Control Message Protocol是網際網路協定套組的核心協定之一。它用於網際網路協定(IP)中傳送控制訊息,提供可能發生在通訊環境中的各種問題回饋。 ### P4入門  圖(三)封包結構 P4中有5個語言組件: **Headers、parsers、Tables、Action、control program**。 **headers**:headers有分為兩種,一種是packet header另一種是metadata。 **Parsers**:一個p4程式往往定義了許多headers,但不是全部的headers都會對封包進行操作。Parser的工作就是會產生哪些封包進行了操作的intermediate representation。 **Tables**:當table中的欄位與封包配對成功時,就會執行相對應的工作。如果沒也成功配對則會標記成miss。 **Actions**:主要分為primitive action與compound action。Primitive actions包括封包的修改、基本運算、hash運算等等。Compound actions通常都由用戶自己定義。  圖(四) : p4 程式結構 ### 進行簡單的P4 實驗 要進行basic forwarding ,就是將ipv4封包往前傳送 使用的topology為下圖  編譯basic.p4 輸入```make run```  圖(三) : makefile 檔案 看到最後一行include了utils資料夾裡的makefile 可以看到執行的是一個寫好的script Script會執行一個由python寫好的run_topology.py  圖(四) : 找到make run 程式碼對應的動作 ```make run```指令將會 1. 編譯basic.p4 2. 建立mininet,其中有4個host,各自連接一個switch 3. Host的IP分別為10.0.1.1, 10.0.2.2, 10.0.3.3,10.0.4.4  圖(五) : 執行完make run 這時候看到使用的switch已經不是上次的預設ovs switch  圖(六) : configuredP4Runtime switch 此時如果輸入```h1 ping h2``` 成功的話會顯示道有收到封包  圖(七) : 成功收到封包 失敗就不會顯示  圖(八) : 沒有收到封包 ###### tags: `P4`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up