Mininet简单性能测试
建一个简单的模型,使用一个单交换机,然后链接n个主机形成拓扑,然后对每个链路设置带宽,延迟时间,和丢包率。
这里就选择建一个单交换机和六个主机的作为例子。

创建py脚本生成拓扑:写一个类生成一个单交换机和六个主机的拓扑,并且给每个主机和交换机之间的连接赋予100m的带宽,5ms的延迟和1%的丢包率。然后通过pingall函数测试连接,iperf函数测试主机间的带宽,
from mininet.topo import Topo
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 class SingleSwitchTopo(Topo):
def __init__(self, n=2, **opts):
Topo.__init__(self, **opts)
switch = self.addSwitch('s1')
for h in range(n):
# Each host gets 50%/n of system CPU
host = self.addHost('h%s' % (h + 1), cpu=.5/n)
# 100 Mbps, 5ms delay, 1% Loss, 1000 packet queue
self.addLink(host, switch, bw=100, delay='5ms', loss=1,
max_queue_size=1000, use_htb=True) def perfTest():
topo = SingleSwitchTopo(n=6)
net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
print "Testing bandwidth between h1 and h4"
h1, h4 = net.get('h1', 'h4')
net.iperf((h1, h4))
print "Testing bandwidth between h1 and h6"
h1, h6 = net.get('h1', 'h6')
net.iperf((h1, h6))
net.stop() if __name__ == '__main__':
setLogLevel('info')
perfTest()
ps:如果直接执行出现错误找不到py解释器的话,在代码开头加上#!/usr/bin/python。或者直接使用
sudo python 文件名.py
执行
结果如下图所示:

瞎搞一波,再试试两个交换机相互连接,然后分别下挂三个主机。link全部赋予10m带宽,5ms延迟和0%的丢包率。

from mininet.topo import Topo
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 class DoubleSwitchTopo(Topo):
def __init__(self, n=2, **opts):
Topo.__init__(self, **opts)
switch1 = self.addSwitch('s1')
switch2 = self.addSwitch("s2")
self.addLink(switch1, switch2, bw=10, delay='5ms',
loss=0, max_queue_size=1000, use_htb=True)
for h in range(n/2):
host = self.addHost('h%s' % (h + 1), cpu=.5/n)
self.addLink(host, switch1, bw=10, delay='5ms', loss=0,
max_queue_size=1000, use_htb=True)
for h in range(n/2, n):
host = self.addHost('h%s' % (h + 1), cpu=.5/n)
self.addLink(host, switch2, bw=10, delay='5ms', loss=0,
max_queue_size=1000, use_htb=True) def perfTest():
topo = DoubleSwitchTopo(n=6)
net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
print "Testing bandwidth between h1 and h3"
h1, h3 = net.get('h1', 'h3')
net.iperf((h1, h3))
print "Testing bandwidth between h4 and h6"
h4, h6 = net.get('h4', 'h6')
net.iperf((h4, h6))
net.stop() if __name__ == '__main__':
setLogLevel('info')
perfTest()
结果如下图:

Mininet简单性能测试的更多相关文章
- Mininet实验 设置带宽之简单性能测试
原文:设置带宽之简单性能测试 这个实验主要还是说明通过python程序来设定Mininet中的链路带宽. 目的: Python脚本实现自定义拓扑 设置链路的带宽.延迟及丢包率 iperf测试主机间的带 ...
- Greenplum 简单性能测试与分析
如今,多样的交易模式以及大众消费观念的改变使得数据库应用领域不断扩大,现代的大型分布式应用系统的数据膨胀也对数据库的海量数据处理能力和并行处理能力提出了更高的要求,如何在数据呈现海量扩张的同时提高处理 ...
- .Net core2.0日志组件Log4net、Nlog简单性能测试
.Net core之Log4net.Nlog简单性能测试 比较log4net.nlog的文件写入性能(.netcore环境),涉及代码和配置如有不正确的地方,还请批评指正. 原创,转载请著名出处:ht ...
- snaic和tornado的简单性能测试
操作系统 : CentOS7.3.1611_x64 Python 版本 : 3.6.8 tornado版本:6.0.2 snaic版本:19.9.0 CPU : Intel(R) Core(TM) i ...
- Mininet系列实验(五):Mininet设置带宽之简单性能测试
1.实验目的 该实验通过Mininet学习python自定义拓扑实现,可在python脚本文件中设计任意想要的拓扑,简单方便,并通过设置交换机和主机之间链路的带宽.延迟及丢包率,测试主机之间的性能.在 ...
- JMeter简单性能测试(适合初学者)
利用JMeter进行Web测试 JMeter介绍 脚本录制 运行JMeter进行测试 JMeter主要组件介绍 参数化设置 动态数据关联 使用命令行运行JM ...
- ClickHouse之简单性能测试
前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse,接下来进行简单的性能测试.测试数据来源于美国民用航班的数据,从1987年到2017年,有1.7亿条. 环境: centos ...
- LevelDB和ForestDB简单性能测试(含代码)
测试环境简单说明 Windows下测试 硬件环境如下: 处理器:Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz 内 存:8GB 硬 盘:希捷 ST1000DM003 操 ...
- 简单性能测试:springboot-2.x vs actix-web-4.x benchmark
性能测试:springboot-2.x vs actix-web-4.x benchmark 转载请注明出处 https://www.cnblogs.com/funnyzpc/p/15956465.h ...
随机推荐
- python语言验证码识别,以后不用老输入验证码了。
1.Python 3.6 安装包 1.要加环境变量 2.pip安装PIL库 3.pip安装pytesseract模块 2.tesseract-ocr-setup-4.00.00dev.exe -- ...
- oracle-03 表的管理
一.表名和列名的命名规则1).必须以字母开头2).长度不能超过30个字符3).不能使用oracle的保留字4).只能使用如下字符 a-z,a-z,0-9,$,#等 二.数据类型1).字符类char 长 ...
- 请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别?
error指的是不可预料的错误,可能会导致程序宕机:而exception指的是在程序运行中可以预见的异常,而异常分为检查异常与一般异常,检查异常需要在程序中显示捕获并处理,一般异常可以通过程序编码来进 ...
- CentOS7 minimal 没有netstat命令
在CentOS 7 minimal中使用netstat 时,发现显示如下,明显没有了netstat 命令 [root@localhost ~]# netstat -a -bash: netstat: ...
- javaScript 字符串与unicode码之间的相互转换,函数的封装
在我们的开发过程中,有时在对数据进行储存的时候,我们需要将字符串转成unicode. 比如,在jsp开发时,前端使用页面间传值时,将传值参数先存入cookie中,然后在使用的时候,再从ookie中取出 ...
- 汇编:汇编语言实现冒泡排序(loop指令实现)
;=============================== ;循环程序设计 ;loop指令实现 ;冒泡排序 ;for(int i=0;i<N;i++){ ; for(int h=0;j&l ...
- Mysql 5.7 开启远程连接
1 在控制台执行 mysql -uroot -p 系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台 2 选择数据库 mysql -uroot -p use mysql; 开启远程 ...
- Mongoose模式的扩展
模式的扩展 默认值 默认值的类型: 固定值.即使生成 代码展示: var mongoose = require('mongoose');mongoose.connect('mongodb://loca ...
- [Cracking the Coding Interview] 4.5 Validate BST
Implement a function to check if a binary tree is a binary search tree. 这道题很经典,让我们判断一棵树是不是二叉查找树.但是首先 ...
- 48-Identity MVC:Model前后端验证
1-创建RegisterViewModel类 namespace MvcCookieAuthSample.ViewModel { public class RegisterViewModel { [R ...