---
# System prepended metadata

title: P4 02
tags: [P4]

---

# P4 02
## 龍帆軒
可以簡單地把Mininet當成是一個網路模擬器，會創造一個有virtual hosts、switches、controllers跟links的網路。透過mininet在自己的電腦上創造一個虛擬網路，然後以電腦來發送封包並且可以透過SSH登陸虛擬host操作。P4語言主要被運用在switch的控制上，開發者能夠直接定義出一個switch能夠處理的封包格式。

 ![](https://i.imgur.com/4EONq2G.png)
圖(一)：mininet簡易架構圖

安裝環境過程：一開始先將github(https://github.com/p4lang/tutorials)的repository clone下來，接下來安裝好vagrant跟virtualbox。Vagrant是一款用於構建及配置虛擬開發環境的軟體。在clone下來的vm資料夾裡面打上指令vagrant up就會把虛擬機所需要的資料下載完成了，過程大概一個小時。 之後就可以使用vagrant或是p4帳號進行登入。



![](https://i.imgur.com/eqYZDhp.png)

  圖(二)：登入畫面
  
  
  
  
  
  
  
開啟terminal輸入mn就可以建立簡易的mininet網路



![](https://i.imgur.com/Wjh4H1l.png)

  圖(三) ：建立minenet網路
  
輸入不同指令可以進行不同的操作
**net**：可以看到各鏈結的訊息
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0

**nodes**：可以印出所有節點
available nodes are: 
c0 h1 h2 s1

**dump**：可以看到各節點的訊息
<Host h1: h1-eth0:10.0.0.1 pid=8536> 
<Host h2: h2-eth0:10.0.0.2 pid=8539> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=8545>
<OVSController c0:127.0.0.1:6653 pid=8529>
![](https://i.imgur.com/GLrvEid.png)

  圖(四)：不同指令的功能
 
輸入**h1 ping h2** 便可以從h1向h2發送封包
![](https://i.imgur.com/DDeB8FF.png)

  圖(五)：h1 ping h2

也可以將wireshark開啟監控封包轉發的情形
圖中有Source跟destination
其中source 10.0.0.1 destination 10.0.0.2 為h1發送給h2的封包
點開來可以看到詳細的資訊，例如使用IPv4

 ![](https://i.imgur.com/g0v3Jre.png)

圖(六)：wireshark監控封包
###### tags: `P4`