首页 > 其他分享 >Mininet拓扑构建与命令使用

Mininet拓扑构建与命令使用

时间:2023-05-24 12:44:39浏览次数:37  
标签:Mininet 创建 步骤 拓扑 交换机 构建 主机

实验目的

1、通过命令模拟创建SDN网络。
2、深入了解Mininet的命令使用。
3、学会使用网络构建启动参数、内部交互命令及外部运行参数。

实验环境

Mininet拓扑构建与命令使用实验拓扑如下图所示。
image-20230524090551466

设备名称 软件环境 硬件环境
主机 Mininet_2.2.0_desktop_cv1.1 CPU:1核 内存:2G 磁盘:20G

注:系统默认的账户为:
管理员权限用户名:root,密码:root@openlab;
普通用户用户名:openlab,密码:user@openlab。
可查看当前实验环境右侧“钥匙” 按钮获取对应的密码。

任务内容

1、通过Mininet命令行创建拓扑来熟悉Mininet的基本功能。
2、通过交互式界面创建拓扑来熟悉Mininet的基本命令。

实验原理

一、Mininet简介

Mininet是基于Linux Container架构开发的一个进程虚拟化网络仿真工具,可以创建一个含有主机、交换机、控制器和链路的虚拟网络,其交换机支持OpenFlow,具有高度灵活的自定义软件定义网络。Mininet可以用一个命令在一台主机上(虚拟机、云或者本地)以秒级创建一个虚拟网络,并在上面运行真正的内核、交换机和应用程序代码。
Mininet能实现如下功能:

  • 为OpenFlow应用程序提供一个简单、便宜的网络测试平台
  • 启用复杂的拓扑测试,无需连接物理网络
  • 具有拓扑感知和OpenFlow感知的CLI,用于调试或运行网络范围的测试
  • 支持任意自定义拓扑,主机数可达4096,并包括一组基本的参数化拓扑
  • 提供用于网络创建和实验的可扩展Python API

在基于Mininet的使用下,可以轻易的在自己的笔记本上测试一个软件定义网络(software-defined Networks),对基于OpenFlow、Open vSwitch的各种协议等进行开发验证,或者验证自己的想法。且所有的代码几乎可以无缝迁移到真实的硬件环境中,在实验室里,一行命令就可以创建一个支持SDN的任意拓扑的网络结构,并可以灵活的进行相关测试,验证了设计的正确后,可以轻松部署到真实的硬件环境中。

二、OpenFlow连接建立交互流程

Miniedit可视化,直接在界面上编辑任意拓扑,生成python自定义拓扑脚本,使用Mininet可视化界面方便了用户自定义拓扑创建,为不熟悉python脚本的使用者创造了更简单的环境,界面直观,可操作性强。

Mininet 2.2.0+内置miniedit 。在mininet/examples下提供miniedit.py脚本,执行脚本后显示可视化界面,可自定义拓扑及配置属性。
MiniEdit使用主要分三个步骤:Miniedit启动→自定义创建拓扑,设置设备信息→运行拓扑并生成拓扑脚本。

三、网络构建参数

Mininet是基于Linux Container架构开发的一个进程虚拟化网络仿真工具,可以创建一个含有主机、交换机、控制器和链路的虚拟网络,其交换机支持OpenFlow,具有高度灵活的自定义软件定义网络。Mininet可以用一个命令在一台主机上(虚拟机、云或者本地)以秒级创建一个虚拟网络,并在上面运行真正的内核、交换机和应用程序代码。
Mininet能实现如下功能:

  • 为OpenFlow应用程序提供一个简单、便宜的网络测试平台
  • 启用复杂的拓扑测试,无需连接物理网络
  • 具有拓扑感知和OpenFlow感知的CLI,用于调试或运行网络范围的测试
  • 支持任意自定义拓扑,主机数可达4096,并包括一组基本的参数化拓扑
  • 提供用于网络创建和实验的可扩展Python API

