姓名:岳馳
【嵌牛導讀】:(承接本人上一篇《SDN零基礎入門-mininet環(huán)境搭建與RYU控制器的安裝》)Mininet是一個進程虛擬化網絡仿真工具,可以創(chuàng)建一個含有主機、交換機、控制器和鏈路的虛擬網絡,其交換機支持Openflow協(xié)議,具有高度靈活的自定義軟件定義網絡。在本篇文章中,作者將會介紹Mininet的基本操作指令,本人也是接觸不久,如有錯誤請多多包涵,希望能和大家一起交流學習。
【嵌牛鼻子】:Linux ? ?Ubuntu ? ?SDN ? ?零基礎入門 ? ?Mininet 命令詳解
【嵌牛提問】:Mininet的優(yōu)勢?Mininet可以做什么?Mininet的基礎操作?
【嵌牛正文】:
1.mininet的優(yōu)勢:
mininet結合了許多仿真器、硬件測試床和模擬器的優(yōu)點。
compare to仿真器:
啟動速度快 ? ? ? ? ? ? ? 擴展性大 ? ? ? ? ? ? ? ? ? ? ?帶寬提供多 ? ? ? ? ? ? 方便安裝、易使用
compare to模擬器:
運行真實代碼 ? ? ? ? 容易鏈接真實網絡
compare to硬件測試床:
便宜 ? ? ? ? ? ? ?快速重新配置與重新啟動
2.mininet可以做什么?
為openflow應用程序提供一個簡單、便宜的網絡測試平臺
啟用復雜的拓撲測試,無需連接物理網絡
具有拓撲感知和openflow感知的CLI,用于調試或運行網絡范圍的測試
支持任意自定義拓撲,主機數(shù)達4096,并包括一組基本的參數(shù)化拓撲
提供用于網絡創(chuàng)建和實驗的可擴展Python API
3.mininet命令詳解:
minient命令主要分為三種:
①網絡構建啟動參數(shù)
如--topo ?--custom ?--switch ?--controller ?--mac等等
②內部交互命令
如dump ?net ?nodes ?links ?dpctl ?iperf等等
③外部運行參數(shù)
如-c ?-h
下面對常用的命令進行簡單介紹
一、--topo命令
1.單一拓撲,即只有一個交換機,下掛n個主機


2.線形拓撲,交換機呈線性排列,n個交換機下掛一個主機


3.樹形拓撲,定義深度depth,定義廣度fanout。例如depth=2,fanout=2,就是交換機(不包含主機)有兩層,除第一層外每個下掛兩個單位。


假如輸入depth=3,fanout=3,就在原來的基礎上s1(第一層)下掛三個交換機(第二層),然后第二層的每個交換機下面再下掛三個交換機(第三層),第三層的每個交換機下掛三個主機。
4.自定義拓撲,需要用python編寫文件file.py,執(zhí)行此腳本即可創(chuàng)建自定義拓撲,需要--custom與--topo聯(lián)用,在這里給出一個使用自帶的例子建立一個自定義拓撲,至于具體如何編寫我們將會在以后進行說明。

二、--controller命令
指定遠程控制器的方法:
sudo mn --controller=remote,--ip=你的控制器ip,--port=你想監(jiān)聽的端口
在這里我指定了本機的控制器,但是目前本機還沒有開啟控制器。所以會顯示不能連接到本機控制器。

輸入pingall也會顯示丟包率為100%

三、內部交互命令,在建立拓撲之后對拓撲進行相關操作,如
net命令顯示鏈接信息

nodes命令顯示節(jié)點信息

links命令顯示鏈路健壯性信息

以及大家喜聞樂見的pingall命令驗證所有主機間通信

以上都是設備的查看命令,接下來介紹幾個可以對設備進行操作的命令
iperf命令兩節(jié)點間進行帶寬測試

link命令進行節(jié)點間鏈路的開始或禁用
我關閉了s1和h1的鏈路,發(fā)現(xiàn)h1和h2不能ping通

然后再次開啟s1和h1的鏈路,于是h1和h2又可以ping通了

注意不要把link命令和links命令混淆?。?!
現(xiàn)在我們面臨了一個實際問題,假如我首先用sudo su指令創(chuàng)建了一個交換機下掛兩個主機的拓撲,但是之后不滿意當前拓撲,想添加一個主機h3和s1相連,可以么?答案當然是肯定的。
首先,我們要添加主機h3進入當前拓撲

只添加還不夠,需要讓s1和添加的h3建立一條連接

現(xiàn)在就可以ping通了么?還不行,因為s1需要一個端口提供給h3

現(xiàn)在鏈接已經建立起來了,但是h3還沒有IP地址,我們需要賦給h3一個IP地址

現(xiàn)在我們先試著用h1或者h2去ping通h3

最后pingall,成功!
