官方文档:http://mininet.org/walkthrough/

翻译的官方文档:https://segmentfault.com/a/1190000000669218

ovs-ofctl相关指令:http://blog.csdn.net/rocson001/article/details/73163041

sudo mn --topo-single,3 --mac --switch-ovsk --controller-remote, ip = 192.168.56.1

运行mininet并创建一个简单的topo(1个switch,3个host);创建的host拥有的mac地址相当于独立的IP,OpenFlow switch拥有3个端口;创建的switch连接到remote控制器上。

mininet>

1)nodes   查看mininet中节点的状态

2)help   获取帮助列表

3)h1 ifconfig  查看host1的IP等信息

4)xterm h1   打开host1的终端

5)exit  退出mininet登录

6)iperf h1 h2  测试h1和h2之间的带宽,用TCP

7)net  显示link状态

8)h1 ping -c 4 h2  检查两个主机间的连通状态

  解释:该命令只会ping 4次,在命令中出现代表主机的字符串时,即上面的h2,该节点名称会被其ip地址替代。上面的ping命令能让我们看到Openflow控制流量。主机h1请求h2的MAC地址的ARP数据包,触发了上传控制器的packet_in消息。然后控制器将packet_out消息洪泛到其他交换机端口(这里只有和h2相连的端口),主机h2发现ARP请求进行回复。回复同样上交控制器,控制器将其发送给h1并下发一条流表项。如下图的一次完整通信:

  现在h1就知道h2的mac地址,并且能ping通了,此时再ping,发现耗时更短。因为交换机中已经有转发icmp流量的流表项了,所以之后的ping都不会产生控制流量(即发给控制器的),icmp包直接通过交换机流表项快速转发出去。

9)dump  输出各节点信息

10)iperfudp  测试带宽,用UDP

11)dpctl 相关命令

  1.dpctl dump-flows  查看topo中的所有流表

  2.s1 dpctl dump-flows tcp:127.0.0.1:6634/6654  如果topo只有一个交换机可以执行这个命令,查看属于s1交换机的流表项【如果在虚拟机跑floodlight就是6654,如果在物理机跑floodlight,需要在建topo时加上listenPort=6654,即,这样就可以正常执行这个命令和下一个命令,且端口号是在交换机个数的基础上叠加的】

  例子如下:

  【dpctl 【命令】,mininet会对每个交换机执行【命令】,发现上图s1并没有对某一个ip+port进行绑定】

  3.s1 dpctl add-flow tcp:127.0.0.1:6634/6654 in_port=1,actions=output:2  如果topo只有一个交换机可以执行这个命令,在s1交换机上添加流表项

  4.dpctl add-flow in_port=1,actions=output:2  给topo中的所有交换机都添加这个流表项

  如果topo中有多个交换机应该执行如下命令做相应操作:

  1.在非mininet终端下,执行命令:sudo ovs-ofctl dump-flows s2:查看s2交换机的流表项

  2.在非mininet终端下,执行命令:sudo ovs-ofctl add-flow s1 in_port=2,actions=output:1 :给s1交换机添加流表项

  流表信息如下:  

12)link s1 s2 down  断开s1和s2之间的链路,此操作后会使经过s1和s2链路的主机ping不通,而连在同一个交换机上的主机可以ping通

13)link s1 s2 up  连接s1和s2之间的链路

14)sudo mn -c   在非mininet终端下,执行该命令,可以clear上一次退出topo所遗留的文件。在一次exit后,必须执行该命令,否则会导致topo创建不成功。

sudo mn --switch ovs --controller ref --topo tree,depth=,fanout= ---test pingall
指定远程控制器:【--controller=remote,ip=192.168.199.12,port=】

创建一个树形拓扑,2层,9个交换机,1个核心交换机+8个接入层交换机(星型拓扑),64个主机(每个接入层交换机连8台主机)。

ovs表示用的是Open vSwitch交换机,ref表示用的是Openflow/Stanford reference controller(估计是mininet自带的)。最后用pingall测试了一下,很耗时,并且pingall结束后,命令行都没有出来网络就直接关闭了。

mn命令代表的sh文件,路径为mininet/bin/mn。文件语言格式确实就是python(#!/usr/bin/env python,多了个env),但好像没有py后缀?并且mn命令并没有用到python来编译(即并不是sudo python mn),这就不太懂了。查了一下,关键是python头部中env的区别,解释

如果最后面不加--test pingall,运行后就会进入命令行mininet>模式,而不是pingall结束后就直接将网络关闭了。

$ sudo mn --test pingall --topo single,
拓扑:一个交换机连3主机。测试连通性后关闭网络。 $ sudo mn --test pingall --topo linear,
拓扑:线性的4交换机4主机,即交换机一条线,每个交换机只连一个主机。 $ sudo mn --test pingall --topo tree,depth=,fanout=
拓扑:3个交换机4个主机,构成两层的树形结构。

简单的开启web服务器和客户端相关的命令:

mininet>【这里输命令会由mn处理】
() mininet> h1 ping h2
() mininet> h2 python –m SimpleHTTPServer >&/tmp/http.log &
() mininet> h1 wget –O – h2
(4)   mininet> h2 kill %python

(1)h1指明发起命令的主机,后面是具体命令,相当于打开了h1的一个虚拟终端,在其中执行h1后面的命令。

(2)表示打开h2的终端,执行一个启动简单python服务器(http)的命令。80表示h2开启的端口号(http),后面看不懂的一串,大概是将日志写到指定文件,这样就不会占用cli终端了(解释:一般执行启动http服务器的python命令后,cli终端会被日志信息占用,此时无法输入其他命令,而有了后面一串,该命令就像是在后台运行,可以继续输其他命令)。

(3)在(2)服务器开启的情况下,向h2请求wget(一般用来文件下载)。该命令就是将h2打开的http服务器下的index页面下载下来了。执行结果如下:(10.0.0.2是h2的ip地址。)

(4)h2关闭服务器。

mininet命令的更多相关文章

  1. Mininet系列实验(三):Mininet命令延伸实验扩展

    1 实验目的 熟悉Mininet自定义拓扑三种实现方式:命令行创建.Python脚本编写.交互式界面创建. 2 实验原理 Mininet 是一个轻量级软件定义网络和测试平台:它采用轻量级的虚拟化技术使 ...

  2. mininet安装与简单命令总结

    下载地址:http://mininet.org/ 我下载的是mininet镜像,用于导入windows Vmware中使用 用户名和密码都是mininet 下载后 导入VMware即可 建立一个简单的 ...

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

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

  4. SDN实验---Mininet的相关命令(待补充完善)

    一:补充 (一)推文 openvswitch的原理和常用命令 https://blog.csdn.net/ten_sory/article/details/79593554 (二)回顾:sudo mn ...

  5. Mininet的安装与卸载

    1.Mininet的卸载比较简单,只需要执行以下命令: sudo rm -rf /usr/local/bin/mn /usr/local/bin/mnexec /usr/local/lib/pytho ...

  6. 基于OpenDaylight和Mininet的试验床平台搭建

    ##########################################平台架构######################################### 一.虚拟机安装和镜像加载 ...

  7. Mininet安装及使用

    最简单的方法是开始 下载一个预包装Mininet / Ubuntu VM . 这个虚拟机包括Mininet本身,所有预装OpenFlow二进制文件和工具,调整内核配置,以支持更大的Mininet网络. ...

  8. SDN 网络系统之 Mininet 与 API 详解

    SDN 网络系统之 Mininet 与 API 详解 Mininet 是轻量级的软件定义网络系统平台,同时提供了对 OpenFlow 协议的支持.本文主要介绍了 Mininet 的相关概念与特性,并列 ...

  9. mininet的学习之一

    mininet命令 (1)--topo (2)--switch (3)--controller (4)--mac 内部交互命令 添加主机 添加链路 添加接口 添加IP 确定是否创建成功 用h1 pin ...

随机推荐

  1. [Bzoj2282]消防(二分答案+树的直径)

    Description 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情,所以这个国家 ...

  2. 11,flask之--WTForms

    WTForms是什么? 相当于django的ModelForm. 在网页中,为了和用户进行信息交互总是不得不出现一些表单.flask设计了WTForm表单库来使flask可以更加简便地管理操作表单数据 ...

  3. JWT应用

    调试器库简介问一件T恤! 精心制作 JSON Web令牌简介 新:免费获得JWT手册并深入学习JWT! 什么是JSON Web Token? JSON Web Token(JWT)是一个开放标准(RF ...

  4. Monkey、Monkeyrunner之间的区别

    Monkey.Monkeyrunner之间的区别 一.Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输 ...

  5. HTML5 FileReader接口学习笔记

    1.FileReader概述 FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据. 其中F ...

  6. Python下安装protobuf

    1. 下载安装包 2. 解压缩 tar –xzvf protobuf-2.6.1.tar.gz 3. 安装protoc 在python中使用protocbuf需要Protocal Buffer 编译器 ...

  7. 删除maven仓库中的lastUpdate文件

    使用idea时导入hibernate 5.1.0的jar包,然后发现本地仓库中找不到该版本的jar 然后手贱 alt+enter 发现提示 update maven indices 然后以为更新就会好 ...

  8. 软工实践 - 第十六次作业 Alpha 冲刺 (7/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10013959.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...

  9. python3.6操作mysql

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

  10. 16个简单实用的.htaccess技巧

    .htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...