mininet命令


1.使用mn命令進入測試網絡

root@ubuntu:~# mn
*** 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:

2.使用links命令查看鏈路連通性

mininet> links
h1-eth0<->s1-eth1 (OK OK) 
h2-eth0<->s1-eth2 (OK OK) 
mininet> 

3.使用dump查看各個節點信息

mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=45992> 
<Host h2: h2-eth0:10.0.0.2 pid=45994> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=45999> 
<Controller c0: 127.0.0.1:6653 pid=45985> 

4.使用pingall命令測試各個主機之間是否連通

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

命令圖譜

網絡構建參數

1.單一拓撲:整個網絡拓撲中交換機只有一個,下面可以連接多個主機

root@ubuntu:~# mn --topo=single,3
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) (h3, s1) 
*** Configuring hosts
h1 h2 h3 
*** Starting controller
c0 
*** Starting 1 switches
s1 ...
*** Starting CLI:

2.線性拓撲:可以有多個交換機,但是每個交換機下面只是連接一個主機

root@ubuntu:~# mn --topo=linear,4
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4 
*** Adding switches:
s1 s2 s3 s4 
*** Adding links:
(h1, s1) (h2, s2) (h3, s3) (h4, s4) (s2, s1) (s3, s2) (s4, s3) 
*** Configuring hosts
h1 h2 h3 h4 
*** Starting controller
c0 
*** Starting 4 switches
s1 s2 s3 s4 ...
*** Starting CLI:
mininet> 
注意:網絡鏈路狀態中,links是包含交換機之間也是連通的 s1--s2--s3--s4

depth設置樹的深度(不含根節點),fanout設置每個節點下的子樹個數(廣度)
root@ubuntu:~# mn --topo=tree,depth=2,fanout=2
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2 h3 h4 
*** Adding switches:
s1 s2 s3 
*** Adding links:
(s1, s2) (s1, s3) (s2, h1) (s2, h2) (s3, h3) (s3, h4) 
*** Configuring hosts
h1 h2 h3 h4 
*** Starting controller
c0 
*** Starting 3 switches
s1 s2 s3 ...
*** Starting CLI:

4.自定義拓撲(重點)

 

 

定義網絡拓撲要使用的交換機,后面可以接的參數有:ovsk、ovsbr、ivs、lxbr、user,前面三種均為OVS型交換機,后面兩種分別為內核型(linux bridge)和用戶型(user)交換機。
交換機分類3類:內核型、用戶型、OVS型,其中內核型和OVS型的吞吐量比用戶型大很多,因此一般采用后兩種。
測試三者的TCP bandwidth
sudo mn --test iperf    內核型
sudo mn --switch user --test iperf    用戶型
sudo mn --switch ovsk --test iperf        ovs型

controller :一般我們不用mininet自帶的控制器,而是自己制定一個遠程控制器

如果--ip和--port省略的話,則默認使用本地ip地址,端口默認使用6653或6633端口號。

mac

 

 

使用這個參數可以讓MAC地址從小到達排列,使得復雜的網絡更清晰,容易辨識各個組件的MAC地址。
不使用這個參數的話,復雜的網絡容易混亂。

內部交互命令

(一)常用內部交互命令(不可修改網絡結構)

這些命令在 mininet> 命令模式下使用,僅查看網絡設備狀態信息,不對網絡結構進行改變

 

 

net              查看鏈路信息,兩個設備之間的之間連線,稱為一個鏈路,鏈路是雙向的

nodes           查看有哪些可用節點

links            檢測鏈路是否正常工作

pingall         檢測各個主機之間的連通性

pingpair       檢測前兩個主機的連通性            

dump           查看節點信息

(二)采用內部交互命令:可以更改網絡結構的命令,或者是帶參數命令

1.py命令

執行Python表達式,例如添加網絡設備。下面舉例說明:

在mininet自帶的網絡拓撲的基礎上,我們想添加一個主機h3,並且讓它和s1之間連通,且可以和其他兩個主機h1和h2互相ping通。
py net.addHost('h3')                                #給當前網絡net添加新的主機h3

py net.addLink(s1,h3)                               #為主機h3和交換機s1之間添加一條鏈路

py s1.attach('s1-eth3')                             #為交換機s1添加一個接口用於與h3相連

py h3.cmd('ifconfig h3-eth0 10.3')               #為主機h3配置端口及改端口的IP地址

h1 ping h3                                          #重要!!h1知道h3的IP地址,而h3不知道h1的地址,因此需要h1告訴h3的地址

pingall                                             #測試所有主機都是連通的

2.link:設置鏈路狀態

link s1 s2 down/up              禁用/開啟s1和s2這兩個節點之間的鏈路
可以看到,當關閉鏈路s1 s2后,主機h1和h2是無法通信的

3.iperf h1 h2                          測試兩個主機h1和h2之間的TCP帶寬

 

4.iperfupd bw h1 h2             測試兩個主機h1和h2之間的UDP帶寬

一定要加上bw

5.dpctl                             對所有交換機操作流表,包括流表的顯示、添加、修改、刪除,具體用法,參考

6.xterm                             如xterm h1打開主機h1的操作窗口


免責聲明!

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



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