2020 SDN第二次上機實驗

2022-08-22 11:12:13 字數 4003 閱讀 9523

掌握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...