SDN零基础入门-Mininet命令详解
姓名:岳驰
【嵌牛导读】:(承接本人上一篇《SDN零基础入门-mininet环境搭建与RYU控制器的安装》)Mininet是一个进程虚拟化网络仿真工具,可以创建一个含有主机、交换机、控制器和链路的虚拟网络,其交换机支持Openflow协议,具有高度灵活的自定义软件定义网络。在本篇文章中,作者将会介绍Mininet的基本操作指令,本人也是接触不久,如有错误请多多包涵,希望能和大家一起交流学习。
【嵌牛鼻子】:Linux Ubuntu SDN 零基础入门 Mininet 命令详解
【嵌牛提问】:Mininet的优势?Mininet可以做什么?Mininet的基础操作?
【嵌牛正文】:
1.mininet的优势:
mininet结合了许多仿真器、硬件测试床和模拟器的优点。
compare to仿真器:
启动速度快 扩展性大 带宽提供多 方便安装、易使用
compare to模拟器:
运行真实代码 容易链接真实网络
compare to硬件测试床:
便宜 快速重新配置与重新启动
2.mininet可以做什么?
为openflow应用程序提供一个简单、便宜的网络测试平台
启用复杂的拓扑测试,无需连接物理网络
具有拓扑感知和openflow感知的CLI,用于调试或运行网络范围的测试
支持任意自定义拓扑,主机数达4096,并包括一组基本的参数化拓扑
提供用于网络创建和实验的可扩展Python API
3.mininet命令详解:
minient命令主要分为三种:
①网络构建启动参数
如--topo --custom --switch --controller --mac等等
②内部交互命令
如dump net nodes links dpctl iperf等等
③外部运行参数
如-c -h
下面对常用的命令进行简单介绍
一、--topo命令
1.单一拓扑,即只有一个交换机,下挂n个主机
一个交换机下挂三个主机 拓扑图2.线形拓扑,交换机呈线性排列,n个交换机下挂一个主机
四个交换机的线形拓扑 拓扑图3.树形拓扑,定义深度depth,定义广度fanout。例如depth=2,fanout=2,就是交换机(不包含主机)有两层,除第一层外每个下挂两个单位。
depth=2,fanout=2的树形拓扑 拓扑图假如输入depth=3,fanout=3,就在原来的基础上s1(第一层)下挂三个交换机(第二层),然后第二层的每个交换机下面再下挂三个交换机(第三层),第三层的每个交换机下挂三个主机。
4.自定义拓扑,需要用python编写文件file.py,执行此脚本即可创建自定义拓扑,需要--custom与--topo联用,在这里给出一个使用自带的例子建立一个自定义拓扑,至于具体如何编写我们将会在以后进行说明。
二、--controller命令
指定远程控制器的方法:
sudo mn --controller=remote,--ip=你的控制器ip,--port=你想监听的端口
在这里我指定了本机的控制器,但是目前本机还没有开启控制器。所以会显示不能连接到本机控制器。
输入pingall也会显示丢包率为100%
三、内部交互命令,在建立拓扑之后对拓扑进行相关操作,如
net命令显示链接信息
nodes命令显示节点信息
links命令显示链路健壮性信息
以及大家喜闻乐见的pingall命令验证所有主机间通信
节点全部ping通,丢包率0%以上都是设备的查看命令,接下来介绍几个可以对设备进行操作的命令
iperf命令两节点间进行带宽测试
link命令进行节点间链路的开始或禁用
我关闭了s1和h1的链路,发现h1和h2不能ping通
然后再次开启s1和h1的链路,于是h1和h2又可以ping通了
注意不要把link命令和links命令混淆!!!
现在我们面临了一个实际问题,假如我首先用sudo su指令创建了一个交换机下挂两个主机的拓扑,但是之后不满意当前拓扑,想添加一个主机h3和s1相连,可以么?答案当然是肯定的。
首先,我们要添加主机h3进入当前拓扑
只添加还不够,需要让s1和添加的h3建立一条连接
现在就可以ping通了么?还不行,因为s1需要一个端口提供给h3
s1分配eth3端口给h3现在链接已经建立起来了,但是h3还没有IP地址,我们需要赋给h3一个IP地址
把10.0.0.3地址赋给h3现在我们先试着用h1或者h2去ping通h3
传送了3个包,零丢包(ctrl+c停止互ping)最后pingall,成功!