1.使用Vmware打开下载好的mininet-2.2.2-170321-ubuntu-14.04.4-server-amd64

2.登录账号密码都为mininet

3.用命令行生成拓扑,并测试连通性

1)最小的网络拓扑,一个交换机下面挂两个主机:sudo mn --topo minimal,exit退出

{ps:.每次要新建拓扑时,需执行以下命令,防止上次操作对本次实验的影响

sudo mn -c (以下步骤新建拓扑时也要执行此命令)}

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

4.Python脚本定义拓扑

【1】--topo linear,4。

1)新建linear.py 文件:touch linear.py

2)编辑文件:vim linear.py,添加一下内容:

from mininet.net import Mininet

from mininet.topo import LinearTopo

Linear4 = LinearTopo(k=4)    #四个交换机,分别下挂一个主机

net = Mininet(topo=Linear4)

net.start()

net.pingAll()

net.stop()

3)修改文件linear.py为可执行文件:chmod +x linear.py

4)运行脚本:sudo python linear.py
【此时如果报错:a.文件内容错误,检查后对应修改后重新运行脚本即可
                             b.出现所示错误:Exception:Error creating interface pair(s2-eth2,s1-eth2);RTNETLINK answers:file exist

则运行sudo mn -c命令后重新运行脚本】

5)成功的样子:

【2】--topo single,3。

详见【1】,步骤相同,仅脚本内容不同

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】--topo tree,depth=2,fanout=2。同上

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()

【4】适合各种拓扑形式的脚本创建模式。本例:1个交换机,2个主机,并且赋予主机IP地址。

from mininet.net import Mininet

net = Mininet()

# Creating nodes in the network.

c0 = net.addController()

h0 = net.addHost('h0')

s0 = net.addSwitch('s0')

h1 = net.addHost('h1')

# Creating links between nodes in network

net.addLink(h0, s0)

net.addLink(h1, s0)

# Configuration of IP addresses in interfaces

h0.setIP('192.168.1.1', 24)

h1.setIP('192.168.1.2', 24)

net.start()

net.pingAll()

net.stop()

【5】在此基础上对性能进行限制。(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()

5.交互式界面创建主机、交换机等

1)$sudo mn

2)添加主机h3:

3)添加link:

4)给交换机s1添加端口eth3用于连接h3:

5)给h3赋予IP(10.0.0.3)以及h1 ping h3

6.测试网络

1)展示所有的网络信息。

2)所有节点的ping测试。

{ 如果出现以下错误:

***Ping:testing ping reachability
h1->h2 ***Error:could not parse ping output:ping:unknown host None
h2->h1 ***Error:could not parse ping output:ping:unknown host None

则输入命令s1 ping h3后,重新执行py net.pingAll()

附:

1.实验环境:

打开虚拟机镜像( SDNHub_tutorial_VM_64-bit[NEW](可直接导入 VMware).ova ), 下载链接:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA 提取码:mhfi

注:也可以在也可以安装其他虚拟机软件,如 VirtualBox、KVM 等,然后安装 mininet, 安装方法见 http://mininet.org/download/

2.mininet背景:

Mininet 是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith  等各种协议,Mininet  也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。

Mininet 可以很方便地创建一个支持 SDN 的网络:host 就像真实的电脑一样工作,可以使用 ssh 登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。

3.mininet特性:

1) 可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期

2) 可以运行真实的程序,在 Linux 上运行的程序基本上可以都可以在 Mininet 上运行,如 Wireshark

3) Mininet 支持 Openflow ,在 Mininet 上运行的代码可以轻松移植到支持OpenFlow 的硬件设备上

4) Mininet 可以在自己的电脑,或服务器,或虚拟机,或者云(例如 Amazon EC2) 上运行

5) Mininet 提供 python API,简单易用

6) Mininet 是开源项目

4.部分命令:

 

mininet > help

 

获取帮助列表。

 

mininet > nodes

 

查看 mininet 中结点的状态。

 

mininet >net

 

显示网络拓扑

 

mininet >dump

显示每个节点的接口设置和表示每个节

点的进程的 PID

 

mininet > pingall

在网络中的所有主机之间执行 ping 测试

 

mininet > h1 ping h2

h1 和 h2 节点之间执行 ping 测试

 

mininet > h1 ifconfig

查看 host1 的 IP 等信息。

 

mininet > xterm h1

 

打开 host 1 的终端。

 

mininet > exit

退出 mininet 登录。

最新文章

  1. iOS,视图相关
  2. hibernate配置 sqlserver 数据库自动增长
  3. 基于Task的异步模式--全面介绍
  4. elasticsearch 集群搭建
  5. 理解KMP算法
  6. hdu 5510 Bazinga (kmp+dfs剪枝) 2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
  7. P、NP及NPC问题
  8. Unity3D 之3D游戏入门Hello world(一)
  9. ASP.NET 网站在域环境内配置授权访问
  10. PVM的安装和编译PVM程序
  11. String StringBuilder 包装类
  12. 11-14 dom
  13. iscroll.js 手机上下滑动 加载更多
  14. Hadoop2源码分析-序列化篇
  15. SpringBean 工作原理详解
  16. GTK 预置对话框 GtkDialog 文件/颜色/字体选取等 GtkFileSelection
  17. 数据库优化之SQL语句优化-记录
  18. 应用程序和Activity
  19. [LOJ6261]一个人的高三楼
  20. 实例演示oracle数据块状态视图v$bh的用法二 热点块问题(转)

热门文章

  1. 【PHP数据结构】图的应用:最小生成树
  2. Hive——安装以及概述
  3. c++ 的学习笔记 第一集cim cout
  4. HTML 网页开发、CSS 基础语法——九.CSS概述
  5. P5748-集合划分计数【EGF,多项式exp】
  6. Python3入门系列之-----环境搭建
  7. Mysql 5.7版本,所有的坑,这里都有
  8. 树莓派4B学习札记
  9. 实用 | 利用 aardio 配合 Python 快速开发桌面应用
  10. Java(14)面向对象之封装