SDN第一次上機作業


實驗一:SDN拓撲實踐

一、mininet安裝目錄

二、mininet可視化工具生成拓撲圖並保存


三、命令行生成拓撲

(1)3台交換機,每個交換機連接1台主機,3台交換機連接成一條線。

(2)3台主機,每個主機都連接到同1台交換機上。

此基礎上,在Mininet交互界面上新增1台主機並且連接到交換機上,再測試新拓撲的連通性。

五、編輯Python腳本,添加網絡性能限制,生成拓撲

六、進階

代碼如下:

from mininet.net import Mininet
from mininet.topo import Topo


class MyTopo(Topo):
    def __init__(self):
        # initialize topology
        Topo.__init__(self)
        L1 = 2
        L2 = L1 * 2
        L3 = L2 * 2
        c = []
        a = []
        e = []

        # add ovs
        for i in range(L1):
            sw = self.addSwitch('s{}'.format(i + 1))
            c.append(sw)
        for i in range(L2):
            sw = self.addSwitch('s{}'.format(L1 + i + 1))
            a.append(sw)
        for i in range(L3):
            sw = self.addSwitch('s{}'.format(L1 + L2 + i + 1))
            e.append(sw)
        # add links c-a a-e
        for i in range(L1):
            sw1 = c[i]
            for sw2 in a[i // 2::L1 // 2]:
                # a[開始::步長]
                self.addLink(sw2, sw1)
        for i in range(0, L2, 2):
            for sw1 in a[i:i + 2]:
                # a[開始下標:終止下標+1]
                j = i + i
                for sw2 in e[j:j + 4]:
                    self.addLink(sw2, sw1)
        # add links hosts-e
        count = 1
        for sw1 in e:
            for i in range(2):
                host = self.addHost('h{}'.format(count))
                self.addLink(sw1, host)
                count += 1

        net = Mininet(topo=None, controller=None)
        net.build()

topos = {'mytopo': (lambda: MyTopo())}

運行結果:


總結

本次任務使我初步熟悉了對命令行以及Mininet的使用。過程中遇到以下幾點困難令我較為深刻:

(1) 每次使用命令行創建topo時,要先使用sudo mn -c命令清除已經建立的topo,否則會有Error提示File exists(忘記了這回事繞了半天)

(2) 編寫腳本時最好使用編譯器。我本來在txt文本上修改,結果編譯出錯,發現是虛擬機里txt的tab鍵和四個空格的縮進大小不一致導致的,后來聽取建議安裝了Pycharm

(3) python的語法問題。python基礎不扎實,編寫腳本時將浮點型除號/與整型除號//混淆,在循環中使用錯誤導致編譯無法通過

進階的任務效仿老師的資料還是比較容易實現的,一些細節問題需要自己處理。Markdown的使用也增加了我的經驗。有疑惑時多和優秀的同學請教,可以較快的解決問題,總之再接再厲


免責聲明!

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



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