在基于Mininet的使用下,可以轻易的在自己的笔记本上测试一个软件定义网络(software-defined Networks),对基于OpenFlow、Open vSwitch的各种协议等进行开发验证,或者验证自己的想法。且所有的代码几乎可以无缝迁移到真实的硬件环境中,在实验室里,一行命令就可以创建一个支持SDN的任意拓扑的网络结构,并可以灵活的进行相关测试,验证了设计的正确后,可以轻松部署到真实的硬件环境中。
topo:用于指定网络拓扑,Mininet支持创建的网络拓扑为:minimal、single、linear和tree。

  • minimal:创建一个交换机和两个主机相连的简单拓扑。默认无—topo参数的情况下就是这样。其内部实现就是调用了single,2对应的函数。
  • single,n:设置一个交换机和n个主机相连的拓扑。
  • linear,n:创建n个交换机,每个交换机只连接一个主机,并且所有交换机成线型排列。
  • tree,depth=n,fanout=m:创建深度为n,每层树枝为m的树型拓扑。因此形成的拓扑的交换机个数为(mn-1)/(m-1),主机个数为mn。
  • —custom:在上述已有拓扑的基础上,Mininet支持自定义的拓扑,使用一个简单的Python API即可。—custom需和—topo一起使用,如mn —custom file.py —topo mytopo。

四、内部交互命令

创建Mininet拓扑成功后,一般可用nodes、dump、net等命令查看拓扑的节点、链路及网络等。Mininet常用的交互命令如下所示。
Mininet启动参数总结:

参数 作用
-h, —help show this help message and exit
—switch=SWITCH [kernel user ovsk]
—host=HOST [process]
—controller=CONTROLLER [nox_dump none ref remote nox_pysw]
—topo=TOPO [tree reversed single linear minimal],arg1,arg2,…argN
-c, —clean clean and exit
—custom=CUSTOM read custom topo and node params from .py file
—test=TEST [cli build pingall pingpair iperf all iperfudp none]
-x, —xterms spawn xterms for each node
—mac set MACs equal to DPIDs
—arp set all-pairs ARP entries
-v VERBOSITY, —verbosity=VERBOSITY [info warning critical error debug output]
—ip=IP [ip address as a dotted decimal string for aremote controller]
—port=PORT [port integer for a listening remote controller]
—innamespace sw and ctrl in namespace
—listenport=LISTENPORT [base port for passive switch listening controller]
—nolistenport don’t use passive listening port
—pre=PRE [CLI script to run before tests]
—post=POST [CLI script to run after tests]

Mininet常用命令总结:

命令 作用
help 默认列出所有命令文档,后面加命令名将介绍该命令用法 dump打印节点信息
gterm 给定节点上开启gnome-terminal 注:可能导致mn崩溃
xterm 给定节点上开启xterm
intfs 列出所有的网络接口
iperf 两个节点之间进行简单的iPerf TCP测试
iperfudp 两个节点之间用制定带宽UDP进行测试
net 显示网络链接情况
noecho 运行交互式窗口,关闭回应(echoing)
pingpair 在前两个主机之间互Ping测试
source 从外部文件中读入命令
dpctl 在所有交换机上用dptcl执行相关命令,本地为tcp 127.0.0.1:6634
link 禁用或启用两个节点之间的链路
nodes 列出所有的节点信息
pingall 所有主机节点之间互Ping
py 执行Python表达式
sh 运行外部shell命令
quit/exit 退出
操作步骤

一、网络构建参数使用

步骤1

单击终端图标,打开终端,执行su root命令切换到root用户。

步骤2

执行如下命令,创建single拓扑。
# sudo mn --topo=single,3

image-20230524091146765
说明:单一(Single)拓扑指整个网络拓扑中交换机有且只有一个,交换机可以下挂一个或多个主机,本例创建了一个交换机、3个主机,3个主机都下挂在一个交换机下。

步骤3

执行exit退出Mininet。

步骤4

执行如下命令,创建linear(线性)拓扑。
# sudo mn --topo=linear,3

image-20230524091215643
说明:线性(linear)拓扑指交换机连接呈线形排列,且每个交换机所连接主机数目只有一个,本例创建了3个交换机、3个主机,3个主机分别下挂在一个交换机下。

步骤5

执行exit退出Mininet。

步骤6

执行如下命令,创建树形(tree)拓扑。
# sudo mn --topo=tree,depth=2,fanout=2
image-20230524091243566
说明:树形(tree)拓扑指交换机连接成树形排列,且每个交换机所连接主机一般有多个关联使用参数depth及fanout,本例创建了depth为2,fanout为2的拓扑,表示交换机深度即层数为2,每个交换机下挂2个设备。

步骤7

执行exit退出Mininet。

步骤8

执行如下命令,创建自定义拓扑。

    # cd /home/openlab/openlab/mininet/custom
    # sudo mn --custom topo-2sw-2host.py --topo mytopo

image-20230524091402624
自定义(custom)拓扑指python编写文件file.py,执行此脚本即可创建定义的拓扑,—custom与—topo联用,在custom目录下存在topo-2sw-2host.py文件,本例调用此文件构建拓扑。

二、内部交互命令使用

步骤1

执行net命令显示链接信息。
image-20230524091434025

步骤2

执行nodes命令查看节点信息。
image-20230524091520580

步骤3

执行links查看链路健壮性信息。
image-20230524091539843

步骤4

执行pingall验证所有主机间通信并查看结果。
image-20230524091600828

步骤5

执行xterm h1 h2开启xterm进入设备可视化操作界面。
image-20230524091633504

步骤6

执行exit退出Mininet。

步骤7

执行mn -c清除释放Mininet构造配置的交换机及主机。
image-20230524091657218

步骤8

执行mn --helpmn -h查看获取帮助。
image-20230524091726318

三、Mininet可视化构建网络拓扑

步骤1 启动MiniEdit

执行cd /home/openlab/openlab/mininet/examples进入mininet/examples目录下,执行miniedit.py文件:
# sudo ./miniedit.py
image-20230524091803040

步骤2 Miniedit拓扑建立

选择左侧的网络组件,在空白区域单击鼠标左键即可添加网络组件,可选择的组件主要有主机、OpenFlow交换机、传统交换机,传统路由器、链路、控制器。
image-20230524122044168

步骤3 Miniedit属性配置

在左侧设备列表中选中需要的设备,在右侧空白区域单击,设备即添加成功。
设备及链路上可进行鼠标右击长按,选择Properties即可对其进行配置。
在控制器上进行鼠标右击长按,选择Properties即可对控制器进行配置:
image-20230524122109885
在交换机上进行鼠标右击长按,选择Properties即可对交换机进行配置,交换机属性需配置16位的DPID:
image-20230524122217038
在主机上进行鼠标右击长按,选择Properties即可对主机进行配置,主机属性需配置IP地址:
image-20230524122243757
设备属性配置OK后,将会在miniedit.py执行的后台产生日志,告知所添加的设备属性:
image-20230524122315742

步骤4 Miniedit全局配置

Miniedit左上角“Edit”中可以剪切删除设备,及对整个网络进行全局配置:

image-20230524122345730

步骤5 Miniedit运行

点击左下角“run”,即可运行设置好的网络拓扑,同时在后台可以看到相应的配置信息。运行后对交换机、主机进行右击长按,可查看交换机的bridge信息及打开Host的终端,交换机信息如下:
image-20230524122416777
主机终端界面如下:
image-20230524122448676

步骤6 Miniedit保存脚本

miniedit设置好拓扑后,可通过选择File-Export Level 2 Script,将其保存为python脚本,默认在mininet/examples目录下,通过chmod给此脚本权限后,直接运行即可重现拓扑。
image-20230524122511044

步骤7 Miniedit脚本执行

通过后台查看保存的sdnlab.py脚本文件,并给脚本赋予权限:
# chmod –R 777 sdnlab.py
执行sdnlab.py脚本:
# ./sdnlab.py
image-20230524122537590

标签:Mininet,创建,步骤,拓扑,交换机,构建,主机
From: https://www.cnblogs.com/ChuenSan/p/17427955.html

