# Mininet
$\cdot$ 預設的mininet網路拓樸

$\cdot$ 建立拓樸
sudo mn --topo single,3 --mac --switch ovsk --controller remote

$cdot$ 顯示各個鏈結訊息

$cdot$ 顯示h1節點的網路資訊

h1的ip為10.0.0.1。
# Miniedit
$\cdot$ 建立一網路拓樸圖,並將其儲存為myminiedit.py

$\cdot$ 查看其內部資訊

$\cdot$ 執行myminiedit.py,並查看其網路節點。

# Ryu
## 改寫2sw-2host.py檔案
1.
```
cd /mininet/custom/
vim topo-2sw-2host.py
```

2.
```
midSwitch = self.addSwitch( 'h3' )
midHost = self.addHost( 's3' )
self.addLink( midSwitch, rightSwitch )
self.addLink( midSwitch, midHost )
```

## simple_switch_13
Ryu Controller要和mininet建立連接時,會執行「ryu-manager –verbose ryu/app/simple_switch_13.py」,其中simple_switch_13.py它是一個由python所撰寫的程式原始碼,其主要功能包含switch的mac address對應port關係,以及flow entry的新增與刪除作業。




# Mininet lab1(模擬傳統網路以學習相關基礎操作)
## Mininet圖形化介面-Miniedit
1.首先使用miniedit建立以下拓樸

2.儲存test1.py之python檔,開啟如下。

3.執行後,開啟h3之xterm,並開啟wireshark紀錄封包。
```
sudo python3 test1.py
xterm h3
```
4.將h1 ping h2,查看封包傳送情形。
```
h1 ping -c 3 h2
```

由於destination address對應的port是h2,所以h3只會收到第一個來自h1廣播的ARP位址解析協定。

# Mininet lab2
## Check the working of Mininet and RYU Controller




# Mininet lab3(Miniedit建立拓樸,手動設定ip address)
首先開啟miniedit。

建立以下網路拓樸。

> host 1 Ip Address: 192.168.10.1
> host 1 Default Route: 192.168.10.254
> host 2 Ip Address: 192.168.20.1
> host 2 Default Route: 192.168.20.254
> host 3 Ip Address: 192.168.20.2
> host 3 Default Route: 192.168.20.254
設定完成後,開啟。

對於這支程式來說有些地方是需要進行修改的
>上圖紅框中,s4是拓樸中的lagacy switch,r1、r2分別是另外兩個router。可以看到r1、r2的forwarding都是打開的,但是他們的ip都還沒有設定。
>而下方h1、h2、h3的部分就如同剛剛在miniedit所設置的ip address以及default route。

圖中紅框標示部分為controller,但在這實驗的網路環境中不會用到cotroller,所以我把它刪除掉。
>r1與r2透過靜態路由與192.168.10.254 & 192.168.20.254連接,並且通過10.0.0.1與10.0.0.2
設定完成後執行測試後,修改程式碼。

>由網路上的資訊得知這個錯誤執行的原因在於必須先addSwitch後才可以addHost,具體原因我也尚未釐清。

```
h1 ifconfig
```
透過指令查看h1的相關資訊如下:

然後開始把每個link進行測試,如果沒通就debug。
```
h1 ping 192.168.10.254
```
首先ping h1和r1測試結果有通。

接著h1 ping外網10.0.0.1,沒有通。
```
h1 ping 10.0.0.1
```

>結果是config打成confog,修改後即可通。

同理,h1 ping外網10.0.0.2,有通。緊接著測試h1 ping h2,結果沒有通,所以需要一個一個測試每個link哪裡出了問題。

結果一樣是config打成confog,因為剛剛是複製貼上的關係,修正後就沒問題了(h1 ping h2、h1 ping h3都沒問題)。


# Mininet lab4
## ONOS(Open Network Operating System)




