Mininet介紹及安裝


什么是Mininet

       Mininet是由一些虛擬的終端節點(end-hosts)、交換機、路由器連接而成的一個網絡仿真器,它采用輕量級的虛擬化技術使得系統可以和真實網絡相媲美。

       Mininet可以很方便地創建一個支持SDN的網絡:host就像真實的電腦一樣工作,可以使用ssh登錄,啟動應用程序,程序可以向以太網端口發送數 據包,數據包會被交換機、路由器接收並處理。有了這個網絡,就可以靈活地為網絡添加新的功能並進行相關測試,然后輕松部署到真實的硬件環境中。

Mininet的特性

       可以簡單、迅速地創建一個支持用戶自定義的網絡拓撲,縮短開發測試周期

       可以運行真實的程序,在Linux上運行的程序基本上可以都可以在Mininet上運行,如Wireshark

       Mininet支持Openflow,在Mininet上運行的代碼可以輕松移植到支持OpenFlow的硬件設備上

       Mininet可以在自己的電腦,或服務器,或虛擬機,或者雲(例如Amazon EC2)上運行

       Mininet提供python API,簡單易用

      

Mininet 是一個開源項目,簡單好用成本低,代碼托管在github上:

https://github.com/mininet/mininet

目前有三種方式使用mininet

  • Easiest "installation" - use our pre-built VM image!
  • Next-easiest option: use our Ubuntu package!
  • Native installation from source

三種方式都比較方便,以下第三種方式舉例(第三種貌似最復雜)

1.從Github上獲取mininet源碼

git clone git://github.com/mininet/mininet     #這里需要提前安裝git,ubuntu環境下還需要+sudo

2.安裝獲得源碼可以選擇mininet的版本,最新或者穩定都可以(目前最新的已經是2.3.0d1版本)

xxt@xxt-VirtualBox:~$ cd mininet/
xxt@xxt-VirtualBox:~/mininet$ git tag
1.0.0
2.0.0
2.1.0
2.1.0p1
2.1.0p2
2.2.0
2.2.0b0
2.2.0b1
2.2.0b2
2.2.0b3
2.2.0rc1
2.2.0rc2
2.2.1
2.2.1d2
2.2.1rc1
cs244-spring-2012-final
xxt@xxt-VirtualBox:~/mininet$ 

選擇你所需要的版本

git checkout <release tag>      #這里的release tag就是你想選取的版本

此時就可以開始安裝了

mininet/util/install.sh [options]
-a:  全部安裝
-nfv:僅安裝MINIENT OPENFLOW引用多SWITCH 和OPEN VSWITCH
-s mydir: 指定目錄

3.測試

如果上面的步驟沒有報錯,那就可以試一下mininet了

xxt@xxt-VirtualBox:~/mininet$ sudo mn 
[sudo] password for xxt: 
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) 
*** Configuring hosts
h1 h2 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet> 

這是一個最簡單的拓撲,包括兩個host和一個switch

然后可以互相ping一下

mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 
h2 -> h1 
*** Results: 0% dropped (2/2 received)
mininet>

可以通過help命令了解其他功能

mininet> help

Documented commands (type help <topic>):
========================================
EOF    gterm  iperfudp  nodes        pingpair      py      switch
dpctl  help   link      noecho       pingpairfull  quit    time  
dump   intfs  links     pingall      ports         sh      x     
exit   iperf  net       pingallfull  px            source  xterm 

You may also send a command to a node using:
  <node> command {args}
For example:
  mininet> h1 ifconfig

The interpreter automatically substitutes IP addresses
for node names when a node is the first arg, so commands
like
  mininet> h2 ping h3
should work.

Some character-oriented interactive commands require
noecho:
  mininet> noecho h2 vi foo.py
However, starting up an xterm/gterm is generally better:
  mininet> xterm h2

mininet> 

這里可以看到有許多功能都集成在mininet中,可以試幾個

 

比如查看節點(nodes)

mininet> nodes
available nodes are: 
c0 h1 h2 s1
mininet> 

可以看到當前的拓撲里有四個節點,包括兩個host,一個switch,還有一個控制器c0

 

查看連接情況(net)

mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0
c0
mininet> 

可以看到h1的port0和s1的port1連接,h2的port0和s2的port2連接

 

dump(這不知道怎么翻譯,好多語言里都有這個方法。。。)

mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=2531> 
<Host h2: h2-eth0:10.0.0.2 pid=2533> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=2538> 
<Controller c0: 127.0.0.1:6633 pid=2524> 
mininet> 

可以看到h1-eth0的ip是10.0.0.1 ,h2-eth0的ip是10.0.0.2 , s1的ip是127.0.0.1(本地)

 

還有一些集成在mininet里的工具,例如有名的網絡性能測試工具iperf

mininet> iperfudp
*** Iperf: testing UDP bandwidth between h1 and h2 
*** Results: ['10M', '9.98 Mbits/sec', '9.98 Mbits/sec']        #這里結果分別是上行帶寬和下行帶寬 ,  前面的那個10M是什么就不太清楚了
mininet> iperf
*** Iperf: testing TCP bandwidth between h1 and h2 
*** Results: ['17.6 Gbits/sec', '17.6 Gbits/sec']          #上行帶寬和下行帶寬
mininet> 

 

退出 (quit 或 exit)

mininet> quit
*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 1119.156 seconds
xxt@xxt-VirtualBox:~/mininet$ 

 

 

功能很多,這里就不一一贅述了,如有不對的地方,歡迎批評指出。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM