<ruby id="xh9j9"></ruby>

<th id="xh9j9"></th>

    1. <rp id="xh9j9"><object id="xh9j9"></object></rp>
      <rp id="xh9j9"></rp>

        首頁 > 編程學習 > 實驗一:SDN拓撲實踐

        實驗一:SDN拓撲實踐

        發布時間:9/19/2022 9:35:57 PM
        這個作業屬于哪個課程https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201
        這個作業要求在哪里https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201/homework/12704
        這個作業的目標能夠使用源碼安裝Mininet
        能夠使用Mininet的可視化工具生成拓撲
        能夠使用Mininet的命令行生成特定拓撲
        能夠使用Mininet交互界面管理SDN拓撲
        能夠使用Python腳本構建SDN拓撲。
        #(一)基本要求 ####1.使用Mininet可視化工具,生成下圖所示的拓撲,并保存拓撲文件名為學號.py。 ![](https://img2022.cnblogs.com/blog/2146319/202209/2146319-20220918210315376-1454795280.png) ![](https://img2022.cnblogs.com/blog/2146319/202209/2146319-20220918212829484-1743499571.png)

        2.使用Mininet的命令行生成如下拓撲:

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

        b) 3臺主機,每個主機都連接到同1臺交換機上。

        3.在2 b)的基礎上,在Mininet交互界面上新增1臺主機并且連接到交換機上,再測試新拓撲的連通性。

        4.編輯基本要求第1步保存的Python腳本,添加如下網絡性能限制,生成拓撲:

        a) h1的cpu最高不超過50%;
        h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None, cpu=0.5)
        
        b) h1和s1之間的鏈路帶寬為10,延遲為5ms,最大隊列大小為1000,損耗率50。
        net.addLink(s1, h1, bw=10, delay='5ms', max_queue_size=1000, loss=50, use_htb=True)
        

        (二)進階要求

        編寫Python腳本,生成如下數據中心網絡拓撲,要求:
        編寫.py拓撲文件,命名為“學號_fattree.py”;
        必須通過Mininet的custom參數載入上述文件,不得直接使用miniedit.py生成的.py文件;
        設備名稱必須和下圖一致;
        使用Python的循環功能實現,不得在代碼中手工直接添加設備和鏈路。

        #!/usr/bin/python
        #創建網絡拓撲
        """Custom topology example
        Adding the 'topos' dict with a key/value pair to generate our newly defined
        topology enables one to pass in '--topo=mytopo' from the command line.
        """
         
        from mininet.topo import Topo
        from mininet.net import Mininet
        from mininet.node import RemoteController,CPULimitedHost
        from mininet.link import TCLink
        from mininet.util import dumpNodeConnections
         
        class MyTopo( Topo ):
            "Simple topology example."
         
            def __init__( self ):
                "Create custom topo."
         
                # Initialize topology
                Topo.__init__( self )
                L1 = 2
                L2 = L1 * 2 
                L3 = L2 * 2
                s = []
                # add core ovs  
                for i in range( L1 + L2 + L3 ):
                        sw = self.addSwitch( 's{}'.format( i + 1 ) )
                        s.append( sw )
                # add links between core and aggregation ovs
                t = L1
                for i in range( L1 ):
                    sw1 = s[i]
                    for sw2 in s[t:t+4]:
                        # self.addLink(sw2, sw1, bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True)
        	            self.addLink( sw2, sw1 )
                t = L1 + L2
                # add links between aggregation and edge ovs
                for i in range( L1, L1+ L2, 2 ):
                    if i > (L1 + L2) / 2:
                        t+=4
                    for sw1 in s[i:i+2]:
                        for sw2 in s[t:t+4]:
                            self.addLink( sw2, sw1 )
         
                #add hosts and its links with edge ovs
                count = 1
                for sw1 in s[L1+L2:]:
                    for i in range(2):
                            host = self.addHost( 'h{}'.format( count ))
                            self.addLink( sw1, host )
                            count += 1
        topos = { 'mytopo': ( lambda: MyTopo() ) }
        


        總結

        實驗難度適中,基礎要求部分看著pdf操作即可,進階部分比較具有挑戰性(雖然只會改不會自己寫)
        遇到的困難
        1.執行sudo ./mininet/examples/miniedit.py時報錯

        Traceback (most recent call last):
          File "./mininet/examples/miniedit.py", line 27, in <module>
            from mininet.log import info, debug, warn, setLogLevel
        ImportError: No module named mininet.log
        

        解決方法:修改python軟鏈接

        sudo rm -rf /usr/bin/python3
        sudo rm -rf /usr/bin/python
        sudo ln -s /usr/bin/python3.8 /usr/bin/python3
        sudo ln -s /usr/bin/python3.8 /usr/bin/python
        

        2.基礎要求 3 添加完主機后,新添加的主機與其它主機直接無法連通
        解決方法:

        py s1.attach('s1-eth4')   #添加/打開交換機s1上的接口eth4
        py h4,setIP('10.0.0.4')   #給h3設置ip地址,
        

        3.基礎要求 4 修改 1 所保存的學號.py文件時,該文件是只讀文件無法修改保存
        解決方法:
        (1)強制保存退出:wq!
        (2)用sudo權限編輯sudo vim ./學號.py
        (3)給文件添加寫權限chmod +w 學號.py

        Copyright ? 2010-2022 wtld.cn 版權所有 |關于我們| 聯系方式
        日本精品人妻

        <ruby id="xh9j9"></ruby>

        <th id="xh9j9"></th>

        1. <rp id="xh9j9"><object id="xh9j9"></object></rp>
          <rp id="xh9j9"></rp>