Mininet實驗 命令延伸實驗擴展


本次實驗嘗試使用命令行、Python腳本編寫、交互式界面創建自定義拓撲。


命令行創建拓撲

1.最小的網絡拓撲,一個交換機下掛兩個主機

1 sudo mn --topo minimal

2.每個交換機連接一個主機,交換機間相連接。本例:4個主機,4個交換機。 

1 sudo mn --topo linear,4 

3.每個主機都連接到同一個交換機上。本例:三個主機,一個交換機。 

1 sudo mn --topo single,3

4.定義深度和扇形形成基於數的拓撲。本例:深度2,扇出2。

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

 


Python腳本定義拓撲

1.--topo linear,4 寫一個linear.py腳本 

1 from mininet.net import Mininet
2 from mininet.topo import LinearTopo
3 Linear4 = LinearTopo(k=4)    
4 net = Mininet(topo=Linear4)
5 net.start()
6 net.pingAll()
7 net.stop()

ps:至於怎么創建一個這樣的腳本

1 touch linear.py
2 vim linear.py
3 
4 //如果提示沒有安裝vim就
5 sudo apt install vim

 

賦予文件權限

1 chmod +x linear.py
2 //執行
3 sudo python linear.py

2.--topo single,3 

1 from mininet.net import Mininet
2 from mininet.topo import SingleSwitchTopo
3 Single3 = SingleSwitchTopo(k=3)   
4 net = Mininet(topo=Single3)
5 net.start()
6 net.pingAll()
7 net.stop()

3 --topo tree,depth=2,fanout=2 

1 from mininet.net import Mininet
2 from mininet.topolib import TreeTopo
3 Tree22 = TreeTopo(depth=2,fanout=2)
4 net = Mininet(topo=Tree22)
5 net.start()
6 net.pingAll()
7 net.stop()

4.不是以上三種拓撲形式的話,可以利用以下的拓撲定義腳本。本例:1個交換機,2個主機,並且賦予主機IP地址。 

 1 from mininet.net import Mininet
 2 net = Mininet()
 3 c0 = net.addController()
 4 h0 = net.addHost('h0')
 5 s0 = net.addSwitch('s0')
 6 h1 = net.addHost('h1')
 7 net.addLink(h0, s0)
 8 net.addLink(h1, s0)
 9 h0.setIP('192.168.1.1', 24)
10 h1.setIP('192.168.1.2', 24)
11 net.start()
12 net.pingAll()
13 net.stop()

5.除了可以通過Python腳本創建基本的拓撲以外,還能在此基礎上對性能進行限制。觀察下面給出的腳本文件,addHost()語法可以對主機cpu進行設置,以百分數的形式;addLink()語法可以設置帶寬bw、延遲delay、最大隊列的大小maxqueuesize、損耗率loss。

 1 from mininet.net import Mininet
 2 from mininet.node import CPULimitedHost
 3 from mininet.link import TCLink
 4 net = Mininet(host=CPULimitedHost, link=TCLink)
 5 c0 = net.addController()
 6 s0 = net.addSwitch('s0')
 7 h0 = net.addHost('h0')
 8 h1 = net.addHost('h1', cpu=0.5)
 9 h2 = net.addHost('h1', cpu=0.5)
10 net.addLink(s0, h0, bw=10, delay='5ms',max_queue_size=1000, loss=10, use_htb=True)
11 net.addLink(s0, h1)
12 net.addLink(s0, h2)
13 net.start()
14 net.pingAll()
15 net.stop()


交互式界面創建主機、交換機等

1 sudo mn

 

1.添加主機h3:

1 py net.addHost('h3')

2.添加link:

1 py net.addLink(s1,net.get('h3'))

3.給交換機s1添加端口eth3用於連接h3:

4.給h3賦予IP(10.0.0.3)

py s1.attach('s1-eth3') 
py net.get('h3').cmd('ifconfig h3-eth0 10.3')

5.h1 ping h3 :

1 h1 ping -c3 h3

6.顯示所有網絡信息:

1  px from mininet.util import dumpNodeConnections 
2  py dumpNodeConnections(net.hosts)

7.所有節點的ping測試:

py net.pingAll()


免責聲明!

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



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