SDN第一次上機實驗
任務一
在Ubuntu系統的home目錄下創建一個目錄,目錄命名為學號

任務二
在創建的目錄下,完成Mininet的源碼安裝。
任務三
使用Mininet可視化工具,生成下圖所示的拓撲,並保存拓撲文件名為學號.py

任務四
使用Mininet的命令行生成如下拓撲:
- 3台交換機,每個交換機連接1台主機,3台交換機連接成一條線
- 3台主機,每個主機都連接到同1台交換機上


任務五
在4 b)的基礎上,在Mininet交互界面上新增1台主機並且連接到交換機上,再測試新拓撲的連通性

任務六
編輯(一)中第3步保存的Python腳本,添加如下網絡性能限制,生成拓撲:
- h1的cpu最高不超過50%;
- h1和s1之間的鏈路帶寬為10,延遲為5ms,最大隊列大小為1000,損耗率50。

進階任務
代碼如下
# !/usr/bin/python
import json
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost,RemoteController
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
from mininet.cli import CLI
class myTopo(Topo):
def __init__(self):
Topo.__init__(self)
L1=2
L2=4
L3=8
a = []
b = []
c = []
# L1
for i in range(L1):
switch = self.addSwitch('s{}'.format(i+1))
a.append(switch)
#L2
for i in range(L2):
switch = self.addSwitch('s{}'.format(i+1+L1))
b.append(switch)
#L3
for i in range(L3):
switch = self.addSwitch('s{}'.format(i+1+L2+L1))
c.append(switch)
# link l1 and l2
for i in range(L1):
sw1=a[i]
for j in range(L2):
sw2=b[j]
self.addLink(sw1,sw2)
# link L2 and L3
for i in range(0,L2,2):
for sw1 in b[i:i+2]:
for sw2 in c[i:i+4]:
self.addLink(sw2,sw1)
num=1
for sw1 in c:
for i in range(2):
host = self.addHost( 'h{}'.format(num) )
self.addLink(sw1,host)
num+=1
def create_network():
#"Create network and run simple performance test"
topo = myTopo()
net = Mininet(topo=topo,host=CPULimitedHost, link=TCLink)
net.start()
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel('info')
create_network()
實驗結果如圖所示:

實驗心得
因為大一的時候對SDN進行過自學習,所以現在回來再次學習課程還是比較容易,沒什么困難,回想大一的時候,哪個時候才是遇到各種困難,又沒老師教,例如Linux系統不了解,指令不會,代碼看不懂,安裝mininet遇到問題,安裝RYU遇到pip問題等等一系列問題,只有一個一個慢慢在網上百度摸索,一步一步熟悉。現在回想起來,感覺還是時間如梭,大學四年一晃眼就要過去了,時不等我。這里貼一下我之前完成mininet總結的博客。時光荏苒,珍惜當下,盡力而為。
