mininet實驗一
參考博客一
參考博客二
實驗目的
-
熟悉Mininet自定義拓撲三種實現方式:命令行創建、Python腳本編寫、交互式界面創建。
1.用命令行生成拓撲,並測試連通性,截圖
1)最小的網絡拓撲,一個交換機下面掛兩個主機。
sudo mn --topo minimal

注意:每次要新建拓撲時,需執行以下命令,防止上次操作對本次實驗的影響
sudo mn -c
建立后用exit來退出。
2)每個交換機連接一個主機,交換機間相連接。本例:4個主機,4個交換機。
sudo mn --topo linear,4

注意:每次要新建拓撲時,需執行以下命令,防止上次操作對本次實驗的影響
sudo mn -c
3)每個主機都連接到同一個交換機上。本例:3個主機,一個交換機。
sudo mn --topo single,3

注意:每次要新建拓撲時,需執行以下命令,防止上次操作對本次實驗的影響
sudo mn -c
4)定義深度和扇出形成基於樹的拓撲。本例:深度2,扇出2。
sudo mn --topo tree, fanout=2,depth=2

注意:每次要新建拓撲時,需執行以下命令,防止上次操作對本次實驗的影響
sudo mn -c
2.Python腳本定義拓撲
1)--topo linear,4。
- 在裝有mininet鏡像的虛擬機中新建文件linear.py,添加以下內容:
from mininet.net import Mininet
from mininet.topo import LinearTopo
Linear4 = LinearTopo(k=4) #四個交換機,分別下掛一個主機
net = Mininet(topo=Linear4)
net.start()
net.pingAll()
net.stop()

2.修改文件linear.py為可執行文件。
chmod +x linear.py
3.運行腳本
sudo python linear.py

2) --topo single,3。
給出腳本內容,具體操作步驟見例子1。
from mininet.net import Mininet
from mininet.topo import SingleSwitchTopo
Single3 = SingleSwitchTopo(k=3) #一個交換機下掛3個主機
net = Mininet(topo=Single3)
net.start()
net.pingAll()
net.stop()

3)--topo tree,depth=2,fanout=2。
給出腳本內容,具體操作步驟見例子1。
from mininet.net import Mininet
from mininet.topolib import TreeTopo
Tree22 = TreeTopo(depth=2,fanout=2)
net = Mininet(topo=Tree22)
net.start()
net.pingAll()
net.stop()

4)如果是非上述三種類型的拓撲,那么下面介紹一種適合各種拓撲形式的腳本創建模式。本例:1個交換機,2個主機,並且賦予主機IP地址。
給出腳本內容,具體操作步驟見例子1。
from mininet.net import Mininet
net = Mininet()
# Creating nodes in the network.
c0 = net.addController()
h0 = net.addHost('h0')
s0 = net.addSwitch('s0')
h1 = net.addHost('h1')
# Creating links between nodes in network
net.addLink(h0, s0)
net.addLink(h1, s0)
# Configuration of IP addresses in interfaces
h0.setIP('192.168.1.1', 24)
h1.setIP('192.168.1.2', 24)
net.start()
net.pingAll()
net.stop()

5)除了可以通過Python腳本創建基本的拓撲以外,還能在此基礎上對性能進行限制。觀察下面給出的腳本文件,addHost()語法可以對主機cpu進行設置,以百分數的形式;addLink()語法可以設置帶寬bw、延遲delay、最大隊列的大小max_queue_size、損耗率loss。
給出腳本內容,具體操作步驟見例子1。
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
net = Mininet(host=CPULimitedHost, link=TCLink)
c0 = net.addController()
s0 = net.addSwitch('s0')
h0 = net.addHost('h0')
h1 = net.addHost('h1', cpu=0.5)
h2 = net.addHost('h1', cpu=0.5)
net.addLink(s0, h0, bw=10, delay='5ms',
max_queue_size=1000, loss=10, use_htb=True)
net.addLink(s0, h1)
net.addLink(s0, h2)
net.start()
net.pingAll()
net.stop()

注意:每次要新建拓撲時,需執行以下命令,防止上次操作對本次實驗的影響
sudo mn -c
3.交互式界面創建主機、交換機等
首先我們要先運行mininet
sudo mn
1)添加主機h3
py net.addHost('h3')

2)添加link
py net.addLink(s1,net.get('h3'))

3)給交換機s1添加端口eth3用於連接h3
py s1.attach('s1-eth3')

4)給h3賦予IP(10.0.0.3)
py net.get('h3').cmd('ifconfig h3-eth0 10.3')

5)h1 ping h3
h1 ping -c1 10.3

4.測試網絡
1)展示所有的網絡信息。
px from mininet.util import dumpNodeConnections
py dumpNodeConnections(net.hosts)

2)所有節點的ping測試。
py net.pingAll()

進行這個實驗出現了小問題,如果按照之前的步驟來做會有error,運行下面的語句后才恢復正常。
s1 ping h3

