博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mininet系列实验(三):Mininet命令延伸实验扩展
阅读量:7049 次
发布时间:2019-06-28

本文共 3073 字,大约阅读时间需要 10 分钟。

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脚本文件然后输入下面的东西)

1 from mininet.net import Mininet2 from mininet.topo import LinearTopo3 Linear4 = LinearTopo(k=4)    #四个交换机,分别下挂一个主机4 net = Mininet(topo=Linear4)5 net.start()6 net.pingAll()7 net.stop()

 

然后把它修改为可执行文件

chmod +x num4.py

 

最后运行这个脚本

sudo python num4.py

 

(2)一个交换机下挂3个主机:同样的,我们在single3这个python脚本文件里面重复相同的操作

1 from mininet.net import Mininet2 from mininet.topo import SingleSwitchTopo3 Single3 = SingleSwitchTopo(k=3)   #一个交换机下挂3个主机4 net = Mininet(topo=Single3)5 net.start()6 net.pingAll()7 net.stop()

 

(3)树形拓扑(注:深度表示的是“树枝”的分化次数,扇出表示“树枝”每次分化的时候分化多少gen)

1 from mininet.net import Mininet2 from mininet.topolib import TreeTopo3 Tree22 = TreeTopo(depth=2,fanout=2)4 net = Mininet(topo=Tree22)5 net.start()6 net.pingAll()7 net.stop()

 

(此处那两个2是因为我把脚本文件里面的两个变量改成了输入的形式)

(4) 如果是非上述三种类型的拓扑,那么下面介绍一种适合各种拓扑形式的脚本创建模式。本例:1个交换机,2个主机,并且赋予主机IP地址

1 from mininet.net import Mininet 2 net = Mininet() 3 # 创建网络节点 4 c0 = net.addController() 5 h0 = net.addHost('h0') 6 s0 = net.addSwitch('s0') 7 h1 = net.addHost('h1') 8 # 创建两节点之间的连接 9 net.addLink(h0, s0)10 net.addLink(h1, s0)11 # 在接口处配置ip地址12 h0.setIP('192.168.1.1', 24)13 h1.setIP('192.168.1.2', 24)14 # 启动15 net.start()16 net.pingAll()17 net.stop()

 

结果如下:

(5)除了可以通过Python脚本创建基本的拓扑以外,还能在此基础上对性能进行限制。观察下面给出的脚本文件,addHost()语法可以对主机cpu进行设置,以百分数的形式;addLink()语法可以设置带宽bw、延迟delay、最大队列的大小max_queue_size、损耗率loss。

1 from mininet.net import Mininet 2 from mininet.node import CPULimitedHost 3 from mininet.link import TCLink 4 net = Mininet(host=CPULimitedHost, link=TCLink) 5 c0 = net.addController() 6 s0 = net.addSwitch('s0') 7 h0 = net.addHost('h0') 8 h1 = net.addHost('h1', cpu=0.5) 9 h2 = net.addHost('h1', cpu=0.5)10 net.addLink(s0, h0, bw=10, delay='5ms',11 max_queue_size=1000, loss=10, use_htb=True)12 net.addLink(s0, h1)13 net.addLink(s0, h2)14 net.start()15 net.pingAll()16 net.stop()

 

三 交互式界面创建主机、交换机等并且测试网络

sudo mn

 

1 py net.addHost('h3') 2 # 添加主机h3 3 py net.addLink(s1,net.get('h3')) 4 # 创建主机h3和s1的连接 5 py s1.attach('s1-eth3') 6 # 给交换机s1添加端口eth3用于连接h3 7 py net.get('h3').cmd('ifconfig h3-eth0 10.3') 8 # 给h3赋予IP(10.0.0.3) 9 h1 ping -c1 10.310 # h1 ping h311 px from mininet.util import dumpNodeConnections12 py dumpNodeConnections(net.hosts)13 # 测试网络,展示所有的网络信息14 py net.pingAll()15 # 所有节点的ping测试

 

这里有33%的掉包想请大佬指教一下是怎么回事

总结:

1.明白的脚本的具体运行方式和编辑方式以及脚本的简要内容

2.不明白为什么会丢包

转载于:https://www.cnblogs.com/a1164520408/p/9629110.html

你可能感兴趣的文章
详见github
查看>>
Vue 2.0 Application Sample
查看>>
二分图匹配之最大匹配——匈牙利算法
查看>>
不要重复发明轮子-C++STL
查看>>
1.Repeater控件
查看>>
windbg使用
查看>>
js中的in-for循环
查看>>
asp.net mvc2网站部署在IIS6的方法
查看>>
android的Activity横竖屏切换时的生命周期
查看>>
图像边界扩展
查看>>
C# JackLib系列之自定义鼠标风格的实现
查看>>
Javascript prototype 及 继承机制的设计思想
查看>>
Unexpected token '...'. Expected a property name.
查看>>
Android app AOP添加埋点技术总结
查看>>
每天学点GDB 4
查看>>
css:鼠标点击出现有颜色的边框?如何解决
查看>>
常用算法Java实现之希尔排序
查看>>
Tiny界面编辑器
查看>>
小程序 wx:for 循环嵌套
查看>>
IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
查看>>