Me
Me
文章目录
  1. Mininet 学习笔记

Mininet学习笔记

Mininet 学习笔记

1.Mininet 是什么?

起源于Stanford;包含主机、控制器、交换机和链路的模拟网络。

不推荐使用自带的控制器 => 指定其他控制器远程连接。

创建虚拟网络的模拟工具。

方便:能够连接真实网络;提供网络测试平台;性能功能强大。

2.Mininet 可以做什么?

简单的网络拓扑测试平台;支持复杂拓扑测试;提供网络测试和实验的可拓展API。

3.为什么选择 Mininet?

相比仿真器:

(1)启动速度非常快

(2)扩展性:数百个交换机

(3)带宽提供多,2Gbps

(4)方便安装、易使用

相比模拟器:

(1)运行真实的代码,如APP、操作系统内核代码等

(2)容易连接真实网络

相比硬件测试床:

(1)便宜

(2)快速重新配置、重新启动

4.Mininet 安装部署

三种方法:

(1)装有Mininet的虚拟机

官网下载:mininet.org/download

建议:桥接模式;关闭firewall。

(2)Github安装

install.sh args: -n3V 2.5.0

(3)Ubuntu apt-get

1
sudo apt-get install mininet

Hint: 如果之前安装过mininet,需要删除依赖;安装时需要停用已有的OvS、Controller的进程。

5.Mininet 文件结构

(1)运行文件

bin/mn:主要运行文件,应用Python程序编写,定义了MininetRunner类,执行sudo mn即调用本程序,是模拟网络的主程序,为整个测试创建基础平台。

(2)核心代码

在mininet子目录。

(3)其他文件

custom/:放置自定义Python脚本,用于自定义拓扑。

util/:放置辅助文件,包括安装脚本、文档辅助生成等。

example/:使用实例,包括可视化。

6.Mininet 命令详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(1)网络创建启动参数:
--topo
--custom
--switch
--controller
--mac
(2)内部交互命令:
dump
net
nodes
links
dpctl
iperf
(3)外部运行参数:
-c:清除配置信息
-h:帮助

(1)网络构建参数

a.--topo

单一拓扑(Single):

1
sudo mn --topo=single,3

线性拓扑(Linear)拓扑:

1
sudo mn --topo=linear,4 # 主机数=交换机数=4

树形拓扑(Tree):

1
sudo mn --topo=tree,depth=2,fanout=2 # 深度为2,设备下挂设备数为2

自定义拓扑(Custom):

1
sudo mn --custom file.py --topo mytopo

b.网络构建参数 --switch

定义mininet要使用的交换机(默认使用OVSK,即OvS交换机)。

1
2
3
4
5
6
OpenvSwitch args:
ovsk
ovsbr
ivs
lxbr => 内核态
user => 用户态

c.--controller

定义要使用的控制器,如果没有指定则使用mininet中自带的控制器。

1
sudo mn --controller=remote,ip=[IP],port=[Port]

d.--mac

自动配置设备的MAC地址:让MAC地址易读。

1
sudo mn --mac

(2)内部交互命令

使用一系列命令查看并验证网络系统的链路健壮情况。

a.无需参数的命令:

1
2
3
4
5
6
7
help
dump
intfs # 网络接口信息
nodes
links # 查看链路
pingpair
pingall

b.设备操作,需要操作命令:

1
2
3
4
5
6
7
iperf
iperfudp
link # 禁用或开始节点间链路
dpctl # 流表操作
xterm
py # eg. py net.addSwitch('s3')
sh

Hint:改变拓扑,在mininet中调用py命令。

Easytest:

1
2
3
4
5
6
7
8
sudo mn
py net.addHost('h3') # add host
py net.addLink(s1.net.get('h3')) # add link
py s1.attach('s1-eth3') # add port
py net.get('h3').cmd('ifconfig h3-eth0 10.3') # add IP
pingall
py help
py dir(s1)

7.Mininet 可视化:Miniedit

mininet/examples/miniedit.py

三步:

(1)Miniedit启动

Hint: 需要可视化桌面

(2)自定义创建拓扑,设置设备信息

(3)运行拓扑并生成拓扑脚本

8.应用1 玩转流表

refer: http://www.sdnlab.com/2122.html, ryubook firstexample

使用dpctl对OvS进行操作,添加和删除流表。

1
2
dpctl dump-flows
dpctl del-flows

9.应用2 Mininet模拟多数据中心带宽测试

refer: http://www.sdnlab.com/3296.html

2017.3.9

支持一下
扫一扫,支持Wasdns