Ubuntu安裝Mininet

Ubuntu安裝Mininet

一滑臊、安裝

apt-get update
apt-get upgrade
apt-get update --fix-missing
apt-get install git
#下載mininet
git clone https://github.com/mininet/mininet.git
cd mininet
#選擇版本
git tag       
git checkout 2.2.0
#執(zhí)行安裝腳本
util/install.sh
#驗證安裝
sudo mn
#檢查安裝是否成功
sudo mn --test pingall

#如果出現(xiàn)報錯
apt-get update
apt-get upgrade
apt-get install net-tools

#查看幫助
mininet/util/install.sh -h
 -a: (default) install (A)ll packages - good luck!
 #測試控制器性能工具
 -b: install controller (B)enchmark (oflops)
 -c: (C)lean up after kernel install
 -d: (D)elete some sensitive files from a VM image
 -e: install Mininet d(E)veloper dependencies
 -f: install Open(F)low
 -h: print this (H)elp message
 -i: install (I)ndigo Virtual Switch
 -k: install new (K)ernel
 -m: install Open vSwitch kernel (M)odule from source dir
 #安裝mininet核心
 -n: install Mini(N)et dependencies + core files
 -p: install (P)OX OpenFlow Controller
 -r: remove existing Open vSwitch packages
 -s <dir>: place dependency (S)ource/build trees in <dir>
 -t: complete o(T)her Mininet VM setup tasks
 #安裝默認版本
 -v: install Open (V)switch
 #安裝指定版本
 -V <version>: install a particular version of Open (V)switch on Ubuntu
 -w: install OpenFlow (W)ireshark dissector
 -y: install R(y)u Controller
 -x: install NO(X) Classic OpenFlow controller
 -0: (default) -0[fx] installs OpenFlow 1.0 versions
 -3: -3[fx] installs OpenFlow 1.3 versions
 #安裝比較久

二、命令

#網絡構建啟動參數(shù)
--topo
--custom
--switch
--controller
--max
#內部交互命令
dump
net
nodes
links
dpctl
iperf
#外部運行參數(shù)
-c #清除配置信息
-h #幫助

1. 網絡構建啟動參數(shù)

– –topo

  • 單一拓撲(single)

    整個網絡拓撲中交換機有且只有一個懊烤,他可以下掛一個或者多個主機

    sudo mn --topo=single,3
    #一個交換機下掛3個主機
    (h1,s1)(h2,s1)(h3,s1)
    
single.png
  • 線形拓撲(linear)

    交換機連接呈現(xiàn)線形排列爷光,且每個交換機所連接主機數(shù)目只有一個(交換機和主機數(shù)目是相同的)

sudo mn --topo=linear,4
#4個交換機,4個主機
(h1,s1)(h2,s2)(h3,s3)(h4,s4)
linear.png
  • 樹形拓撲(tree)

    交換機連接成樹形排列缓屠,且每個交換機所連接主機一般有多個

    sudo mn --topo=tree,depth=2,fanout=2
    #depth:交換機有兩層
    #fanout:交換機有兩個
    #主機不包含在depth中
    (s1,s2)(s1,s3)(h1,s2)(h2,s2)(h3,s3)(h4,s3)
    
tree.png
  • 自定義拓撲(custom)

    Python編寫文件file.py,執(zhí)行此腳本即可創(chuàng)建定義的拓撲护侮,– –custom與– –topo聯(lián)用

    sudo mn --custom file.py --topo mytopo
    (s1,s2)(s1,s3)(h1,s2)(h2,s2)(h3,s3)
    
custom.png

– – switch

定義mininet要使用的交換機(默認使用OVSK,即OpenVSwitch交換機)

– – controller

定義要使用的控制其敌完,如果沒有指定則使用mininet中默認的控制器

連接遠程控制器,可以指定存在于本機或者與值相連通設備上的控制器羊初,指定遠程控制器方法:

#remote:遠程滨溉,port可以使用默認的不寫
sudo mn --controller=remote,--ip=[controller IP],--port=[port]

– – mac

自動設置設備的MAC地址

