Mininet教程(三):Mininet命令操作

  1. Mininet教程(一):Mininet基本介绍
  2. Mininet教程(二):Mininet安装部署
  3. Mininet教程(三):Mininet命令操作
  4. Mininet教程(四):Mininet可视化MiniEdit

Mininet命令共分为网络构建启动参数、内部交互命令、外部运行参数三部分。
(1)网络构建启动参数:–topo,–custom,–switch,–controller,–mac等等。
(2)内部交互命令:dump,net,nodes,links,dpctl,iperf等等。
(3)外部运行参数:-c(清除配置信息),-h(帮助)等。

一、mn网络构建使用参数介绍

  1. –topo:定义拓扑结构

a. minimal最小化拓扑(一个交换机,两个主机)

sudo mn --protocol=openflow13

b. single 单一拓扑(整个网络拓扑中只有一个交换机,其可以下挂一个或者多个主机)

sudo mn --topo=single,5

c. liner 线性拓扑(交换机呈线性排列,存在多个交换机,且每一个交换机下挂主机数目相同)

sudo mn --topo=linear,3
sudo mn --topo=linear,3,2

d. tree 树形拓扑(交换机的连接呈树形排列,且每个交换机可以下挂多个交换机,多个主机)

sudo mn --topo=tree,3,2
sudo mn --topo=tree,depth3=,fanout=2【三层,第一层一个交换机,第二层2个交换机,第三层4个交换,主机:4 x 2 = 8】
depth表示交换机有多少层,fanout表示所有的交换机作为父节点,有多少个子树。

e. reversed反向拓扑(这种拓扑类型与single单一拓扑类型相同)

sudo mn --topo=reversed,4

f. turse环形拓扑
不多解释,用的比较少

g. 自定义(custom)topology(编写.py文件,执行脚本即可创建自定义拓扑,–custom与–topo联用)

sudo mn --custom topo-2sw-2host.py  --topo mytopo
  1. –switch:定义mininet要使用的交换机

主要参数如下:
a. lxbr:内核态交换机。
b. user:用户态交换机。
c. ovsk:OpenVSwitch交换机,默认使用此值。
d. ovsbr:OpenVSwitch交换机。
e. ivs:OpenVSwitch交换机。

交换机分类3类:用户型、内核型和OVS型,其中内核型和OVS型的吞吐量比用户性大很多,因此一般采用后两种。可以测试三者的TCP bandwidth(区别UDP bandwidth):

sudo mn --test iperf
sudo mn --switch user --test iperf
sudo mn --switch ovsk --test iperf
  1. –controller:定义要使用的控制器

如果没有指定则使用mininet中默认的控制器。

# sudo mn --controller=remote,--ip=[controller ip],--port=[port]
  1. –mac:自动配置设备的MAC地址

让MAC地址易读,即设置交换机的MAC,主机MAC及IP地址从小到大排序,且设置简单唯一,不仅让机器容易获取,也容易让肉眼很容易识别其ID。使用方法如下:

# sudo mn --topo=tree,depth=2,fanout=2,--mac
  1. -x(XTerm)

通过使用-x参数,mn在启动后会在每个节点上自动打开一个XTerm,方便某些情况下的对多个节点分别进行操作。命令为

sudo mn -x

在进入mn cli之后,也可以使用 node xterm 命令指定启动某些节点上的xterm

h1 xterm
  1. 启动参数总结

-h, --help show this help message and exit
-c, --clean clean and exit
-x, --xterms spawn xterms for each node
-v VERBOSITY, --verbosity=VERBOSITY [info warning critical error debug output]

–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
–custom=CUSTOM read custom topo and node params from .py file
–test=TEST [cli build pingall pingpair iperf all iperfudp none]
–mac set MACs equal to DPIDs
–arp set all-pairs ARP entries
–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]

二、内部交互式命令介绍及使用

使用mn默认创建网络后,可以使用一系列命令查看并验证网络系统的链路健壮性。

  1. 设备查看

(1)net: 查看链路信息,两个设备之间的之间连线,称为一个链路,链路是双向的。
(2)nodes:查看有哪些可用节点。
(3)links :检测链路是否正常工作。
(4)pingall: 检测所有主机之间的连通性。
(5)pingpair:检测前两个主机的连通性。
(6)dump:查看节点信息。
(7)intfs:查看网络端口信息。
(8)help:显示一系列命令帮助信息。

  1. 设备操作

(1)iperf:两节点间进行iperftcp带宽测试。

iperf h1 h2

(2)iperfudp:两节点间进行iperfudp带宽测试。

iperfudp bw h1 h2

(3)link:禁用或开始节点间链路。

link s1 s2 up
link s1 s2 down

(4)dpctl:所有交换机上增删改查流表。

dpctl dump-flows

(5)xterm:节点开启xterm进入可视化操作界面。

xterm h1

(6)py:执行python表达式。

py help(s1)
py dir(s1)
py net.addSwitch("h3")
py net.addLink(s1,net.get("h3"))
py s1.attach("s1-eth3")
py net.get("h3").cmd("ifconfig h3-eth0 10.3")
pingall

(6)sh:执行ovs系统的指令

sh ovs-vsctl show
  1. 常用命令总结

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:所有host节点之间互ping
py:执行python表达式
sh:运行外部shell命令
quit/exit:退出

三、其他操作

(1)执行sudo mn -c会进行清理配置操作,适合故障后恢复。
(2)执行exit会退出Mininet的cli,同时给出运行时间统计。
(3)py cmd 使用python来执行cmd。
(4)测试Mininet启动后立刻关闭的时间可以用 sudo mn --test none。

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页