掌握mininet的自定義拓撲生成方法:命令列建立、python指令碼編寫
通過使用命令列建立、python 指令碼編寫生成拓撲,熟悉mininet 的基本功能
在建立的個人目錄下,修改上述 mininet 指令碼,使之變成乙個線性拓撲(交換機和主機數均為3)
各類效能限制保持不變
使用iperf 完成拓撲內3臺主機相互之間的簡單效能測試
在發表一篇部落格,記錄**和主要步驟
一定的python程式設計能力
1.實驗環境
安裝了ubuntu 16.04.7 desktop amd64的虛擬機器
2.實驗過程
(1)針對特定拓撲的命令列快速建立
最小拓撲,1臺交換機下掛2臺主機
$ sudo mn --topo minimal
簡單拓撲, 1 臺交換機下掛 n 臺主機,此處 n=3;n=2 即為最小拓撲
$ sudo mn --topo single,3
線性拓撲,交換機連成一線 每台交換機下掛 1 臺主機,此處有 3 臺交換機 3 臺主機
$ sudo mn --topo linear,3
樹形拓撲,基於深度 depth 和扇出 fanout ,此處均為 2
$ sudo mn --topo tree,fanout=2,depth=2
根據此次實驗的具體內容要求,我們選擇了3臺主機與3臺交換機的線性拓撲進行測試,得到結果:
(2)通用情形的python指令碼自定義建立
此拓撲為3主機線性拓撲通過視覺化工具實驗所得到的拓撲圖。
我們可以通過編寫python指令碼自定義網路效能。使用addhost()加入主機和交換機,加入cpu引數設定主機效能;使用addlink()來新增鏈路並設定頻寬bw,延時delay、最大佇列值maxqueuesize、丟包率loss。**如下:
# coding=utf-8
from mininet.net import mininet
from mininet.node import cpulimitedhost
from mininet.link import tclink
net = mininet(host=cpulimitedhost, link=tclink) # 如不限制效能,引數為空
# 建立網路節點
c0 = net.addcontroller()
h1 = net.addhost('h1', cpu=0.5)
h2 = net.addhost('h2', cpu=0.5)
h3 = net.addhost('h3')
s1 = net.addswitch('s1')
s2 = net.addswitch('s2')
s3 = net.addswitch('s3')
# 建立節點間的鏈路
net.addlink(h1, s1, bw=10, delay='5ms',max_queue_size=1000, loss=10, use_htb=true)
net.addlink(s1, s2)
net.addlink(h2, s2, bw=10, delay='5ms',max_queue_size=1000, loss=10, use_htb=true)
net.addlink(s2, s3)
net.addlink(s3, h3)
# 配置主機 ip
h1.setip('10.0.0.1', 24)
h2.setip('10.0.0.2', 24)
h3.setip('10.0.0.3', 24)
net.start()
net.pingall()
net.stop()
執行命令:
$ nano lineartopo.py //複製python**到py檔案中
$ sudo python lineartopo.py //執行py檔案
得到以下結果:
修改python指令碼,在其中新增iperf功能使之可以測試網路拓撲中指定主機之間的頻寬,**如下:
# coding=utf-8
#!/usr/bin/python
from mininet.net import mininet
from mininet.node import cpulimitedhost
from mininet.link import tclink
from mininet.util import dumpnodeconnections
from mininet.log import setloglevel
def iperftest():
net = mininet(host=cpulimitedhost, link=tclink)
c0 = net.addcontroller()
h1 = net.addhost('h1', cpu=0.5)
h2 = net.addhost('h2', cpu=0.5)
h3 = net.addhost('h3')
s1 = net.addswitch('s1')
s2 = net.addswitch('s2')
s3 = net.addswitch('s3')
net.addlink(h1, s1, bw=10, delay='5ms',max_queue_size=1000, loss=0, use_htb=true)
net.addlink(s1, s2)
net.addlink(h2, s2, bw=10, delay='5ms',max_queue_size=1000, loss=0, use_htb=true)
net.addlink(s2, s3)
net.addlink(s3, h3)
h1.setip('10.0.0.1', 24)
h2.setip('10.0.0.2', 24)
h3.setip('10.0.0.3', 24)
net.start()
print "dumping host connections"
dumpnodeconnections(net.hosts)
print "testing network connectivity"
net.pingall()
print "testing bandwidth"
h1, h2, h3= net.get('h1', 'h2', 'h3')
net.iperf((h1, h3))
net.iperf((h2, h3))
net.iperf((h1, h2))
net.stop()
if __name__=='__main__':
setloglevel('info') #print the log when configuring hosts, starting switches and controller
iperftest()
得到3臺主機互相之間的頻寬:
關於iperf 的延伸實驗參考:
SDN第二次上機實驗
能夠對open vswitch進行基本操作 能夠通過命令列終端使用ovs命令操作open vswitch交換機,管理流表 能夠通過mininet的python 執行ovs命令,控制網路拓撲中的open vswitch交換機 一 基本要求 1.建立ovs交換機,並以ovs switch 命名,其中 為...
2020 SDN上機二次個人作業
掌握 mininet 的自定義拓撲生成方法 命令列建立 python 指令碼編寫 通過使用命令列建立 python 指令碼編寫生成拓撲,熟悉 mininet 的基本功能。1.實驗環境 安裝了 ubuntu 18.04.5 desktop amd64 的虛擬機器 1 針對特定拓撲的命令列快速建立 注意...
第二次上機實驗
檔名稱 ex1 2.cpp 作 者 莫洋 完成日期 2016 年 3 月 14 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 運用函式 程式輸出 略 問題分析 略 演算法設計 略 include includeint ispalindrome int int reve...