# Mininet $\cdot$ 預設的mininet網路拓樸 ![](https://i.imgur.com/esOTgqN.jpg) $\cdot$ 建立拓樸 sudo mn --topo single,3 --mac --switch ovsk --controller remote ![](https://i.imgur.com/pAqAAly.jpg) $cdot$ 顯示各個鏈結訊息 ![](https://i.imgur.com/WTHo7M3.jpg) $cdot$ 顯示h1節點的網路資訊 ![](https://i.imgur.com/UxIFFUJ.jpg) h1的ip為10.0.0.1。 # Miniedit $\cdot$ 建立一網路拓樸圖,並將其儲存為myminiedit.py ![](https://i.imgur.com/7zonO93.jpg) $\cdot$ 查看其內部資訊 ![](https://i.imgur.com/wKMuF4N.jpg) $\cdot$ 執行myminiedit.py,並查看其網路節點。 ![](https://i.imgur.com/qBToBSQ.jpg) # Ryu ## 改寫2sw-2host.py檔案 1. ``` cd /mininet/custom/ vim topo-2sw-2host.py ``` ![](https://i.imgur.com/1dKY6DW.jpg) 2. ``` midSwitch = self.addSwitch( 'h3' ) midHost = self.addHost( 's3' ) self.addLink( midSwitch, rightSwitch ) self.addLink( midSwitch, midHost ) ``` ![](https://i.imgur.com/zIQCdsK.jpg) ## 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的新增與刪除作業。 ![](https://i.imgur.com/O5IVyOT.jpg) ![](https://i.imgur.com/x5hf0Nn.jpg) ![](https://i.imgur.com/qRSBgnY.jpg) ![](https://i.imgur.com/Yp82aLZ.jpg) # Mininet lab1(模擬傳統網路以學習相關基礎操作) ## Mininet圖形化介面-Miniedit 1.首先使用miniedit建立以下拓樸 ![](https://i.imgur.com/bMWLUj4.jpg) 2.儲存test1.py之python檔,開啟如下。 ![](https://i.imgur.com/3BCLbZD.jpg) 3.執行後,開啟h3之xterm,並開啟wireshark紀錄封包。 ``` sudo python3 test1.py xterm h3 ``` 4.將h1 ping h2,查看封包傳送情形。 ``` h1 ping -c 3 h2 ``` ![](https://i.imgur.com/3Dhg6vh.jpg) 由於destination address對應的port是h2,所以h3只會收到第一個來自h1廣播的ARP位址解析協定。 ![](https://i.imgur.com/AECWCtN.jpg) # Mininet lab2 ## Check the working of Mininet and RYU Controller ![](https://i.imgur.com/YbiIle9.jpg) ![](https://i.imgur.com/z58gQYB.jpg) ![](https://i.imgur.com/su0qubi.jpg) ![](https://i.imgur.com/p842aBu.jpg) # Mininet lab3(Miniedit建立拓樸,手動設定ip address) 首先開啟miniedit。 ![](https://i.imgur.com/oGKMhqY.jpg) 建立以下網路拓樸。 ![](https://i.imgur.com/FubHVo8.jpg) > 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 設定完成後,開啟。 ![](https://i.imgur.com/KMdDHWC.jpg) 對於這支程式來說有些地方是需要進行修改的 >上圖紅框中,s4是拓樸中的lagacy switch,r1、r2分別是另外兩個router。可以看到r1、r2的forwarding都是打開的,但是他們的ip都還沒有設定。 >而下方h1、h2、h3的部分就如同剛剛在miniedit所設置的ip address以及default route。 ![](https://i.imgur.com/GCl9CiL.jpg) 圖中紅框標示部分為controller,但在這實驗的網路環境中不會用到cotroller,所以我把它刪除掉。 >r1與r2透過靜態路由與192.168.10.254 & 192.168.20.254連接,並且通過10.0.0.1與10.0.0.2 設定完成後執行測試後,修改程式碼。 ![](https://i.imgur.com/0o0mHpX.jpg) >由網路上的資訊得知這個錯誤執行的原因在於必須先addSwitch後才可以addHost,具體原因我也尚未釐清。 ![](https://i.imgur.com/Lv1LaCx.jpg) ``` h1 ifconfig ``` 透過指令查看h1的相關資訊如下: ![](https://i.imgur.com/0dt95Lv.jpg) 然後開始把每個link進行測試,如果沒通就debug。 ``` h1 ping 192.168.10.254 ``` 首先ping h1和r1測試結果有通。 ![](https://i.imgur.com/f6ocW7Q.jpg) 接著h1 ping外網10.0.0.1,沒有通。 ``` h1 ping 10.0.0.1 ``` ![](https://i.imgur.com/dPGcPNZ.jpg) >結果是config打成confog,修改後即可通。 ![](https://i.imgur.com/rwUDKRM.jpg) 同理,h1 ping外網10.0.0.2,有通。緊接著測試h1 ping h2,結果沒有通,所以需要一個一個測試每個link哪裡出了問題。 ![](https://i.imgur.com/3cFFxv4.jpg) 結果一樣是config打成confog,因為剛剛是複製貼上的關係,修正後就沒問題了(h1 ping h2、h1 ping h3都沒問題)。 ![](https://i.imgur.com/xwiocKe.jpg) ![](https://i.imgur.com/YEB1xax.jpg) # Mininet lab4 ## ONOS(Open Network Operating System) ![](https://i.imgur.com/3LMhQwF.jpg) ![](https://i.imgur.com/S2FhWDv.jpg) ![](https://i.imgur.com/8Fxy96n.jpg) ![](https://i.imgur.com/5xTEjcj.jpg) ![](https://i.imgur.com/BX4Dnab.jpg)