讓MAC地址易讀,即設置交換機的MAC长赞、主機MAC及IP地址從小到大排序且設置簡單唯一晦攒,不僅讓機器容易獲取,也容易讓肉眼容易識別其ID得哆,使用方法:

sudo mn --topo=tree,depth=2,fanout-2,--mac

2.內部交互命令

使用mn默認創(chuàng)建網絡脯颜,使用一系列命令查看并驗證網絡系統(tǒng)的鏈路健壯性

root@qiu-base:/home/qiu/mininet# sudo mn
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 #兩個主機h1,h2
*** Adding switches:
s1 #添加了一個s1交換機
*** Adding links:
(h1, s1) (h2, s1) #添加了交換機和主機的鏈路
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
# net
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0 #
c0
# nodes
mininet> nodes
available nodes are: 
c0 h1 h2 s1
# links
mininet> links
h1-eth0<->s1-eth1 (OK OK) 
h2-eth0<->s1-eth2 (OK OK) 
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 
h2 -> h1 
*** Results: 0% dropped (2/2 received) #丟包率
#常用內部交互命令
help #顯示命令幫助信息
dump #各個節(jié)點的信息
intfs #網絡接口信息
nodes #查看節(jié)點
net #顯示鏈接信息
links #鏈路健壯性信息
pingpair #只驗證前兩個host連通性
pingall #驗證所有主機間通信
mininet> py net.addHost('h3')
<Host h3:  pid=13522> 
mininet> py net.addLink(s1,net.get('h3'))
<mininet.link.Link object at 0x7f8cedd4dbd0>
#attach:添加
mininet> py s1.attach('s1-eth3')
mininet> py net.get('h3').cmd('ifconfig h3-eth0 10.3')
mininet> intfs
h1: h1-eth0
h2: h2-eth0
h3: h3-eth0
s1: lo,s1-eth1,s1-eth2,s1-eth3
c0:

mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=13389> 
<Host h2: h2-eth0:10.0.0.2 pid=13391> 
<Host h3: h3-eth0:None pid=13522> #None,那么我們用ping驗證一下
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=13396> 
<Controller c0: 127.0.0.1:6653 pid=13382> 
#
mininet> h1 ping h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=40.5 ms
64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.203 ms
64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.039 ms
64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.038 ms
64 bytes from 10.0.0.3: icmp_seq=5 ttl=64 time=0.040 ms
64 bytes from 10.0.0.3: icmp_seq=6 ttl=64 time=0.038 ms
64 bytes from 10.0.0.3: icmp_seq=7 ttl=64 time=0.038 ms
64 bytes from 10.0.0.3: icmp_seq=8 ttl=64 time=0.039 ms
64 bytes from 10.0.0.3: icmp_seq=9 ttl=64 time=0.050 ms
64 bytes from 10.0.0.3: icmp_seq=10 ttl=64 time=0.039 ms
64 bytes from 10.0.0.3: icmp_seq=11 ttl=64 time=0.069 ms
64 bytes from 10.0.0.3: icmp_seq=12 ttl=64 time=0.040 ms
64 bytes from 10.0.0.3: icmp_seq=13 ttl=64 time=0.107 ms
^C
--- 10.0.0.3 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12263ms
rtt min/avg/max/mdev = 0.038/3.168/40.450/10.762 ms
mininet> h2 ping h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=39.0 ms
64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.180 ms
64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.039 ms
64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.039 ms
^C
--- 10.0.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3049ms
rtt min/avg/max/mdev = 0.039/9.805/38.965/16.835 ms
#再次使用dump查看
mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=13389> 
<Host h2: h2-eth0:10.0.0.2 pid=13391> 
<Host h3: h3-eth0:10.0.0.3 pid=13522> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=13396> 
<Controller c0: 127.0.0.1:6653 pid=13382> 

三贩据、可視化

MiniEdit(不會python也無所謂)

直接在界面上編輯任意拓撲伐脖,生成python自定義拓撲腳本,簡單方便

Mininet 2.2.0+(內置miniedit)

/mininet/examples 目錄下

