Mininet系列实验(三):Mininet命令延伸实验扩展
1 实验目的
熟悉Mininet自定义拓扑三种实现方式:命令行创建、Python脚本编写、交互式界面创建。
2 实验原理
Mininet 是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith 等各种协议,Mininet 也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。
3 实验内容
1.命令行创建拓扑,这里举4个例子
(1)最小的网络拓扑,一个交换机下挂两个主机。
sudo mn --topo minimal
(2)每个交换机连接一个主机,交换机间相连接。本例:4个主机,4个交换机
sudo mn --topo linear,4
(3)每个主机都连接到同一个交换机上。本例:3个主机,一个交换机。
sudo mn --topo single,3
(4)定义深度和扇出形成基于树的拓扑。本例:深度2,扇出2。
sudo mn --topo tree, fanout=2,depth=2
2 在脚本文件内输入代码然后通过指令运行
(1)--linear,4:在装有Mininet镜像的虚拟机中新建脚本文件我给他命名为num4.py,添加以下内容:
我在mininet/mininet/examples/test里面创建的(首先先要sudo su进入开发者模式,然后再用gedit 以py为后缀的文件名创建python脚本文件然后输入下面的东西)
from mininet.net import Mininet
from mininet.topo import LinearTopo
Linear4 = LinearTopo(k=4) #四个交换机,分别下挂一个主机
net = Mininet(topo=Linear4)
net.start()
net.pingAll()
net.stop()
然后把它修改为可执行文件
chmod +x num4.py
最后运行这个脚本
sudo python num4.py
(2)一个交换机下挂3个主机:同样的,我们在single3这个python脚本文件里面重复相同的操作
from mininet.net import Mininet
from mininet.topo import SingleSwitchTopo
Single3 = SingleSwitchTopo(k=3) #一个交换机下挂3个主机
net = Mininet(topo=Single3)
net.start()
net.pingAll()
net.stop()
(3)树形拓扑(注:深度表示的是“树枝”的分化次数,扇出表示“树枝”每次分化的时候分化多少gen)
from mininet.net import Mininet
from mininet.topolib import TreeTopo
Tree22 = TreeTopo(depth=2,fanout=2)
net = Mininet(topo=Tree22)
net.start()
net.pingAll()
net.stop()
(此处那两个2是因为我把脚本文件里面的两个变量改成了输入的形式)
(4) 如果是非上述三种类型的拓扑,那么下面介绍一种适合各种拓扑形式的脚本创建模式。本例:1个交换机,2个主机,并且赋予主机IP地址
from mininet.net import Mininet
net = Mininet()
# 创建网络节点
c0 = net.addController()
h0 = net.addHost('h0')
s0 = net.addSwitch('s0')
h1 = net.addHost('h1')
# 创建两节点之间的连接
net.addLink(h0, s0)
net.addLink(h1, s0)
# 在接口处配置ip地址
h0.setIP('192.168.1.1', 24)
h1.setIP('192.168.1.2', 24)
# 启动
net.start()
net.pingAll()
net.stop()
结果如下:
(5)除了可以通过Python脚本创建基本的拓扑以外,还能在此基础上对性能进行限制。观察下面给出的脚本文件,addHost()语法可以对主机cpu进行设置,以百分数的形式;addLink()语法可以设置带宽bw、延迟delay、最大队列的大小max_queue_size、损耗率loss。
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
net = Mininet(host=CPULimitedHost, link=TCLink)
c0 = net.addController()
s0 = net.addSwitch('s0')
h0 = net.addHost('h0')
h1 = net.addHost('h1', cpu=0.5)
h2 = net.addHost('h1', cpu=0.5)
net.addLink(s0, h0, bw=10, delay='5ms',
max_queue_size=1000, loss=10, use_htb=True)
net.addLink(s0, h1)
net.addLink(s0, h2)
net.start()
net.pingAll()
net.stop()
三 交互式界面创建主机、交换机等并且测试网络
sudo mn
py net.addHost('h3')
# 添加主机h3
py net.addLink(s1,net.get('h3'))
# 创建主机h3和s1的连接
py s1.attach('s1-eth3')
# 给交换机s1添加端口eth3用于连接h3
py net.get('h3').cmd('ifconfig h3-eth0 10.3')
# 给h3赋予IP(10.0.0.3)
h1 ping -c1 10.3
# h1 ping h3
px from mininet.util import dumpNodeConnections
py dumpNodeConnections(net.hosts)
# 测试网络,展示所有的网络信息
py net.pingAll()
# 所有节点的ping测试
这里有33%的掉包想请大佬指教一下是怎么回事
总结:
1.明白的脚本的具体运行方式和编辑方式以及脚本的简要内容
2.不明白为什么会丢包
Mininet系列实验(三):Mininet命令延伸实验扩展的更多相关文章
- Mininet实验 命令延伸实验扩展
本文参照:Mininet 命令延伸实验扩展 步骤1:命令行创建拓扑 sudo mn --topo minimal 最小的网络拓扑,一个交换机下挂两个主机. sudo mn --topo linear, ...
- 哈工大 计算机网络 实验三 IPv4 分组收发实验&IPv4 分组转发实验
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 IPv4 分组收发实验&IPv4 分组转发实验 实验目的: (注:实验报告模板中的各项内容仅供参考,可依照实际实验情况进 ...
- Mininet 系列实验(二)
实验内容 分别通过命令行创建.Python脚本编写以及交互式界面创建来熟悉Mininet的基本功能. 参考 Mininet命令延伸实验扩展 实验环境 虚拟机:Oracle VM VirtualBox ...
- 20172309 《Java软件结构与数据结构》实验三报告
课程:<程序设计与数据结构(下)> 班级:1723 姓名: 王志伟 学号:20172309 实验教师:王志强老师 实验日期:2018年11月2日 必修/选修: 必修 实验内容: 实验一: ...
- 实验三 敏捷开发与XP实践20145204和20145236
实验三 敏捷开发与XP实践20145204和20145236 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 学会使用git 学会代码的重构 实现团队合作 团队分工 20145204: ...
- 20155239 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 学会使用git 学会代码的重构 实现团队合作 团队分工 20155239:按照老师的实验三教程,逐步实验,编写代码,并用git上传,下载团 ...
- 20145208 实验三 Java面向对象程序设计
20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- Java第三次实验敏捷开发与XP实验
实验三-1 1.实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http: ...
- 实验三:敏捷开发与XP实践
Java实验三报告 一. 实验内容 (一)敏捷开发与XP 内容:1.敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 2.极限编程(eXtreme Pro ...
随机推荐
- node.js 调用mysql 数据库
1.在package.json中添加mysql依赖 命令:npm install mysql --save 2.项目中添加mysql文件夹 > 文件夹下创建config文件夹,并在config下 ...
- (三)react-native开发系列之开发环境集成
先上图,由于是虚拟机中的ios虚拟器,所以有点卡 关于react-native的开发集成,主要包括以下几个方面 1.路由及页面跳转 2.数据请求的封装 3.状态的管理 4.公共方法和全局变量的封装 5 ...
- Zabbix MySQL percona 模板部署
Zabbix MySQL percona服务端执行以下操作https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&a ...
- Arduino Tian开发板:一个功能强大的天气预报中心
每天都在出现新的连接设备. Arduino携手云平台一起加入这场战斗,于是出现了一个新的挑战者 - Arduino Tian! 使用python和经典Arduino框架,本教程将引导您将您的Ardui ...
- logstash可以考虑在项目中用起来
在用Node.js开发项目的时候,我们常用 log4js 模块来进行日志的记录,可以通过配置 log4js 的 Appenders 将日志输出到Console.File和GELF等不同的地方. log ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
- 使用docker简单启动springboot项目
1.搭建docker环境 需要linux系统必须是centOS7以上 执行一下命令: yum install epel-release –y yum clean all yum list 2.安装 y ...
- Mysql-Percona mysql5.7简单安装
Mysql-Percona mysql5.7简单安装 一.什么是Percona 单从mysql的角度来讲,可以把Percona理解为mysql的一个分支,因为mysql的源码是开源的,Percona就 ...
- html学习 菜鸟
1HTML 不是一种编程语言,而是一种标记语言 2只有 <body>区域才会在浏览器中显示. 3<!DOCTYPE>声明有助于浏览器中正确显示网页.doctype 声明是不区分 ...
- Django中出现:TemplateDoesNotExist at
setting文件中加入: