sdn第一次作業


一.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()

運行截圖:
image

image

image

個人總結

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


免責聲明!

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



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