root@qiu-base:/home/qiu/mininet# ls
bin           custom  doc       LICENSE   mininet.egg-info  mnexec.1   setup.py
build         debian  examples  Makefile  mn.1              mnexec.c   util
CONTRIBUTORS  dist    INSTALL   mininet   mnexec            README.md
root@qiu-base:/home/qiu/mininet# cd examples/
root@qiu-base:/home/qiu/mininet/examples# ls
baresshd.py       controlnet.py       mobility.py       README.md
bind.py           cpu.py              multilink.py      scratchnet.py
clustercli.py     emptynet.py         multiping.py      scratchnetuser.py
clusterdemo.py    hwintf.py           multipoll.py      simpleperf.py
clusterperf.py    __init__.py         multitest.py      sshd.py
cluster.py        intfoptions.py      natnet.py         test
clusterSanity.py  limit.py            nat.py            tree1024.py
consoles.py       linearbandwidth.py  numberedports.py  treeping64.py
controllers2.py   linuxrouter.py      popenpoll.py      vlanhost.py
controllers.py    miniedit.py         popen.py
#執(zhí)行miniedit腳本乐设,出現(xiàn)可視化界面,在執(zhí)行前绎巨,最好測試python環(huán)境變量是否正確
root@qiu-base:/home/qiu/mininet/examples# python3 miniedit.py
miniedit01.png
miniedit02.png
miniedit03.png
miniedit03-2.png
miniedit04.png
miniedit05.png
miniedit06.png
miniedit07.png
miniedit08.png

000000000000001

000000000000002

保存文件近尚,run,然后進入命令行场勤,輸出命令查看結果

mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=14890> 
<Host h2: h2-eth0:10.0.0.2 pid=14892> 
<Host h3: h3-eth0:10.0.0.3 pid=14894> 
<customOvs s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=14884> 
<customOvs s2: lo:127.0.0.1,s2-eth1:None pid=14887> 
<RemoteController c0: 127.0.0.1:6633 pid=14880> 
mininet> links
s1-eth1<->h1-eth0 (OK OK) 
s1-eth2<->h2-eth0 (OK OK) 
s2-eth1<->h3-eth0 (OK OK) 
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
h3 h3-eth0:s2-eth1
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0
s2 lo:  s2-eth1:h3-eth0
c0
mininet> nodes
available nodes are: 
c0 h1 h2 h3 s1 s2
mininet> 
#再啟動一個控制器可以查看更多信息
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末戈锻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子和媳,更是在濱河造成了極大的恐慌格遭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件留瞳,死亡現(xiàn)場離奇詭異拒迅,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門璧微,熙熙樓的掌柜王于貴愁眉苦臉地迎上來作箍,“玉大人,你說我怎么就攤上這事前硫“茫” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵屹电,是天一觀的道長阶剑。 經常有香客問我,道長危号,這世上最難降的妖魔是什么牧愁? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮葱色,結果婚禮上递宅,老公的妹妹穿的比我還像新娘。我一直安慰自己苍狰,他們只是感情好办龄,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淋昭,像睡著了一般俐填。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翔忽,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天英融,我揣著相機與錄音,去河邊找鬼歇式。 笑死驶悟,一個胖子當著我的面吹牛,可吹牛的內容都是我干的材失。 我是一名探鬼主播痕鳍,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼龙巨!你這毒婦竟也來了笼呆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤旨别,失蹤者是張志新(化名)和其女友劉穎诗赌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秸弛,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡铭若,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年洪碳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奥喻。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡偶宫,死狀恐怖,靈堂內的尸體忽然破棺而出环鲤,到底是詐尸還是另有隱情纯趋,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布冷离,位于F島的核電站吵冒,受9級特大地震影響,放射性物質發(fā)生泄漏西剥。R本人自食惡果不足惜痹栖,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞭空。 院中可真熱鬧揪阿,春花似錦、人聲如沸咆畏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旧找。三九已至溺健,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钮蛛,已是汗流浹背鞭缭。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魏颓,地道東北人岭辣。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像甸饱,于是被迫代替她去往敵國和親易结。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348