实验 2:Mininet 实验——拓扑的命令脚本生成
一、实验目的
掌握 Mininet 的自定义拓扑生成方法:命令行创建、Python 脚本编写
二、实验任务
通过使用命令行创建、Python 脚本编写生成拓扑,熟悉 Mininet 的基本功能。
三、实验步骤
- 实验环境
安装了 Ubuntu 18.04.5 Desktop amd64 的虚拟机 - 实验过程
(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
(2)通用情形的 Python 脚本自定义创建
mytopo.py代码如下:
# 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()
s1 = net.addSwitch('s1')
s2 = net.addSwitch('s2')
s3 = net.addSwitch('s3')
h1 = net.addHost('h1', cpu=0.4)
h2 = net.addHost('h2', cpu=0.3)
h3 = net.addHost('h3', cpu=0.3)
# 创建节点间的链路
net.addLink(h1, s1, bw=100, delay='10ms',max_queue_size=1000, loss=10, use_htb=True)
net.addLink(h2, s2, bw=100, delay='10ms',max_queue_size=1000, loss=10, use_htb=True)
#net.addLink(h1, s1)
#net.addLink(h2, s2)
net.addLink(h3, s3)
net.addLink(s1, s2)
net.addLink(s2, s3)
# 配置主机 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()
$ sudo python mytopo.py // 执行 py 文件

IperfTest.py代码
# 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(h2, s2, bw=10, delay='5ms',max_queue_size=1000, loss=0, use_htb=True)
net.addLink(h3, s3)
net.addLink(s1, s2)
net.addLink(s2, s3)
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((h1, h2))
net.iperf((h2, h3))
net.stop()
if __name__=='__main__':
setLogLevel('info') #print the log when Configuring hosts, starting switches and controller
IperfTest()
sudo python IperfTest.py

实验 2:Mininet 实验——拓扑的命令脚本生成的更多相关文章
- 实验 2:Mininet 实验——拓扑的命令脚本生成
实验 2:Mininet 实验--拓扑的命令脚本生成 一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二.实验任务 通过使用命令行创建.Python 脚本 ...
- 软件定义网络实验记录②--Mininet 实验——拓扑的命令脚本生成
一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二.实验任务 通过使用命令行创建.Python 脚本编写生成拓扑,熟悉 Mininet 的基本功能. 三. ...
- 实验 2 :Mininet 实验 —— 拓扑的命令脚本
实验2: Mininet 实验--拓扑的命令脚本 一.实验目的 掌握 Mininet 的自定义拓扑生成方法:命令行创建.Python 脚本编写 二 .实验任务 通过使用命令行创建.Python 脚本编 ...
- 软件定义网络实验记录③--Mininet 实验——测量路径的损耗率
一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定: 初步了解 Mininet 安装时自带的 POX 控制器脚本编写,测试路径损耗率. 二.实验任务 ...
- 实验 3:Mininet 实验——测量路径的损耗率
一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定;初步了解 Mininet 安装时自带的 POX 控制器脚本编写,测试路径损耗率. 二.实验任务 h ...
- Mininet实验 命令延伸实验扩展
本文参照:Mininet 命令延伸实验扩展 步骤1:命令行创建拓扑 sudo mn --topo minimal 最小的网络拓扑,一个交换机下挂两个主机. sudo mn --topo linear, ...
- mininet实验 脚本实现控制交换机行为
写在前面 本文参考 通过这个实验,我学习到了另一种下流表的方式. 下流表有两种方式(我目前了解): 通过controller下发. 通过OvS提供的API直接向OvS交换机下流表. 本实验脚本已经把相 ...
- mininet实验 可视化界面形成拓扑
参考博客一 参考博客二 实验目的 mininet中内置了一个mininet可视化工具:miniedit.miniedit在mininet/mininet/examples目录下提供miniedit.p ...
- 软件定义网络实验记录④--Open vSwitch 实验——Mininet 中使用 OVS 命令
一.实验目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用 Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解 ...
随机推荐
- FileZilla Server FTP服务器失败
使用Filezilla Server配置FTP服务器https://blog.csdn.net/chuyouyinghe/article/details/78998527 FileZilla Serv ...
- Shader Graph
About Shader Graph https://docs.unity3d.com/Packages/com.unity.shadergraph@7.3/manual/index.html uni ...
- SpringCloud 服务负载均衡和调用 Ribbon、OpenFeign
1.Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的-套客户端―负载均衡的工具. 简单的说,Ribbon是Netlix发布的开源项目,主要功能是提供客户端的 ...
- Java 与 Mysql连接,并分页显示
这是我第一个上规模的Java项目,我们必须在一周内完成的作业,零基础学习Java,网上收集了很多资料,逐渐对面向对象的思想有所了解,但还是半灌水,后期打算结合项目系统地学习一遍Java.老师布置的任务 ...
- uniapp 获取元素高度 距离顶部高度等
let _this=this let height="" const query = uni.createSelectorQuery() query.select('#u-drop ...
- Texstudio、Latex 大段注释,多行注释 快捷键
Texstudio.Latex 大段注释,多行注释 快捷键 单行注释:在每行前加 % 即可 大段注释: \usepackage{verbatim} \begin{comment} ... \end ...
- 在微信公众号"码海"里学了一招:在update语句里使用case when 以避免多次更新导致的数据异常.
需求:将emp表中工资大于一万的降到9成,工资少于一万的乘以1.2. 难点:如果分成两句update执行,在10000附近的值可能会执行两次. 钥匙:在update语句里采用case when,使更新 ...
- Java程序取MySQL的datetime字段,如何消除时间尾后讨厌的".0"
Problem: 直接取datetime字段的内容会有".0"后缀,如2020-05-03 18:21:39.0,虽无伤大雅但总觉得有些别扭. Solution:使用转化函数Dat ...
- request的各种方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Servle ...
- Linux:基础命令三
一.软链接 相当于windows中的快捷方式,为了方便用户在使用时更快找到 ln -s /application/appche2.2.0/ /application/appche 注意: ...