一.Mininet的安裝路徑

3.使用Mininet可視化工具,生成下圖所示的拓撲

4.使用Mininet的命令行生成如下拓撲:
a.3台交換機,每個交換機連接1台主機,3台交換機連接成一條線。

b.3台主機,每個主機都連接到同一個交換機上

5.在4 b)的基礎上,在Mininet交互界面上新增1台主機

6.編輯(一)中第3步保存的Python腳本,添加如下網絡性能限制,生成拓撲

進階要求
代碼如下
from mininet.cli import CLI
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost, RemoteController, Controller
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
class MyTopo(Topo):
def __init__(self):
Topo.__init__(self)
L1 = 2
L2 = 4
L3 = 8
c = []
a = []
b = []
for i in range(L1):
sw = self.addSwitch('s{}'.format(i + 1))
a.append(sw)
for i in range(L2):
sw = self.addSwitch('s{}'.format(L1 + i + 1))
b.append(sw)
for i in range(L3):
sw = self.addSwitch('s{}'.format(L1 + L2 + i + 1))
c.append(sw)
for i in range(L1):
sw1 = a[i]
for sw2 in b:
self.addLink(sw2, sw1)
for i in range(L2):
sw1 = b[i]
if i < L2 / 2:
for sw2 in c[0:L3 // 2]:
self.addLink(sw1, sw2)
else:
for sw2 in c[L3 // 2:L3]:
self.addLink(sw1, sw2)
L4 = 16
d = []
for i in range(L4):
h = self.addHost('h{}'.format(i + 1))
d.append(h)
for i in range(L3):
sw1 = c[i]
h1 = d[i * 2]
h2 = d[i * 2 + 1]
self.addLink(sw1, h1)
self.addLink(sw1, h2)
topos = {'mytopo': (lambda: MyTopo())}
def simpleTest():
topo = MyTopo()
net = Mininet(topo,
build=False,
ipBase='10.0.0.0/8')
c0 = net.addController('c0', controller=Controller, protocal='tcp', port=6633)
c0.start()
net.build()
dumpNodeConnections(net.hosts)
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel('info')
simpleTest()
運行截圖:



個人總結
最后進階實驗因為c0定義在類外面,net.get.start函數似乎使用不了。所以交換機沒有和c0連通起來,整個網絡是ping不通的。這個問題源於我對python語言的不夠了解。寫的時候因為腦子過載經常連錯位置,感謝Jetbrain提供的教育版Pycharm,擁有強大的調試能力,很快找出問題所在。Markdown之前也沒有用過,需要學習。進階的圖看似難其實有參考就比較容易理解,在參考老師給的資料時,我還用MiniEdit畫了一張拓撲圖導出為py腳本來參照。這門課雖然理論較為枯燥,但是實踐還是比較有意思的。在5的時候怎么Ping也ping不通,這里要感謝朝偉同學在群里分享的辦法。
