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. iOS-CGContextRef

    图形上下文(Graphics Context)---绘制目标 需要在iOS应用程序的屏幕上进行绘制时,需要先定义一个UIView类,并实现它的drawRect:方法,当启动程序时,会先调用loadVi ...

  2. S5PV210 启动流程

    S3C6410启动流程 首先,看一下S3C6410启动流程 ① iROM supports initial boot up : initialize system clock, D-TCM, devi ...

  3. Vue使用ref 属性来获取DOM

    注意,在父组件中可以使用this.$refs.属性名  获取任何元素的属性和方法,子组件不可以获取父组件中的 <!DOCTYPE html> <html lang="en& ...

  4. 织梦dede:channelartlist调用排除指定typeid栏目

    在使用 dede:channelartlist 自动调用栏目内容时,经常会遇到某些栏目不需要调用,比如“关于我们”.“联系地址”等无持续更新的栏目.要想在 dede:channelartlist 调用 ...

  5. 【年度盘点】最受欢迎的5大Java练习项目

    5. SSM + easyUI 搭建简易的人事管理系统 当前学习采用 SSM + easyUI 来开发一个比较简易的人事管理系统,让大家能够通过实际项目掌握 SSM 项目的开发.项目当前学习人数:16 ...

  6. Docker本地镜像上传到阿里云仓库

    登录阿里云 在容器镜像服务中先创建命名空间 随后创建镜像仓库 我使用的代码源是本地仓库 创建后点击仓库的管理 就可以看到阿里云提供的操作指南 (下面的操作每个人都不同,详情查看阿里云的操作指南) 输入 ...

  7. 如何使用Systemctl管理系统服务和单元?

    chu原文:How To Use Systemctl to Manage Systemd Services and Units 简书:如何使用Systemctl管理系统服务和单元? 引言 System ...

  8. python之tkinter入坑Pack()------(1)

    tkinter 的pack()可以设置的属性如下: pack_configure(self, cnf={}, **kw)Pack a widget in the parent widget. Use  ...

  9. 个性化排序算法实践(一)——FM算法

    因子分解机(Factorization Machine,简称FM)算法用于解决大规模稀疏数据下的特征组合问题.FM可以看做带特征交叉的LR. 理论部分可参考FM系列,通过将FM的二次项化简,其复杂度可 ...

  10. linux网络编程之简单的线程池实现

    转眼间离15年的春节越来越近了,还有两周的工作时间貌似心已经不在异乡了,期待与家人团聚的日子,当然最后两周也得坚持站好最后一班岗,另外期待的日子往往是心里不能平静的,越是想着过年,反而日子过得越慢,于 ...