相关文章

  • 图解LeetCode——1441. 用栈操作构建数组(难度:中等)
    一、题目给你一个数组target和一个整数n。每次迭代,需要从 list={1,2,3...,n}中依次读取一个数字。请使用下述操作来构建目标数组target:"Push":从list中读取一个新元素,并将其推入数组中。"Pop":删除数组中的最后一个元素。如果目标数组构建完成,就停止读取更多元......
  • Jenkins实战-钉钉构建提醒插件的二次开发
    本篇我们来讨论下关于jenkins社区中钉钉提醒这个插件的二次开发过程。为什么需要二次开发呢,很简单,这个插件只是提供了最基本的构建后的提醒,有时候,我们需要一些额外的功能。例如,我们在打完app的包后,利用这个插件是可以发送提醒,但是点击标题,这个插件默认跳转的是jenkins上当前构......
  • 构建漂亮的页面答案
    构建漂亮的页面判断题1.在Column容器中的子组件默认是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向,在Row容器中的组件默认是按照从左到右的水平方向布局的,其主轴的方向是水平方向。正确(True)错误(False)2.List容器可以沿水平方向排列,也可以沿垂直方向排列。......
  • 《构建之法》笔记1
    《构建之法》读后感     《构建之法》是一本好书,当我翻开构建之法的第一页时,我就感觉我能从书中得到许多关于编程的方法和相关知识。当我读到构建之法里的 “敏捷宣言表明的是一些优先级,不必当作圣旨或者教条来争论”,我才恍然大悟。“兵无常势,水无常形,能因敌变化而取胜者,......
  • 《构建之法》笔记2
     《构建之法》是一本全景式图书,让我更了解这个行业,是一本与现实接轨的教材。其次,这是一本最佳实践式的书,涵盖了科学、健康的软件工程开展中的每个方面,介绍了种种方法论,但不是高高在上、纲领性的方法论,而是方法论的最佳实践,确实可用,拿来就用。这本书在介绍方法论的同时,会介绍方法......
  • 02构建之法阅读笔记
    《构建之法》一书提到软件构建的一个重要方面是测试。作者强调测试是软件构建过程中不可或缺的一步,只有经过充分测试的软件才能更具可靠性和质量。书中介绍了多种测试方法,其中包括单元测试、集成测试、接口测试和验收测试等。作者指出,这些测试方法都有着各自的优点和局限性,需要根......
  • 史上最全!全领域网络安全拓扑图(118页)
    大家好,我是老杨。前几天发了一篇OSPF的文章,助理发到群里和大家讨论。好几个小友表示,绘制拓扑的才是最高境界,并且想看些拓扑图案例。其实拓扑图案例老杨也分享过不少了。可以看看这些往期文章,《超干货!全国31所名校网络拓扑图全分析(高清版)》《精选50张网络监控拓扑图,一般人我还真不告......
  • Dockerfile练习二---------------------------构建自己的mysql镜像
    构建自己的mysql镜像 ##NYSQL的shell安装脚本##[root@dockertomcat]#cd~[root@docker~]#mkdirmysql[root@docker~]#cdmysql/[root@dockermysql]#vimrun.sh#!/bin/bashyum-yinstall\ncurses\ncurses-devel\bison\cmake\make\gcc\gcc-c++cd/optcdmysql-5......
  • 使用 Async Rust 构建简单的 P2P 节点
    使用AsyncRust构建简单的P2P节点P2P简介P2P:peer-to-peerP2P是一种网络技术,可以在不同的计算机之间共享各种计算资源,如CPU、网络带宽和存储。P2P是当今用户在线共享文件(如音乐、图像和其他数字媒体)的一种非常常用的方法。Bittorrent和Gnutella是流行的文件共享......
  • Dockefile构建镜像语法:
    1.构建nginx镜像#BaseimageFROMcentos:7#MAINTAINERMAINTAINERcbmiao<[email protected]>#将nginx以及pcre源代码加入镜像ADDnginx-1.20.1.tar.gz/usr/local/src/ADDpcre-8.45.tar.gz/usr/local/src/#安装编译器RUNyuminstall-ygccgcc-c++makeopens......