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命令延伸实验扩展的更多相关文章

  1. Mininet实验 命令延伸实验扩展

    本文参照:Mininet 命令延伸实验扩展 步骤1:命令行创建拓扑 sudo mn --topo minimal 最小的网络拓扑,一个交换机下挂两个主机. sudo mn --topo linear, ...

  2. 哈工大 计算机网络 实验三 IPv4 分组收发实验&IPv4 分组转发实验

    计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 IPv4 分组收发实验&IPv4 分组转发实验 实验目的: (注:实验报告模板中的各项内容仅供参考,可依照实际实验情况进 ...

  3. Mininet 系列实验(二)

    实验内容 分别通过命令行创建.Python脚本编写以及交互式界面创建来熟悉Mininet的基本功能. 参考 Mininet命令延伸实验扩展 实验环境 虚拟机:Oracle VM VirtualBox ...

  4. 20172309 《Java软件结构与数据结构》实验三报告

    课程:<程序设计与数据结构(下)> 班级:1723 姓名: 王志伟 学号:20172309 实验教师:王志强老师 实验日期:2018年11月2日 必修/选修: 必修 实验内容: 实验一: ...

  5. 实验三 敏捷开发与XP实践20145204和20145236

    实验三 敏捷开发与XP实践20145204和20145236 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 学会使用git 学会代码的重构 实现团队合作 团队分工 20145204: ...

  6. 20155239 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

    实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 学会使用git 学会代码的重构 实现团队合作 团队分工 20155239:按照老师的实验三教程,逐步实验,编写代码,并用git上传,下载团 ...

  7. 20145208 实验三 Java面向对象程序设计

    20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  8. Java第三次实验敏捷开发与XP实验

    实验三-1 1.实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http: ...

  9. 实验三:敏捷开发与XP实践

    Java实验三报告 一.   实验内容 (一)敏捷开发与XP 内容:1.敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 2.极限编程(eXtreme Pro ...

随机推荐

  1. ubuntu18.04 下启动Android Studio报错KVM is required to run this AVD. /dev/kvm device: permission denied.

    在ubuntu18.04下安装Android Studio,安装了模拟器后运行报错 KVM is required to run this AVD. /dev/kvm device: permissi ...

  2. Linux 之 文件

    文件名称 在linux中,windows概念中的文件夹和文件是没有区别的,都是统称为文件. 1.Linux中文件的名称大小写是敏感的 2.名称最多可以为255个字符 3.除了正斜线以外,都是有效字符 ...

  3. Django之简介

    一.MVC模型与MTV模型 MVC模型就是Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起 ...

  4. jade属性怎么写

    关于元素和标签,可能傻傻分不清楚,什么是元素,什么是标签,举个例子 比如div是一个块状元素,那么尖括号包起来的是标签,他用来标记这个元素,尖括号里面是元素名,元素是由开始和结束标签组成,用来包含内容 ...

  5. 使用ESP8266制作一个微型气象站

    本文主要介绍如何制作一个微型气象站. 这个想法和大部分代码来自Daniel Eichhorn在这个网址上的博客,可以去看看,这里面有一些很酷的东西! http://blog.squix.ch/2015 ...

  6. Win8.1 Anaconda下安装第三方库,以jieba wordcloud为例

    最近在看情感分析的东西,于是在spyder里import jieba,and then就报错了. 百度之后,发现jieba是一个第三方库,它并不存在于anaconda内置的packages中.所以在用 ...

  7. P2P system: GNUTELLA

    P2P system: GNUTELLA GNUTELLA是第一个经论证的分布式的peer-to-peer system. Napster的一个重大问题是涉及到间接侵权,所以GNUTELLA消除the ...

  8. Selenium常用API的使用java语言之7-控制浏览器操作

    (六)控制浏览器操作 1.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸找开,访问的页面在这种尺寸下运行.例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估 ...

  9. 如何在C中定义多行宏定义?

    请参阅下面的示例,其中我将交换两个变量的值. do-while(0)结构很不错 #include <stdio.h> #define swap(x,y,T) do { \ T temp = ...

  10. Django --- 与数据库进行交互

    目录 1.静态文件配置 1.什么是静态文件 2.为什么用户在浏览器中输入的网址能够访问到响应的资源?有时候不能访问? 3.如果想要访问静态资源怎么做? 4.手动开设静态文件访问资源 5.关于两个sta ...